VoxCPM2 语音合成完整教程:30 种语言 TTS、声音克隆与音色设计实战
【免费下载链接】VoxCPMVoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning项目地址: https://gitcode.com/GitHub_Trending/vo/VoxCPM
给一期播客配多语言解说,或者用一段 10 秒的录音复刻出内部培训的声音,这类需求现在可以完全在本地用开源工具完成。VoxCPM2 语音合成是一个采用 Apache-2.0 协议开源的多语言文本转语音系统,由 OpenBMB 发布:支持 30 种语言、输出 48kHz 采样率的音频,在 RTX 4090 上使用加速推理引擎时 RTF(实时率,即生成 1 秒音频所需的真实时间)可低至约 0.13。读完本文,你可以完成安装、跑通基础合成与声音克隆,并按自己的场景选定部署方式。
🚀 先跑起来:VoxCPM2 安装步骤
安装只需一条 pip 命令,出第一句音频的代码不超过 8 行。先在终端执行pip install voxcpm,然后运行下面的代码块:
from voxcpm import VoxCPM import soundfile as sf model = VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False) wav = model.generate(text="你好,这是第一句合成语音。", cfg_value=2.0, inference_timesteps=10) sf.write("demo.wav", wav, model.tts_model.sample_rate) print("saved: demo.wav")运行结束后,demo.wav就是可播放的成品音频。环境要求:Python 3.10 到 3.12、PyTorch ≥ 2.5.0、CUDA ≥ 12.0,显存约 8GB。如果想查看仓库里的训练脚本或 Web 入口,可以克隆代码:git clone https://gitcode.com/GitHub_Trending/vo/VoxCPM。
🎨 三种玩法:合成、设计与克隆
三种用法共用同一个generate()接口,区别只在传入的参数。
基础合成:文本直接变语音
核心价值:输入文本即得到语音,30 种语言直接输入即可,无需标注语言。代码就是上文「先跑起来」的第一个代码块,即最小形态。效果:生成的音频自带与文本内容匹配的韵律,语气会随语义变化。
自然语言设计音色:没有录音也能造声音
核心价值:不需要任何参考音频,用文字描述就能生成一个全新音色。写法是把描述放在text开头的括号里:
wav = model.generate( text="(年轻女性,声音温柔甜美)欢迎使用 VoxCPM2 语音合成。", cfg_value=2.0, inference_timesteps=10, seed=42, ) sf.write("design.wav", wav, model.tts_model.sample_rate)效果:design.wav会呈现稳定的「年轻女性、温柔甜美」音色,适合品牌声音、旁白等没有现成录音的场景。
声音克隆:一段录音复刻一个声音
核心价值:提供一段参考录音,模型复刻其音色,并可用文字指令额外调节语速和语气。把路径传入reference_wav_path即可:
wav = model.generate( text="(稍快语速,语气欢快)这是克隆后的声音。", reference_wav_path="path/to/voice.wav", cfg_value=2.0, inference_timesteps=10, ) sf.write("clone.wav", wav, model.tts_model.sample_rate)效果:参考音频接受 16kHz 输入,输出仍是 48kHz;若还想复刻节奏、情绪等更细的音色细节,可以成对传入prompt_wav_path和prompt_text,让模型从参考音频处续写。此外,若默认音色不合业务,5 到 10 分钟的音频即可通过 LoRA 微调配置 训练专属声音,入口是 训练脚本,也支持python lora_ft_webui.py启动训练 WebUI。
🔍 它是怎么做到的:无分词器架构说人话
大部分开源 TTS 先把音频切成一串离散 token(类似把句子拆成一个个字),生成时逐个还原,信息在每一轮「离散化」中都会损失。VoxCPM2 跳过了这个分词器环节,让模型直接生成连续的语音表征,再解码成波形:所谓「扩散自回归」,就是模型沿时间轴逐段生成,每一段由噪声通过扩散过程「显影」成清晰信号。
整条流水线分四个阶段,各自只做一件事:
- LocEnc(局部编码器):把输入音频切成短片段特征,供模型学习音频细节;
- TSLM(文本语义语言模型):2B 参数的语言模型,负责理解文本并产出语义表示;
- RALM(残差声学语言模型):结合 FSQ 量化与 LocDiT 扩散模块,生成连续语音隐码;
- AudioVAE V2:把隐码解码成最终音频,非对称的编解码设计保证了 48kHz 的输出规格。
📊 效果到底怎么样:开源 TTS 基准对比
以下数据来自公开基准 Seed-TTS-eval,表格只保留选型最相关的三类信息:
| 模型 | 参数量 | 是否开源 | 中文 CER(越低越好) | 英文 SIM(越高越好) |
|---|---|---|---|---|
| VoxCPM2 | 2B | 是 | 0.97% | 75.3% |
| FishAudio S2 | 4B | 是 | 0.54% | 未公布 |
| Qwen3-TTS | 1.7B | 是 | 1.22% | 71.7% |
| CosyVoice3 | 1.5B | 否 | 1.12% | 72.0% |
FishAudio S2 的中文 CER 更低,但它未公布 SIM 一列;VoxCPM2 的英文 SIM 75.3% 是表中开源模型的最高值,参数量则介于 Qwen3-TTS 与 FishAudio S2 之间。多语言场景下,项目自测的 30 语言 ASR 回听基准平均错误率为 1.68%。以上只是数据陈述,实际听感还取决于你的内容类型。
🏭 部署方式怎么选
三条路线按场景对号入座:
- 如果你在自己的 Python 应用里调用,直接用本地 API(如上例);处理长文本时改用
generate_streaming(),它会逐块产出音频,不用等整段合成完; - 如果你只是想快速试听,或交给不懂技术的同事体验,运行 Web 界面:
python app.py --port 8808,然后浏览器打开localhost:8808,入口文件见 app.py; - 如果你需要面向多租户的并发服务,走 vLLM 路线。Nano-vLLM 是轻量专用引擎(
pip install nano-vllm-voxcpm),RTF 可降到开头提到的 0.13 量级;vLLM-Omni 是官方多模态服务框架,提供 OpenAI 兼容的/v1/audio/speech接口、PagedAttention 与连续批处理,更适合生产环境。vLLM-Omni 的调用方式如下:
vllm serve openbmb/VoxCPM2 --omni --port 8000 curl http://localhost:8000/v1/audio/speech \ -H "Content-Type: application/json" \ -d '{"model":"openbmb/VoxCPM2","input":"你好,VoxCPM2","voice":"default"}' \ --output out.wav🛠️ 调优与排错速查
生成阶段真正常用的参数不多,推荐区间如下:
| 参数 | 作用 | 推荐区间 |
|---|---|---|
| cfg_value | 引导强度,输出贴合指令的紧密程度 | 2.0~3.0(默认 2.0) |
| inference_timesteps | 扩散推理步数,影响音质平滑度 | 10~20(默认 10) |
| seed | 随机种子,固定后结果可复现 | 任意整数 |
| max_len | 生成音频的最大长度(token 数) | 2~4096(默认 4096) |
| prompt_wav_path / prompt_text | 续写式克隆的输入 | 必须成对提供 |
三个高频问题,按「症状 → 解法」排查:
症状:启动或生成时提示 CUDA out of memory。解法:加载时加load_denoiser=False降低显存占用;仍不足则换用 0.5B 版本(显存约 5GB)。
症状:音色设计或可控克隆每次运行结果不一致。解法:项目官方说明此类可控生成的稳定性仍在改进中,多生成 1~3 次挑选,并用seed锁定满意的结果。
症状:克隆音色与参考音频差异大,或音频断续。解法:换用更干净、更短的参考录音;检查cfg_value是否过高,超过 3.0 容易引入杂音。
🌐 周边生态与社区
如果你的环境不是 Python,或偏好可视化流程,社区项目值得看看:
| 项目 | 一句话说明 | 适用场景 |
|---|---|---|
| Nano-vLLM | 高吞吐 GPU 推理引擎,支持并发请求 | 单服务高负载 |
| vLLM-Omni | 官方多模态服务,OpenAI 兼容 API | 多租户生产部署 |
| llama.cpp-omni | GGUF 格式的 C++ 推理,支持 CPU/Metal/CUDA/Vulkan | 无 Python、边缘设备 |
| VoxCPM.cpp | GGML/GGUF 格式推理 | CPU/CUDA 轻量部署 |
| VoxCPM-ONNX | ONNX 导出 | CPU 推理优化 |
| ComfyUI-VoxCPM | 节点式工作流 | 可视化流程编排 |
克隆仓库后运行上文第一个代码块,确认能出声,再根据默认音色是否合业务决定是否做 LoRA 微调。VoxCPM2 是目前少数完全开源、可商用、支持 48kHz 输出与声音克隆的多语言 TTS 选择。
【免费下载链接】VoxCPMVoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning项目地址: https://gitcode.com/GitHub_Trending/vo/VoxCPM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考