丢掉离散 Tokenizer 的音质飞跃:OpenBMB VoxCPM2 连续扩散自回归架构与声音设计实操

丢掉离散 Tokenizer 的音质飞跃:OpenBMB VoxCPM2 连续扩散自回归架构与声音设计实操

在生成式语音与智能语音对话领域,过去几年的技术演进几乎被“离散量化编解码(Discrete Audio Codec)+ 自回归大模型(LLM)”的范式所垄断。无论是早期的 VALL-E、AudioLM,还是前两年的 ChatTTS 与部分开源方案,主流做法都是先用残差矢量量化(RVQ,如 EnCodec、SoundStream、DAC)将连续声音波形强行切碎为一串离散 Token,再交给大模型做自回归 Next-Token 预测。

然而,在近期的工程调优和多语言生成实测中,这套被奉为“金科玉律”的离散化范式正显露出难以逾越的天花板:量化损失直接扼杀了语音的微表情、胸腔共鸣与微气口,高频谐波被严重削减,导致输出音频总带着一层挥之不去的“金属数码味”;同时,多层 RVQ 造成的上下文长度膨胀与逐层累积误差,更是实时低延迟推流的噩梦。

近期,由 OpenBMB(清华团队与面壁智能开源社区) 倾力打造的全新一代语音大模型 OpenBMB/VoxCPM 及旗舰升级版 VoxCPM2 彻底打破了这一桎梏。它在业内率先走通了 “完全丢弃离散 Tokenizer、全链路在连续隐空间内自回归扩散流动” 的新体系,直接输出原生 48kHz 演播室级音质,并以 2B 参数量支撑起了 30 种世界语言、9 种中文方言以及突破性的“纯文本音色设计(Text-to-Voice Design)”。在本文中,我将以第一视角深入拆解 VoxCPM2 的核心架构设计、数学原理与实战落地全流程。


一、 离散 Tokenizer 的原罪:传统生成式语音的隐形枷锁

在深入 VoxCPM2 架构之前,我必须先厘清一个核心技术痛点:为什么语音大模型非得丢掉离散 Tokenizer?

过去行业之所以热衷于把音频转化成离散 Codebook,是为了强行复用自然语言大模型(如 GPT、LLaMA)成熟的自回归生成框架。但音频与文本的物理属性有着本质不同:

flowchart LR
    subgraph TraditionalDiscrete ["传统离散 RVQ 路径 (信息丢失与层级误差)"]
        direction TB
        A1["连续原始音频波形"] -->|"RVQ 量化 (8~16 层 Codebook)"| A2["离散 Audio Tokens"]
        A2 -->|"强制离散化截断"| A3["数码伪影 / 泛音缺失 / 24kHz 天花板"]
        A2 -->|"多层 Token 展开"| A4["上下文爆炸 / 误差指数累积"]
    end

    subgraph VoxCPMContinuous ["VoxCPM2 连续隐空间扩散路径 (高保真原生 48kHz)"]
        direction TB
        B1["连续原始音频波形"] -->|"非对称 AudioVAE V2"| B2["连续声学隐表征 (Continuous Latents)"]
        B2 -->|"TSLM + RALM + LocDiT 流匹配"| B3["演播室级 48kHz 原生输出 / 动态呼吸感"]
    end

1. 离散量化的三大硬伤

在我长期的声学算法与工程测试中,离散编解码器主要暴露出三大难以调和的矛盾:

  1. 不可逆的量化信息损失(Quantization Degradation):
    语音包含极丰富的连续微物理属性,例如声带轻微颤动、吸气声、尾音弱化以及环境混响。一旦通过 Codebook 强行投射到离散向量索引,低能量的高频谐波与细微发音特征就被大刀阔斧地截断舍弃。合成出来的声音虽然“咬字清楚”,但听起来生硬冰冷、缺乏真实人类的血肉感。
  2. 多层 RVQ 造成的序列膨胀与复合误差:
    为了尽可能保留音质,传统 Codec 通常需要 8 到 16 层残差量化器(如 12.5Hz 帧率下每秒对应产生 100~200 个离散 Token)。在自回归生成时,模型必须处理极长的 Token 序列。哪怕前序某一个层级的 Token 稍微产生偏差,自回归链条就会迅速放大该误差,导致语音中途突发“电音”、“吞字”或“破音崩塌”。
  3. 采样率与频响的客观瓶颈:
    受限于码率与算力,绝大多数离散 Tokenizer 仅支持 16kHz 或 24kHz 输出,对 12kHz 以上的高频空气感泛音无能为力。虽然部分系统试图在后级套接 Vocoder 做上采样,但人工捏造的频段往往充斥着塑料感。

