在快速发展的生成式 AI 领域,扩散模型已成为黄金标准。从创造超现实图像 (如 Stable Diffusion) 到合成超逼真的人类语音,这些模型的工作原理都是通过迭代地将随机噪声细化为结构化数据。

但有一个问题: 扩散模型速度很慢。

在音频领域,这种缓慢被进一步放大。音频数据是高维的;仅仅一秒钟的高质量音频就可能包含 24,000 或 44,100 个数据点。训练一个模型来预测如此长的序列需要巨大的计算能力和时间。

今天,我们将深入探讨一篇来自新南威尔士大学 (UNSW) 、CSIRO 和南洋理工大学 (NTU) 的研究人员撰写的引人入胜的论文,题为 “Speaking in Wavelet Domain”。他们提出了一个耳目一新的简单问题: 与其让神经网络架构变得复杂以提高速度,如果我们仅仅改变音频信号本身的表示方式会怎样?

他们的解决方案涉及离散小波变换 (DWT) 。 通过将生成过程转移到小波域,他们成功地将语音扩散模型的训练和推理速度提高了一倍,且没有牺牲质量。让我们来拆解一下他们是如何做到的。


瓶颈: 为什么语音合成很慢?

要理解解决方案,我们首先需要了解问题所在。去噪扩散概率模型 (DDPMs) 通过反向扩散过程生成数据。它们从高斯噪声开始,通过数百 (有时数千) 个小步骤将其“去噪”成干净的波形。

在处理图像时,我们通常在“潜在空间” (类似于图像的压缩版本) 中工作以节省计算量。然而,音频带来了独特的挑战。语音信号具有非常高的时间分辨率。如果你简单地缩小图像,你会得到一张模糊的图片。如果你通过下采样“缩小”音频,你就会失去使声音听起来像人类的高频细节 (比如“s”或“t”音的清晰度) 。

加速这一过程的标准方法通常包括:

  1. 架构改变: 让神经网络更小或更稀疏。
  2. 调度改变: 尝试用更少的步骤进行去噪。

本文作者选择了第三条路: 通过小波进行信号压缩。


核心方法: 用小波“说话”

研究人员转向了一种经典的信号处理技术: 小波变换。

什么是小波?

与将信号分解为正弦波 (频率) 但丢失时间信息的傅里叶变换 (FFT) 不同,小波变换将信号分解为“小波”。这些是在时间上局部化的小振荡。这使得变换能够同时捕捉频率信息和时间信息——这对于像语音这样的非平稳信号至关重要。

压缩中常用的特定小波族是 Cohen-Daubechies-Feauveau (CDF) 5/3 小波。

图 1: Cohen-Daubechies-Feauveau 5/3 小波。(a) 尺度函数和小波函数,(b) 分解和重构滤波器。

如图 1 所示,小波函数 (下排) 振荡并归零。它们充当滤波器,可以从信号中提取特定的纹理。

离散小波变换 (DWT)

该方法依赖于分解 。 离散小波变换 (DWT) 获取输入语音信号并通过两个滤波器:

  1. 低通滤波器: 提取“近似系数” (cA)。这捕捉了语音的平滑低频结构。
  2. 高通滤波器: 提取“细节系数” (cD)。这捕捉了高频噪声和纹理。

关键在于,滤波后,信号被下采样 2 倍

\[ \varPsi _ { l o w } \left( n \right) = \sum _ { k = - \infty } ^ { + \infty } g \left( k \right) \phi \left( 2 n - k \right) . \]

显示低通滤波的方程

\[ \varPsi _ { h i g h } \left( n \right) = \sum _ { k = - \infty } ^ { + \infty } g \left( k \right) \psi \left( 2 n - k \right) . \]

显示高通滤波的方程

这导致了关键的压缩步骤:

\[ \begin{array} { r } { c A = { \varPsi } _ { l o w } \mathrm { ~ \downarrow ~ 2 , ~ } } \\ { c D = { \varPsi } _ { h i g h } \mathrm { ~ \downarrow ~ 2 . ~ } } \end{array} \]

显示下采样的方程

如果你原始音频的长度为 \(L\),你现在拥有两个向量 (\(cA\) 和 \(cD\)) ,每个长度为 \(L/2\)。

小波扩散流程

该方法的精妙之处在于: 扩散模型被训练来生成小波分量 (\(cA\) 和 \(cD\)) ,而不是原始音频。

图 2: 语音小波扩散模型流程概览: 首先,语音信号被分解为近似系数矩阵 (cA) 和细节系数矩阵 (cD),随后扩散模型生成 cA 和 cD,并从这些矩阵中恢复语音信号。

如图 2 所示,该流程如下运作:

  1. 输入: 目标语音通过 DWT 分解为 \(cA\) 和 \(cD\)。
  2. 拼接: 这两个向量被堆叠形成一个具有 2 个通道且长度为原始长度一半 (\(L/2\)) 的矩阵。
  3. 扩散: 模型学习对这种压缩表示进行去噪。
  4. 重构: 一旦模型生成了干净的 \(cA\) 和 \(cD\), 离散小波逆变换 (IWT) 将完美地重构出全分辨率语音信号。

为什么这能加速?

你可能会想: “我们仍然有相同数量的数据点,只是重新排列了而已。为什么会更快?”

