音频生成


文档摘要

音频生成 本节摘要:音频是 16-48 kHz 的 1 维信号,5 秒片段就是 8-24 万个采样,没有任何 Transformer 能直接 attend 这么长的序列。2026 年所有生产音频模型的解法都一样:神经编解码器(Encodec、SoundStream、DAC)把波形压成 50-75 Hz 的离散 token,再用 Transformer 或扩散模型生成 token。本节讲透三大任务(语音合成 TTS、音乐生成、音效)如何共用「编解码器 + token 自回归 / 潜在扩散」这一底料:RVQ(残差矢量量化)如何用 K 层码本级联压缩、MusicGen 的「延迟并行」如何并行发射 K 个码本流以缩短序列、为什么 2024-2026 流匹配在音乐上赢(更快更干净)而 token

音频生成

本节摘要:音频是 16-48 kHz 的 1 维信号,5 秒片段就是 8-24 万个采样,没有任何 Transformer 能直接 attend 这么长的序列。2026 年所有生产音频模型的解法都一样:神经编解码器(Encodec、SoundStream、DAC)把波形压成 50-75 Hz 的离散 token,再用 Transformer 或扩散模型生成 token。本节讲透三大任务(语音合成 TTS、音乐生成、音效)如何共用「编解码器 + token 自回归 / 潜在扩散」这一底料:RVQ(残差矢量量化)如何用 K 层码本级联压缩、MusicGen 的「延迟并行」如何并行发射 K 个码本流以缩短序列、为什么 2024-2026 流匹配在音乐上赢(更快更干净)而 token 自回归在语音上仍占优(天然因果、好流式)。我们还会讨论 VALL-E 用 3 秒样本克隆声音的伦理边界。

