转载本文请注明出处:https://yudonglee.me/codec-explained/  |  作者:yudonglee

2022 年之前,”音频编解码器”(audio codec)是一个相当无趣的工程话题——MP3、AAC、Opus 几十年没有大变化,听起来又老又稳。但到了 2024 年,codec 突然变成了语音 AI 圈最性感的研究方向。原因很简单:VALL-E(2023)、Moshi(2024)、CosyVoice(2024)、F5-TTS(2024)这些新一代 TTS / 语音 LLM 全部以 neural audio codec 作为”分词器”——把音频离散化成 token 序列,让 LLM 思路能直接处理音频。codec 的好坏直接决定上层模型的速度上限和质量上限

本文是「语音技术深度系列」TTS 主线第 5 篇,紧接 F5-TTS 详解。这次我们把视角下沉到「语音 AI 的底层基础设施」——彻底拆透 4 个主流 neural audio codec:SoundStream(Google 2021 开山之作)、Encodec(Meta 2022 当代标准)、DAC(Descript 2023 高保真)、Mimi(Kyutai 2024 流式低帧率)。读完你将能回答:

  1. RVQ-VAE 究竟是什么?为什么它是所有现代音频 codec 的共同基础?
  2. SoundStream → Encodec → DAC → Mimi 四代演进各自解决了什么问题?
  3. 2024 年的 codec 设计趋势——更低帧率、更少 codebook、流式友好——背后的工程驱动力是什么?
  4. 给定一个 TTS 或语音 LLM 项目,我该选哪个 codec?

1. 背景:从 MP3 到 LLM 时代的 codec

传统音频压缩有两个目标:降低比特率(让音频文件更小)和保持人类听感(不可察觉的损失)。MP3、AAC、Opus 都围绕这两个目标用心理声学 (psychoacoustic) 模型做了几十年精雕细琢——什么频率人耳不敏感就丢、什么时刻被掩蔽就压低分辨率。结果是 Opus 在 32 kbps 就能编码可接受的语音,6 kbps 是行业公认的”实用下限”。

但 neural codec 时代加入了第三个目标:输出离散 token 序列,便于 LLM 建模。这个新目标让经典 codec 完全不适用——MP3 的 bit stream 是连续浮点数的熵编码结果,无法直接当成 LLM 的”单词”。语音 LLM 需要的是固定 vocab 大小的整数序列,每个整数代表一个”音频 token”。这正是 neural codec 的卖点:

维度 经典 codec (Opus) Neural codec (Encodec)
输出形式 变长比特流 固定时步的整数 token
核心方法 心理声学 + 熵编码 RVQ-VAE 端到端学习
设计目标 最小比特率 / 高听感 低帧率 / 易被 LLM 建模
典型比特率 6–24 kbps 1.5–24 kbps
是否可微 是 (能与 LLM 联合训练)
典型用途 WhatsApp / Zoom / 流媒体 VALL-E / Moshi / CosyVoice

所以 neural codec 不是要替代 Opus——后者在传统 VoIP/直播场景仍然无可替代。它是为 「LLM-as-Audio-Processor」 这种新范式量身定做的基础设施。

2. 共同的数学骨架:RVQ-VAE

RVQ-VAE skeleton: CNN encoder → Residual Vector Quantizer (K codebooks) → CNN decoder, with reconstruction loss connecting input and output
图 1:RVQ-VAE——所有现代音频 codec 的共同数学骨架。CNN encoder 把波形压缩到 latent,Residual VQ 用 K 层 codebook 逐层量化残差,CNN decoder 还原波形。四代 codec 的差异只在 K、帧率、训练 loss 与具体架构选择。

所有四个现代音频 codec 都建立在同一个数学骨架上——RVQ-VAE (Residual Vector Quantized Variational AutoEncoder)。这个名字虽然吓人,但拆开看其实只有三层:

  • VAE:自编码器范式——CNN encoder 把波形压缩成低维 latent,CNN decoder 还原。
  • Vector Quantization (VQ):把连续 latent 离散化——每帧 latent 向量在一个学到的 codebook 中找最近邻,输出 codebook 中的 entry id。
  • Residual:单一 codebook 量化精度不够,所以用多层残差——第 1 层量化原始 latent,第 2 层量化第 1 层的残差,第 3 层量化第 2 层的残差……以此类推。每加一层 codebook 就把误差减半

