从声音到句子:探究现代语音模型的工作原理

有没有想过你最喜欢的 AI 助手是如何理解和回应你的语音的?在幕后,大量的数学和深度学习技术将你的声音转化为文本,并对其进行解读,甚至可能用另一种声音或语言生成逼真的响应。本文将逐步分解这一过程,重点介绍如何将音频转换为离散的 token,如何通过 Transformer 进行处理,以及如何解码回有意义的输出。

1. 第一步:音频到频谱图

旅程从原始音频开始,一种表示压力随时间变化的波形。它神经网络没有直接帮助,因此我们使用一种名为短时傅立叶变换(STFT)的技术将其转换。

STFT:将音频分割成小的时间块,并对每个时间块应用傅里叶变换,生成二维频谱图(时间与频率的关系)。它看起来像一张图像,显示了能量随时间在不同频率上的分布情况。

2. 特征提取:MFCC 和声学向量

我们从频谱图中提取有意义的特征,例如梅尔倒谱系数 (MFCC)、音高和能量。每个短音频片段现在都变成了一个向量——一个概括其声学特性的数字列表。

示例:音频信号可能会被转换成一系列向量,每个向量长 80 维,形成一个大小为 [num_frames x 80] 的矩阵。

3. 量化:用 RVQ 将向量转化为标记

语言类模型无法直接处理连续向量,因此我们使用残差向量量化 (RVQ) 将其离散化。

RVQ 流程:

  • 有一个学习过的向量编码本。
  • 每个输入向量都要与编码本中最接近的向量进行匹配,匹配方式:argmin_j || x_i – c_j ||^2
  • 结果就是一个索引(标记),可以把它看作是句子中的一个单词。

这种标记化方法允许使用专为离散输入设计的 transformer 架构。

4. Transformer 编码器:注意力机制

现在,标记被嵌入为向量,并经过多个自注意力层。注意力机制的工作原理如下:

a. QKV 投影

每个 token 向量被投影到:

使用矩阵乘法的查询(Q)、键(K)和值(V)向量:Q = X * W_Q,K = X * W_K,V = X * W_V

b. 注意力得分

使用缩放点积来计算相似度:

Score(i,j) = (Q_i * K_j^T) / sqrt(d_k)

这些分数通过 softmax 传递以获得注意力权重:

A_i = softmax(Score(i,:))

c. 加权和

Z_i = A_i * V

每个输出向量都是输入值的加权组合。

d. 多头注意力机制

多个注意力头并行学习不同类型的关系。它们的输出被连接起来并进行线性投影。

5. 位置编码

Transformer 本身并不理解标记的顺序,因此我们向每个标记向量添加位置编码(固定或学习向量)。

6. 残差连接和层范数

每层包括:

  • 残差连接:将输入添加回输出。
  • 层规范化:保持数值稳定并有助于学习。

这些功能改善了梯度流和模型稳定性。

7. 解码器:从标记到输出

解码器会进行掩蔽注意力机制(因此不会提前窥视),并与编码器输出进行交叉注意力机制。它使用 softmax 层来预测最可能的下一个 token,并逐步生成输出。

示例:在语音到语音翻译中,它可能为输出音频生成 RVQ 标记,然后将其反量化为真实的声波。

结论

从音频到向量,从向量到标记,再从标记通过转换器回到语言或语音。现代语音模型非常复杂,但每个步骤都可以分解为可理解的数学和逻辑。

了解这些基本要素将为您探索更高级的主题(如多语言语音合成、情感建模和会话式 AI)奠定坚实的基础。

作者:Devjack

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/59603.html

(0)

相关推荐

发表回复

登录后才能评论