一款神经网络音频编解码器 可用于影视角色台词二创
Autodl 部署GPT-sovits
📋 任务概述 目标 :使用原音频训练声音模型,生成新台词语音
原台词 :
我病了三年,四万块钱一瓶的正版药我吃了三年,房子吃没了,家人被我吃垮了,现在好不容易有了便宜药,你们非说他是假药,那药假不假,我们能不知道吗?那药才买五百块钱一瓶,药贩子根本没赚钱,谁家能不遇上个病人,你能保证你这一辈子不生病吗,啊?你们把他抓走了,我们都得等死,我不想死,我想活着
新台词 :
我失业了三年,四万块钱一个月的房贷我扛了三年,房子扛没了,家人被我啃垮了,现在好不容易有了openclaw,你们非说他没用,龙虾有没有用,我们能不知道吗?那软件是开源的,原作者根本没赚钱,谁家能保证自己不失业,你能保证你这一辈子不被AI取代吗,啊?你们把AI泡沫戳破了,我们都得等死,我不想死,我想活着
第一部分:租用AutoDL实例 AutoDL 4090 社区镜像关键字RVC-Boss/GPT-sovits
1.4 获取连接信息 实例启动后,在AutoDL控制台获取:
SSH连接命令(如:ssh -p 12345 root@region-x.autodl.pro)
密码
第二部分:环境配置 2.1 连接实例
2.2 安装依赖 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 apt update && apt upgrade -y apt install -y ffmpeg git mkdir -p /root/workspace cd /root/workspacegit clone https://gitee.com/RVC-Boss/GPT-SoVITS.git cd GPT-SoVITS
2.3 使用Conda环境 1 2 3 4 5 6 7 8 9 10 11 12 13 which condaconda create -n GPTSoVits python=3.10 -y conda activate GPTSoVits 若需conda init: ```bash conda init bash source ~/.bashrcconda activate GPTSoVits
安装PyTorch(根据CUDA版本选择) 查看CUDA版本 nvidia-smi | grep “CUDA Version”
显示1 | NVIDIA-SMI 580.105.08 Driver Version: 580.105.08 CUDA Version: 13.0 |
查看pytorch1 python -c "import torch; print(torch.__version__)"
安装项目依赖 1 2 cd /root/workspace/GPT-SoVITSbash install.sh --device CU128 --source ModelScope
torch版本未指定问题
1 2 3 4 5 6 pip uninstall torch torchvision torchaudio triton pip cache purge pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
2.4 下载预训练模型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 mkdir -p GPT_SoVITS/pretrained_models mkdir -p GPT_SoVITS/text mkdir -p tools/UVR5/UVR5_weights pip install modelscope=1.11.0 modelscope download iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch mv ~/.cache/modelscope/hub/iic/* ~/GPT-SoVITS/tools/asr/models
第三部分:准备训练数据 3.1 上传音频文件 方法1:使用AutoDL文件管理器(推荐)
在AutoDL控制台打开”文件管理”
创建目录 /root/workspace/audio/
上传音频文件 output.wav
方法2:使用SCP上传 1 2 scp -P <端口> output.wav root@<地址>:/root/workspace/audio/
方法3:使用rclone或其他工具
3.2 音频要求
格式 :WAV(推荐)、MP3、FLAC
采样率 :建议16kHz以上,24kHz最佳
声道 :单声道
时长 :建议1-5分钟的清晰人声
质量 :无背景音乐、无噪音、无混响
3.3 音频预处理(可选) 如果音频有背景音乐或噪音,需要先处理:
1 2 3 4 5 6 7 8 cd /root/workspace/GPT-SoVITSpython webui.py zh_CN
第四部分:训练模型 4.1 方案A:快速推理(零样本,无需训练) 适合快速测试,效果可能不如微调:
1 2 3 4 5 6 7 cd /root/workspace/GPT-SoVITSpython webui.py
4.2 方案B:微调训练(推荐,效果更好) 步骤1:配置AutoDL端口映射
在AutoDL控制台 → 自定义服务 → 开启端口映射
添加端口 9874(WebUI默认端口)
获取访问链接
1 ssh -p 19612 -L 9874:localhost:9874 root@connect.bjb2.seetacloud.com
步骤2:启动WebUI 1 2 3 4 5 6 7 8 cd /root/workspace/GPT-SoVITSconda activate GPTSoVits python webui.py --listen 0.0.0.0 python webui.py --listen 0.0.0.0 --port 9874
package issues
1 2 pip install opencc==1.1.6 pip install torchcodec
use pytorch 2.8
1 2 pip uninstall torch torchaudio torchvision torchcodec -y pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0
步骤3:使用WebUI训练
打开WebUI :浏览器访问端口映射地址
音频切分 (如果音频较长):
进入 0b-音频切片工具
上传音频,设置切片参数(建议每段10-15秒)
点击”切分”
语音识别 :
进入 0c-中文ASR工具
选择切分后的音频目录
点击”识别”,生成文本标注
文本校对 :
进入 0d-文本校对工具
校对识别结果,确保文本与音频内容一致
保存标注文件
训练集格式化 :
进入 1A-训练集格式化工具
选择处理好的音频和标注文件
点击”格式化”,生成训练数据
微调训练 :
进入 1B-微调训练
设置训练参数:
SoVITS训练轮数 :建议10-20轮
GPT训练轮数 :建议10-20轮
批量大小 :根据显存调整(RTX 4090可用8-12)
学习率 :使用默认值
点击”开始训练”
等待训练完成(约30分钟-1小时)
推理测试 :
训练完成后,回到主页
选择训练好的模型
输入新台词,点击”生成”
下载生成的音频
第五部分:命令行训练(高级用户) 如果WebUI不可用,可以使用命令行:
5.1 准备训练数据 1 2 3 4 5 6 7 8 9 10 mkdir -p /root/workspace/GPT-SoVITS/Data/your_speaker_name cp /root/workspace/audio/output.wav /root/workspace/GPT-SoVITS/Data/your_speaker_name/ cat > /root/workspace/GPT-SoVITS/Data/your_speaker_name/esd.list << 'EOF' /root/workspace/GPT-SoVITS/Data/your_speaker_name/output.wav|your_speaker_name|我病了三年,四万块钱一瓶的正版药我吃了三年,房子吃没了,家人被我吃垮了,现在好不容易有了便宜药,你们非说他是假药,那药假不假,我们能不知道吗?那药才买五百块钱一瓶,药贩子根本没赚钱,谁家能不遇上个病人,你能保证你这一辈子不生病吗,啊?你们把他抓走了,我们都得等死,我不想死,我想活着 EOF
5.2 处理训练数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 cd /root/workspace/GPT-SoVITSconda activate GPTSoVits python prepare_datasets/1-get-text.py \ --inp_text Data/your_speaker_name/esd.list \ --inp_wav_dir Data/your_speaker_name \ --opt_dir Data/your_speaker_name/processed python prepare_datasets/2-get-hubert.py \ --inp_text Data/your_speaker_name/processed/esd.list \ --inp_wav_dir Data/your_speaker_name \ --opt_dir Data/your_speaker_name/processed python prepare_datasets/3-get-semantic.py \ --inp_text Data/your_speaker_name/processed/esd.list \ --inp_wav_dir Data/your_speaker_name \ --opt_dir Data/your_speaker_name/processed
5.3 训练SoVITS模型 1 2 3 4 5 6 7 8 9 10 11 cp configs/s2.json configs/s2_custom.json python s2_train.py --config configs/s2_custom.json
5.4 训练GPT模型 1 2 3 4 5 cp configs/s1.json configs/s1_custom.json python s1_train.py --config configs/s1_custom.json
5.5 推理生成 1 2 3 4 5 6 7 8 python inference.py \ --s2_model_path logs/s2/your_model.pth \ --s1_model_path logs/s1/your_model.ckpt \ --ref_audio /root/workspace/audio/output.wav \ --ref_text "我病了三年,四万块钱一瓶的正版药我吃了三年" \ --target_text "我失业了三年,四万块钱一个月的房贷我扛了三年" \ --output_path output.wav
第六部分:使用API调用 6.1 启动API服务 1 2 3 4 5 6 7 8 cd /root/workspace/GPT-SoVITSconda activate GPTSoVits python api_v2.py --listen 0.0.0.0 --port 9880 nohup python api_v2.py --listen 0.0.0.0 --port 9880 > api.log 2>&1 &
6.2 API调用示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import requestsurl = "http://<实例IP>:9880/tts" data = { "text" : "我失业了三年,四万块钱一个月的房贷我扛了三年,房子扛没了,家人被我啃垮了,现在好不容易有了openclaw,你们非说他没用,龙虾有没有用,我们能不知道吗?那软件是开源的,原作者根本没赚钱,谁家能保证自己不失业,你能保证你这一辈子不被AI取代吗,啊?你们把AI泡沫戳破了,我们都得等死,我不想死,我想活着" , "text_lang" : "zh" , "ref_audio_path" : "/root/workspace/audio/output.wav" , "prompt_text" : "我病了三年,四万块钱一瓶的正版药我吃了三年,房子吃没了,家人被我吃垮了" , "prompt_lang" : "zh" , "top_k" : 5 , "top_p" : 1.0 , "temperature" : 1.0 , "text_split_method" : "cut5" , "batch_size" : 1 , "speed_factor" : 1.0 , "split_bucket" : True } response = requests.post(url, json=data) with open ("output.wav" , "wb" ) as f: f.write(response.content)
6.3 curl调用示例 1 2 3 4 5 6 7 8 9 10 curl -X POST "http://<实例IP>:9880/tts" \ -H "Content-Type: application/json" \ -d '{ "text": "我失业了三年,四万块钱一个月的房贷我扛了三年", "text_lang": "zh", "ref_audio_path": "/root/workspace/audio/output.wav", "prompt_text": "我病了三年,四万块钱一瓶的正版药我吃了三年", "prompt_lang": "zh" }' \ --output output.wav
第七部分:下载生成的音频 7.1 使用AutoDL文件管理器
在AutoDL控制台打开”文件管理”
找到生成的音频文件
点击下载
7.2 使用SCP下载 1 2 scp -P <端口> root@<地址>:/root/workspace/GPT-SoVITS/output.wav ./
7.3 使用rclone同步 1 2 3 4 5 rclone config rclone copy /root/workspace/GPT-SoVITS/output.wav remote:backup/
第八部分:常见问题 Q1:显存不足怎么办? 1 2 3 4 5 6 7 8 export CUDA_LAUNCH_BLOCKING=1
Q2:训练速度慢?
检查是否正确使用GPU:nvidia-smi
确认CUDA版本与PyTorch版本匹配
使用更快的GPU(如RTX 4090)
Q3:生成的语音效果不好?
增加训练轮数(20-50轮)
使用更高质量的训练音频
确保训练音频与目标文本风格一致
调整推理参数(top_k, top_p, temperature)
Q4:WebUI无法访问?
检查端口映射是否正确配置
确认防火墙设置
使用 --listen 0.0.0.0 参数
Q5:模型下载失败?
使用国内镜像(HF-Mirror, ModelScope)
手动下载模型文件
第九部分:费用估算 AutoDL计费参考
GPU型号
参考价格(元/小时)
预计训练时间
预计费用
RTX 4090
约 3-4 元
30分钟-1小时
约 2-4 元
RTX 3090
约 2-3 元
1-2小时
约 3-6 元
A100
约 10-15 元
20-40分钟
约 5-10 元
建议 :选择RTX 4090,性价比最高,总费用约5元以内
第十部分:完整操作流程总结 快速版(零样本推理,无需训练) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ssh -p <端口> root@<地址> git clone https://gitee.com/RVC-Boss/GPT-SoVITS.git cd GPT-SoVITSconda create -n GPTSoVits python=3.10 -y conda activate GPTSoVits pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install -r requirements.txt bash install.sh --device CU118 --source HF-Mirror python webui.py --listen 0.0.0.0
完整版(微调训练,效果更好) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 python webui.py --listen 0.0.0.0
2025最新GPT-SoVITS教程
总结 该项目对python pytorch版本要求严格 cuda向下兼容 使用cu124/cu128无差