关键的训练 loss 是三件套:(1)重建 loss——原波形 vs 重建波形的 L1/L2 + 频谱 loss;(2)VQ commitment loss——鼓励 encoder 输出靠近 codebook entry;(3)对抗 loss (GAN)——用 multi-scale STFT 判别器提升听感真实度。对抗 loss 是 SoundStream 首次引入的”杀手锏”——没有它,CNN decoder 输出的波形听起来”糊”,加上它瞬间逼真。

整个框架的核心可调超参是:

  • K(codebook 数量):越多重建越好,但 token 数也越多(每帧产 K 个 token),增加下游 LLM 负担。典型 4–32。
  • V(每个 codebook 大小):典型 1024。
  • frame rate(帧率,Hz):encoder 的时间下采样比决定。越低 token 越少。典型 12.5–75 Hz。

总比特率 = K × log₂(V) × frame_rate。比如 Encodec 8 codebook × 10 bit × 75 Hz = 6 kbps。四个 codec 的演进就是在 (K, V, frame_rate, 重建质量) 这个四维空间中做不同取舍

3. SoundStream (Google 2021):开山之作

SoundStream 是 Google Brain 在 2021 年提出的第一个端到端可学的 neural audio codec。它最重要的几个贡献:

  1. 首次把 RVQ 引入端到端音频压缩。之前 VQ-VAE 类工作(如 Jukebox)都是单 codebook,码本规模动辄数万,训练不稳定。SoundStream 把”多层 1024-entry codebook”这套配方做 work。
  2. SEANet encoder/decoder 架构——基于扩张卷积的 1D ConvNet,stride 模式 (2, 4, 5, 8) 实现 320× 下采样到 50 Hz。这个架构后来被 Encodec、Mimi 直接继承。
  3. Multi-scale STFT 判别器对抗训练——分别在多个 STFT 窗长(256/512/1024/2048)上判别真假音频,覆盖不同频率分辨率。这是 SoundStream 在 3 kbps 还能保持高音质的关键。
  4. Bitrate-flexible inference——一次训练,多档比特率可调。推理时丢掉后几层 codebook 即可降低比特率(也降低重建质量),不需要重训。

SoundStream 配置:8 codebook × 1024 entries × 50 Hz = 4 kbps(默认),可降到 1 kbps。论文实测在 3 kbps 上 MUSHRA 评分超过 Opus 12 kbps——压缩率高 4 倍、质量更好。这是 neural codec 第一次明确证明能在传统 codec 强项(低比特率压缩)上取胜。

4. Encodec (Meta 2022):当代事实标准

Encodec 是 Meta AI 在 2022 年 10 月开源的 codec,本质是 SoundStream 的”工业化加强版”。它没有发明全新概念,但做了一系列工程改进让它成为 2023–2024 年所有 codec-LM TTS 的事实标准:

  • 更深的 SEANet 结构——encoder/decoder 都加了 LSTM 中间层,增强时序建模。
  • 更丰富的判别器——除了 multi-scale STFT,还加了 multi-period 判别器(借自 HiFi-GAN),覆盖更广频谱范围。
  • 支持 24 kHz 与 48 kHz 两档采样率——前者用于语音(VALL-E 用这个),后者用于音乐 (MusicGen 用这个)。
  • Language Model 熵编码——可选地用一个小型 Transformer LM 对 token 序列做无损熵编码,进一步降低比特率 25-40%。
  • 预训练权重开源 + 代码完整——这是 Encodec 跑赢 SoundStream 的关键工程优势,VALL-E、Bark、MusicGen 都直接调用 Encodec

Encodec 24 kHz 默认配置:8 codebook × 1024 entries × 75 Hz = 6 kbps。在 LibriSpeech 上的客观指标 PESQ 3.2、ViSQOL 4.4,明显超过 Opus。但它有一个被广泛诟病的致命缺陷token 序列对下游 LLM 太长——75 Hz × 8 codebook = 每秒 600 个 token。在 10 秒音频上要让 LLM 处理 6000 个 token,自回归解码就要 6000 步——慢得让人无法忍受。这是后续 DAC、Mimi 工作的核心改进动机。

5. DAC (Descript 2023):高保真竞争者

