倒谱与梅尔频率
梅尔倒频谱系数(MFCC,Mel Frequency Cepstral Coefficents)在人声领域(语音识别,说话人辨认)等领域应用广泛。
这个文章留下学习倒谱与梅尔频率的痕迹。
频谱
声音是一维时域信号。为了分析声音的频域规律,就要用到傅里叶变换,将信号从时域转换到频域。但频域信号失去了时域信息,无法看出频率分布随时间的变化。
对此,有短时傅里叶变换(STFT),即在短时间内对长信号进行傅里叶变换。将 STFT 获得的一系列频域信息按时间顺序叠放,就获得了频谱。
梅尔频谱(mel spectrogram)
人耳对音高的感知不是线性的。人耳对高频频率的变化很迟钝,对低频敏感。
梅尔频谱通过一个变换公式,将普通频率映射到更适合人类直觉的标准。
其逆变换如下,
梅尔滤波器组
根据人耳的音高感知特点设计的滤波器组。低频处滤波器密集,高频则相反。梅尔滤波器组通常由 40 个三角滤波器组成。
第
是频率映射到梅尔频率的运算 、 是滤波器组的频率上下限 是滤波器组的滤波器总数量
获得各个滤波器的中心频率
这是获得等高梅尔滤波器(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
参考来源
- 理解梅尔倒频谱系数MFCC https://zhuanlan.zhihu.com/p/350846654
- 音频(六)Mel滤波器组_原理简介 https://blog.csdn.net/chumingqian/article/details/124950613
- Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What's In-Between https://haythamfayek.com/2016/04/21/speech-processing-for-machine-learning.html
- https://zh.wikipedia.org/wiki/离散余弦变换
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库