3kbps SoundStream 听感压过 Opus 12kbps,手机还能零延迟联合降噪

SoundStream: An End-to-End Neural Audio Codec

Neil Zeghidour, Alejandro Luebs, Ahmed Omran, Jan Skoglund, Marco Tagliasacchi

cs.SD, cs.LG, eess.AS

2021-07-07

Google 用端到端卷积编解码加残差向量量化做通用音频编码。24kHz 下 3kbps 听感超过 12kbps 的 Opus,单模型覆盖 3–18kbps,Pixel 4 单核可实时跑。

这篇在解决什么

传统音频编码长期走两条路。波形编码(Opus、EVS)尽量还原每个采样点,中高码率好听,压到几个 kbps 就开始出金属声和丢高频。参数编码反过来,用语音发声模型硬套,低码率能听,但只对语音有效,音乐和一般音频直接垮。

2021 年前后的神经方案已经能在 3kbps 左右做语音,典型代表是 Lyra:编码器是手搓的 mel 特征,解码器是自回归 WaveGRU。通用音频、可变码率、端侧实时这三件事还没被同一套模型同时做下来。SoundStream 要填的就是这个缺口。

方法

主干只有三段,全部因果卷积,架构延迟完全由下采样比决定。

训练把三项损失加在一起:对抗 hinge、判别器内部特征的 L1 匹配、多尺度 mel 谱重建。判别器有两路,一路是 MelGAN 式的波形多分辨率,一路吃 STFT 的实部虚部。量化器按 VQ-VAE-2 做指数滑动平均更新,第一批用 k-means 初始化,长期没人用的码字用当前 batch 的向量替换。

可变码率靠量化器 dropout:每个训练样本随机只启用前 nq 层,推理时按目标码率选层数。因为各层是相加而不是拼接,embedding 维度不变,编码器和解码器都不用改结构。

降噪是可选项。FiLM 条件层塞在量化前或量化后,推理时用一个 one-hot 开关决定要不要去掉背景噪声。干净语音和音乐无论开关都原样重建,避免「一开降噪就把环境声切掉」。这条通路不额外加缓冲,所以不增加端到端延迟。

结果

主观评测是 crowdsourced 的 MUSHRA 变体,200 条 2–4 秒素材,每条 20 人打分,覆盖干净语音、带噪语音、混响语音和音乐。论文没有把 MUSHRA 分数写成表,但把「追上同一听感需要多少码率」写清楚了。

对照SoundStream基线要多少才追上
vs Opus3 kbps≥12 kbps,约 4 倍
vs EVS3 kbps≥9.6 kbps,约 3.2 倍
vs Opus / EVS6 kbps约 2.6× / 2.2×
vs Lyra3 kbps同码率下 SoundStream 更高

音乐在 3kbps 仍然明显好于 Opus 12kbps 和 EVS 5.9kbps。干净语音和带噪语音的听感基本持平,没有「只对干净语音有效」的塌方。

客观指标 ViSQOL 从 3kbps 到 18kbps 平滑下降,最低仍高于 3.7。把可学习编码器换成固定 mel 滤波器组,6kbps 时 ViSQOL 从 3.96 掉到 3.33,比把码率砍半还差(3kbps 可学习编码器是 3.76)。量化器 dropout 训出的单模型,6kbps 和 12kbps 主观听感跟码率专用模型打平,3kbps 只略差。

Pixel 4 单核上,Cenc=Cdec=32、8.4M 参数的默认模型编码/解码 RTF 都大于 2.3×。编码器砍到 8 通道,编码 RTF 升到 18.6×,ViSQOL 几乎不动;砍解码器质量掉得更明显。联合降噪在 VCTK 上,0dB SNR 时 ViSQOL 2.93,跟「SEANet 降噪再 SoundStream 压缩」的 3.05 接近,算力和架构延迟各少一半。

为什么重要

今天几乎所有神经音频 tokenizer 都沿这条路:卷积编解码、RVQ、对抗加谱重建。EnCodec、DAC、Mimi、Voxtral Codec 的骨架都能在这篇里找到来源。被钉死的设计选择就三件:编码器必须学、码本必须残差叠、单模型可以靠 dropout 覆盖一档码率。

对要上实时通话或端侧播放的人,13ms 架构延迟加手机 CPU 实时,比自回归逐样本解码实际得多。联合压噪对远场语音链路能少一级 pipeline。

这是 2021 年的奠基工作,不是拿来打 2026 年 1kbps 级 codec 的 SOTA 卡。读它是为了看清后续设计从哪来。

局限与存疑

论文几乎没写失败样本。ViSQOL 和主观分的相关性只说「早期实验里强相关」,没有给相关系数。MUSHRA 变体去掉了低通锚点,绝对分数不好跟别的实验室直接比。

码率是恒定的,没做跨帧熵编码。作者按符号熵估过,理论还能再省 7%–20% 的比特,但没有落地成可用的熵编码器。训练数据是 LibriTTS、Freesound 混合噪声和 MagnaTagATune,没有大规模野外音频。联合增强只演示了背景降噪。

跟 EVS/Opus 的对比是 24kHz 素材上的听感,没有报丢包、抖动缓冲这些真实通话条件。实时数字来自 Pixel 4 单线程,没有 DSP 或 NPU 数字。

术语

原文与代码

社区讨论

相关论文

全部论文解读