2006年,做软件工程大作业的时候,和小伙伴们做过一个HTK的代码剥离,从中提取了将Wave文件转化为MFCC文件的部分,近期在做【音频相似度】的时候,又翻到了这部分代码,发在这里,给用到的同学参考。
接下来,应该还会做一个C#版本的Wave到MFCC的实现。HTK是C代码,里面用了大量的指针。在摘要C++的版本中,仍然保留了这种重指针的形式。然而,转到C#之后,所有内存管理都已经自动化,代码清晰很多。鉴于在音频信号处理方面,能找到的C#相关代码很少(也可能是我懒,也可能是我笨,还没找到就放弃了),我就自己动手,再做一次代码迁移吧。
我的C语言,C++语言,C#语言,音频信号处理基础都比较差,迁移之后的代码,仅仅是可用而已,仅大家参考,如有什么意见,也可以反馈,不保证回复??
程序在VS2019里编译通过,可以完成从Wave文件到MFCC文件的转换。用到的生成参数如下:
//从wav文件计算MFCC参数默认参数
static const IOConfigRec defConf = {
MFCC, //计算MFCC参数
0.0, false, // SOURCERATE ZMEANSOURCE
100000.0, // TARGETRATE
250000.0, true, 0.97, // WINDOWSIZE USEHAMMING PREEMCOEF
false, 24, // USEPOWER NUMCHANS
22, 12, 1.0, // CEPLIFTER NUMCEPS CEPSCALE
true, // RAWENERGY
false // DOUBLEFFT
};
其它的内容,大家从代码里看吧,反正源码来源于HTK,注释很完整的。
代码位置:HTK的HCopy模块,C++版本-编解码文档类资源-CSDN下载,免积分下载。