作者 / 团队 / 机构
作者:Yixuan Zhou、Guoyang Zeng、Xin Liu、Xiang Li、Renjie Yu、Ziyang Wang、Runchuan Ye、Weiyue Sun、Jiancheng Gui、Kehan Li、Zhiyong Wu、Zhiyong Liu。
团队/机构:由 ModelBest 和 THUHCSI 开发,隶属于 OpenBMB 项目。
角色:文本到语音系统领域的科研人员和开发者。
权威背书:该模型在 Apache-2.0 许可下开源,并致谢了基础工作,如 DiTAR、MiniCPM-4、CosyVoice 和 DAC。输入文件中未提供外部同行评审或第三方报告。
摘要
VoxCPM 代表了文本到语音(TTS)技术的一个转变,它消除了离散分词器,直接在连续语音空间中运作。这个 0.5B 参数的模型基于 MiniCPM-4 主干,采用端到端的扩散自回归架构,实现上下文感知的语音生成和零样本语音克隆。在 180 万小时的双语(英语和中文)语料库上训练,它能从文本内容中推断韵律,并以高保真度克隆语音,包括音色、口音、情感、节奏和语速等特征。主要特性包括无需显式提示的表达性合成、在 RTX 4090 上 RTF 低至 0.17 的高效流式合成,以及在 Seed-TTS-eval(例如 test-EN 的 WER 1.85%)和 CV3-eval(zh 的 CER 3.40%)等基准上的竞争性能。通过 PyPI 安装简单,支持 Python 和 CLI 接口进行生成。然而,限制包括长输入的不稳定性、双语焦点以及语音克隆的误用风险。本文基于提供的文档详细介绍了模型架构、使用方法、基准和可复现步骤,同时突出训练超参数和评估协议的空白。
(字数:约 250)
目录
背景与问题陈述
让我们先来了解 VoxCPM 在 TTS 领域中解决的问题。传统的 TTS 系统通常依赖离散分词,将语音分解成有限的单元,如音素或声学码。这种方法可能会限制表达性,因为它难以处理细微的韵律、上下文相关的风格以及无缝的语音复制。例如,如果你正在构建一个需要语音自然适应叙事内容的应用程序——比如故事从平静转为兴奋——离散模型可能需要显式标注或多阶段处理,导致伪影或不自然的流动。
VoxCPM 通过在连续空间中建模语音来解决这个问题,完全绕过分词器。它针对两个核心能力:上下文感知生成,即模型仅从文本中推断韵律和风格;以及零样本语音克隆,从短音频片段中复制说话者的特征。这为什么重要?在实际场景中,如虚拟助手或有声书制作,你希望语音不仅仅清晰,还情感贴合且个性化,而无需大量再训练。
该模型源于现有系统的挑战,例如使用离散分词的系统,可能无法有效捕捉细粒度声学或语义。通过整合分层语言建模和有限状态量化(FSQ)约束,VoxCPM 实现了语义-声学解耦的隐式处理。这意味着文本理解(语义)层会指导但不会严格控制声音生成(声学),从而允许更稳定和表达性的输出。
如果你好奇这如何融入更广泛的 TTS 演进,请考虑 VoxCPM 建立在 180 万小时的双语语料库上,专注于英语和中文。这种规模支持其自然适应的声明,但也引发了对其他语言泛化的疑问——文档中指出,那里的性能无法保证。
方法
VoxCPM 的核心是一个端到端的扩散自回归模型。它直接从文本生成连续语音表示,使用 MiniCPM-4 作为主干。架构涉及分层语言建模,用于语义与声学的解耦,并结合 FSQ 约束来提升稳定性和表达性。
以下是基于提供的描述的模型结构高层概述:
-
主干:MiniCPM-4(VoxCPM 总参数 0.5B)。 -
关键模块:用于生成的扩散自回归组件;LocDiT(可能是扩散变压器的变体),采用流匹配实现。 -
解耦机制:分层语言建模隐式分离语义(文本理解)和声学(语音输出)层。 -
约束:FSQ 用于连续空间中的量化,有助于稳定性。 -
输入/输出:文本输入;连续语音表示输出,解码为 16kHz WAV。
对于可视化,架构可以用 ASCII 艺术表示(因为除了通用模型图像外,未提供详细层图):
文本输入 --> MiniCPM-4 主干(语义层)
|
v
分层建模 + FSQ 约束
|
v
扩散自回归(LocDiT 带有 CFG 指导)
|
v
连续语音表示 --> 音频解码器(受 DAC 启发) --> WAV 输出
[缺失:详细层数、激活函数、每个模块的参数细分;来源:输入文件。] 文件未提供具体细节,如层数、激活类型(例如 ReLU、GELU)或确切的权重初始化方法。
算法与训练细节
训练细节部分概述。模型在 180 万小时的双语语料库(英语和中文)上训练。未给出数据预处理、增强或拆分的显式细节。
方面 | 输入文件中的细节 |
---|---|
模型参数 | 0.5B |
架构 | 端到端扩散自回归;MiniCPM-4 主干;分层 LM;FSQ 约束 |
训练语料库 | 180 万小时,双语(EN/ZH) |
优化 | [缺失:学习率、优化器(例如 Adam)、批量大小、轮次/步骤、权重初始化、随机种子] |
奖励/约束 | 通过 FSQ 隐式;未详细说明显式奖励函数 |
数据预处理 | 推理中使用 WeTextProcessing 进行规范化(例如数字、缩写);训练预处理未指定 |
对于语音克隆,使用提示音频片段,可选使用 ZipEnhancer 进行增强以去除噪声。生成涉及 CFG(无分类器指导),值如 2.0,以及推理时间步(例如 10)。
在代码中,生成通过以下方式处理:
from voxcpm import VoxCPM
model = VoxCPM.from_pretrained("openbmb/VoxCPM-0.5B")
wav = model.generate(text="你的文本在这里", prompt_wav_path="path/to/prompt.wav", cfg_value=2.0, inference_timesteps=10)
这种设置允许低 RTF 的流式合成。
实验与评估
VoxCPM 在两个公共零样本 TTS 基准上进行了评估:Seed-TTS-eval 和 CV3-eval。这些基准关注单词错误率(WER)、字符错误率(CER)、相似度(SIM)和 DNSMOS(去噪指标),覆盖英语、中文和困难子集。
评估协议
基准 | 数据集/子集 | 拆分 | 指标 | 统计检验 | 基准对照 |
---|---|---|---|---|---|
Seed-TTS-eval | test-EN, test-ZH, test-Hard | [缺失:训练/验证/测试比例] | WER (%), CER (%), SIM (%) | [缺失:t 检验、bootstrap 等] | 模型如 CosyVoice、F5-TTS 等 |
CV3-eval | zh, en, hard-zh, hard-en | [缺失:拆分] | CER (%), WER (%), SIM (%), DNSMOS | [缺失:显著性检验] | 类似开源/闭源模型 |
结果具有竞争力,尤其对于 0.5B 规模的开源模型。
Seed-TTS-eval 结果
模型 | 参数 | 开源 | test-EN WER/% ↓ | test-EN SIM/% ↑ | test-ZH CER/% ↓ | test-ZH SIM/% ↑ | test-Hard CER/% ↓ | test-Hard SIM/% ↑ |
---|---|---|---|---|---|---|---|---|
MegaTTS3 | 0.5B | ❌ | 2.79 | 77.1 | 1.52 | 79.0 | – | – |
DiTAR | 0.6B | ❌ | 1.69 | 73.5 | 1.02 | 75.3 | – | – |
CosyVoice3 | 0.5B | ❌ | 2.02 | 71.8 | 1.16 | 78.0 | 6.08 | 75.8 |
CosyVoice3 | 1.5B | ❌ | 2.22 | 72.0 | 1.12 | 78.1 | 5.83 | 75.8 |
Seed-TTS | – | ❌ | 2.25 | 76.2 | 1.12 | 79.6 | 7.59 | 77.6 |
MiniMax-Speech | – | ❌ | 1.65 | 69.2 | 0.83 | 78.3 | – | – |
CosyVoice | 0.3B | ✅ | 4.29 | 60.9 | 3.63 | 72.3 | 11.75 | 70.9 |
CosyVoice2 | 0.5B | ✅ | 3.09 | 65.9 | 1.38 | 75.7 | 6.83 | 72.4 |
F5-TTS | 0.3B | ✅ | 2.00 | 67.0 | 1.53 | 76.0 | 8.67 | 71.3 |
SparkTTS | 0.5B | ✅ | 3.14 | 57.3 | 1.54 | 66.0 | – | – |
FireRedTTS | 0.5B | ✅ | 3.82 | 46.0 | 1.51 | 63.5 | 17.45 | 62.1 |
FireRedTTS-2 | 1.5B | ✅ | 1.95 | 66.5 | 1.14 | 73.6 | – | – |
Qwen2.5-Omni | 7B | ✅ | 2.72 | 63.2 | 1.70 | 75.2 | 7.97 | 74.7 |
OpenAudio-s1-mini | 0.5B | ✅ | 1.94 | 55.0 | 1.18 | 68.5 | – | – |
IndexTTS2 | 1.5B | ✅ | 2.23 | 70.6 | 1.03 | 76.5 | – | – |
VibeVoice | 1.5B | ✅ | 3.04 | 68.9 | 1.16 | 74.4 | – | – |
HiggsAudio-v2 | 3B | ✅ | 2.44 | 67.7 | 1.50 | 74.0 | – | – |
VoxCPM | 0.5B | ✅ | 1.85 | 72.9 | 0.93 | 77.2 | 8.87 | 73.0 |
可验证项:所有输入文件中的表格。
CV3-eval 结果
模型 | zh CER/% ↓ | en WER/% ↓ | hard-zh CER/% ↓ | hard-zh SIM/% ↑ | hard-zh DNSMOS ↑ | hard-en WER/% ↓ | hard-en SIM/% ↑ | hard-en DNSMOS ↑ |
---|---|---|---|---|---|---|---|---|
F5-TTS | 5.47 | 8.90 | – | – | – | – | – | – |
SparkTTS | 5.15 | 11.0 | – | – | – | – | – | – |
GPT-SoVits | 7.34 | 12.5 | – | – | – | – | – | – |
CosyVoice2 | 4.08 | 6.32 | 12.58 | 72.6 | 3.81 | 11.96 | 66.7 | 3.95 |
OpenAudio-s1-mini | 4.00 | 5.54 | 18.1 | 58.2 | 3.77 | 12.4 | 55.7 | 3.89 |
IndexTTS2 | 3.58 | 4.45 | 12.8 | 74.6 | 3.65 | – | – | – |
HiggsAudio-v2 | 9.54 | 7.89 | 41.0 | 60.2 | 3.39 | 10.3 | 61.8 | 3.68 |
CosyVoice3-0.5B | 3.89 | 5.24 | 14.15 | 78.6 | 3.75 | 9.04 | 75.9 | 3.92 |
CosyVoice3-1.5B | 3.91 | 4.99 | 9.77 | 78.5 | 3.79 | 10.55 | 76.1 | 3.95 |
VoxCPM | 3.40 | 4.04 | 12.9 | 66.1 | 3.59 | 7.89 | 64.3 | 3.74 |
可验证项:所有输入文件中的表格。
这些结果显示 VoxCPM 在准确性指标上优于许多开源同行,尽管 SIM 和 DNSMOS 有差异。
可复现指南
要复现 VoxCPM 的生成,请遵循以下步骤。请注意:由于缺失超参数和语料库访问,无法进行完整训练复现。
-
环境设置:Python 3.x(从代码中推断);库:soundfile、huggingface_hub、modelscope。操作系统:未指定,但推荐如 RTX 4090 的 GPU 以提高效率。
-
安装: pip install voxcpm
-
-
模型下载:
from huggingface_hub import snapshot_download snapshot_download("openbmb/VoxCPM-0.5B")
对于增强器:
from modelscope import snapshot_download snapshot_download('iic/speech_zipenhancer_ans_multiloss_16k_base') snapshot_download('iic/SenseVoiceSmall')
-
基本生成:
使用上面的 Python 代码。环境:Python;未指定随机种子——输出可能会有差异。-
CLI: voxcpm --text "Hello" --output out.wav
-
-
语音克隆:
添加--prompt-audio path/to/voice.wav --prompt-text "transcript"
-
参数:CFG 2.0,时间步 10;针对坏案例启用重试。
-
检查点:从预训练加载;未提供哈希。
-
-
Web 演示:运行
python app.py
以启动 UI。
独立验证指南
要验证基准,需要数据集(Seed-TTS-eval、CV3-eval)——未提供。使用上述代码生成样本,然后使用如 jiwer 的工具手动计算 WER/CER(未包含)。
最小复现清单(缺失):数据集、评估脚本、样本数、统计检验。
线上部署与运维经验
输入文件中未记录线上部署或 A/B 测试经验。对于工程建议:
高层架构:文本 -> 模型推理 -> 音频输出,可选流式。
部署要点:
-
使用 GPU 以实现 RTF 0.17。 -
常见陷阱:长输入可能导致不稳定;为慢速语音调整 retry_badcase_ratio_threshold。 -
故障排除:如果有噪声,启用 denoise;为质量,提高时间步。
这些基于使用文档的通用建议;无具体生产细节。
限制性声明与可信度评估
量化结论(例如 test-EN 的 WER 1.85%)通过标准 TTS 指标在基准上测量,但未提供样本大小、置信区间和数据偏差。可信度上限:限于基准子集;可能不泛化到真实世界的多样口音或噪声环境。
该结论的可信度受限于输入文件未提供样本大小、置信区间或偏差分析。
其他限制:长/表达性输入的不稳定性;仅双语;克隆的误用风险。
常见问题解答
问:如何处理文本输入以获得最佳结果?
答:使用规范化开启的常规文本进行自然输入;关闭以使用音素,如 {HH AH0 L OW1}。
问:使用提示音频有什么区别?
答:无提示时,从文本推断风格;有提示时,克隆音色/风格/氛围。为干净克隆启用增强。
问:能否直接控制情感?
答:不能,当前版本控制有限;依赖文本推断或提示。
问:为什么生成可能失败?
答:坏案例如不停语音;启用 retry_badcase。
问:适合其他语言吗?
答:无法保证;仅在 EN/ZH 上训练。
问:如何调整速度与质量?
答:降低时间步以加速;提高 CFG 以更好地遵守文本,但可能使语音紧张。
结论与建议
VoxCPM 以无分词器设计推进 TTS,在上下文感知和克隆方面表现出色。对于研究者,探索扩展到多语言;对于工程师,通过 API 集成到需要表达性语音的应用中。
建议:从默认设置开始,在你的数据上测试;道德地标记 AI 生成内容。