*********************************************************废话****************************************
近日一直想找一篇能够讲解比较详细的文章,奈何不是纯原理就是读不懂代码(对于小白有注释那也是天书级别),经过多日酝酿,终于能够大概看懂一些,在这里希望能够做一些笔记,顺便给接下来想了解这一部分的人一些借鉴,可以一起探讨,等大家看到这篇文章时就是我及百家之所长略懂皮毛之时。
*********************************************************正题*****************************************
何谓声音特征提取,我们究竟要提取什么?提取过程需要做什么?为什么这么做?这些。。。。我都不讲,大家写的都比我好得多。
我在这里主要是以说明参数为主要目的,我所能做的也只是简单使用,根据自己需要调整参数,里边有些函数例如 audioread()之类的都可以在官方文档(help)中找到比较详细的说明,基本上我提到的参数就是需要根据你需求作出调整的。
不墨迹了,还是直接上代码了,原理自己去看吧
预处理比较全的一篇 https://blog.csdn.net/u011108244/article/details/68076921
求参比较全的一篇 https://blog.csdn.net/yjjat1989/article/details/44962139
原理讲解最细致的 https://blog.csdn.net/u013378306/article/details/65954965
*******************************************************代码分析**************************************
第一步:读取声音文件
[sampledata,FS] = audioread('F:1.mp3'); % sampledata是保存音频数据信号 fs是采样频率 然后替换自己文件路径就可以了
第二步:(如果你是双声道,采样本不要给自己找麻烦,又不是给自己听,搞那么复杂干嘛)变换声道,双声
道变成单声道。这一部分没有需要咱们做的,不用懂,记得做就可以了。
function sample = calsample(sampledata,FS)temp_sample = resample(sampledata,1,FS/11025);
[m,n] = size(temp_sample);
if (n == 2)
sample = temp_sample(:,1);
else
sample = temp_sample;
end end
第三步:归一化mel滤波器系组数
bank=melbankm(M,N,fs