PyTorch语音识别的理论基础——MFCC

在语音识别研究领域,音频特征的选择至关重要。本书大部分内容中都在使用一种非常成功的音频特征---梅尔频率倒谱系数(Mel-Frequency Cepstrum Coefficient,MFCC)。

MFCC特征的成功很大程度上得益于心理声学的研究成果,它对人的听觉机理进行了建模。研究发现,音频信号从时域信号转换为频域信号之后,可以得到各种频率分量的能量分布。心理声学的研究结果表明,人耳对于低频信号更加敏感,对于高频信号比较不敏感,具体是什么关系?

心理声学研究结果表明,在低频部分是一种线性关系,但是随着频率的升高,人耳对于频率的敏感程度呈现对数增长的态势。这意味着只从各个频率能量的分布来设计符合人的听觉习惯的音频特征是不太合理的。

MFCC是基于人耳听觉特性提出来的,它与Hz频率呈非线性对应关系。MFCC利用这种关系,计算得到Hz频谱特征,已经广泛地应用于语音识别领域。

MFCC特征提取包含两个关键步骤:

(1)转换到梅尔频率。

(2)进行倒谱分析。

下面依次进行讲解。

  1. 梅尔频率

梅尔刻度是一种基于人耳对等距的音高(Pitch)变化的感官判断而定的非线性频率刻度。作为一种频率域的音频特征,离散傅里叶变换是这些特征计算的基础。一般选择快速傅里叶变换(Fast Fourier Transform,FFT)算法,其粗略的流程如图14-1所示。

图14-1 快速傅里叶变换

而梅尔刻度和频率的赫兹关系如下:

所以,如果在梅尔刻度上是均匀分度的话,赫兹之间的距离就会越来越大。梅尔刻度的滤波器组的尺度变化如图14-2所示。

图14-2 梅尔刻度的滤波器组的尺度变化

梅尔刻度的滤波器组在低频部分的分辨率高,跟人耳的听觉特性是相符的,这也是梅尔刻度的物理意义所在。这一步的含义是:首先对时域信号进行傅里叶变换,转换到频域,然后利用梅尔频率刻度的滤波器组对对应频域信号进行切分,最后每个频率段对应一个数值。

  1. 倒谱分析

倒谱的含义是:对时域信号进行傅里叶变换,然后取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的人脸识别实战。实战案例丰富,可带领读者快速掌握深度学习算法及其常见案例。

相关推荐
森之鸟2 分钟前
多智能体系统开发入门:用鸿蒙实现设备间的AI协同决策
人工智能·harmonyos·m
铁蛋AI编程实战9 分钟前
大模型本地轻量化微调+端侧部署实战(免高端GPU/16G PC可运行)
人工智能·架构·开源
铁蛋AI编程实战10 分钟前
最新版 Kimi K2.5 完整使用教程:从入门到实战(开源部署+API接入+多模态核心功能)
人工智能·开源
我有医保我先冲14 分钟前
AI 时代 “任务完成“ 与 “专业能力“ 的区分:理论基础、行业影响与个人发展策略
人工智能·python·机器学习
林深现海14 分钟前
【刘二大人】PyTorch深度学习实践笔记 —— 第一集:深度学习全景概述(超详细版)
pytorch·笔记·深度学习
Bamtone202521 分钟前
PCB切片分析新方案:Bamtone MS90集成AI的智能测量解决方案
人工智能
Warren2Lynch23 分钟前
2026年专业软件工程与企业架构的智能化演进
人工智能·架构·软件工程
_waylau32 分钟前
【HarmonyOS NEXT+AI】问答08:仓颉编程语言是中文编程语言吗?
人工智能·华为·harmonyos·鸿蒙·仓颉编程语言·鸿蒙生态·鸿蒙6
攻城狮7号44 分钟前
Kimi 发布并开源 K2.5 模型:开始在逻辑和干活上卷你了
人工智能·ai编程·视觉理解·kimi code·kimi k2.5·agent 集群
szxinmai主板定制专家1 小时前
基于 PC 的控制技术+ethercat+linux实时系统,助力追踪标签规模化生产,支持国产化
arm开发·人工智能·嵌入式硬件·yolo·fpga开发