当前位置:   article > 正文

音频信号特征提取--时域特征(hanming窗加窗+分帧)matlab代码实现_音频信号分针加窗代码matlab

音频信号分针加窗代码matlab

代码其实很简单,但是写代码之前要了解基础知识,比如特征提取的短时能量的公式等。

还要了解一些参数,分帧时,帧数、帧移、帧长等

用到的matlab函数有俩,一个是hanming();一个是enframe,enframe函数需要在matlab路径中加到toolbox使用,这个直接搜就有很详细的教程。

下面是代码的实现,下面的代码中,每一行代表的准确意思我都有标注。

  1. %新代码 分帧+加窗
  2. clear all;
  3. clc;
  4. [A,fs]=audioread('高通滤波处理后.wav'); %A为列向量,是数字化的音频信号,读出的数据,fs是音频文件的采样频率
  5. info=audioinfo('高通滤波处理后.wav') %采样频率65536,总的采样点数897024
  6. N=length(A);%采样长度,即A的长为N; N=采集时长t*采样频率fs
  7. %sound(A,fs) %播放音频文件
  8. time=(0:N-1)/fs;%T=N/fs
  9. plot(time,A)
  10. n=1024; %窗宽, 帧长
  11. nx=(2*N/n)-1;% 帧数 nx=(N-n+0.5*n)/(n*0.5)
  12. h=hamming(n);%汉明窗
  13. y=enframe(A,h,512);%帧长12001024),帧移600512),重叠50% 分帧为1012*1200
  14. %短时能量
  15. su=0;
  16. for i=1:nx
  17. en(i)=y(i,:)*y(i,:).';
  18. su=su+en(i);
  19. end
  20. %短时平均幅度
  21. dpf=0; %dp代表短时平均幅度
  22. for i=1:nx
  23. mn(i)=sum(abs(y(i,:)));
  24. pmn(i)=mn(i)/n;
  25. % dpf(i)=dpf(i)+mn(i);
  26. end
  27. %短时平均过零率
  28. zn1=0;
  29. for i=1:nx
  30. zn=0;
  31. for j=1:1023
  32. za=y(i,j);
  33. zb=y(i,j+1);
  34. if (za*zb)<0
  35. zn=zn+1;
  36. end
  37. end
  38. % zn1=zn1+zn;
  39. z(i)=zn;
  40. end
  41. %zn2=zn1/nx;
  42. %短时零能比
  43. for i=1:nx
  44. zen(i)=z(i)/en(i);
  45. end
  46. save E:\TZTQ\en.txt en -ascii
  47. save E:\TZTQ\pmn.txt pmn -ascii
  48. save E:\TZTQ\z.txt z -ascii
  49. save E:\TZTQ\zen.txt zen -ascii

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/287721
推荐阅读
相关标签
  

闽ICP备14008679号