3.9语音识别(Speech recognition)
Last updated
Last updated
输入音频片段(an audio clip,x),生成文本:
音频片段横轴是时间。麦克风的作用是测量出微小的气压变化,而气压随着时间而变化。音频数据的常见预处理步骤就是运行这个原始的音频片段,然后生成一个声谱图(a spectrogram),横轴是时间,纵轴是声音的频率(frequencies),图中不同的颜色显示了声波能量的大小(the amount of energy),也就是在不同的时间和频率上这些声音有多大
在end-to-end模型中,可以构建一个系统,通过向系统中输入音频片段(audio clip),然后直接输出音频的文本(a transcript)。这种方法要用一个很大的数据集,需要上千上万个小时的语音素材
如何建立一个语音识别系统:
在输入音频的不同时间帧上,用一个注意力模型来输出文本描述,如"the quick brown fox"
另一种方法是CTC损失函数(CTC cost),即Connectionist Temporal Classification
输入和输出的数量都是一样,这里只是一个简单的单向RNN结构,在实际中有可能是双向的LSTM、GRU结构,并且通常是很深的模型
在语音识别中,通常输入的时间步数量(the number of input time steps)要比输出的时间步的数量(the number of output time steps)多出很多。如一段10秒的音频,并且特征(features)是100赫兹的,即每秒有100个样本,于是这段10秒的音频片段就会有1000个输入
算法思想如下:
把输出相应字符重复并加入空白(blank),形如:
下划线”_“表示空白,““表示两个单词之间的空字符
CTC损失函数的一个基本规则是没有被空白符”_“分割的重复字符将被折叠到一起,即表示一个字符。the和quick之间有一个空格符,这段序列折叠成"the q"