GPT-SoVITS icon indicating copy to clipboard operation
GPT-SoVITS copied to clipboard

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

Open ZhangJianBeiJing opened this issue 1 year ago • 28 comments

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

ZhangJianBeiJing avatar Mar 08 '24 08:03 ZhangJianBeiJing

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

Lion-Wu avatar Mar 08 '24 09:03 Lion-Wu

补充一下,修改 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

qt06 avatar Mar 09 '24 02:03 qt06

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

感谢

ZhangJianBeiJing avatar Mar 11 '24 02:03 ZhangJianBeiJing

补充一下,修改 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模型的输入参数该怎么传入嘛,大佬

ZhangJianBeiJing avatar Mar 11 '24 02:03 ZhangJianBeiJing

m

brooks348 avatar Mar 11 '24 06:03 brooks348

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

qt06 avatar Mar 12 '24 06:03 qt06

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

ZhangJianBeiJing avatar Mar 13 '24 03:03 ZhangJianBeiJing

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

ZhangJianBeiJing avatar Mar 19 '24 03:03 ZhangJianBeiJing

没人。。。求大佬围观

ZhangJianBeiJing avatar Mar 21 '24 06:03 ZhangJianBeiJing

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

Fking61 avatar Apr 12 '24 11:04 Fking61

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

onnx_export.py,全局搜索一下

ZhangJianBeiJing avatar Apr 16 '24 07:04 ZhangJianBeiJing

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

DonkeyHang avatar May 07 '24 08:05 DonkeyHang

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

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

Fking61 avatar May 07 '24 08:05 Fking61

请问,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也没太明白,请问这个是怎么串起来呢?

DonkeyHang avatar May 07 '24 08:05 DonkeyHang

请问,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模型的参数形式,有一段时间没碰过了,问题并未解决

Fking61 avatar May 07 '24 09:05 Fking61

image

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

neuxys avatar May 08 '24 06:05 neuxys

请问,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,进行推理,其中参数构造使用自定义张量,推出来的音频效果不太好,能听只能说,还在研究。

ZhangJianBeiJing avatar May 08 '24 23:05 ZhangJianBeiJing

请问,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 avatar May 09 '24 06:05 himmeled

请问,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 avatar May 09 '24 07:05 DonkeyHang

请问,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 avatar May 09 '24 07:05 DonkeyHang

请问,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 avatar May 13 '24 06:05 Fking61

请问,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无法进行推理吗,我之前转换出来的,它提示参数出问题,不知道需要怎么修改

Fking61 avatar May 13 '24 06:05 Fking61

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

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

DonkeyHang avatar May 13 '24 12:05 DonkeyHang

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

ajiansoft avatar Jul 02 '24 04:07 ajiansoft