今天在 GitHub Trending 上看到一个有意思的项目:VoxCPM2,这是 OpenBMB 团队发布的无分词器(Tokenizer-Free)TTS 系统,支持 30 种语言语音生成、声音设计(Voice Design)与可控语音克隆,输出质量达到 48kHz studio 级别。
一、项目概述
VoxCPM2 是由 OpenBMB 与 THUHCSI 联合研发的新一代文本转语音(TTS)系统,其核心创新在于完全摒弃了传统 TTS 流程中的离散 tokenizer 环节,通过端到端扩散自回归架构直接在连续语音表示空间中进行生成,从而实现更自然、更具表现力的语音合成。
核心特性一览:
- 🌍 30 种语言多语言支持 — 无需语言标签,直接输入任意支持语言的文本即可合成
- 🎨 声音设计(Voice Design) — 仅通过自然语言描述(性别、年龄、语调、情绪、语速等)创造全新声音,无需参考音频
- 🎛️ 可控语音克隆(Controllable Voice Cloning) — 基于短参考音频克隆音色,同时可通过控制指令调节情绪、语速与表达方式
- 🎙️ 极致克隆(Ultimate Cloning) — 同时提供参考音频与其文本转录,模型以音频续写方式完整还原音色、节奏、情感等全部声音细节
- 🔊 48kHz 高保真输出 — 通过 AudioVAE V2 的非对称编解码设计,接受 16kHz 参考音频直接输出 48kHz studio 级音频,内置超分辨率,无需外部上采样器
- 🧠 上下文感知合成 — 根据文本内容自动推断合适的韵律与表现力
- ⚡ 实时流式合成 — 在 NVIDIA RTX 4090 上 RTF 低至约 0.3,通过 Nano-vLLM 或 vLLM-Omni 加速可达约 0.13
- 📜 完全开源、商业可用 — 代码与权重均以 Apache-2.0 许可证发布,可免费用于商业场景
VoxCPM2 是 VoxCPM 系列的最新重大版本,模型参数量达 2B,训练数据超过 200 万小时多语言语音,基于 MiniCPM-4 骨干网络构建。
二、技术原理
VoxCPM2 采用**无分词器(Tokenizer-Free)、扩散自回归(Diffusion Autoregressive)**范式,整个模型在 AudioVAE V2 的潜空间内运行,遵循四阶段流水线:LocEnc → TSLM → RALM → LocDiT,实现丰富的表现力与 48kHz 原生音频输出。
# 模型架构核心流水线(概念性示意)
# 输入文本 → LocEnc(局部编码器)
# ↓
# TSLM(时序语言模型)
# ↓
# RALM(检索增强语言模型)
# ↓
# LocDiT(局部扩散 Transformer / Flow Matching 解码器)
# ↓
# 48kHz 音频输出(通过 AudioVAE V2 解码)
与主流 TTS 模型对比:
| 特性 | VoxCPM2 | CosyVoice3 (1.5B) | Qwen3-TTS (1.7B) | FishAudio S2 (4B) |
|---|---|---|---|---|
| 开源 | ✅ | ❌ | ✅ | ✅ |
| 支持语言数 | 30 | 2 (zh, en) | 未知 | 未知 |
| 采样率 | 48kHz | 未知 | 未知 | 未知 |
| Voice Design | ✅ | ❌ | ❌ | ❌ |
| 可控克隆 | ✅ | ❌ | ❌ | ❌ |
| 参数量 | 2B | 1.5B | 1.7B | 4B |
核心技术组件:
- AudioVAE V2 — 非对称编解码设计,16kHz 输入 → 48kHz 输出,内置超分辨率
- Diffusion Autoregressive (DiTAR) — 扩散自回归骨干,替代传统离散 token 建模
- MiniCPM-4 语言模型 — 提供强大的文本理解与上下文建模能力
- Flow Matching(LocDiT) — 基于 CosyVoice 的 Flow Matching 实现,实现高质量音频解码
三、安装与快速开始
环境要求
- Python ≥ 3.10(不支持 3.13)
- PyTorch ≥ 2.5.0
- CUDA ≥ 12.0
- 推荐:NVIDIA RTX 4090 或同级别 GPU(VRAM ≥ 8GB)
安装
pip install voxcpm
若需从 ModelScope 下载模型(国内推荐):
pip install modelscope
from modelscope import snapshot_download
snapshot_download("OpenBMB/VoxCPM2", local_dir='./pretrained_models/VoxCPM2')
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("./pretrained_models/VoxCPM2", load_denoiser=False)
wav = model.generate(
text="VoxCPM2 是当前多语言语音合成推荐的发布版本。",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)
最简运行示例
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False)
# 基础 TTS
wav = model.generate(
text="VoxCPM2 is the current recommended release for realistic multilingual speech synthesis.",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)
四、使用方法与实战
🎨 声音设计(Voice Design)
无需参考音频,仅通过自然语言描述创造声音:
wav = model.generate(
text="(A young woman, gentle and sweet voice)Hello, welcome to VoxCPM2!",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("voice_design.wav", wav, model.tts_model.sample_rate)
格式说明: 在
text开头以括号包裹声音描述,如"(年轻女性,温柔甜美声音)今天天气真好。"
🎛️ 可控语音克隆(Controllable Voice Cloning)
上传参考音频克隆音色,同时通过控制指令调节风格:
wav = model.generate(
text="This is a cloned voice generated by VoxCPM2.",
reference_wav_path="path/to/voice.wav",
)
sf.write("clone.wav", wav, model.tts_model.sample_rate)
# 带风格控制
wav = model.generate(
text="(slightly faster, cheerful tone)This is a cloned voice with style control.",
reference_wav_path="path/to/voice.wav",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("controllable_clone.wav", wav, model.tts_model.sample_rate)
🎙️ 极致克隆(Ultimate Cloning)
提供参考音频与其精确文本转录,以音频续写方式完整还原声音细节:
wav = model.generate(
text="This is an ultimate cloning demonstration using VoxCPM2.",
prompt_wav_path="path/to/voice.wav",
prompt_text="The transcript of the reference audio.",
reference_wav_path="path/to/voice.wav", # 可选,提高相似度
)
sf.write("hifi_clone.wav", wav, model.tts_model.sample_rate)
⚡ 流式合成(Streaming API)
import numpy as np
chunks = []
for chunk in model.generate_streaming(
text="Streaming text to speech is easy with VoxCPM!",
):
chunks.append(chunk)
wav = np.concatenate(chunks)
sf.write("streaming.wav", wav, model.tts_model.sample_rate)
🚢 生产级部署(Nano-vLLM / vLLM-Omni)
对于高吞吐场景,官方推荐使用专用推理引擎:
pip install nano-vllm-voxcpm
from nanovllm_voxcpm import VoxCPM
import numpy as np, soundfile as sf
server = VoxCPM.from_pretrained(model="/path/to/VoxCPM", devices=[0])
chunks = list(server.generate(target_text="Hello from VoxCPM!"))
sf.write("out.wav", np.concatenate(chunks), 48000)
server.stop()
性能数据: RTX 4090 上 RTF 低至约 0.13(Nano-vLLM),支持并发请求与 OpenAI 兼容 API。
五、常见问题与解决方案
安装失败
问题: pip install voxcpm 失败,提示 PyTorch/CUDA 版本不兼容。
解决方案:
- 确认 Python 版本在 3.10–3.12 范围内
- 确认 PyTorch ≥ 2.5.0 且 CUDA ≥ 12.0
- 建议使用 Conda 创建独立环境:
conda create -n voxcpm python=3.11 conda activate voxcpm pip install voxcpm
中文方言生成效果不佳
问题: 生成粤语、四川话等方言时效果不理想。
解决方案:
- 在
text中直接使用方言词汇和句式,而非普通话书面语 - 在控制指令(括号内容)中描述方言特征,如
"(粤语,中年男性,语气平淡)" - 可借助 AI 助手将普通话翻译为方言文本后再传入
可控生成稳定性问题
问题: 声音设计或可控克隆结果每次运行差异较大。
解决方案:
- 尝试生成 1~3 次,选取最符合预期的结果
- 适当调节
cfg_value(推荐 1.5–2.5 范围) - 描述尽量具体,如
"(年轻女性,温柔甜美,略带忧伤)"比"(甜美)"更稳定 - 团队正在持续改进可控性一致性
GPU 显存不足
问题: 加载模型时报 CUDA out of memory。
解决方案:
- VoxCPM2 推荐 ≥ 8GB VRAM(RTX 4090 可流畅运行)
- 若显存不足,可尝试 VoxCPM-0.5B(约 5GB VRAM)或 VoxCPM1.5(约 6GB VRAM)
- 使用 CPU 推理(速度极慢,仅用于测试)
Git LFS 下载模型慢
问题: 从 HuggingFace 下载模型速度慢。
解决方案:
- 使用 ModelScope 镜像(国内):
pip install modelscope后通过snapshot_download下载 - 配置 HuggingFace 镜像:
export HF_ENDPOINT=https://hf-mirror.com
六、总结
VoxCPM2 在多语言 TTS 领域树立了新的开源标杆:30 种语言支持、Voice Design 创新范式、48kHz 高保真输出,以及完整的开源与商业可用性。其无分词器架构带来了更自然的语音表现力,而基于 MiniCPM-4 的骨干设计则保证了强大的文本理解能力。
适用场景:
- 多语言内容创作(播客、有声书、视频配音)
- 虚拟数字人 / 智能客服语音生成
- 语音克隆与个性化 TTS 应用
- TTS 相关研究与原型验证
项目完全开源(Apache-2.0),模型权重可在 HuggingFace 或 ModelScope 获取,文档齐全,生态完善(支持 ComfyUI、vLLM-Omni、ONNX 导出等)。如果你想快速体验,也可以直接访问 在线 Demo 上手试用。
**项目地址:<ADDRESS_REMOVED> 文档: https://voxcpm.readthedocs.io