当前位置:首页 >> 信息与通信 >>

MFCC梅尔倒谱参数及matlab代码


转发: 梅尔倒谱参数的资料。 转发:有关 MFCC 梅尔倒谱参数的资料。 内容: 梅尔倒谱参数参数知识 内容:1. Mfcc 梅尔倒谱参数参数知识 2. mfcc 的 matlab 代码 1.在语音辨识(Speech Recognition)和语者辨识(Speaker Recognition)方面,最常用到 的语音特征就是 「梅尔倒频谱系数」 (Mel-scale Frequen

cy Cepstral Coefficients, 简称 MFCC) , 此参数考虑到人耳对不同频率的感受程度, 因此特别适合用在语音辨识。 下面简单的介绍一 下求解 MFCC 的过程。

1.预强调(Pre-emphasis) :将语音讯号 s(n) 通过一个高通滤波器。 H(z)=1-a*(z-1) 系数其中 a 介于 0.9 和 1.0 之间。若以时域的表达式来表示,预强调后的讯号 s2(n) 为 s2(n) = s(n) - a*s(n-1) 这个目的就是为了消除发声过程中声带和嘴唇的效应, 来补偿语音信号受到发音系统所压抑 的高频部分。 (另一种说法则是要突显在高频的共振峰。 )

2.音框化(Frame blocking) :先将 N 个取样点集合成一个观测单位,称为音框(Frame) , 通常 N 的值是 256 或 512,涵盖的时间约为 20~30 ms 左右。为了避免相邻两音框的变 化过大,所以我们会让两相邻因框之间有一段重迭区域,此重迭区域包含了 M 个取样点, 通常 M 的值约是 N 的一半或 1/3。通常语音辨识所用的音讯的取样频率为 8 KHz 或 16 KHz,以 8 KHz 来说,若音框长度为 256 个取样点,则对应的时间长度是 256/8000*1000 = 32 ms。

3.汉明窗(Hamming window) :将每一个音框(frame)乘上汉明窗,以增加音框左端和右 端的连续性(请见下一个步骤的说明) 。假设音框化的讯号为 S(n), n = 0,…N-1。N 为 frame 的大小,那么乘上汉明窗后为 S'(n) = S(n)*W(n),此 W(n) 形式如下: W(n, a) = (1 - a) - a *cos(2pn/(N-1)),0≦n≦N-1 ?? 不同的 a 值会产生不同的汉明窗。一般我们都取 a = 0.46。

4.快速傅利叶转换(Fast Fourier Transform, or FFT) :由于讯号在时域(Time domain)上的 变化通常很难看出讯号的特性,所以通常将它转换成频域(Frequency domain)上的能量分 布来观察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每个音框还 必需再经过 FFT 以得到在频谱上的能量分布。 乘上汉明窗的主要目的,是要加强音框左端和右端的连续性,这是因为在进行 FFT 时,都 是假设一个音框内的讯号是代表一个周期性讯号,如果这个周期性不存在,FFT 会为了要 符合左右端不连续的变化, 而产生一些不存在原讯号的能量分布, 造成分析上的误差。 当然, 如果我们在取音框时, 能够使音框中的讯号就已经包含基本周期的整数倍, 这时候的音框左

右端就会是连续的,那就可以不需要乘上汉明窗了。但是在实作上,由于基本周期的计算会 需要额外的时间,而且也容易算错,因此我们都用汉明窗来达到类似的效果。

5.三角带通滤波器(Triangular Bandpass Filters) :将能量频谱能量乘以一组 20 个三角带通 滤波器,求得每一个滤波器输出的对数能量(Log Energy) ,共 20 个。必须注意的是:这 20 个三角带通滤波器在「梅尔频率」 (Mel Frequency)上是平均分布的,而梅尔频率和一般频 率 f 的关系式如下: mel(f)=2595*log10(1+f/700) 或是 mel(f)=1125*ln(1+f/700) 梅尔频率代表一般人耳对于频率的感受度,由此也可以看出人耳对于频率 f 的感受是呈对 数变化的: 在低频部分,人耳感受是比较敏锐 。 在高频部分,人耳的感受就会越来越粗糙 。 三角带通滤波器有两个主要目的: 对频谱进行平滑化,并消除谐波的作用,突显原先语音的共振峰。 (因此一段语音的音调或 音高,是不会呈现在 MFCC 参数内,换句话说,以 MFCC 为特征的语音辨识系统,并不 会受到输入语音的音调不同而有所影响。 ) 降低资料量。

6.离散余弦转换 (Discrete cosine transform, or DCT) 将上述的 20 个对数能量 Ek 带入离散 : 余弦转换,求出 L 阶的 Mel- scale Cepstrum 参数,这里 L 通常取 12。离散余弦转换公式 如下: Cm=Sk=1Ncos[m*(k-0.5)*p/N]*Ek, m=1,2, ..., L 其中 Ek 是由前一个步骤所算出来的三角滤波器和频谱能量的内积值,这里 N 是三角滤波 器的个数。由于之前作了 FFT,所以采用 DCT 转换是期望能转回类似 Time Domain 的情 况来看,又称 Quefrency Domain,其实也就是 Cepstrum(倒谱) 。又因为之前采用 MelFrequency 来转换至梅尔频率,所以才称之 Mel-scale Cepstrum。

7.对数能量(Log energy) :一个音框的音量(即能量) ,也是语音的重要特征,而且非常容 易计算。因此我们通常再加上一个音框的对数能量(定义为一个音框内讯号的平方和,再取 以 10 为底的对数值,再乘以 10) ,使得每一个音框基本的语音特征就有 13 维,包含了 1 个对数能量和 12 个倒频谱参数。 (若要加入其它语音特征以测试辨识率,也可以在此阶段 加入,这些常用的其它语音特征,包含音高、过零率、共振峰等。 )

