闲来无事,整理了一下一些大学的学习音频处理的一些资料,当时用的是matlab,记录一下。
MFCC简介
梅尔频率倒谱系数(Mel-frequency cepstral coefficients 简称MFCC)。是在Mel标度频率域提取出来的倒谱参数,Mel标度描述了人耳频率的非线性特性,极好的模拟了人类听觉感知的处理。文章来源:https://www.toymoban.com/news/detail-409372.html
matlab实现
MFCC与频率的关系是:
其中f为频率,单位为HzMFCC的基本步骤为:
使用matlab实现:先是使用audioread函数导入wav数据,返回样本数据 x 以及该数据的采样率 Fs
首先是进行预加重。预加重,其实预加重就是相当于一个高通滤波器,滤波器函数在matlab中实现如:x=filter([1-alpha],1,x);其中,alpha就是预加重系数,speech还是原来得到的语音信号。预加重系数通常取在[0.95,0.97]区间取值。
接下来是分帧,在matlab中,分帧可以使用enframe函数解决,enframe函数将信号分成帧,每行一帧。调用格式形如:y=enframe(x,framelength,step)。enframe函数对x进行分帧,每帧长framelength,分得的帧数是nf = fix((nx-framelength+step)/step);
加窗,对于加窗,首先是进行窗函数的选择,在诸多窗函数中,目前应用最广泛的就是汉明窗。在matlab中,汉明窗在matlab中有自己的函数hamming(256)。将每一帧乘以汉明窗。在matlab中调用循环,将分好的帧乘以汉明窗函数,在matlab中,分好的帧以行的形式存在,将每一行乘以汉明窗。
接着是做快速傅里叶,将处理完的信号做FFT,在matlab中,fft(x)是FFT函数对x进行FFT处理。将FFT处理完的信号取绝对值或是平方值,假设取平方值,得到处理完的信号。
Mel滤波,在matlab中,先设定mel滤波系数,matlab函数melbankm,滤波器个数一般取20~26个。调用函数,将处理完的矩阵做全矩阵和归一化处理。得到mel滤波器系数。 接下来在mel频谱上进行到倒谱分析,在matlab中设置归一化倒谱提升窗口,对FFT参数进行mel滤波再进行倒谱分析。取对数,做逆变换,实际逆变换一般是通过DCT离散余弦变换来实现。设置DCT参数,做DCT运算后乘上倒谱系数得到MFCC参数。
最后,对数字信号做一阶差分处理,使得信号变得平滑,得到最后结果。文章来源地址https://www.toymoban.com/news/detail-409372.html
到了这里,关于【音频处理】梅尔频率倒谱系数(MFCC)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!