【神经网络学习笔记】语音识别-matlab语音信号预处理

要让电脑识别语音信号,必须经过一系列的处理。

一.录制一段音频,wav格式

二.用倒谱系数法提取特征值。

MFCC,Mel频率倒谱系数的缩写。Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系。Mel频率倒谱系数(MFCC)则是利用它们之间的这种关系,计算得到的Hz频谱特征,MFCC已经广泛地应用在语音识别领域。

我这里用的是一个语音工具箱voicebox,里面有一个函数melcepst.m可以方便的求MFCC。

关于提取的详细过程:

预滤波:CODEC前端带宽为300-3400Hz的抗混叠滤波器。 
 A/D变换:8kHz的采样频率,12bit的线性量化精度。 
 预加重:通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响。 
 分帧:根据语音的短时平稳特性,语音可以以帧为单位进行处理,实验中选取的语音帧长为32ms,帧叠为16ms。
 加窗:采用哈明窗对一帧语音加窗,以减小吉布斯效应的影响。 
 快速傅立叶变换(Fast Fourier Transformation, FFT):将时域信号变换成为信号的功率谱。 
 三角窗滤波:用一组Mel频标上线性分布的三角窗滤波器(共24个三角窗滤波器),对信号的功率谱滤波,每一个三角窗滤波器覆盖的范围都近似于人耳的一个临界带宽,以此来模拟人耳的掩蔽效应。 
 求对数:三角窗滤波器组的输出求取对数,可以得到近似于同态变换的结果。 
 离散余弦变换(Discrete Cosine Transformation, DCT):去除各维信号之间的相关性,将信号映射到低维空间。 
 谱加权:由于倒谱的低阶参数易受说话人特性、信道特性等的影响,而高阶参数的分辨能力比较低,所以需要进行谱加权,抑制其低阶和高阶参数。 
 倒谱均值减(Cepstrum Mean Subtraction, CMS):CMS可以有效地减小语音输入信道对特征参数的影响。 
 差分参数:大量实验表明,在语音特征中加入表征语音动态特性的差分参数,能够提高系统的识别性能。在本系统中,我们也用到了MFCC参数的一阶差分参数和二阶差分参数。 
 短时能量:语音的短时能量也是重要的特征参数,本系统中我们采用了语音的短时归一化对数能量及其一阶差分、二阶差分参数。 

关于语音工具箱的使用:

1.首先下载并导入工具箱

2.工具箱里有个叫melcepst的函数,查看帮助发现这么一行

Simple use: (1) c=melcepst(s,fs)          % calculate mel cepstrum with 12 coefs, 256 sample frames

 s  speech signal
 fs       sample rate in Hz (default 11025)

这里默认的是将音频提取成12维,256个样本每帧,比如我的声音文件是951552*2的矩阵,那生成的就是951552/256 = 3716*12的矩阵。

当然,你也可以在.m文件中改

三.保存为.mat文件

提取好MFCC后我们可以保存文件以便以后使用。

 save('zjcvoice.mat','c')

将提取出的c变量保存为zjcvoice.mat

四.学习并识别

请看我上一篇文章。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

总结:

1.语音信息处理应先用MFCC处理。

你可能感兴趣的:(matlab,神经网络)