DAC (Descript Audio Codec) 是 Descript 公司在 2023 年发布的 codec,目标是「同比特率下更高质量」。它的改动集中在:

  • Snake 激活函数替代 ELU——Snake 是 BigVGAN 引入的周期激活函数 x + sin²(x)/α,对周期信号(语音、音乐)建模更好。
  • 9 个 codebook(vs Encodec 8 个)——多一层把残差进一步细化,重建质量提升。
  • 更严格的 commitment loss + codebook 学习率——避免 codebook collapse(一个常见 RVQ 问题)。
  • 44.1 kHz 全频带——支持音乐级高保真,最高 24 kbps。

DAC 在客观指标上确实是当时最强:44.1 kHz 8 kbps 配置下 ViSQOL 达到 4.74(接近上限 5.0),明显超过 Encodec 48 kHz 同比特率的 4.5。它在 Suno、Bark、Riffusion 等音乐生成项目中是默认 codec。但token 数仍然很多——9 codebook × 88 Hz(44.1 kHz 下) = 每秒 ~800 token,对 LLM 更不友好。

6. Mimi (Kyutai 2024):流式 + 低帧率革命

2024 年 9 月,法国独立 AI 实验室 Kyutai 开源了语音 LLM Moshi,同时发布了为它专门设计的 codec Mimi。Mimi 的设计哲学完全不同于前三代——它不追求”同比特率下更好”,而是追求”更低帧率 + 流式可用”,因为这是支撑 200 ms 端到端语音 LLM 延迟的唯一方式。

Mimi 的关键创新:

  1. 12.5 Hz 帧率——比 Encodec (75 Hz) 低 6 倍。一段 10 秒音频只需要 125 个时间步,让上层 LLM 的自回归解码可以毫秒级完成。这是 Mimi 区别于所有先前 codec 的最大特征。
  2. 语义 + 声学两路 codebook——8 个 codebook 中的第 1 个是 WavLM 蒸馏的语义 token(与 ASR/TTS 任务对齐),后 7 个才是普通声学 RVQ。这种”显式分工”让上层 LLM 可以分别处理”内容”和”音色”。
  3. 完全因果架构——encoder/decoder 都是因果卷积,没有任何未来 padding。这是流式合成的硬性要求——Encodec/DAC 都做不到。
  4. 知识蒸馏——用 Encodec/WavLM 作为教师模型蒸馏 Mimi,加速收敛。

Mimi 8 codebook × 12.5 Hz = 100 token/秒,是 Encodec 的 1/6。MUSHRA 评分约 4.0(比 Encodec 略低,但接近)。这个”小损失换巨大效率”的取舍是 Moshi 200 ms 端到端延迟的关键。可以说Mimi 不是为压缩设计的,而是为「让 LLM 实时处理音频」设计的——这代表了 2024 年后 codec 设计的根本转向。

Visual contrast of token sequence density: Encodec produces 600 tokens per second while Mimi produces only 100 tokens for the same audio
图 2:Encodec 75 Hz vs Mimi 12.5 Hz 的 token 密度对比。同样 1 秒音频,Encodec 要 LLM 处理 600 个 token,Mimi 只要 100 个——这是 Moshi 能做到 200 ms 端到端延迟的根本原因。「低帧率」是 2024 年 codec 设计的根本转向。

这张对比图直观说明了 Mimi 革命性的意义:同样 1 秒音频,Encodec 要 LLM 处理 600 个 token,Mimi 只要 100 个。对于自回归解码的语音 LLM 来说,这是 6 倍的速度提升,且 每多砍掉一倍 token 就让长上下文成本下降一个数量级。这正是为什么 Moshi 团队不得不重新发明一个 codec——Encodec 的 token 数对实时对话来说根本无法接受。

7. 四代 codec 全维度对比