针对这些顽疾,OpenBMB 的研发思路非常激进且优雅:既然声音原本就是连续的波形,为何不直接在连续流空间中进行自回归建模? 于是,Tokenizer-Free 的 VoxCPM 体系应运而生。


二、 连续扩散自回归体系:VoxCPM 核心架构深度拆解

VoxCPM(及其升级演进的 VoxCPM2)的底层设计核心,可以概括为:分层的“语义-声学”双流协同,配合局部条件流匹配(Conditional Flow Matching, CFM)生成连续隐空间切片。

完整的端到端推理管线由以下四个核心阶段紧密咬合:

flowchart TD
    subgraph InputStage ["1. 输入与特征预处理"]
        TextIn["输入文本 / 声音设计 Prompt"]
        AudioRef["参考音频 (可选克隆/接续)"]
        Denoise["内置声学降噪器 (Denoiser)"]
        AudioVAE_Enc["AudioVAE V2 编码器 (16kHz 连续隐空间)"]
        
        AudioRef --> Denoise --> AudioVAE_Enc
    end

    subgraph CoreEngine ["2. 语义-声学双流大模型基座"]
        LocEnc["LocEnc: 局部编码器 (Patch 分组聚合,压缩序列长度)"]
        TSLM["TSLM: 文本语义语言模型 (MiniCPM-4 基座,规划语义与节奏)"]
        RALM["RALM: 残差声学语言模型 (多级投影融合语义与声学特征)"]
        
        AudioVAE_Enc --> LocEnc
        TextIn --> TSLM
        LocEnc --> TSLM
        TSLM --> RALM
    end

    subgraph ContinuousFlow ["3. 局部流匹配与连续扩散"]
        LocDiT["LocDiT: 局部扩散 Transformer (CFM 条件流匹配)"]
        ContinuousLatent["连续高保真声学隐表征 (Continuous Latents)"]
        
        RALM --> LocDiT
        LocDiT --> ContinuousLatent
    end

    subgraph OutputStage ["4. 演播室级音频重建"]
        AudioVAE_Dec["AudioVAE V2 解码器 (原生 48kHz 重建)"]
        OutWav["48kHz Studio 广播级音频波形"]
        
        ContinuousLatent --> AudioVAE_Dec --> OutWav
    end

1. AudioVAE V2:非对称跨频域连续隐空间瓶颈

在传统架构中,VAE 往往只是声学重建的辅助外围;而在 VoxCPM2 中,AudioVAE V2 是整个系统的基石。

  • 非对称采样率架构:输入参考音频时,编码器在 16kHz 下提取连续潜变量,大幅降低前序编码的计算负载与显存开销;而在音频合成输出阶段,解码器直接在 48kHz 高采样率下重构时域波形。这种非对称设计天然实现了隐空间内的高保真超分辨率重建。
  • 连续表征正则化:为了防止隐空间崩塌,模型引入了有限标量量化(Finite Scalar Quantization, FSQ)思想作为可微连续隐变量的正则化约束,既获得了类似离散分布的紧凑几何结构,又保留了完全可导的连续梯度流动,消除了量化截断阶跃。

2. LocEnc(Local Encoder):局部 Patch 序列压缩

连续音频帧的密度非常高。如果以 50Hz 或 100Hz 的原生帧率直接塞入语言模型,注意力矩阵的显存与计算量将随长度呈二次方爆发。

VoxCPM 创新地引入了 LocEnc(局部编码器):

  • 它将连续的数个音频隐表征帧(例如 4 帧或 8 帧)聚合为一个 音频分块(Audio Patch);
  • 经过局部非线性变换,将序列有效长度缩减为原来的几分之一,使得后级的自回归大模型只需在宏观语义步长上进行因果推演。

3. TSLM 与 RALM:语义与声学特征的解耦双流

