语音信号MFCC的特征提取Matlab源码
2013-11-13 10:08
381 查看
语音信号处理MFCC提取的Matlab源码,
Matlab调试运行的时候注意添加语音工具箱voicebox查找路径。即,
Matlab:File->Set Path…->Add Folder… 选择你所解压的voicebox文件夹路径。
Matlab调试运行的时候注意添加语音工具箱voicebox查找路径。即,
Matlab:File->Set Path…->Add Folder… 选择你所解压的voicebox文件夹路径。
%function ccc=mfcc(x) %归一化mel滤波器组系数 filename=input('input filename:','s'); [x,fs,bits]=wavread(filename); bank=melbankm(24,256,fs,0,0.5,'m'); 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)); 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; %合并mfcc参数和一阶差分mfcc参数 ccc=[m dtm]; %去除首位两帧,因为这两帧的一阶差分参数为0 ccc=ccc(3:size(m,1)-2,:); subplot(211) ccc_1=ccc(:,1); plot(ccc_1);title('MFCC'); % ylabel('幅值'); % title('一维数组及其幅值的关系') % [h,w]=size(ccc); % A=size(ccc); % subplot(212) % plot([1,w],A); % xlabel('维数'); % ylabel('幅值'); % title('维数于幅值的关系') return
相关文章推荐
- MATLAB函数的输入参数传递方式探秘
- 理解小波消失矩
- MATLAB中squeeze函数的作用
- Matlab 的imwrite函数
- 如何将matlab数据转换成libsvm格式文件
- matlab中安装Libsvm 步骤
- {vlFeat}{matlab}{VS2010}{编译配置}
- matlab中发生Undefined function 'regessionLoop' for input arguments of type 'char'.
- matlab函数_连通区域
- matlab中的微分方程
- MATLAB 积分算法
- 机器学习-4 线性回归 代码 matlab
- 频率f,角频率Ω和数字频率w的物理含义
- matlab 位操作
- MAC OX 10.8 环境下运行TLD算法(MATLAB版)
- Matlab基本函数-fix函数
- Matlab基本函数-feather函数
- matlab绘制世界地图的脚本
- MatLab2012b/MatLab2013b分类器大全(svm,knn,随机森林等)
- 徐海蛟:MatLab2012b/MatLab2013b分类器大全(svm,knn,随机森林等)