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

MFCC梅尔倒谱参数及matlab代码


转发: 梅尔倒谱参数的资料。 转发:有关 MFCC 梅尔倒谱参数的资料。 内容: 梅尔倒谱参数参数知识 内容:1. Mfcc 梅尔倒谱参数参数知识 2. mfcc 的 matlab 代码 1.在语音辨识(Speech Recognition)和语者辨识(Speaker Recognition)方面,最常用到 的语音特征就是 「梅尔倒频谱系数」 (Mel-scale Frequency 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环境下调用HTK的连续语音识别方法
(HMM Toolkit)的基本原理,在 MatLab 环境下通 过调用 HTK 各命令实现小词汇量...常用的特征参数有线性预测系数( LPC)和梅尔频率倒谱系数 (MFCC)[4]。 HMM ...
实验7 声纹特征提取(实验指导书)
2.学习声纹特征提取的 MATLAB 实现基本方法。 二、实验内容 1.利用语音文件 ...例如过去常用的线性预测编码导出的 倒频谱参数(LPCC)和梅尔频率倒谱参数(MFCC)等...
MFCC参数提取程序
MFCC参数提取程序_信息与通信_工程科技_专业资料。MFCC参数提取C语言,可以直接用...MFCC详解 3页 免费 MFCC参数提取MATLAB实例 2页 1下载券 基于倒谱的语音特性提取...
matlab mfcc源码
语音信号处理 MFCC 提取的 Matlab 源码, Matlab 调试运行的时候注意添加语音工具...MFCC梅尔倒谱参数及matl... 4页 免费 MFCC程序 Matlab 代码实... 2页 免费...
论文
笔 者运用倒谱分析算法对基音周期和共振峰进行估计,并用 MATLAB 进行了波形仿真...MFCC 系数公式求得 MFCC 系数 ⑷拆分特征参数的提取:在提取了 MFCC 系数之后,...
关于MFCC参数
关于MFCC 参作了一段时间的语音识别,看到坛子里有人问起 MFCC,现在就整理一下...MFCC梅尔倒谱参数及matl... 4页 免费 MFCC 5页 免费 MFCC参数提取程序 8...
程序注释
%把语 音信号进行加载入 Matlab 仿真软件平台中 bank=melbankm(24,256,8000,0...MFCC梅尔倒谱参数及matl... 4页 1下载券 java编程实例 14页 免费 第5章 线性...
Matlab基于VQ的语者识别系统(含所有代码)
Matlab 基于 VQ 的语者识别系统(含所有代码) Summary Abstract: 语者识别即为...(DCT)变换到倒谱 域,即可得到 Mel 倒谱系数(MFCC 参数) 2.2.2 函数 dist...
matlab语音识别系统(源代码)
matlab语音识别系统(源代码)_信息与通信_工程科技_专业资料。利用matlab设计一个...(DCT)变换到倒谱 域,即可得到 Mel 倒谱系数(MFCC 参数) 3.2.2 函数 dist...
基于GMM说话人识别系统软件设计
1.1 本文研究背景本文用的是梅尔倒谱特征参数(MFCC)和高斯混合模型(GMM)进行的...给出 Mel 滤波器组的 Matlab 和 VC 代码如下: clear;clc; f=4600;num=24...
更多相关标签: