I am getting the following error when trying to do inference in C++ Pytorch using a Silero TTS model:
Expected at most 11 argument(s) for operator 'forward', but received 13 argument(s). Declaration: forward(__torch__.silero_vocoder.jit_model.___torch_mangle_138.TTSSystem self, str[] sentences, str[] clean_sentences, int?[] break_lens, float[] prosody_rates, float[] prosody_pitches, Tensor speaker_ids, int sr=48000, str device="cpu", Tensor? gt_durs=None, Tensor? gt_pitch=None) -> ((Tensor, Tensor))
Exception raised from checkAndNormalizeInputs at ../aten/src/ATen/core/function_schema_inl.h:393 (most recent call first):
frame #0: c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) + 0x6b (0x7fa48aac71fb in /home/jeanne/src/contrib/libtorch/lib/libc10.so)
frame #1: c10::detail::torchCheckFail(char const*, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 0xbf (0x7fa48aac1d6f in /home/jeanne/src/contrib/libtorch/lib/libc10.so)
frame #2: void c10::FunctionSchema::checkAndNormalizeInputs<c10::Type>(std::vector<c10::IValue, std::allocator<c10::IValue> >&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, c10::IValue, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, c10::IValue> > > const&) const + 0x6ae (0x7fa475ffa13e in /home/jeanne/src/contrib/libtorch/lib/libtorch_cpu.so)
frame #3: torch::jit::Method::operator()(std::vector<c10::IValue, std::allocator<c10::IValue> >, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, c10::IValue, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, c10::IValue> > > const&) const + 0x173 (0x7fa479270433 in /home/jeanne/src/contrib/libtorch/lib/libtorch_cpu.so)
frame #4: torch::jit::Module::forward(std::vector<c10::IValue, std::allocator<c10::IValue> >, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, c10::IValue, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, c10::IValue> > > const&) + 0xc7 (0x5612bafde75b in /home/jeanne/src/cmake-build-debug/tts/src/tts-bin/tts-bin)
model, example_text = torch.hub.load(
repo_or_dir='snakers4/silero-models',
model='silero_tts',
language='en',
speaker='v3_en')
traced = torch.jit.trace(model.model, example_text)
traced.save(output_file)
If anybody has tried TTS inference in C++ before, any help would be greatly appreciated. Thank you.
I am getting the following error when trying to do inference in C++ Pytorch using a Silero TTS model:
To get there, first I exported the model in a way that
torch::jit::load()can read:(The
model.modelpart is intentional; see my other issue: #254).Then I prepare TTS input based off of tts_utils.py. Given a
const char* textand the symbols inmodel.symbols, I transform the input characters to their index in the symbol table andforward()the result to the model:But somehow the Silero vocoder's
TTSSystemis called with 13 arguments when it expects 11.If anybody has tried TTS inference in C++ before, any help would be greatly appreciated. Thank you.