VoxCPM2 上手指南:3 步生成第一句语音,还能克隆任意声音
【免费下载链接】VoxCPMVoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning项目地址: https://gitcode.com/GitHub_Trending/vo/VoxCPM
想不想在本地跑一个 VoxCPM TTS 引擎,把一句中文直接变成 48kHz 的多语言自然语音?装好之后,你还能只靠几秒钟的录音克隆一个人的音色,或者用一句自然语言描述"年轻女声,温柔甜美"来凭空设计一个全新声音。整个流程不需要任何 API Key,模型权重基于 Apache-2.0 协议,可以免费商用。
动手前的环境自检
先花 10 秒确认下面的前置条件。GPU 推荐而非必须——没有显卡也能在 CPU 上跑,只是会慢一些;Apple 芯片 Mac 会自动走 MPS。
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux / macOS / Windows |
| Python | ≥ 3.10,且 < 3.13 |
| PyTorch | ≥ 2.5.0(随 pip 依赖自动安装) |
| CUDA | ≥ 12.0(NVIDIA GPU 才需要) |
| 显存 | VoxCPM2 约 8 GB(旧版 0.5B 约 5 GB) |
| 网络 | 首次运行需联网下载模型权重,约几个 GB |
最快路径:一条 pip 命令装完 VoxCPM
推荐直接走 PyPI,这是最短的一条路:
pip install voxcpm验证安装是否成功:
python -c "import voxcpm; print('ok')" voxcpm --help看到ok和命令帮助信息就可以继续了。如果你需要跟踪最新开发版,也可以从源码安装:git clone https://gitcode.com/GitHub_Trending/vo/VoxCPM后进入目录执行pip install .。
第一次产出:6 行代码生成第一个 WAV
下面的片段是最小可运行示例:加载最新的 VoxCPM2 模型,合成一句话,保存成文件。首次运行会自动下载权重,耐心等进度条走完。
from voxcpm import VoxCPM import soundfile as sf model = VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False) wav = model.generate( text="VoxCPM2 是目前推荐使用的多语言语音合成版本。", cfg_value=2.0, inference_timesteps=10, seed=42, ) sf.write("demo.wav", wav, model.tts_model.sample_rate)运行完去听demo.wav——恭喜,你已经拥有第一个 VoxCPM 语音文件了。几个注意点:
- 文本直接输入原始内容即可,不需要语言标签,中英日韩等 30 种语言都支持,还覆盖粤语、四川话、东北话等 9 种中文方言;
- 如果
from_pretrained拉取权重失败,多半是网络问题。可以在命令行先跑pip install modelscope,然后用snapshot_download把权重预下载到本地目录,再把本地路径传给from_pretrained(写法见 README_zh.md)。
用过之后再看原理:VoxCPM 为什么听起来不机械
先说结论:它没有把音频切成一个个离散"音素块"再拼回去。
传统 TTS 常见做法是先用分词器(tokenizer)把音频编码成离散 token,让语言模型像写文章一样"写"出一串 token,再解码回波形。量化这一步会不可避免地丢细节——这也是机械感的来源之一。VoxCPM 的路线叫Tokenizer-Free:全程在连续隐空间里建模,从文本一路走到连续语音表征,中间不做离散化。
从这张架构图可以读出它的分工,像一条接力生产线:
- Text-Semantic LM(文本语义语言模型):负责"理解",根据文本内容和上下文决定该怎么读、什么节奏、什么情绪,并通过 FSQ 约束隐式解耦语义信息;
- Residual Acoustic LM(残差声学语言模型):负责"发声",在语义规划之上补齐音色、气息、强弱这些声学细节;
- LocDiT 模块:用流匹配从噪声中还原出自然波形,由 AudioVAE 解码输出,VoxCPM2 原生输出 48kHz 音频。
VoxCPM2 基于 MiniCPM-4 骨干,约 2B 参数,在 200 万小时多语种音频上训练。RTX 4090 上实时率(RTF)约 0.3,即 1 秒音频约 0.3 秒就能生成完;配合推理引擎加速还能压到 0.13 左右。
调参实战:按症状对症下药
VoxCPM 合成时最常用的两个参数是cfg_value(默认 2.0)和inference_timesteps(默认 10)。不用死记含义,直接对照你的"症状"调:
| 你遇到的问题 | 怎么调 |
|---|---|
| 声音发紧、发僵,听着不放松 | cfg_value从 2.0 降到 1.0–1.5 |
| 漏读、节奏不对、不听"提示" | cfg_value提到 3.0 左右,让模型更严格遵循输入 |
| 想快速出稿试效果 | inference_timesteps降到 4–6,换种子多试几次 |
| 交付级音质 | inference_timesteps提到 15–20 |
| 需要可复现的结果(对比实验、回归测试) | 固定seed,例如seed=42 |
两个经验值:官方推荐区间是cfg_value0.1–10.0(1.0–3.0 最常见)、inference_timesteps1–100(4–30 常用,命令行参数校验里就写明了)。另外,音色设计和可控克隆这类任务对随机性比较敏感,同一段描述生成 1–3 次、挑最好的一条,是官方自己也在用的做法。
进阶玩法:命令行、Web 界面与声音克隆
命令行。安装后自带voxcpm子命令,适合写脚本和批处理:
# 音色设计:括号里用自然语言描述音色 voxcpm design --text "VoxCPM2带来全新语音合成体验。" \ --control "年轻女声,温暖温柔,略带微笑" \ --output out.wav # 声音克隆:上传参考音频 voxcpm clone --text "这是一个声音克隆的演示。" \ --reference-audio path/to/voice.wav --output clone.wav # 批处理:逐行读取文本文件 voxcpm batch --input examples/input.txt --output-dir outs需要词级/字级时间戳(做字幕、发音标注)时,装pip install "voxcpm[timestamps]"后在命令上加--timestamps即可。
Web 界面。不写代码就是一条命令的事:
python app.py --port 8808浏览器打开http://localhost:8808,在界面上粘贴文本、上传参考音频即可试听。没有显卡或想在 Mac 上用 MPS,加--device auto会自动选择设备。
LoRA 微调。如果你有 5–10 分钟某位说话人的录音,可以训一个 LoRA 适配器让模型更贴合该说话人的音色,配置见 conf/voxcpm_v2/,训练脚本入口在 scripts/train_voxcpm_finetune.py,还有配套的网页版训练界面 lora_ft_webui.py。
延伸阅读
- README_zh.md:完整功能、性能评测与部署方案
- src/voxcpm/:核心推理代码,
core.py是VoxCPM类入口 - src/voxcpm/cli.py:命令行参数定义
- examples/train_data_example.jsonl:微调数据格式示例
- examples/reference_speaker.wav:官方示例参考音频,可直接用于克隆测试
下一步:给自己做个小挑战
录一段 10 秒左右的自己的语音(安静环境、正常语速),用上面的voxcpm clone或 Python API 克隆它,换 3 个不同的seed各生成一次,盲听挑出最像的一条。如果能稳定挑出"像自己"的结果,就可以继续用 lora_ft_webui.py 拿 5–10 分钟录音训一个专属 LoRA——那时候,克隆的相似度会再上一个台阶。
【免费下载链接】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),仅供参考