RVC-Boss / GPT-SoVITS

1 min voice data can also be used to train a good TTS model! (few shot voice cloning)
MIT License
33.86k stars 3.88k forks source link

生成的gpt模型和sovits模型如何一起打包转成onnx格式,以便在其他平台直接推理 #714

Open ZhangJianBeiJing opened 7 months ago

ZhangJianBeiJing commented 7 months ago

生成的gpt模型(ckpt后缀)和sovits模型(pth后缀)(两个,一个G.pth,一个D.pth),如何打包转成onnx格式,以便在其他平台直接推理

Lion-Wu commented 7 months ago

代码在这里,修改一下里面的路径就可以了:GPT_SoVITS/onnx_export.py

qt06 commented 7 months ago

补充一下,修改 onnx_export.py的第七行,将 cnhubert_base_path = "pretrained_models/chinese-hubert-base" 改为 cnhubert_base_path = "GPT_SoVITS/pretrained_models/chinese-hubert-base", 文件末尾的大约329到331行,改为你自己的模型名字。 然后后回到上层目录运行: python GPT_Sovits/onnx_export.py

ZhangJianBeiJing commented 7 months ago

代码在这里,修改一下里面的路径就可以了:GPT_SoVITS/onnx_export.py

感谢

ZhangJianBeiJing commented 7 months ago

补充一下,修改 onnx_export.py的第七行,将 cnhubert_base_path = "pretrained_models/chinese-hubert-base" 改为 cnhubert_base_path = "GPT_SoVITS/pretrained_models/chinese-hubert-base", 文件末尾的大约329到331行,改为你自己的模型名字。 然后后回到上层目录运行: python GPT_Sovits/onnx_export.py

非常感谢,请问您知道,生成的onnx模型的输入参数该怎么传入嘛,大佬

zhuangzhuangliu2345 commented 7 months ago

m

qt06 commented 7 months ago

可以使用下面这个项目调用 onnx : https://github.com/NaruseMioShirakana/MoeVoiceStudio

ZhangJianBeiJing commented 7 months ago

可以使用下面这个项目调用 onnx : https://github.com/NaruseMioShirakana/MoeVoiceStudio 谢谢大佬,我看了看,好像不适用啊

ZhangJianBeiJing commented 6 months ago

pred_semantic这个参数有好的解决办法吗

ZhangJianBeiJing commented 6 months ago

没人。。。求大佬围观

Fking61 commented 6 months ago

请问rvc中的onnx模型怎么转出

ZhangJianBeiJing commented 5 months ago

请问rvc中的onnx模型怎么转出

onnx_export.py,全局搜索一下

DonkeyHang commented 5 months ago

请问,onnx导出后可以使用了吗?

Fking61 commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

DonkeyHang commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗?

我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio

我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

Fking61 commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗?

我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio

我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

这个导出的代码有问题,导出的不是四个onnx模型,那是onnx模型的参数,这个参数我当时错误说不符合onnx模型的参数形式,有一段时间没碰过了,问题并未解决

neuxys commented 5 months ago

image

导出后4个onnx模型,如何用它们来推理?

ZhangJianBeiJing commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗?

我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio

我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

直接使用vits模型,使用runtimeonnx,进行推理,其中参数构造使用自定义张量,推出来的音频效果不太好,能听只能说,还在研究。

himmeled commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗? 我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio 我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

直接使用vits模型,使用runtimeonnx,进行推理,其中参数构造使用自定义张量,推出来的音频效果不太好,能听只能说,还在研究。

请问这种方式会快一些么?

DonkeyHang commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗? 我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio 我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

直接使用vits模型,使用runtimeonnx,进行推理,其中参数构造使用自定义张量,推出来的音频效果不太好,能听只能说,还在研究。

最近又看了下,我发现如果要端到端完整推理tts,流程是不是应该先使用g2p去把text转成phones,根据inference里面的流程,ref_audio还需要写一个ssl的onnx,最后一起喂进去gptsovits,现在卡在了最开始的步骤,毕竟如果是zh,g2p好像需要用一些jieba和别的三方依赖,最后想要部署的时候text的部分也需要去做额外的操作,不是做tts领域的,最近才在看。。。

希望交流讨论

DonkeyHang commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗? 我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio 我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

直接使用vits模型,使用runtimeonnx,进行推理,其中参数构造使用自定义张量,推出来的音频效果不太好,能听只能说,还在研究。

请问这种方式会快一些么?

如果使用一些量化和剪枝是会的

Fking61 commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗? 我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio 我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

直接使用vits模型,使用runtimeonnx,进行推理,其中参数构造使用自定义张量,推出来的音频效果不太好,能听只能说,还在研究。

所以rvc的模型,不能使用runtimeonnx转换出的onnx模型是嘛

Fking61 commented 5 months ago

请问,onnx导出后可以使用了吗?

不可以,模型大小出现错误,我使用pytorch代码推理不出来

可以share一下您的流程或者code吗? 我看导出之后是4个onnx模型, encoder部分的输入是ref_seq,text_seq,ref_bert,text_bert,ssl_content,输出是x,prompt sdec部分的输入是iy,ik,iv,iy_emb,ix_example,输出是y,k,v,y_emb,logits,samples fsdec部分的输入是x,prompt,输出是y,k,v,y_emb,x_example vits部分的输入是text_seq,pred_semantic,ref_audio,输出是audio 我记得infer的过程里pred_semantic这个输入是用训练出来的gpt模型去预测参考文本和最终想合成的文本内容,另外的sdec和fsdec也没太明白,请问这个是怎么串起来呢?

直接使用vits模型,使用runtimeonnx,进行推理,其中参数构造使用自定义张量,推出来的音频效果不太好,能听只能说,还在研究。

所以rvc的模型,不能使用runtimeonnx转换出的onnx模型是嘛

或者说是,rvc转换的onnx无法进行推理吗,我之前转换出来的,它提示参数出问题,不知道需要怎么修改

DonkeyHang commented 5 months ago

或者说是,rvc转换的onnx无法进行推理吗,我之前转换出来的,它提示参数出问题,不知道需要怎么修改

onnx有概率会出现导出失败和维度不匹配的问题,这个需要去debug一下,有些是算子的问题,有些是维度的问题

ajiansoft commented 3 months ago

各位大佬,有实验成功了的吗?