答案在于 GPU 和卷积神经网络 (CNN) 的工作原理。卷积层的计算成本在很大程度上取决于序列长度

\[ M A C _ { h ( n ) } = K \times C _ { o u t } \times x = \frac { 1 } { 2 } M A C _ { g ( n ) } . \]

显示 MAC 减少的方程

通过将序列长度减半 (\(L \to L/2\)),即使我们将通道数翻倍 (\(1 \to 2\)),由于并行化,GPU 也能更高效地处理数据。研究人员发现,这个简单的改变几乎使训练和推理的速度翻倍


进一步增强: 榨取更多性能

研究人员并没有止步于基础分解。他们引入了两个巧妙的模块来进一步提高质量和速度。

1. 频率瓶颈模块

语音能量主要集中在低频段。高频通常包含噪声。为了帮助模型关注重点,作者提出了一个频率瓶颈模块

图 4: 频率瓶颈模块概览

这个模块 (图 4) 位于模型内部。它通过再次分离频率、应用卷积并强调低频成分 (语音) ,同时可能在增强任务中衰减高频成分 (噪声) 来处理信号。这带来了更好的音频质量,特别是在语音增强 (去噪) 任务中。

2. 多级小波加速器

如果分割一次信号 (\(L/2\)) 很快,那如果我们再次分割呢?

多级小波加速器递归地应用 DWT。这产生了一个长度为原始长度 1/4 且具有 4 个通道的信号。

多级 DWT 和增强模块概览 (a) 多级离散小波变换模块

多级低频语音增强模块 (b) 多级低频语音增强模块

多级离散小波逆变换模块 (c) 多级离散小波逆变换模块

如上图所示,这允许进行更激进的压缩。实验表明,这可以将模型速度提升超过 5 倍 , 尽管音频保真度略有折损。


实验与结果

团队在两个主要任务上测试了该方法: 语音合成 (使用 DiffWave 进行文本转语音) 和语音增强 (使用 CDiffuSE 去除噪声) 。

速度对比

这篇论文的主要主张是速度。让我们看看数据:

表 1: 上表展示了在语音增强和语音合成任务中使用各种小波基的结果。

在表 1 中,请看 Training Time (训练时间) 和 RTF (实时率) 列。

  • 原始模型: 每轮训练耗时约 481 秒;RTF 为 0.728。
  • 小波模型 (Haar, DB2 等): 训练耗时降至约 248 秒;RTF 降至约 0.40。

这证实了假设: 小波方法几乎精确地将计算时间减半。

质量对比

如果音频听起来像机器人的声音,那么速度再快也毫无用处。研究人员使用 PESQ (语音质量感知评估) 和 MOS (平均意见得分,由人类评分) 来判断质量。

  • Haar 小波: 非常快且锐利,但在理论上可能有点“块状”。实际上,它达到了 4.32 的 MOS,非常接近原始模型的 4.38。
  • DB2 (Daubechies 2): 一种稍微复杂一点的小波。它提供了很好的平衡,比 Haar 更好地保持了音色。
  • Coif1: 这种小波在 DNS_MOS 指标 (一种判断质量的神经网络) 上表现异常出色,甚至在某些情况下击败了原始模型。但人类听众注意到它有时会轻微改变声音的“音色” (特征) 。

频率增强器的力量

当他们添加频率瓶颈模块 (在上一节中讨论过) 时,结果变得更好了。

表 3: 上表展示了在语音增强和语音合成任务中使用增强器的各种小波基的结果。

表 3 显示,使用增强器后, Haar 小波模型的语音自然度 (SN) 得分实际上达到了 4.421 , 优于原始模型的 4.372 , 同时速度仍快两倍。

多级小波带来的极致速度

最后,对于多级加速器 (将信号分成 4 部分) :

表 2: 该表展示了多级小波加速器的结果。

表 2 展示了 Haar4C (4 通道/4 部分分割) 。RTF 降到了惊人的 0.126 。 这是难以置信的快。然而,MOS 降到了 4.32。这创造了一个选择的范围: 如果你需要“完美”的音频,使用 2 级分割。如果你需要闪电般的生成速度 (例如用于移动应用程序) ,使用 4 级分割。


结论与关键要点

论文 “Speaking in Wavelet Domain” 给我们上了关于 AI 研究宝贵的一课: 有时最好的优化不是新的层或新的优化器,而是数据本身更好的表示方式。

给学生的关键要点:

  1. 信号表示很重要: 深度学习模型不是在真空中存在的。了解信号处理 (如小波与 FFT 的对比) 可以让你为模型提供“更好”的食物,使其消化 (训练) 得更快。
  2. 并行化为王: 减少序列长度,即使以增加通道数为代价,在现代 GPU 上通常也是一个稳赚不赔的权衡。
  3. 通用性: 这种方法不限于特定的模型。它可以插入几乎任何基于扩散的音频模型 (DiffWave, CDiffuSE 等) ,立即获得 2 倍的速度提升。

通过简单地透过小波的透镜观察语音信号,作者解锁了一种使高保真语音合成变得实用且可扩展的方法。对于任何研究扩散模型的人来说,这引发了一个引人深思的问题: 还有哪些领域可以从小波变换中受益?