这篇文章前提是你有公网 IP 的服务器,如果没有在部署内网穿透部分可能要采用 ngrok 内网穿透
# 前提介绍
Gpt-Sovits:发布于今年的一个音色克隆开源项目,GitHub 已超过 3 万收藏。
开源项目地址:https://github.com/RVC-Boss/GPT-SoVITS
腾讯云 GPU:提供 Tesla T4 显卡,16G 显存,每月赠送 50000 分钟云 GPU 使用时长,等于无限白嫖。缺点:每日凌晨 2 点容器空间自动关机。
注册地址:https://ide.cloud.tencent.com/dashboard/gpu-workspace
# 部署 GPT-Sovits
-
打开上述腾讯云 GPU 地址,登录或者注册你的腾讯云账号
-
进入高性能工作空间,点击直接创建,选择免费的基础型。工作空间名称 Gpt-Sovits(随便起),应用模板选择 pytorch2.0.0,等待几分钟进入你新建的工作空间 IDE。(狗血剧情:我点击直接创建等了几分钟没反应,点了好几次都不成功,😤最后点击了顶部立即体验才给我创建成功)
-
进入工作空间之后,就可以把左侧资源管理器栏下的所有文件删除
-
删除自带的 pytorch(IDE 顶部的终端选择新建终端,输入下面的指令回车,然后输入 Y 回车确认删除)
pip uninstall torch
-
克隆 Gpt-Sovits 项目到云服务器,进入项目根目录(依次执行下面的指令)
git clone https://gitcode.com/gh_mirrors/gp/GPT-SoVITS.git
cd GPT-SoVITS
-
创建 conda 环境
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
-
接下来一路 'y' 安装对应的依赖,请耐心等待☕,与此同时可以新开一个命令行窗口走第 8 步
bash install.sh
-
下载预训练模型。因腾讯云无法连接 huggingface ,这里给出两种解决方法:
-
用本机从 huggingface 的 lj1995/GPT-SoVITS at main 直接下载模型,在本地下载完成之后再上传至腾讯云
-
从 modelscope 直接下载模型,节省来回倒腾步骤。
pip install modelscope
创建一个 download/down_model.py 文件
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('AI-ModelScope/GPT-SoVITS', cache_dir='./')
就可以在 download 文件夹下看到
AI-ModelScope
文件夹,接着移动指定文件内容,mv download/AI-ModelScope/GPT-SoVITS/* GPT-SoVITS/GPT_SoVITS /pretrained_models/
-
-
上传人物音色模型
-
模型下载地址(选择你需要的人物模型,下载后压缩成.zip 格式本教学以原神珊瑚宫心海为例):https://pan.baidu.com/s/14WUDbWnBn7GPQYVREkWMug?pwd=1145,文末给出了搜索百度网盘解析站解决限速的方法。
-
创建模型存放目录:右键点击左侧资源管理器项目根目录(第一个 GPT-SoVITS),新建路径 char_model / 原神
-
上传你的模型(.pth 和 .ckpt 和 .wav)至新建的目录
-
-
启动 api 服务
cd /workspace/GPT-SoVITS
python api_v2.py
可以看到程序加载了预训练模型,运行在了本地 http://127.0.0.1:9880,然而这个地址是腾讯云服务器的内部地址,是无法用我们自己的浏览器访问的,要想通过远程访问还需要配置内网穿透
# 部署内网穿透
内网穿透方式有很多种,这里提供几种可行的思路
- 自己有服务器并且有对应的公网 IP,可以用现成的源码框架搭建,比如 frp,nps 等,个人使用 frp
- 安装 ngrok。
# 请求样例
当我们把服务穿透出来之后,直接访问相应网址会返回 {"detail":"Not Found"}。
请求一个角色需要两个设置两个权重文件,分别是:
https://YOUR_URL/set_gpt_weights?weights_path=char_model/yuanshen/zhongli/zhongli-e10.ckpt
https://YOUR_URL/set_sovits_weights?weights_path=char_model/yuanshen/zhongli/zhongli_e10_s1120.pth
如果请求之后返回 {"message":"success"} 说明配置成功!
配置好模型以后,就可以直接使用我们的 TTS API 服务了
https://YOUR_URL/tts?text = 哥哥弟弟坡前坐,坡上卧着一只鹅,坡下流着一条河 & text_lang=zh&ref_audio_path=char_model/yuanshen/zhongli/ 无事逢客休,席上校两棋… 我们开局吧。.wav&prompt_lang=zh&prompt_text = 无事逢客休,席上校两棋… 我们开局吧。&top_k=5&top_p=1&temperature=1&text_split_method=cut0&batch_size=1&batch_threshold=0.75&split_bucket=true&speed_factor=1&fragment_interval=0.3&seed=-1&media_type=wav&streaming_mode=false¶llel_infer=true&repetition_penalty=1.35
# Gpt-Sovits API 参数设置
text: 推理文本。在阅读中设置为 。
ref_audio_path: 参考音频位置。腾讯云资源管理器项目根目录下的相对位置,不包含根目录名称 GPT-SoVITS 本身,不一定得使用模型中提供的参考音频,可以自定义选择上传,推理生成的音频感情与参考音频相似。
prompt_text: 提示词。即参考音频文本内容。
text_split_method: 文本切分方式。重要,具体含义可在项目 text_segmentation_method.py 中查看,阅读 TTS 推荐设置为 cut1(凑四句一切)
speed_factor: 语音速度。默认为 1,阅读中对应参数为 。
media_type: 音频格式。阅读 TTS 推荐设置为 ogg
streaming_mode: 流式输出。阅读 TTS 需要设置为 true
其它参数使用上面调用示例中的默认设置即可。
# 补充
-
腾讯云每日 2:00 强制关机,需要手动启动服务
-
腾讯云 GPU 提供的磁盘空间为 50G,上传角色模型注意不要超过磁盘限制了,可使用下面的指令查看。
#查看磁盘剩余空间
df -h
#查看显卡及显存占用
nvidia-smi
# 🚀百度网盘解析站
解决百度网盘下载速度慢,Google 搜索 intext:"当前用户组:游客分组",往下找就行,总有一个适合你的😊