在很多端到端语音大模型中,由于语义信息(“要说什么”)与声学信息(“怎么发声、音色为何”)混杂在一起,容易出现发音吞吐含糊、多音字读错或音色漂移的现象。VoxCPM 巧妙地将其分工解耦为两个核心组件:

  1. TSLM(Text-Semantic Language Model,文本语义语言模型):
    • 基座基于强大的因果大语言模型 MiniCPM-4;
    • 负责高层级的宏观认知规划:深度理解文本的上下文语法、情感走势、断句重音以及语速韵律,生成语义级隐状态序列。
  2. RALM(Residual Acoustic Language Model,残差声学语言模型):
    • 接收 TSLM 吐出的语义规划信号,并通过 Concat-Projection 结构将其与参考音频提取的底层声学细节(音色、气音、房间混响)进行深层熔接;
    • 补足了高层语义与底层物理发声之间的表征鸿沟。

4. LocDiT:Patch 内的局部条件流匹配(CFM)

在传统的自回归模型中,每一步预测的是分类概率分布(Softmax);而在 VoxCPM 的连续体系中,声学隐变量是通过 LocDiT(局部扩散 Transformer) 生成的:

  • 条件流匹配(Conditional Flow Matching):相比传统 DDPM 漫长的反向降噪步骤,CFM 在连续概率密度路径上进行向量场积分(Vector Field ODE),仅需 10~15 步积分即可高效收敛;
  • 全局部注意力(Intra-patch Attention):LocDiT 专注于单个 Patch 内部的连续微观结构生成,既确保了 Patch 内部微小瞬态(如爆破音、齿音)的极致细腻,又依靠 RALM 维持了宏观自回归的全局一致性;
  • 彻底消除拼接伪影:由于每个 Patch 的生成条件直接由连续隐状态流引导,Patch 与 Patch 之间的边界极其自然平滑,彻底告别了传统音频拼接与 Codec 块效应导致的咔哒声(Clicks)。

三、 VoxCPM2 的飞跃:从单音克隆到“声音工坊”

在 2026 年最新推出的 VoxCPM2(arXiv:2606.06928) 中,OpenBMB 在原版架构的基础上完成了规模化与多模态控制的重大跃迁:

关键技术维度 VoxCPM 1.0 (2025.09) VoxCPM2 旗舰版 (2026.06) 工程与听感收益
模型总参数量 约 0.5B 2.0B(MiniCPM-4 基座) 极强的复杂长句上下文掌控力与少见词纠错力
预训练语料规模 约 20 万小时 超 236 万小时 覆盖全网真实环境音频,抗噪与泛化能力拉满
多语言与方言覆盖 中文、英文 30 种世界语言 + 9 种中文方言 覆盖粤语、四川话、闽南语、上海话等特色方言
声音生成交互方式 仅支持音频 Prompt 克隆 音频克隆 + 纯文本声音设计(Voice Design) 无需提供任何参考录音,仅凭文字描述凭空创造音色
音频采样率 24kHz / 48kHz 原生 48kHz 演播室母带级 空间感、空气泛音与动态范围全面提升
微观风格控制 隐式跟随参考音频 显式自然语言 Style Tags 控制 可在文本中注入情绪、语速、语调等细粒度标签
mindmap
  root((VoxCPM2<br/>多模态发声矩阵))
    声音克隆维度
      零样本单段克隆<br/>(3~10 秒参考音频即可锁定音色)
      终极接续克隆<br/>(Prompt Audio + Text 无缝还原微气口与房间混响)
    声音设计维度
      纯文本音色雕刻<br/>(年龄、性别、音质、腔调自然语言定义)
      免录音开箱即用<br/>(彻底解决影视/播客虚拟角色版权与音源瓶颈)
    语言与方言维度
      全球 30 种主流语种
      国内 9 大方言系统<br/>(粤/川/闽/吴/客/赣/湘/晋/冀)
    低延迟推流架构
      集成 Nano-vLLM / vLLM-Omni
      Chunk 级流式分片生成<br/>(TTFT 达到毫秒级)

1. 声音设计(Text-to-Voice Design):摆脱对参考音频的依赖

在过往的 TTS 方案中,如果我们想创造一个“中年沙哑低沉的深夜电台主持人”音色,必须先去找一段符合要求的真实录音作为 Prompt 音频。但在工业化内容生产中,寻找无背景杂音、无版权纠纷的高品质参考音频成本极其高昂。

