倒谱与梅尔频率

梅尔倒频谱系数(MFCC,Mel Frequency Cepstral Coefficents)在人声领域(语音识别,说话人辨认)等领域应用广泛。

这个文章留下学习倒谱与梅尔频率的痕迹。

频谱

声音是一维时域信号。为了分析声音的频域规律,就要用到傅里叶变换,将信号从时域转换到频域。但频域信号失去了时域信息,无法看出频率分布随时间的变化。

对此,有短时傅里叶变换(STFT),即在短时间内对长信号进行傅里叶变换。将 STFT 获得的一系列频域信息按时间顺序叠放,就获得了频谱。

梅尔频谱(mel spectrogram)

人耳对音高的感知不是线性的。人耳对高频频率的变化很迟钝,对低频敏感。

梅尔频谱通过一个变换公式,将普通频率映射到更适合人类直觉的标准。

mel(f)=2595×log10(1+f700)

其逆变换如下,

f=700(10mel(f)/25951)

梅尔滤波器组

根据人耳的音高感知特点设计的滤波器组。低频处滤波器密集,高频则相反。梅尔滤波器组通常由 40 个三角滤波器组成。

m 号滤波器的中心频率 f(m) 满足:

M(f(m))=M(flow)+mM(fhigh)M(flow)N+1

  • M() 是频率映射到梅尔频率的运算
  • fhighflow 是滤波器组的频率上下限
  • N 是滤波器组的滤波器总数量

获得各个滤波器的中心频率 f(m) 后,第 m 个梅尔滤波器的增益公式如下:

Hm(k)={0k<f(m1)kf(m1)f(m)f(m1)f(m1)k<f(m)1k=f(m)f(m+1)kf(m+1)f(m)f(m)<kf(m+1)0k>f(m+1)

这是获得等高梅尔滤波器(Mel-filter bank with same bank height)的方法。对应的还有等面积梅尔滤波器(Mel-filter bank with same bank area),后者更适合人声领域。

倒谱分析(Cepstrum Analysis)

频谱经过对数处理获得对数频谱,然后将对数频谱进行傅里叶逆变换,就获得了 倒谱 Cepstrum

获得倒谱并不难。信号 x 获得频谱 X = np.fft.fft(x),进行对数处理 X_log = np.log(X_magnitude),最后进行傅里叶逆变换 cepstrum = np.fft.ifft(X_log).real

倒谱的意义:通过取对数,那些难以察觉的频率分量变得容易观察。

梅尔频率倒谱

计算 MFCC 包括以下步骤:

  • 对信号进行傅立叶变换,得到频谱
  • 将频谱的频率从赫兹转换为梅尔频谱
  • 在梅尔频率上应用梅尔滤波器组
  • 对滤波器能量取对数
  • 进行离散余弦变换(DCT,类似于离散傅里叶变换但只使用实数),得到 MFCC

参考来源

posted @   倒地  阅读(222)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示