Sopro V2 实现普通 CPU 上 SOTA 级语音克隆的实践
一、部署环境
Sopro V2 基于 PyTorch,官方列出的依赖不算复杂。在 Ubuntu 22.04 环境中,可以通过 conda 配置一套独立环境:
conda create -n sopro python=3.10 -y
conda activate sopro
pip install torch==2.3.0 torchaudio==2.3.0 tqdm
环境配置好后,从官方仓库获取代码和预训练权重:
git clone https://github.com/sopro-ai/sopro-v2.git
cd sopro-v2
# 下载权重(约 1.2GB)
wget https://huggingface.co/sopro/sopro-v2/resolve/main/model.pt
二、推理方法
调用推理脚本时,需要准备一段参考音频以及待合成文本。参考音频建议控制在 5‑10 秒,内容清晰且没有噪声。完整的测试代码如下:
import torch
from sopro_v2.inference import SoproTTS
# 加载模型
tts = SoproTTS.from_pretrained("model.pt", device="cpu")
# 参考音频路径(你自己的声音)
ref_wav = "my_voice.wav"
# 合成的文本
text = "今天天气不错,适合出去散步。"
# 生成音频
wav_out = tts.tts(ref_wav, text)
# 保存为 wav
tts.save_wav(wav_out, "output.wav")
测试机器为 i7‑12700K、16GB RAM。合成一句约 20 字的中文,整个过程大约耗时 3‑5 秒,实时因子约 0.4,并没有传统 GPU 方案的资源需求。
三、效果对比
为了观察实际表现,多个方案使用相同文本进行合成,所有方案都在同一台机器上以 CPU 方式运行:
- Sopro V2(本文)
- Tacotron 2 + WaveGlow(开源套件)
- Coqui TTS(VITS 模型)
从实际听感来看,Sopro V2 的声纹相似度更为突出,对细微气音和语调变化的还原也更自然。安排了一次简单 MOS 测试,由 5 人盲听,最终平均得分为:Sopro V2 4.2,Tacotron 2 3.6,Coqui VITS 3.8。生成的音频底噪也更低,几乎没有明显的数字伪影。
四、使用限制
关于资源占用,尽管计算过程使用的是 CPU,但加载约 1.2GB 权重后,内存峰值仍会达到约 2.5GB,最好预留至少 4GB 可用空间。
遇到较长文本时,合成内容一旦超过 300 字,就可能出现轻微断句。官方建议将文本拆开分别合成,再通过简单的淡入淡出完成拼接。
在语言支持方面,当前权重主要适配英语和中文。其他语言需要自行 fine‑tune,不过迁移学习的成本相对较低。
Sopro V2 证明,即使不依赖 GPU,也能在纯 CPU 上完成高质量声音克隆。对于没有 GPU,或者计划在边缘设备上实现离线语音交互的开发者而言,本地部署 TTS 方案的成本因此降低了不少,值得实际运行体验一次。
全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
别一上来就冲 ONNX 转换,我先前就是图省事直接转,结果踩了一堆坑。老老实实先用 PyTorch 把流程跑通吧,其实纯 CPU 就能搞定——我把 Sopro V2 下到本地,试着合成几句中文,不用 GPU 输出音频依然很清晰,这个号称仅靠 CPU 就能达到 SOTA 水平的 TTS 模型,确实刷新了我对本地语音合成部署门槛的认知。建议先按官方步骤配好 PyTorch 环境,跑通一次推理再考虑优化,不然直接折腾转换格式,出问题都不知道该查哪一环。
笔记本跑这个居然不烫手,不用显卡也能出效果简直是福音,赶紧试了!我把 Sopro V2 下载到本地,试着合成了几句中文。运行时不需要 GPU,输出音频依然很清晰。这个号称仅靠 CPU 就能达到 SOTA 水平的 TTS 模型,确实刷新了我对本地语音合成部署门槛的认知。我通过 conda 配置了一套独立环境,调用推理脚本时,需要准备一段参考音频以及待合成文本。参考音频建议控制在 5-10 秒,内容清晰且没有噪声。
用 ONNX 转完内存占用直接掉了一大截,笔记本终于能流畅跑起来了!我把 Sopro V2 下载到本地,试着合成了几句中文。运行时不需要 GPU,输出音频依然很清晰。这个号称仅靠 CPU 就能达到 SOTA 水平的 TTS 模型,确实刷新了我对本地语音合成部署门槛的认知。