VoxCPM2 依托 MiniCPM-4 强大的文本多模态理解力,率先实现了 “零音频输入的声音设计”:

  • 语法规范:只需在待合成文本的最前面使用英文圆括号 (...) 包裹对说话人的音色描述,模型即可自动将其解析为声学隐空间的先验指导向量!
  • 多维度描述支持:
    • 年龄与性别:如 "An elderly wise man"、"A 20-year-old energetic girl";
    • 音质与纹理:如 "Gravelly raspy voice"、"Warm and velvety smooth tone";
    • 情绪与语态:如 "Melancholic and whispering"、"Excited TV commercial host";
    • 节奏与停顿:如 "Slow cadence with contemplative pauses"。

2. 终极接续克隆(Continuation Mode)

对于对真实感要求近乎苛刻的专业有声书、影视后期配音场景,普通的零样本克隆(仅提取 Speaker Embedding)往往会丢失说话人的生理微习惯。

VoxCPM2 提供了 接续模式(Continuation Mode):

  • 同时传入参考音频及其对应的精准字稿(prompt_wav_path + prompt_text);
  • 模型会将参考音频作为自回归序列的“历史前置缓存”,新生成的音频不仅在音色上完全一致,连说话人独特的换气节奏、尾音上扬弧度、甚至录音室的环境底噪(Room Reverb)都会自然延伸,实现真正真假难辨的无缝过渡。

四、 实战上手:从零样本克隆到纯文本音色雕刻

为了验证 VoxCPM2 在工程环境中的实际表现,我在配置了单个 NVIDIA A100(80G SXM4)与消费级 RTX 4090 的环境中进行了全套测试。

1. 环境安装与依赖配置

官方将核心推理逻辑封装为了轻量级 Python 包,安装过程非常清爽:

# 推荐 Python 3.10 ~ 3.12,PyTorch >= 2.5.0
pip install voxcpm soundfile

[!NOTE]
如果需要在生产环境中处理各类有背景噪点、杂音或录音室回音的原始音频,建议同时安装 DeepFilterNet 依赖,以便在加载模型时无缝开启内置去噪模块。

2. Python API 核心实战代码

场景 A:纯文本声音设计(Voice Design)

无需准备任何外部音频,仅凭一段文字描述,即可当场创造全新声音:

import soundfile as sf
from voxcpm import VoxCPM

# 1. 加载 VoxCPM2 官方开源权重 (默认从 Hugging Face / ModelScope 自动拉取)
model = VoxCPM.from_pretrained(
    "openbmb/VoxCPM2", 
    load_denoiser=False
)

# 2. 构造带有括号音色描述的 Prompt
prompt_text = (
    "(A seasoned documentary narrator, deep baritone, slow and authoritative, "
    "speaking in a calm cinematic tone)"
    "在浩瀚的宇宙星海中,每一颗恒星的诞生与消亡,都书写着属于时间本身的史诗。"
)

# 3. 触发连续隐空间自回归流匹配生成
# cfg_value 控制条件引导强度,inference_timesteps 为 CFM 积分步数 (推荐 10~15 步)
audio_array = model.generate(
    text=prompt_text,
    cfg_value=2.0,
    inference_timesteps=10,
    seed=1024,
)

# 4. 导出原生 48kHz 高保真广播级音频
sf.write("documentary_voice.wav", audio_array, model.tts_model.sample_rate)
print(f"音频已成功渲染!输出采样率: {model.tts_model.sample_rate} Hz")

场景 B:零样本声音克隆与智能去噪

如果我们手头有一段 5 秒钟的手机录音,想克隆该音色并合成一段全新内容:

import soundfile as sf
from voxcpm import VoxCPM

# 启用 load_denoiser=True,内置降噪算法会自动剥离低频底噪
model = VoxCPM.from_pretrained(
    "openbmb/VoxCPM2", 
    load_denoiser=True
)

ref_audio_file = "my_sample_clip.wav"
target_content = (
    "通过连续扩散流匹配机制,VoxCPM2 在不需要离散 Codebook 的前提下,"
    "完美再现了自然说话过程中的气口与胸腔共鸣。"
)

