有没有想过你最喜欢的 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