本文主要是介绍ASR-声学特征提取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 方法一:MFCC特征提取
- step 1:A/D转换(采样)
- step 2:预加重
- step 3:加窗分帧
- step 4:DFT+取平方
- step 5:Mel滤波
- step 6:取对数
- step 7:IDFT
- step 8:动态特征
- 方法二:深度学习特征提取
- step 1:采样
- step 2:分帧
- step 3:傅里叶变换
- step 4:识别字符
- step 5:获取映射图
方法一:MFCC特征提取
step 1:A/D转换(采样)
通过采样将连续的模拟信号转换为离散的数字信号,便于后续的数字化处理
step 2:预加重
正常的音频一般低频成分比高频成分多,通过预加重提升语音信号的高频部分,使频谱光滑
1.目的:增加高频成分,使频谱光滑
2.方法:
3.效果图:
step 3:加窗分帧
数字化的语音信号是一个不平稳的时变信号,具有短时平稳性。因此在对语音信号进行分析前,
需要对其进行分帧,通常将每帧的长度设为20ms,相邻两帧之间有10ms的帧移
1.目的:利用音频信号的短时平稳性,分帧后的信号更便于后续处理
2.方法:帧长20ms,帧移10ms进行帧
3.效果图:
step 4:DFT+取平方
离散傅里叶变换的目的就是将音频信号从时域转换到频域
1.目的:将音频信号从时域转到频域
2.方法:
step 5:Mel滤波
将线性频率转换成人类听觉敏感的Mel频率,同时对频谱进行平滑(消除谐波的影响,突出原始
语音的共振峰)和降低信息量
1.目的:将之前得到的线性频率转换为符合人耳频率的Mel频率
2.转换公式:
3.Mel滤波器:
step 6:取对数
采用log压缩动态范围,人类对信号能量的感知是对数的
step 7:IDFT
得到倒谱系数,平滑对数功率谱
step 8:动态特征
描述倒谱系数随时间的变化。一阶差分是计算当前时刻的后一时刻与前一时刻的差值,二阶差分是
将一阶差分结果作为当前序列,计算当前时刻的后一时刻与前一时刻的差值
方法二:深度学习特征提取
step 1:采样
对于语音识别,16KHz的采样率就足以覆盖人类语音的频率范围了。16KHz即每秒采样16000个样本点,
下图给出的是前100个采样点的截图,其中每个点的值表示声波在1/16000处的振幅。
step 2:分帧
直接把这16000个数字输入到神经网络中分析采样来进行语音识别仍然很困难。所以可以通过对音频数据进行一些预处理来使问题变得更容易。比如首先将采样音频分成每份20ms长的音频块,下图给出的第一 个20ms的音频(即前320个采样点):
step 3:傅里叶变换
通过傅里叶变换将复杂的声波分解为一系列简单声波的叠加。有了这些单独的声波后就可以将每一份频段所包含的能量加在一起,最终得到的结果就是从低音到高音,每个频率范围的重要程度。以50Hz为一个频段的话,20ms的音频所含有的能量从低频到高频就可以表示为下图,其中每个数字表示50Hz的频段所含的能量:
对每20ms的音频块重复这个过程,最终得到一个频谱图(每一列从左到右都是一个20ms的块):
step 4:识别字符
有了格式易于处理的音频,再将它输入到神经网络中去。神经网络的输入便是这些20ms的音频块,对于每个小的音频切片,神经网络都将尝试找出当前正在说的声音所对应的字母。
step 5:获取映射图
通过神经网络跑完整个音频剪辑(一次一块)之后,将最终得到一份映射(mapping),其中标明了每个音频块和其最有可能对应的字母。
这篇关于ASR-声学特征提取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!