GPT-SoVITS 语音合成在 Mac 上跑满速:MPS 加速配置与调优实战
【免费下载链接】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
GPT-SoVITS 是一款开源的少样本语音克隆工具,一分钟的录音就能训出一个可用的 TTS 模型。它默认在 CPU 上推理,合成速度慢是 macOS 用户绕不开的痛点;借助 Apple Silicon 芯片的 MPS(Metal Performance Shaders)加速,推理速度可以提升 3~5 倍。这篇指南覆盖从系统检查、一键安装到参数调优和批量合成的完整流程,照着做即可。
起飞前检查清单
开始前花一分钟确认硬件满足条件,能避免后面大部分装不上的问题:
- macOS 版本:≥ 12.0(Monterey)
- 芯片类型:Apple Silicon(M 系列芯片)
- Xcode 命令行工具:必须已安装,编译和 MPS 运行时都依赖它
两条命令可以快速核对:
sw_vers -productVersion # 查看 macOS 版本 sysctl -n machdep.cpu.brand_string # 查看芯片型号如果第二条命令输出的是 M 系列芯片型号,就可以走 MPS 路线。
快速上手:四步跑通 MPS 推理
整个流程是线性的,从克隆仓库到 WebUI 出声,不超过 4 步。
第 1 步,克隆代码:
git clone https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS cd GPT-SoVITS第 2 步,一键安装:仓库自带的 install.sh 支持设备参数,MPS 走 CPU 版 PyTorch 加 Metal 后端,模型源选 ModelScope 在国内下载更稳:
bash install.sh --device MPS --source ModelScope脚本会自动识别 Apple Silicon 架构、装好匹配的 PyTorch 与依赖,并把预训练模型下载到 GPT_SoVITS/pretrained_models/ 目录,这一步不需要手动干预。
第 3 步,做两处关键修改:配置文件和环境变量各改一处,具体见下一节。
第 4 步,启动并验证:
python webui.py启动后终端和 WebUI 界面会显示当前设备为mps;打开活动监视器,推理时 GPU 占用率上升即说明加速生效,速度相比 CPU 模式有明显提升。
MPS 加速只需改这两处
配置层面真正必须动的只有两个地方,改完即可上 GPU。
其一,推理配置文件。打开 GPT_SoVITS/configs/tts_infer.yaml,把对应版本段(如v2)的设备从cpu改为mps,同时打开半精度:
v2: device: mps # 由 cpu 改为 mps is_half: true # 启用半精度原因很简单:这份配置默认就是 CPU 模式,不改的话模型根本不会加载到 Metal 后端,后面怎么调都白搭。
其二,两个环境变量。启动 WebUI 前先执行:
export PYTORCH_ENABLE_MPS_FALLBACK=1 # MPS 缺失算子时回退 CPU export KMP_DUPLICATE_LIB_OK=TRUE # 规避 OpenMP 库重复加载前者是保险丝:部分算子在 Metal 上没有原生内核,开了回退就不会直接报错中断;后者解决系统级库冲突导致的崩溃。
速度与内存调优:三个可动旋钮
跑通之后想再榨一点性能,可以按内存余量逐个调整。
批处理大小:修改 config.py 中的default_batch_size,把它压到max(1, minmem // 4)附近,内存紧张时直接设 1;同时可在 GPT_SoVITS/configs/tts_infer.yaml 的custom段按内存大小把batch_size调到 2。批处理开太大是最常见的爆内存来源。
半精度推理:确认is_half: true生效。FP16 相比 FP32 显存压力减半,速度也更快,语音质量无明显损失。
模型预加载:把常用底模路径写死进 webui.py 的环境变量,省去每次启动的重复加载:
os.environ["gpt_path"] = "GPT_SoVITS/pretrained_models/s1v3.ckpt" os.environ["sovits_path"] = "GPT_SoVITS/pretrained_models/v2Pro/s2Gv2Pro.pth"训练场景:如果后续要微调,可设置if_grad_ckpt: true开启梯度检查点,用少量计算换显存空间。
两种使用方式:WebUI 单条、CLI 批量
单条合成走 WebUI。python webui.py启动后访问http://localhost:9874,GPT_SoVITS/inference_webui.py 提供的图形界面里选择底模、粘贴参考音频和目标文本,即可实时试听生成结果,适合日常创作和效果对比。
批量任务走命令行。准备一个每行一句的文本文件,用 GPT_SoVITS/inference_cli.py 一次跑完:
python GPT_SoVITS/inference_cli.py --text "批量处理文本.txt" --output_dir ./output --device mps无界面、可脚本化,适合夜里挂任务。
避坑 FAQ
现象:报aten::_linalg_svd之类的算子不支持错误。原因:该算子在 MPS 上没有内核,且回退开关没开。 解决:启动前执行export PYTORCH_ENABLE_MPS_FALLBACK=1,让它自动走 CPU 兜底。
现象:16GB 内存机器频繁卡死或触发 swap。原因:模型权重加批处理缓冲超出了统一内存余量。 解决:先关掉其他内存大户,再把 config.py 里is_half保持true、批处理大小降到 1,两项一起做通常就能稳住。
现象:预训练模型下载极慢甚至超时。原因:默认模型源在国内访问速度不理想。 解决:编辑 install.sh 中第 246~253 行附近的下载 URL,换成 ModelScope 国内镜像地址:
PRETRINED_URL="https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/pretrained_models.zip"现象:启动时报 OpenMP 相关的库加载冲突。原因:conda 环境里重复链接了 OpenMP 运行时。 解决:export KMP_DUPLICATE_LIB_OK=TRUE后重启进程即可。
性能数据与进阶方向
M1 Pro(16GB)上的实测数据,三种模式的平均耗时与内存占用:
- CPU 模式:约 0.8 秒/句,占用 4.2GB,质量正常
- MPS + FP32:约 0.3 秒/句,占用 5.8GB,质量正常
- MPS + FP16:约 0.2 秒/句,占用 3.5GB,质量最佳
FP16 路线速度提升约 300%,内存还比 FP32 省了四成,是 Mac 上的默认选择。
想继续深入,有三个方向值得尝试:一是用 GPT_SoVITS/export_torch_script.py 导出 INT8 量化模型进一步压缩体积;二是通过 GPT_SoVITS/s2_train.py 微调自己的专属音色;三是调整 webui.py 里的default_max_batch_size,让服务扛住更多并发请求。
配置中遇到报错或有优化建议,欢迎直接到项目仓库提 Issue,社区响应很快。
【免费下载链接】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),仅供参考