Four-quadrant scatter plot of major neural audio codecs (SoundStream, Encodec, DAC, Mimi, WavTokenizer) plus classic Opus, plotted by bitrate vs frame rate
图 3:5 大 neural codec + Opus 的 bitrate vs frame rate 全景。绿色 Mimi 与 WavTokenizer 占据左下「LLM-friendly」象限;红色 DAC 在右上「高保真重」象限。2024 年明显趋势是从右上向左下迁移——为上层 LLM 让路。
Codec 提出方/年份 Sample Rate Frame Rate Codebooks Bitrate 核心特色
SoundStream Google 2021 24 kHz 50 Hz 8 4 kbps RVQ + 多尺度 GAN 开山之作
Encodec Meta 2022 24 / 48 kHz 75 Hz 8 6 kbps 工业化标准,VALL-E/Bark 底座
DAC Descript 2023 44.1 kHz 88 Hz 9 8 kbps Snake 激活 + 9 codebook,最高音质
Mimi Kyutai 2024 24 kHz 12.5 Hz 8 (含 1 语义) 1.1 kbps 流式 + 极低帧率,Moshi 底座
WavTokenizer 2024 24 kHz 75 Hz 1 0.9 kbps 单 codebook 极简,便于 LM

8. PyTorch 使用:3 行调用 Encodec

Encodec / DAC / Mimi 都有官方权重 + pip 安装。下面演示用 Encodec 把音频编码到 token 再还原:

# pip install encodec
from encodec import EncodecModel
import torchaudio
import torch

# 1) 加载预训练模型(24 kHz 版,约 14 MB)
model = EncodecModel.encodec_model_24khz()
model.set_target_bandwidth(6.0)            # 6 kbps = 8 codebook
model.eval()

# 2) 读音频 + 重采样到 24 kHz
wav, sr = torchaudio.load("input.wav")
if sr != 24000:
    wav = torchaudio.functional.resample(wav, sr, 24000)
wav = wav.mean(0, keepdim=True).unsqueeze(0)    # → (1, 1, T)

# 3) Encode: 波形 → token (K × T_token)
with torch.no_grad():
    encoded = model.encode(wav)            # list of (codes, scale)
    codes = encoded[0][0]                  # (1, K=8, T_token)
print(f"audio  shape: {wav.shape}")
print(f"tokens shape: {codes.shape}  (K={codes.shape[1]}, T={codes.shape[2]})")

# 4) Decode: token → 波形 (重建)
with torch.no_grad():
    wav_recon = model.decode(encoded)      # (1, 1, T)
torchaudio.save("recon.wav", wav_recon.squeeze(0), 24000)
print(f"reconstructed: {wav_recon.shape}")

# 5) 量化看看:token 是整数序列
print("first 8 codes of codebook 0:", codes[0, 0, :8].tolist())
# 输出例如: [423, 88, 512, 901, 17, 256, 700, 42]

这 30 行代码完成了”音频→token→音频”全链路。生成的 codes 张量正是 VALL-E / MusicGen / Bark 等模型的训练输入——它们都是用这些整数序列当作”audio BPE token”做 LLM 训练。Mimi 的调用方式与此几乎相同(moshi.modules.MimiModel + 同样的 encode/decode API),只是模型尺寸更大、token 数更少。

9. 在 TTS / 语音 LLM 中的应用

上层模型 使用的 codec 选择理由
VALL-E (Microsoft 2023) Encodec 24 kHz 6 kbps 2022 年只有这个开源 codec 足够稳
Bark (Suno 2023) Encodec 同上
MusicGen (Meta 2023) Encodec 32 kHz 6 kbps 支持音乐高保真
Riffusion (2024) DAC 44.1 kHz 音乐质量优先
Moshi (Kyutai 2024) Mimi 12.5 Hz 必须低帧率才能 200 ms 端到端延迟
NaturalSpeech 3 (Microsoft 2024) FACodec (自研) 显式解耦 content/timbre/prosody
CosyVoice 2 (Alibaba 2024) 监督语义 token + HiFi-GAN 放弃通用 codec,自研监督式 token
F5-TTS (SWivid 2024) 无 codec, 直生 mel + Vocos 纯 Flow Matching 无需离散化

2024 年的明显趋势:通用 codec(Encodec/DAC)正在被特定上层模型自研 / 改造的方案取代——CosyVoice 用监督语义 token、NaturalSpeech 3 用 FACodec 解耦多属性、Moshi 用 Mimi 低帧率、F5-TTS 干脆绕过 codec。“通用 codec 完美适配所有任务”的愿景没有实现——不同的下游任务对 codec 有不同的最优解。