8.差量倒频谱参数(Delta cepstrum) :虽然已经求出 13 个特征参数,然而在实际应用于语

音辨识时,我们通常会再加上差量倒频谱参数,以显示倒频谱参数对时间的变化。它的意义 为倒频谱参数相对于时间的斜率,也就是代表倒频谱参数在时间上的动态变化,公式如下: △Cm(t) = [St=-MMCm(t+t)t] / [St=-MMt2] 这里 M 的值一般是取 2 或 3。因此,如果加上差量运算,就会产生 26 维的特征向量; 如果再加上差量运算,就会产生 39 维的特征向量。一般我们在 PC 上进行的语音辨识, 就是使用 39 维的特征向量。 2. %mfcc function mfc=mfcc(x)

%%%%%%%%%%%%%%%%%%%%%%%%% %对输入的语音序列 x 进行 mfcc 参数提取,返回 mfcc 参数和一阶差分 mfcc 参数, mel 滤波器的阶数为 24 %fft 变换长度为 256,采样频率为 8000HZ,对 x 256 点分为一帧 %%%%%%%%%%%%%%%%%%%%%%%%%%%%

bank=melbankm(24,256,8000,0,0.5,'m'); %归一化 mel 滤波器组参数 bank=full(bank); bank=bank/max(bank((:));

%DCT 系数,12*24 for k=1:12 n=0:23; dctcoef(:,k)=cos((2*n+1)*k*pi/(2*24)); end

%归一化倒谱提升窗口 w=1+6*sin(pi*[1:12]./12); w=w/max(w);

%预加重滤波器 xx=double(x); xx=filter([1 -0.9375],1,xx);

%语音信号分帧 xx=enframe(xx,256,80);

%计算每帧的 mfcc 参数 for i=1:size(xx,1) % y=xx(i,:); s=y'.*hamming(256); t=abs(fft(s)); t=t.^2;%计算能量 c1=dctcoef*log(bank*t(1:129));%dctcoef 为 dct 系数,bank 归一化 mel 滤波器组系 数 c2=c1.*w';%w 为归一化倒谱提升窗口 m(i,:)=c2'; end

%差分系数 dtm=zeros(size(m)); for i=3:size(m,1)-2; dtm(i,:)=-2*(i-2,:)-m(i-1,1)+2*m(i+2,:); end dtm=dtm/3;

%合并 mfcc 参数和一阶差分 mfcc 参数 mfc=[m dtm]; %去除首尾两帧,因为这两帧的一阶差分参数为 0 mfc=mfc(3:size(m,1)-2,:);

希望大家愉快!


相关文章:
MFCC梅尔倒谱参数及matlab代码
MFCC梅尔倒谱参数及matlab代码_信息与通信_工程科技_专业资料。转发:有关 MFCC 梅尔倒谱参数的资料。 内容:1. Mfcc 梅尔倒谱参数参数知识 2. mfcc 的 matlab 代码...
MFCC程序 Matlab 代码实现对WAV文件MFCC参数提取和图形表示
MFCC程序 Matlab 代码实现对WAV文件MFCC参数提取和图形表示_计算机软件及应用_IT/...MFCC梅尔倒谱参数及matl... 4页 免费 MATLAB特征提取代码 4页 免费 matlab实用...
MFCC参数提取MATLAB实例
(2*24)); end % 归一化倒谱提升窗口 w = 1 + 6 * sin(pi * [1:12...MFCC梅尔倒谱参数及matl... 4页 免费 应用MATLAB纤维截面结构... 8页 4下载...
实验三 语音信号的mel频率倒谱参数
实验四 语音信号的 mel 频率倒谱参数 1 实验目的通过 Matlab 编程掌握语音信号...器的输出,然后对所有滤波器输出做对数运算,再进一步做离散余弦变换得到 MFCC。 ...
MFCC参数提取程序
MFCC参数提取程序_信息与通信_工程科技_专业资料。MFCC参数提取C语言,可以直接用...MFCC详解 3页 免费 MFCC参数提取MATLAB实例 2页 1下载券 基于倒谱的语音特性提取...
matlab mfcc源码
语音信号处理 MFCC 提取的 Matlab 源码, Matlab 调试运行的时候注意添加语音工具...MFCC梅尔倒谱参数及matl... 4页 免费 MFCC程序 Matlab 代码实... 2页 免费...
实验7 声纹特征提取(实验指导书)
2.学习声纹特征提取的 MATLAB 实现基本方法。 二、实验内容 1.利用语音文件 ...例如过去常用的线性预测编码导出的 倒频谱参数(LPCC)和梅尔频率倒谱参数(MFCC)等...
语音识别小程序
技术实现匹配算法,实现了 特定人孤立汉语数字语音的识别,并利用 Matlab 编写了...语音信号经过以上的预加重处理和端点检测之后, 将进行梅尔倒谱系数 MFCC 的计 ...
matlab语音识别系统(源代码)
matlab语音识别系统(源代码)_信息与通信_工程科技_专业资料。利用matlab设计一个...(DCT)变换到倒谱 域,即可得到 Mel 倒谱系数(MFCC 参数) 3.2.2 函数 dist...
DTW算法(语音识别)
然后需要寻找一个特征矢量,在语音识别中很多采用 MFCC,也就是梅尔倒谱这个参数...图.DTW 算法原理 图.局部约束路径 以下就是 matlab 对于 DTW 算法的具体实现:...
更多相关标签:
梅尔倒谱系数 matlab | 梅尔倒谱系数 | 梅尔频率倒谱系数 | 梅尔倒谱 | 梅尔频率倒谱 | 梅尔倒谱求声道谱 | mfcc matlab | mfcc特征提取 matlab |