前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPT-SoVITS - 1分钟人声样本,完成声音克隆

GPT-SoVITS - 1分钟人声样本,完成声音克隆

作者头像
崔哥
发布2024-04-21 09:43:58
3610
发布2024-04-21 09:43:58
举报
文章被收录于专栏:崔哥的专栏

简介

GPT-SoVITS - 1分钟的语音数据也可以用来训练一个好的TTS模型!

集成了语音伴奏分离、训练集自动分割、中文ASR、文本标注等工具,帮助初学者创建训练数据集和GPT/SoVITS模型。

部署

直接用GPT-SoVITS仓库下的docker-compose.yaml即可

准备

准备一个3,5分钟的音频,1分钟也行,我用了一个10几分钟的。

训练

  • 9874:GPT-SoVITS WebUI,主界面
  • 9873:UVR5-WebUI,人声/伴奏分离和混响去除
  • 9872:语音合成(推理),最终的使用模型
  • 9871:校对工具,音频切片后的校对
  • 9880: api接口

服务启动后,即可访问程序主界面 ,会看到打开 UVR5-WebUI,点击打开,然后就能访问 UVR5-WebUI,在这个页面,上传你准备的音频文件,其中模型选择HP2_all_vocals,最后就可以执行了,成功后,在output/uvr5_opt目录会生成两个文件,其中vocal_开头的是纯净的人声文件,下一步会用到

下一步,音频切片器:将上一步得到的vocal_开头的文件所在目录(其他文件删掉,或把该文件复制到一个新文件夹)的路径添加到音频切片器输入(文件或文件夹),我这里是/workspace/output/uvr5_opt,然后点击启动音频切片器,成功后会在/workspace/output/slicer_opt目录产生分离后的小文件

接着,语音降噪工具:忽略

继续,中文ASR工具:在输入文件夹路径填写上一步得到的小文件目录/workspace/output/slicer_opt,然后点击启动批处理 ASR,成功后会产生一个list文件/workspace/output/asr_opt/slicer_opt.list。注意,这一步会下载一个模型,速度很慢,实在不行就手动执行框框中提示的命令。

继续,启用语音转文本校对工具:在.list 批注文件路径输入/workspace/output/asr_opt/slicer_opt.list,然后点击开放标签 WebUI,就可以访问校对工具了。

继续,语音转文本校对工具:在这个页面可以检查一下系统生成的文本,标点符号等是否正确,不正确就修改一下。也可以进行合并,拆分等。这里我跳过。

继续,我们回到主页面,点击第二个tab 1-GPT-SOVITS-TTS,填写实验/模型名称,要英文的;

然后看到下面有3个tab,先看第一个1A-数据集格式:填写文字标签文件,就是list文件路径/workspace/output/asr_opt/slicer_opt.list,然后音频数据集文件夹,就是分割后的小文件目录/workspace/output/slicer_opt,接着点击开始一键格式化

接着,第二个tab 1B-微调训练:训练SoVITS_weights模型,其中参数每个 GPU 的批处理大小总纪元数要根据自己GPU的性能进行调整,总纪元数越大越好,约耗时间,当然也别成百上千,没必要。我填的25,最后点击开始SoVITS培训

接着,训练GPT_weights模型,参数都模型,直接点击开始 GPT 训练

接着,第三个tab,1C-推理,点击刷新模型路径,选择刚训练的模型,然后点击开放TTS推理WEBUI,就可以访问语音合成(推理)

最后,先上传参考音频文件,再添加对应的文本,为了省事,我们可以上传一个分割后的小音频文件。然后填写推理文本,就是你要合成语音的文本,最后点击开始推理就能合成了。

模型分享

分享需要的模型都在SoVITS_weights和GPT_weights这两个文件夹,选择合适轮数的模型,记得带上参考音频一起打包成压缩文件,就可以分享了。别人只要将GPT模型(ckpt后缀)放入GPT_weights文件夹,SoVITS模型(pth后缀)放入SoVITS_weights文件夹就可以推理了

以为的模型为例

代码语言:javascript
复制
- /workspace/GPT_weights/yangmi-e15.ckpt
- /workspace/SoVITS_weights/yangmi_e24_s1344.pth

- /workspace/output/slicer_opt/vocal_yangmi.WAV_10.flac_0000000000_0000135040.wav
- 音频对应的文本

将以上4部分打包就可以分享了

这里有作者分享的一些模型: https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/nwnaga50cazb2v93

API调用

启动服务

执行参数

  • -s:SoVITS模型路径
  • -g:GPT模型路径
  • -dr:默认参考音频路径
  • -dt:默认参考音频文本
  • -dl:默认参考音频语种,//中文,英文,日文,zh,en,ja
代码语言:javascript
复制
python api.py -dr "/workspace/output/slicer_opt/vocal_yangmi.WAV_10.flac_0000000000_0000135040.wav" -dt "我觉得有那些角色在哪儿,是因为我运气好。" -dl "zh" -s "/workspace/SoVITS_weights/yangmi_e24_s1344.pth" -g "/workspace/GPT_weights/yangmi-e15.ckpt"

文本转语音

代码语言:javascript
复制
curl --location 'http://localhost:9880' \
--header 'Content-Type: application/json' \
--data '{
    "refer_wav_path": "/workspace/output/slicer_opt/vocal_yangmi.WAV_10.flac_0000000000_0000135040.wav",
    "prompt_text": "我觉得有那些角色在哪儿,是因为我运气好。",
    "prompt_language": "zh",
    "text": "今天我吃了两个包子,一个鸡蛋,还有一杯豆浆。",
    "text_language": "zh"
}'

参考

https://github.com/RVC-Boss/GPT-SoVITS

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 部署
  • 准备
  • 训练
  • 模型分享
  • API调用
    • 启动服务
    • 参考
    相关产品与服务
    语音合成
    语音合成(Text To Speech,TTS)满足将文本转化成拟人化语音的需求,打通人机交互闭环。提供多场景、多语言的音色选择,支持 SSML 标记语言,支持自定义音量、语速等参数,让发音更专业、更符合场景需求。语音合成广泛适用于智能客服、有声阅读、新闻播报、人机交互等业务场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档