英文语音识别项目以Google的speech_commands英文单词语音识别项目为基础,并做了一些修改,以更好地使用。该项目构建可以识别10个不同单词的基本语音识别网络,10个单词分别为“yes”“no”“up”“down”“left”“right”“on”“off”“stop”“go”。实际的语音和音频识别系统要复杂得多,但就像基于MNIST数据集学习图像识别一样,这个基本语音识别网络能够帮助读者了解所涉及的一些基本技术。
可以通过多种方法构建用于处理音频的神经网络模型,其中包括递归网络或扩张(带洞)卷积。本项目基于Convolutional Neural Networks for Small-footprint Keyword Spotting这篇论文中介绍的架构,这种架构相对简单、可快速训练,并且易于理解。由于音频本身是一段时间内的一维连续信号,而不是二维空间信号,所以这里采用的是卷积神经网络。本项目定义了一个语音字词应该符合的时间范围,并将这段时间内的音频信号转换成图像。将传入的音频样本分成小段(时长仅为几毫秒)并计算一组频段内频率的强度,一段音频内的每组频率强度为数字向量,这些向量按时间顺序排列,形成一个二维数组,该数组可被视为单通道图像,称为声谱图。
具体做法是:将输入的语音处理成能够读取的数据,即将其转换成一组梅尔频率倒谱系数(Mel-Frequency Cepstral Coefficients,MFCC)。MFCC也是一种二维单通道表示法,因此也可将其视为图像,图像会输送到多层卷积神经网络中进行处理,并且在卷积神经网络处理后接入全连接层,再经过softmax()函数完成分类,实现区分不同词汇的功能。