语音识别(Speech Recongnition)
- Speech Recongnition
- TTS(Text-to-Speech),属于Speech Synthesis
典型模型Tacotron,用的是一个典型的 Seq2Seq + Attention 的模型架构。它输出还会有个后处理(Post-processing)才会产生声音频谱(spectrogram)。
CBHG结构(G2P,Grapheme-to-Phoneme,字素到音素):
SR基本概念
语音模型:即将 sound 转为 text。
- Text: a sequence of Token 长度:N,总种类数量:V
- Sound: vectors sequence 长度:T,维度:d
一、Text Token
- Phoneme(音位、音素):即 a unit of sound,可以理解为发音的音标
- Grapheme(字位,书写位,最多使用⭐):即 smallest unit of a writting,比如【26个英文字母+空格+标点符号】
- Word:即语言中的单词
- Morpheme(字位,书写位):即 smallest meaningful unit,比如英语单词的词根。词素是构成词的要素。词素是比词低一级的单位,词是语言中能够独立运用的最小单位,是指词在句法结构中的地位和作用而言的。
- Bytes:直接用字节表示一组Text,常见的诸如 UTF-8 编码
二、声音特征 Acoustic Feature
通常以 25ms 为窗口长度,将声音讯号转为 一个向量(frame,也即帧),每次窗口移动 10ms,也就是说 1s →100 frames
frame 制作方法
- sample points:当 声音采样率 在 16KHz 时,其在 25ms 内一共有 400个 sample points,直接将这400个数字拿过来当frame即可
- 39-dim MFCC:一共有39维
- 80-dim filter bank output:一共有80维
frame 制作过程
首先,Waveform(波形) 通过 DFT 变为 spectrogram(频谱),此时已经可以用于训练了
一个人说一句话,其 waveform 可以很不一样,但是 spectrogram 基本上会相似,甚至有人可以通过 spectrogram 来判断说话的内容
DFT(Discrete Fourier Transform)是将连续音频信号转换为离散频域表示的一项重要操作。DFT是一种数学变换,用于将时域信号(如音频波形)转换为频域表示。它是连续傅立叶变换(Continuous Fourier Transform,CFT)的离散版本,适用于离散时间序列。
然后,spectrogram 通过 filter bank(滤波器组) 变为一个个向量
滤波器组(filter bank)是由一组滤波器所组成的系统,用于对输入信号进行频率分析。在声学特征提取中,常用的滤波器组是梅尔滤波器组(Mel filter bank)。梅尔滤波器组是一种非线性的滤波器组,它的设计基于梅尔刻度(Mel scale),该刻度是一种根据人耳感知频率的特性而设计的心理声学刻度。
随后再取 log,再进行 DCT,最后生成 MFCC。
在声学特征提取中,通常会使用梅尔滤波器组计算每个滤波器通道的能量,得到梅尔频谱系数(Mel-frequency cepstral coefficients,MFCCs)。然而,MFCCs包含了大量的频率信息,而且相邻帧之间往往高度相关,这可能导致冗余信息和过多的数据。
为了降低数据维度并捕捉主要信息,通常会将MFCCs序列通过DCT转化为倒谱系数(Cepstral coefficients)。倒谱系数不同于原始频谱系数,它们具有更好的特性和表示能力,适合语音和音频信号的建模和分析。
MFCC 其实为 MFCC系数,MFCC(Mel Frequency Cepstral Coefficients)是一种常用于音频信号处理和语音识别领域的声学特征提取方法。在声学特征提取中,MFCC用于将连续的音频信号划分成一帧一帧的小片段,并将每帧表示为一组系数,以便在后续的分析中使用。
Listen, Attend and Spell(LAS)
Listen:即 Encoder;Spell:Decoder,这是一个经典的使用注意力机制的 seq2seq 模型
一、Listen
- 输入:一串 acoustic features(声音向量)
- 输出:同样也是一串向量,数量、维度和长度均和输入相同
- 作用:提取语言内容信息,将音频信号分析为高级的声学特征表示,将语种之间的差异抹除,将噪声去除
种类:- RNN(Recurrent Neural Network)
- 1-D CNN(一维卷积神经网络)
- Self-attention Layers(自注意力)
Down Sampling
起因:数据量过大,计算量过大,相邻 acoustic features 包含信息差异较小,为了节省数据量,让训练更有效率
种类:
- Pyramid RNN:两个 Tensor 结合起来送入下一层,RNN的变种
- Pooling over time:两个 Tensor 选一个送入下一层,RNN的变种
- Time-delay DNN(TDNN):CNN的常见变种
- Truncated Self-attention:在生成output时,一个Tensor的attention只作用于一段范围,而不是整个input,Self-attention的变种
二、Attention(Attend)
主要作用是通过注意力机制建立声学特征和文本之间的关联,帮助模型更好地将声学特征转化为文本输出。其可以动态地分配注意力权重,以捕获输入序列中不同位置的重要信息的关键组件。
参考:https://blog.csdn.net/m0_56942491/article/details/133984968
三、Spell
-
上下文信息融合:
- Input:
- 前一个时间步的隐藏状态( z i z_i zi,初始为 z 0 z_0 z0)
- 前一个时间步生成的标记(token,初始为起始符号如
<s>
) - 当前时间步"Attend"环节的输出(即上下文向量Context Vector)
- Method:通常是使用前馈神经网络,如RNN单元
- Output:
- 新的隐藏状态 z 1 z_1 z1
- vocabulary 各个token的概率值(distribution)。
- Input:
-
随后一般就从 distribution 中取概率值最大的那个token,作为本次的 token 输出,比如cat,第一次输出token:c。
需要明确的是,如何选取 token 也是需要进行研究的,这里取 概率值最大的 Token 采用的技术叫 贪心解码(Greedy Decoding),常见的还有 束搜索(Beam Search)
-
然后将刚刚得到的新的hidden state z1,去做attention,得到c1,然后再进行刚刚的操作,即将得到的 z1 投入新一轮的 attention 中,计算得到c1,再去计算下一轮。
-
然后不停循环,直到最后生成结束标志或达到最大生成长度为止。
CTC,RNA,RNN-T,Neural Transducer,MoChA模型
To Be Continued…
https://blog.csdn.net/m0_56942491/article/details/134012653