在语音识别研究领域,音频特征的选择至关重要。本书大部分内容中都在使用一种非常成功的音频特征---梅尔频率倒谱系数(Mel-Frequency Cepstrum Coefficient,MFCC)。
MFCC特征的成功很大程度上得益于心理声学的研究成果,它对人的听觉机理进行了建模。研究发现,音频信号从时域信号转换为频域信号之后,可以得到各种频率分量的能量分布。心理声学的研究结果表明,人耳对于低频信号更加敏感,对于高频信号比较不敏感,具体是什么关系?
心理声学研究结果表明,在低频部分是一种线性关系,但是随着频率的升高,人耳对于频率的敏感程度呈现对数增长的态势。这意味着只从各个频率能量的分布来设计符合人的听觉习惯的音频特征是不太合理的。
MFCC是基于人耳听觉特性提出来的,它与Hz频率呈非线性对应关系。MFCC利用这种关系,计算得到Hz频谱特征,已经广泛地应用于语音识别领域。
MFCC特征提取包含两个关键步骤:
(1)转换到梅尔频率。
(2)进行倒谱分析。
下面依次进行讲解。
- 梅尔频率
梅尔刻度是一种基于人耳对等距的音高(Pitch)变化的感官判断而定的非线性频率刻度。作为一种频率域的音频特征,离散傅里叶变换是这些特征计算的基础。一般选择快速傅里叶变换(Fast Fourier Transform,FFT)算法,其粗略的流程如图14-1所示。
图14-1 快速傅里叶变换
而梅尔刻度和频率的赫兹关系如下:
所以,如果在梅尔刻度上是均匀分度的话,赫兹之间的距离就会越来越大。梅尔刻度的滤波器组的尺度变化如图14-2所示。
图14-2 梅尔刻度的滤波器组的尺度变化
梅尔刻度的滤波器组在低频部分的分辨率高,跟人耳的听觉特性是相符的,这也是梅尔刻度的物理意义所在。这一步的含义是:首先对时域信号进行傅里叶变换,转换到频域,然后利用梅尔频率刻度的滤波器组对对应频域信号进行切分,最后每个频率段对应一个数值。
- 倒谱分析
倒谱的含义是:对时域信号进行傅里叶变换,然后取log,再进行反傅里叶变换,如图14-3所示。倒谱可以分为复倒谱、实倒谱和功率倒谱,这里使用的是功率倒谱。倒谱分析可用于将信号分解,将两个信号的卷积转换为两个信号的相加,从而简化计算。
图14-3 倒谱分析演示
具体公式这里就不阐述了,有兴趣的读者在学习之余可以自行钻研相关内容。接下来向读者演示使用Python音频处理库librosa计算MFCC的过程,代码如下:
使用librosa音频处理库获取音频的梅尔频谱
wav, sr = librosa.load(data_path, sr=32000) #sr为取样频率
计算音频信号的MFCC
spec_image = librosa.feature.mfcc(y=wav, sr=sr)
这里需要注意的是,sr的意思是取样频率,其作用是对输入的音频根据特定的取样频率生成对应的音频特征。
读者可以使用.wav后缀的音频进行尝试。
本文节选自《PyTorch 2.0深度学习从零开始学》,这本书内容包括PyTorch概述、开发环境搭建、基于PyTorch的MNIST分类实战、深度学习理论基础、基于PyTorch卷积层的MINIST分类实战、PyTorch数据处理与模型可视化、实战ResNet、有趣的word embedding、基于RNN的中文情感分类实战、自然语言处理的编码器、站在巨人肩膀上的预训练模型Bert、自然语言处理的解码器、基于PyTorch的强化学习实战、基于MFCC的语音唤醒实战、基于PyTorch的人脸识别实战。实战案例丰富,可带领读者快速掌握深度学习算法及其常见案例。