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

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,:);

希望大家愉快!


相关文章:
matlab mfcc源码
语音信号处理 MFCC 提取的 Matlab 源码, Matlab 调试运行的时候注意添加语音工具...MFCC梅尔倒谱参数及matl... 4页 免费 MFCC程序 Matlab 代码实... 2页 免费...
MFCC参数提取程序
MFCC参数提取程序_信息与通信_工程科技_专业资料。MFCC参数提取C语言,可以直接用...MFCC详解 3页 免费 MFCC参数提取MATLAB实例 2页 1下载券 基于倒谱的语音特性提取...
语音识别小程序_计算机软件及应用_IT/计算机_专业资料
技术实现匹配算法,实现了 特定人孤立汉语数字语音的识别,并利用 Matlab 编写了...语音信号经过以上的预加重处理和端点检测之后, 将进行梅尔倒谱系数 MFCC 的计 ...
实验7 声纹特征提取(实验指导书)
2.学习声纹特征提取的 MATLAB 实现基本方法。 二、实验内容 1.利用语音文件 ...例如过去常用的线性预测编码导出的 倒频谱参数(LPCC)和梅尔频率倒谱参数(MFCC)等...
matlab语音识别系统(源代码)
matlab语音识别系统(源代码)_信息与通信_工程科技_专业资料。利用matlab设计一个...(DCT)变换到倒谱 域,即可得到 Mel 倒谱系数(MFCC 参数) 3.2.2 函数 dist...
DTW算法(语音识别)
然后需要寻找一个特征矢量,在语音识别中很多采用 MFCC,也就是梅尔倒谱这个参数...图.DTW 算法原理 图.局部约束路径 以下就是 matlab 对于 DTW 算法的具体实现:...
实验三 语音信号的mel频率倒谱参数
实验四 语音信号的 mel 频率倒谱参数 1 实验目的通过 Matlab 编程掌握语音信号...器的输出,然后对所有滤波器输出做对数运算,再进一步做离散余弦变换得到 MFCC。 ...
matlab语音识别系统(源代码)最新版
matlab语音识别系统(源代码)最新版_信息与通信_工程科技_专业资料。matlab语音...(DCT)变换到倒谱 域,即可得到 Mel 倒谱系数(MFCC 参数) 3.2.2 函数 dist...
matlab语音识别系统(源代码)
matlab语音识别系统(源代码)_信息与通信_工程科技_专业资料。目录 一、设计任务...(DCT)变换到倒谱 域,即可得到 Mel 倒谱系数(MFCC 参数) 3.2.2 函数 dist...
基于倒谱的大学生语音识别算法研究
中进行语音的处理,完成语音在 MATLAB 中的倒谱实现...标准的 MFCC 和 LPCC 参数只反映了语 音的静态...从目前使用的情况来看,梅尔刻度式倒频谱参数已 逐渐...
更多相关标签:
梅尔倒谱系数 matlab | 梅尔倒谱系数 | 梅尔频率倒谱系数 | 梅尔倒谱 | 梅尔频率倒谱 | mfcc matlab | matlab mfcc函数 | mfcc特征提取 matlab |