mfcc1.m
上传用户:shjsjz
上传日期:2022-07-09
资源大小:3k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function m = mfcc1(x,dim)
  2. % 8khz
  3. %归一化mel滤波器组系数
  4. framelen = 256; %帧长
  5. frameinc = 80; %帧移
  6. banknum = dim;   %滤波器组数
  7. fs = 8000;      %采样频率
  8. %dim = 40;       %输出系数的维数的0.5倍
  9. bank=melbankm(banknum,framelen,fs,0,0.5,'m');
  10. bank=full(bank);
  11. bank=bank/max(bank(:));
  12. % DCT系数,12*24
  13. for k=1:dim
  14.   n=0:banknum-1;
  15.   dctcoef(k,:)=cos((2*n+1)*k*pi/(2*banknum));
  16. end
  17. % 归一化倒谱提升窗口
  18. w = 1 + 6 * sin(pi * [1:dim] ./ dim);
  19. w = w/max(w);
  20. % 预加重滤波器
  21. xx=double(x);
  22. xx=filter([1 -0.9375],1,xx);
  23. % 语音信号分帧
  24. xx=enframe(xx,framelen,frameinc);
  25. % 计算每帧的MFCC参数
  26. for i=1:size(xx,1)
  27.   y = xx(i,:);    %取一帧语音信号(长256)
  28.   s = y' .* hamming(framelen);%加海明窗
  29.   t = abs(fft(s));%FFT
  30.   t = t.^2;       %每一个分量平方
  31.   c1=dctcoef * (bank * t(1:framelen/2+1));%乘mel滤波器组系数,取对数,乘DCT系数
  32.   c2 = c1.*w';    %加倒谱提升窗口
  33.   m(i,:)=c2';
  34. end