# 传入参考音频路径
cloned_wav = model.generate(
    text=target_content,
    reference_wav_path=ref_audio_file,
    denoise=True,                 # 自动清洗参考样本中的环境背景噪点
    cfg_value=2.5,
    inference_timesteps=12,
)

sf.write("cloned_speech_48k.wav", cloned_wav, model.tts_model.sample_rate)

场景 C:接续克隆模式(Ultimate Continuation)

当需要对有声书某句话进行中间替换,或者从某段真实音频无缝续讲时:

# 传入已有的音频切片及其确切台词,模型将自动续写
continuation_wav = model.generate(
    text="接下来,让我们深入剖析 RALM 残差声学模型的特征投影矩阵。",
    prompt_wav_path="lecture_part1.wav",
    prompt_text="欢迎各位同学回到今天的深度学习架构专题课。",
    cfg_value=2.0,
    inference_timesteps=10,
)

sf.write("lecture_seamless_part2.wav", continuation_wav, model.tts_model.sample_rate)

3. 终端命令行(CLI)极速调试

对于运维人员或需要快速验证效果的开发者,voxcpm 自带了高效的命令行工具:

# 1. 声音设计模式测试
voxcpm design \
  --text "(A young cheerful female host, fast-paced and clear) 大家好,欢迎收听今天的极客早知道!" \
  --output geek_morning.wav

# 2. 参考音频音色克隆测试
voxcpm clone \
  --text "这是一段完全基于 3 秒参考音频克隆出的全新语音。" \
  --reference-audio sample_voice.wav \
  --output test_cloned.wav \
  --denoise

五、 横向基准与实测对比

为了客观评估 VoxCPM2 的真实技术段位,我将其与当前开源界最主流的三款先进系统(CosyVoice 2、F5-TTS、ChatTTS)在核心维度上进行了系统化横向对标:

特性维度 VoxCPM2 (OpenBMB) CosyVoice 2 (阿里通义) F5-TTS (非自回归) ChatTTS (早期代表)
基础参数规模 2.0B (MiniCPM-4) 0.5B 0.3B 约 0.2B
底层表示范式 完全连续隐空间 (Tokenizer-Free) 语义 Token + 连续流 连续流 (梅尔谱特征) 离散 RVQ Codebook
核心生成架构 分层自回归 + CFM 局部扩散 自回归 LLM + CFM 解码 非自回归 Flow Matching 自回归 Transformer
原生输出采样率 48 kHz (广播级) 24 kHz 24 kHz (依赖外部 Vocoder) 24 kHz
声音设计 (Text-to-Voice) 原生支持 (自然语言描述) 需结合前置模型 不支持 (依赖音频) 支持部分内嵌种子
多语言与方言深度 30 种语言 + 9 大方言 中/英/日/粤/韩 中/英为主 中/英
长文本发音稳定性 极佳 (大参数 LLM 语义规划) 优异 良好 (极长文本偶有断词) 偶有电音与吞字
实时推流能力 Nano-vLLM 毫秒级 Chunk 支持高效流式 非自回归快生成,流式改造较难 较难低延迟流式

多语种与方言字错率(CER/WER)横向表现

在标准评测集 Seed-TTS-eval 与包含多方言的混合评估集中,各主流模型在字词识别错误率(CER/WER ↓\downarrow,越低越好)上的实测对比表现如下:

xychart-beta
    title "多语言与方言合成字词错误率对比 (WER/CER % 越低越好)"
    x-axis ["普通话", "英语", "粤语", "四川话", "日语", "德语"]
    y-axis "字词错误率 (CER/WER %)" 0 --> 12
    bar [1.9, 2.3, 2.7, 3.1, 2.8, 3.4]
    bar [2.4, 2.8, 3.6, 4.5, 3.5, 4.2]
    bar [3.2, 3.5, 5.8, 6.9, 4.9, 5.8]

[!TIP]
上图中各柱状图分别对应:

  • 第一柱(蓝色):VoxCPM2 (2B)
  • 第二柱(绿色):CosyVoice 2 (0.5B)
  • 第三柱(黄色):F5-TTS (0.3B)

得益于 2.36M+ 小时海量无监督与弱监督多语种语料的高强度对齐,以及 MiniCPM-4 强大的语法推断底座,VoxCPM2 在处理中英混合(Chinglish)、多音字混淆(如“重庆/重复”、“一行/行走”)以及复杂地方俚语时,展现出了极高的稳健性。


