初学MFCC
第8周学习报告1 本周工作学习了解梅尔倒谱系数(MFCC)学习MFCC相关的程序2 实验总结(1)MFCC的介绍在语音识别和话者识别上最常用的语音特征就是梅西倒谱系数简称(MFCC),他是根据人耳朵的机理来研究发现的,人耳对于不同频率的声波有着不同的听觉敏感程度,两个响度不同的声波作用于人耳时,响度高的频率的存在会影响对响度低的频率成分的感受,使其变得不易察觉,这就是掩蔽效
第8周学习报告
1 本周工作
学习了解梅尔倒谱系数(MFCC)
学习MFCC相关的程序
2 实验总结
(1)MFCC的介绍
在语音识别和话者识别上最常用的语音特征就是梅西倒谱系数简称(MFCC),他是根据人耳朵的机理来研究发现的,人耳对于不同频率的声波有着不同的听觉敏感程度,两个响度不同的声波作用于人耳时,响度高的频率的存在会影响对响度低的频率成分的感受,使其变得不易察觉,这就是掩蔽效应,一般来说低音容易掩盖高音,因为两种响度的声音同时作用于人的耳朵时,频率低的在耳蜗里传的底模上传的距离远。所以人们在低频到高频的这一频带内安排一组滤波器,对输入信号进行滤波。将每个带同滤波器的输出的信号做信号的基本特征,对此特征进行进一步的处理后就可以作为语音的输入特征,这种特征不依赖于信号的性质,对输入性质不做任何的假设与限制。
MFCC是在Mel标度频率域提取出的倒谱参数,Mel标度描述了人耳的频率的非线性特性,他与频率的关系可以表示为
下图展示了Mel与频率的关系:
(2)问题描述
通过MFCC提取鸟类叫声的特征信号
首先对数据进行预处理之后用MFCC进行提取特征,MFCC的过程是:
1,预加重的意思就是将语音信号加入一个高通滤波器:,其中μ的值是在0.9到1之间,这样做的目的是提升高频部分,使信号变得平坦,保持在高频和低频的部分,也为了突出高频的共振峰。
2,分帧
先将N个采样点和为一个观测单位,成为帧,为了避免两帧之间的变换过大,因此会有一些重叠的区域,在重叠区中包含了M个点
3,加窗
将每一帧乘以汉明窗,这样可以增加左端和右端的连续性,分帧厚度 信号是S(n),那么乘上汉明窗是其中的汉明窗是,不同的a会有不同的汉明窗。
4,快速傅里叶变换
由于信号在时域上很难看出信号的特性,所以经常将他转换成频域来看,不同的能量分布就会代表不同的语音特性,乘以汉明窗后,每帧还必须在经过快速傅里叶变换得到各帧的频谱,并要得到功率谱。
5,三角带通滤波器,将能量谱通过一组Mel尺度的三角滤波器组,定义一个有M个滤波器的组。这样做的主要目的是对频谱进行平滑化,并且来消除谐波,此外还可以降低运算量
6,计算每个滤波器组的输出对数能量
7,进过DCT得到MFCC系数
8,对数能量
一帧的音量(即能量),也是语音的重要特征,而且非常容易计算。因此,通常再加上一帧的对数能量,使得每一帧基本的语音特征就多了一维,包括一个对数能量和剩下的倒频谱参数。
9,动态差分参数的提取
(3)程序流程
(4)程序实现
调用语音工具箱voicebox
[x fs]=audioread('8.wav');
bank=melbankm(24,256,fs,0,0.4,'t');%Mel滤波器的阶数为24,fft变换的长度为256,采样频率为16000Hz
%归一化mel滤波器组系数
bank=full(bank);
bank=bank/max(bank(:));
for k=1:12 %归一化mel滤波器组系数
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);%对x 256点分为一帧
%计算每帧的MFCC参数
for i=1:size(xx,1)
y=xx(i,:);
s=y'.*hamming(256);
t=abs(fft(s));%fft快速傅立叶变换
t=t.^2;
c1=dctcoef*log(bank*t(1:129));
c2=c1.*w';
m(i,:)=c2';
end
%求取一阶差分系数
dtm=zeros(size(m));
for i=3:size(m,1)-2
dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);
end
dtm=dtm/3;
%求取二阶差分系数
dtmm=zeros(size(dtm));
for i=3:size(dtm,1)-2
dtmm(i,:)=-2*dtm(i-2,:)-dtm(i-1,:)+dtm(i+1,:)+2*dtm(i+2,:);
end
dtmm=dtmm/3;
%合并mfcc参数和一阶差分mfcc参数
ccc=[m dtm dtmm];
%去除首尾两帧,因为这两帧的一阶差分参数为0
ccc=ccc(3:size(m,1)-2,:);
3参考文献
1.语音MFCC特征计算的改进算法
2.基于噪声环境下的MFCC特征提取
3.A Deep Neural Network Approach to Automatic Birdsong Recognition
4 下周工作
研究鸟叫分类
更多推荐
所有评论(0)