倒谱与梅尔频率

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

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

频谱

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

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

梅尔频谱(mel spectrogram)

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

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

\[mel(f)=2595\times \log_{10}(1+\frac{f}{700}) \]

其逆变换如下,

\[f=700(10^{mel(f)/2595}-1) \]

梅尔滤波器组

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

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

\[M(f(m))=M(f_{low})+m\frac{M(f_{high})-M(f_{low})}{N+1} \]

  • \(M(\cdot)\) 是频率映射到梅尔频率的运算
  • \(f_{high}\)\(f_{low}\) 是滤波器组的频率上下限
  • \(N\) 是滤波器组的滤波器总数量

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

\[H_m(k)= \begin{cases} 0& k<f(m-1)\\ \frac{k-f(m-1)}{f(m)-f(m-1)}& f(m-1)\le k< f(m)\\ 1& k=f(m)\\ \frac{f(m+1)-k}{f(m+1)-f(m)}& f(m)<k\le f(m+1)\\ 0& k>f(m+1) \end{cases} \]

这是获得等高梅尔滤波器(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 @   倒地  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示