short_time_analysis.m
上传用户:shodew
上传日期:2014-10-29
资源大小:6k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function short_time_analysis()
  2. %该函数的功能是将语音信号进行分帧,frame_num为所分帧的数目,xn为二维向量,存放个帧数据
  3. %Number of samples: 17280
  4. %Sampling frequency: 8000 Hz
  5. %精度16位
  6. %窗函数为海明窗Hamming Window
  7. x=wavread('01.wav');           %读取数据
  8. %plot(x);
  9. %x=[1,2,-1,1,1,-1,-1,0,1,1,1,1,3,1,1,1,1,1,6,-1,1,1,1,-1,1,1,1,1,-1,1,2,3];%测试向量
  10. %x=x';
  11. N=160;                          %设定帧长
  12. M=160*1/4;                      %设定个帧交叠部分的长度
  13. xn=enframe(x,N,M);              %分帧函数   注:要根据具体情况进行分帧 20ms
  14. [En,Mn]=energy(xn);             %短时能量En及短时平均幅度函数Mn 
  15. Zn=zero_crossing_rate(xn);      %求短时过零率
  16. Zn2=zero_crossing_rate2(xn);    %设置门限的短时过零率,具有更强的抗噪性
  17. Xn=fft(xn);                     %求各帧的短时DFT
  18. N=400;                          %设定帧长
  19. M=400*1/4;                      %设定个帧交叠部分的长度
  20. xn=enframe(x,N,M);              %分帧函数   注:根据自相关的要求进行分帧  50ms
  21. [Rn,Fn]=auto_correlation(xn);   %短时自相关函数Rn和短时平均幅度差函数AMDF Fn
  22. subplot(2,2,1), plot(x);
  23. subplot(2,2,2), plot(En);
  24. subplot(2,2,3), plot(Mn);
  25. subplot(2,2,4), plot(Zn);
  26. %subplot(2,3,4), plot(Rn);
  27. %subplot(2,3,5), plot(Fn)