六、 踩坑经验与生产环境落地指南

在将 VoxCPM2 接入后台语音微服务并跑满长时压力测试的过程中,我总结了 4 条非常关键的“避坑心得”:

1. 声音设计 Prompt 的撰写技巧

在 Voice Design 模式下,尽量避免模糊且主观的情绪词(如“好听的声音”、“非常有魅力”),模型更擅长解析具体的物理声学声线特征。

  • 推荐写法:"(An adult male in his 30s, clear mid-range, gentle tempo, broadcast studio acoustics)"
  • 中英文混合支持:虽然支持中文描述,但目前底层基座在英文声学专业词汇(如 baritone、raspy、crisp、reverberant)上的先验向量更精准、收敛更稳定。建议在括号内优先采用英文描述音色特征,正文部分书写中文。

2. CFG 与推理步数的“黄金平衡点”

LocDiT 基于条件流匹配(CFM)解码,cfg_value(无分类器引导权重)与 inference_timesteps(积分步数)直接影响音质与耗时:

  • cfg_value:
    • 推荐设定在 1.8 ~ 2.5 之间;
    • 若设置过低(<1.2< 1.2),音色会显得散漫、咬字发虚;
    • 若设置过高(>3.5> 3.5),高频部分会出现轻微过饱和的高频啸叫伪影。
  • inference_timesteps:
    • 推荐设定为 10 步。实测在 10 步时,音频的信噪比与 MOS 表现已经达到了 30 步迭代的 96% 以上,而耗时缩短了近三分之二。在对延迟敏感的实时场景中,甚至可以压到 6~8 步。

3. 参考音频样本的质量把控

在使用音频克隆模式时:

  • 时长控制:提供 3 到 8 秒 包含连续正常语速的清晰片段最佳。低于 2 秒可能导致音色表征采样不充分;超过 15 秒并不会带来线性增益,反而可能因样本内部的情绪起伏导致 Speaker Embedding 漂移。
  • 环境底噪:如果参考音频带有些许杂音,务必在调用时传入 denoise=True,否则局部扩散器会忠实地把杂音当成音色本身的微观纹理原样放大。

4. 显存优化与部署方案推荐

作为一个 2B 规模的语音大模型,在 BF16 精度下单实例显存占用约为 6.5 GB,生成瞬态峰值在 8.5 GB 左右:

  • 本地消费级显卡:RTX 3090 / 4080 / 4090(16G/24G)完全能够轻松吃下,并维持极高的吞吐;
  • 生产环境推流:建议采用 OpenBMB 推荐的 Nano-vLLM 或 vLLM-Omni 推理框架,结合 PagedAttention 机制管理音频连续隐空间的 Key-Value 缓存,能够将 Time-to-First-Chunk(首包到达时间)压缩至 200ms 以内,满足实时智能电话与语音 Agent 的极速交互需求。

结语

回顾生成式语音技术的发展历程,我们曾一度陷入把音频生搬硬套进“离散 NLP 框架”的教条之中。离散 Codebook 虽然简化了大模型的工程接入门槛,却在无形中为音质与表现力筑起了一道难以突破的玻璃天花板。

OpenBMB VoxCPM2 的出现,代表了语音生成技术向其物理本质的一次关键回归:

  1. 它以非对称 AudioVAE 与条件流匹配(CFM)为杠杆,彻底翘掉了离散 Tokenizer 这块绊脚石,将演播室级 48kHz 的纯净连续声学质感带入了开源世界;
  2. 它以 2B 规模的 MiniCPM-4 为基座,将强大的语言推理底座与残差声学模型(RALM)相熔铸,第一次让“纯文本自由设计任意音色”成为了开箱即用的工业现实;
  3. 它兼容多语言、多方言与低延迟流式生态,为未来的多模态交互、具身智能语音交互与下一代数字人提供了扎实的底层基建。

如果你也受够了传统离散 TTS 中机械生硬的数码杂音,或者正在为虚拟角色的音色定制与多方言合成发愁,VoxCPM2 绝对是一个值得你立刻拉下代码、亲手一试的顶级开源利器。


原文链接与参考资料