10. 工程化与未来趋势

  1. “少 codebook”是未来方向WavTokenizer 把 codebook 数压到 1,vocab 4096,单 codebook × 75 Hz = 75 token/秒;SingleCodec 进一步把 token rate 压到 25 / 秒。这些”纯单 codebook“codec 训练上层 LLM 时极简单——不需要 NAR Transformer 处理 cross-codebook 依赖,直接一条 token 序列像 NLP 那样训。预计 2025-2026 年单 codebook codec 会成为主流
  2. “流式”是硬需求。所有需要 voice agent / 实时合成的场景都必须用因果 codec。Mimi 是第一个完全因果设计的开源 codec,后续会有更多类似设计。
  3. “语义 + 声学”分离架构。Mimi 的第 1 个 codebook 是 WavLM 蒸馏语义 token,后 7 个是声学 RVQ——这种显式分工被证明对上层 LLM 友好。NaturalSpeech 3 的 FACodec 把分工做得更彻底(content/timbre/prosody/acoustic 四路)。
  4. 量化部署友好性。Encodec/Mimi 都是 ~50 M 参数,INT8 量化后 CPU 上能毫秒级推理。生产环境部署成本很低,不是瓶颈。
  5. 多模态统一 tokenizer。OpenAI/Anthropic/Google 都在探索音频+文本+图像的统一 token 化方案——理想是一个 codec 能编码所有模态。2025 年的早期工作(如 Mimi + image VQGAN 联合训练)已经初见端倪。这将彻底改变多模态 LLM 的架构。
  6. 无损 vs 有损。所有当前 codec 都是有损压缩,重建后听感与原音不同。学术界已有探索无损 neural codec(NeuRiQ、NeLoC),但比特率比 FLAC 高 2-3 倍、尚未实用。

11. 总结

Neural audio codec 在 2021-2024 年完成了一次从”音频压缩工具“到”语音 AI 基础设施“的角色转变。SoundStream 证明端到端 RVQ-VAE 在低比特率上能打败 Opus;Encodec 把这套范式工业化,成为整个 codec-LM TTS 时代的事实标准;DAC 把音质推到上限;Mimi 反向把帧率压到极致以服务流式语音 LLM;WavTokenizer 等单 codebook 路线则把”易被 LLM 建模”做到极致。四代演进恰好对应了上层应用需求的演变——从”压缩”到”重建”到”建模”到”实时交互”。

对从业者而言,2026 年选 codec 的决策树大致这样:纯音质优先选 DAC;VALL-E 风格 TTS选 Encodec;实时语音 LLM选 Mimi;简单上层 LLM 训练选 WavTokenizer;纯流式 ASR / TTS 不需要离散 token则完全跳过 codec(如 F5-TTS)。没有一个 codec 能 cover 所有场景,但每个场景都有了优秀的开源选项。这就是 2026 年语音 AI 工程的现实。

把这篇放到我之前的 WhisperSSL 三部曲TTS 演进史VALL-ECosyVoice 2F5-TTS 系列里看,你应该能完整理解 2020-2026 年端到端语音 AI 的整张技术地图。codec 是这张地图的底座——所有上层模型都直接或间接依赖它。

参考资料

  1. Zeghidour, N. et al. SoundStream: An End-to-End Neural Audio Codec. arXiv:2107.03312, IEEE/ACM TASLP 2021.
  2. Défossez, A. et al. High Fidelity Neural Audio Compression (Encodec). arXiv:2210.13438, 2022.
  3. Kumar, R. et al. High-Fidelity Audio Compression with Improved RVQGAN (DAC). arXiv:2306.06546, NeurIPS 2023.
  4. Défossez, A. et al. Moshi: a speech-text foundation model for real-time dialogue. arXiv:2410.00037, 2024.(Mimi 出处)
  5. Ji, S. et al. WavTokenizer: an Efficient Acoustic Discrete Codec Tokenizer for Audio Language Modeling. arXiv:2408.16532, 2024.
  6. Ju, Z. et al. NaturalSpeech 3: Zero-Shot Speech Synthesis with Factorized Codec and Diffusion Models. arXiv:2403.03100, 2024.(FACodec 出处)
  7. van den Oord, A. et al. Neural Discrete Representation Learning (VQ-VAE). NeurIPS 2017.(RVQ 的祖师爷)
  8. Encodec 官方仓库:github.com/facebookresearch/encodec
  9. DAC 官方仓库:github.com/descriptinc/descript-audio-codec
  10. Mimi 官方仓库:github.com/kyutai-labs/moshi(含 Mimi 实现)

Loading