对应原课程:Phase 08 · Lesson 11 · audio-generation(原英文 phases/08-generative-ai/11-audio-generation/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 说清音频为何不能直接喂 Transformer:16kHz × 5 秒 = 8 万采样,序列太长;解法是神经编解码器压成 50-75 Hz token。
  2. 讲透 RVQ(残差矢量量化):K 层码本级联,每层建模上一层的残差;24kHz 音频用 8 层 RVQ 在 75 Hz 下约 600 token/秒。
  3. 区分两种生成范式:token 自回归(MusicGen 的延迟并行、VALL-E 的语音克隆)与潜在扩散/流匹配(Stable Audio 2.5、AudioCraft 2)。
  4. 解释为什么流匹配赢音乐、token 自回归赢语音:流匹配更快更干净但难流式;token 自回归天然因果、好流式,适合实时语音。
  5. 在合成「音频 token」序列上手写一个条件 next-token 预测器,理解编解码器 → 交叉熵训练 → 自回归采样的模式。

一、问题与直觉

音频生成有三大任务:

  1. 文本转语音(TTS):给定文本产出语音。干净语音是窄带且有强语音学结构——用「Transformer over tokens」解决得很好。VALL-E(微软)、NaturalSpeech 3、ElevenLabs、OpenAI TTS。

  2. 音乐生成:给定提示(文本、旋律、和弦进行、流派)产出音乐。分布宽得多。MusicGen(Meta)、Stable Audio 2.5、Suno v4、Udio、Riffusion。

  3. 音效 / 声音设计:给定提示产出环境音或拟音。AudioGen、AudioLDM 2、Stable Audio Open。

三者都跑在同一个底料上:神经音频编解码器 + token 自回归或扩散生成器。

神经音频编解码器:把波形变成 token

Encodec(Meta,2022)、SoundStream(Google,2021)、Descript Audio Codec(DAC,2023)。一个卷积编码器把波形压成逐时间步向量;**残差矢量量化(RVQ)**把每个向量转成 K 层码本索引的级联;解码器反向还原。24kHz 音频在 2 kbps 下,用 8 层 75 Hz 的 RVQ 码本 = 600 token/秒

波形 (16000 采样/秒) └─ 编码器 conv ─┐ ├─ RVQ 第 1 层 → 75 Hz 的索引 ├─ RVQ 第 2 层 → 75 Hz 的索引 ├─ ... └─ RVQ 第 8 层

💡 RVQ 的直觉:第 1 层码本量化最粗(捕捉语音的「是什么音」),第 2 层量化第 1 层的残差(补充细节),第 3 层再量化第 2 层的残差……层层递进。8 层下来,总比特率 = 8 × log₂(码本大小) × 75 Hz。这与图像里的渐进 JPEG、第 12 节的残差量化(RVQ for VQ-VAE)是同一种「粗到细」思想。

两种上层生成范式

Token 自回归。把 RVQ token 拍平成序列,跑一个 decoder-only Transformer。MusicGen 用「延迟并行(delayed parallel)」以每流偏移的方式并行发射 K 个码本流。VALL-E 从文本提示 + 3 秒声音样本生成语音 token。

潜在扩散。把编解码器 token 打包成连续潜变量,或用类别扩散建模。Stable Audio 2.5 在连续音频潜变量上用流匹配。AudioLDM 2 用「文本 → mel → 音频」的扩散链。

💡 2024-2026 趋势:流匹配在音乐上赢了(推理更快、样本更干净),而 token 自回归仍在语音上占主导,因为它天然因果、好流式。

二、2026 年生产格局

系统 任务 骨干 延迟
ElevenLabs V3 TTS token 自回归 + 神经声码器 ~300ms 首 token
OpenAI GPT-4o 音频 全双工语音 端到端多模态自回归 ~200ms
NaturalSpeech 3 TTS 潜在流匹配 非流式
Stable Audio 2.5 音乐 / 音效 DiT + 音频潜变量流匹配 1 分钟片段约 10 秒
Suno v4 完整歌曲 未公开;疑似 token 自回归 每首歌约 30 秒
Udio v1.5 完整歌曲 未公开 每首歌约 30 秒
MusicGen 3.3B 音乐 Encodec 32kHz 上的 token 自回归 实时
AudioCraft 2 音乐 + 音效 流匹配 5 秒片段约 5 秒
Riffusion v2 音乐 频谱图扩散 ~10 秒

三、从零实现:合成音频 token 上的 next-token

code/main.py 模拟核心思想:在合成「音频 token」序列(两种风格:风格 A 是低/高交替像语音,风格 B 是单调爬升像音乐)上,训一个迷你的 next-token Transformer。条件化风格,采样。

步骤 1:合成音频 token

def make_tokens(style, length, vocab_size, rng): if style == 0: # 「类语音」:交替 return [i % vocab_size for i in range(length)] # 「类音乐」:爬升 return [(i * 3) % vocab_size for i in range(length)]

步骤 2:训一个迷你 token 预测器

一个条件化风格的双 gram 风格预测器。重点是模式:编解码器 token → 交叉熵训练 → 自回归采样

步骤 3:条件采样

给定风格 token 和起始 token,从预测分布采样下一个 token,继续 20-40 个 token。

四、典型陷阱与修复

  • 编解码器质量决定输出上限:如果编解码器无法忠实表示某个声音,生成器再强也没用。DAC 是当前开源最优。

  • RVQ 误差累积:每层 RVQ 建模上一层残差,第 1 层误差会传播。高层用温度 0 采样有帮助。

  • 音乐结构:30 秒 token 在 75 Hz 下是 2 万+ token,对 Transformer 很难。MusicGen 用滑窗 + 提示续写;Stable Audio 用更短片段 + 交叉淡入淡出。

  • 边界伪影:生成片段间交叉淡入淡出需仔细的 overlap-add。

  • 干净数据饥渴:音乐生成器需要数万小时授权音乐。Suno / Udio 的 RIAA 诉讼(2024)把这一点推到台前。

  • 声音克隆伦理:3 秒样本 + 文本提示,足以让 VALL-E / XTTS / ElevenLabs 克隆声音。每个生产模型都需要滥用检测 + 退出名单。

⚠️ MusicGen「延迟并行」为何重要:朴素做法是把 K 层 RVQ token 全部拍平成一个超长序列(K × 长度),Transformer 难以处理。延迟并行让 K 个码本流并行发射,但每流有一个时间偏移——于是序列长度从 K × 长度 降回约 长度,而 K 个流的信息通过偏移位置编码保留。这是音频 token 自回归能扩展到长音乐的关键技巧。

五、框架对比:2026 年用例

任务 2026 年栈
商业 TTS ElevenLabs、OpenAI TTS 或 Azure Neural
声音克隆(已验证同意) XTTS v2(开源)或 ElevenLabs Pro
背景音乐、快 Stable Audio 2.5 API、Suno 或 Udio
带歌词音乐 Suno v4 或 Udio v1.5
音效 / 拟音 AudioCraft 2、ElevenLabs SFX 或 Stable Audio Open
实时语音代理 GPT-4o realtime 或 Gemini Live
开源音乐研究 MusicGen 3.3B、Stable Audio Open 1.0、AudioLDM 2
配音 / 翻译 HeyGen、ElevenLabs Dubbing

六、生产推理:音频是流式问题

音频是用户期望边生成边到达(而非一次性到达)的唯一输出模态。用生产术语,这意味着 TPOT 很重要(Time Per Output Token),因为用户的收听速度是目标吞吐——不是阅读速度。对 16kHz、75 token/秒(Encodec)的音频,服务器必须每用户每秒生成 ≥75 个 token 才能保持播放流畅。

两个架构后果:

  • 流匹配音频模型无法平凡地流式:Stable Audio 2.5 和 AudioCraft 2 一次渲染固定片段长度。要流式,你得把片段切块并重叠边界——类似滑窗扩散——比编解码器自回归模型多 100-300ms 延迟开销。

  • 如果产品是「实时语音对话」或「实时音乐续接」,选编解码器自回归路径;如果是「提交时渲染 30 秒片段」,流匹配在质量与总延迟上胜出。

💡 GPT-4o 音频的端到端革命:传统 TTS 是「文本 → 声学特征 → 声码器 → 波形」的多阶段管线,每阶段丢一点质量、加一点延迟。GPT-4o 把音频 token 直接纳入多模态 Transformer 的词表,端到端生成——这就是它能做到 ~200ms 首 token、全双工、带情感的原因。代价是训练数据与算力门槛极高。

七、可复用产物

本节产出一个音频简报技能文件(位于原课程 outputs/skill-audio-brief.md)。

  • skill-audio-brief.md:输入音频简报(任务、时长、风格、声音、授权),输出:模型 + 托管、提示格式(流派标签、风格描述符、结构标记)、编解码器 + 生成器 + 声码器链、种子协议、评估方案(MOS / CLAP 分 / TTS 的 CER / 用户 A/B)。

八、练习

  1. 简单。code/main.py,显式设定风格。验证生成的序列匹配该风格的模式。

  2. 中等。 加延迟并行解码:模拟 2 个必须保持 1 步偏移的 token 流,训一个联合预测器。

  3. 困难。 用 HuggingFace transformers 本地跑 MusicGen-small。用三个不同提示生成 10 秒片段,做风格遵从度的 A/B。

本节要点回顾

  1. 音频是长 1D 信号:16kHz × 5 秒 = 8 万采样,Transformer 无法直接 attend;解法是神经编解码器压成 50-75 Hz token。
  2. RVQ(残差矢量量化):K 层码本级联,每层建模上层残差;8 层 75Hz 码本 ≈ 600 token/秒,粗到细压缩。
  3. 两种生成范式:token 自回归(MusicGen 延迟并行、VALL-E 语音克隆)与潜在扩散/流匹配(Stable Audio 2.5、AudioCraft 2)。
  4. 流匹配赢音乐(更快更干净),token 自回归赢语音(天然因果、好流式)——产品形态决定选哪个。
  5. 编解码器质量是上限:DAC 是开源最优;RVQ 第 1 层误差会传播,高层用温度 0。
  6. 声音克隆伦理:3 秒样本 + 文本即可克隆,需滥用检测 + 退出名单。
  7. 音频是流式问题:用户期望边生成边到达,TPOT 是目标吞吐(≥75 token/秒/用户);流匹配难流式,实时场景选编解码器自回归。

下一节,我们把生成扩展到三维——3D 生成:高斯泼溅、神经辐射场、3D 扩散,以及如何从文本或单张图像生成可旋转、可重新打光的三维资产。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U