
GPT-SoVITS CPU 推理实战指南无显卡笔记本 45 秒合成 10 秒语音【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITSGPT-SoVITS 是一个少样本语音克隆工具1 分钟参考音频就能捏出一个人的音色但它的推理流程默认按 GPU 来组织。好消息是纯 CPU 机器跑它完全没有硬门槛只要把精度、线程和文本切分这三件事管好我在双核笔记本上把 10 秒语音的合成耗时从 2 分多钟压到了 45 秒左右。先说个反直觉的事官方版本自带 CPU 兜底很多人以为没有显卡就跑不了 GPT-SoVITS其实打开 config.py 看一眼get_device_dtype_sm就明白了程序会逐个探测显卡发现没有 CUDA 就直接返回cpufloat32就算有显卡显存小于 4GB 或者架构太老sm 5.3它也会主动降级到 CPU。也就是说无显卡环境下半精度开关is_half会自动变成 False你什么都不改也能跑起来——只是默认参数没针对低端机调过所以会慢、会占内存。后面所有优化都是在这个能跑的基础上抠性能。这个自动降级逻辑对核显笔记本、老独显比如当年的 GT 730 一类也适用显存不够时模型照样会落到 CPU 上行为一致。第一步启动 API 时强制 CPU 全精度最省事的做法是走 api.py 的命令行开关不用改任何源码python api.py -d cpu -fp # -d cpu : 强制 CPU 推理不依赖自动探测 # -fp : 全精度 float32覆盖 config 里的 is_half为什么要显式加-fp因为config.py里is_half的环境变量默认值是 True虽然无显卡时会被自动探测覆盖成 False但如果你有张能跑 float16 的小显卡它可能仍按半精度加载——在 CPU 上跑 float16 既不支持也慢所以 CPU 推理一律走全精度。启动时日志里会打印半精: False看到它就对了。第二步用命令行单条合成绕开 WebUI网页界面要拉起一整套 Gradio 进程对 4GB 内存的机器不算友好。项目里带了 GPT_SoVITS/inference_cli.py一条命令完成整段合成进程跑完即退出内存能完整回收python GPT_SoVITS/inference_cli.py \ --gpt_model GPT_SoVITS/pretrained_models/s1v3.ckpt \ --sovits_model GPT_SoVITS/pretrained_models/s2Gv3.pth \ --ref_audio ref.wav \ --ref_text ref.txt \ --ref_language 中文 \ --target_text target.txt \ --target_language 中文 \ --output_path out/模型路径用的是官方 v3 底模与config.py里登记的pretrained_gpt_name/pretrained_sovits_name一致。参考音频记得先切成干净的人声、控制在 3 秒到 10 秒之间ref.txt里填这段音频的原话——参考音频越长语义编码那一步的计算量越大CPU 上尤其明显。第三步限制线程数别让 CPU 空转PyTorch 默认会让每个算子开满所有逻辑核心的线程。双核四线程的机器上这个默认值看着不多但和 WebUI 后台进程、声卡驱动抢核时会大量上下文切换实测反而更慢。在推理入口加两行设置from multiprocessing import cpu_count import torch n max(1, cpu_count() // 2) torch.set_num_threads(n) # 算子内并行开一半核 torch.set_num_interop_threads(1) # 算子间并行单线程另外如果你走 WebUI 路线注意 webui.py 里有个启用并行推理版本的开关默认关闭它会把推理子进程换成inference_webui_fast.py做批量处理——这是给多张请求并发的 GPU 服务准备的CPU 上开了只会把内存打爆保持关闭即可。长文本推理的两个提速抓手长文本别整段丢进去。get_tts_wav会按标点自动切分逐句合成但切分粒度你可以在喂文本前自己控制手动按句号、分号把长文拆成每句 50 字以内的小段每段独立调用。这样单段占用的中间张量小内存峰值能压下来一半左右也方便失败后只重跑某一段。生成参数方面top_k/top_p/temperature三者共同决定 GPT 部分逐 token 采样的范围范围越大候选词筛选越费时间。CPU 上把top_k收到 15 左右、top_p用 0.6、temperature用 0.6这正是get_tts_wav的默认值音色还原度几乎无感但长文本的总耗时有肉眼可见的下降。容易踩的三个坑第一个坑是给 CPU 加-hp半精度参数。它会让模型以 float16 加载在大多数 CPU 上等于白慢一截甚至触发算子回退报错CPU 推理永远只用-fp。第二个坑是反复销毁重载模型。api.py 的加载流程里每步都调用了torch.cuda.empty_cache()清理看着像在释放内存但对 CPU 推理来说模型常驻内存才快——GPT SoVITS 两个底模全精度常驻大约 2GB 出头反复加载才是内存杀手。建议长任务保持一个进程跑到底。第三个坑是内存不够还硬上。2GB 内存的机器跑 v3 底模会被系统疯狂换页合成 10 秒音频可能拖到 5 分钟以上还伴随卡顿这时候换 v1 底模s2G488k.pth那套比任何调参都有效。往后还能挖什么CPU 路线做到这里体验上已经够日常配音、朗读用了如果还想再榨性能项目里现成有 ONNX 导出和 TorchScript 导出onnx_export.py、export_torch_script_v3v4.py把 v3/v4 模型导出后用 ONNX Runtime 在 CPU 上跑部分算子能再快一截属于进阶玩法。参数默认值以后可能随版本调整动手前可以翻一下 docs/cn/Changelog_CN.md跟着官方更新走最稳。【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考