语音 AI 已经很自然地进入了我们的日常生活。
早上喊一句唤醒词开窗帘、开车时语音导航、手机声纹解锁……这些体验背后,都有一类很经典的声学特征在默默工作,叫 MFCC。
今天从工程应用的角度,聊聊它到底是什么、为什么还在用、有哪些边界。

小爱同学唤醒词开窗帘场景

车载语音导航场景
先问一个朴素的问题:既然声音本来就是一段波形,为什么不直接丢给模型,还要多做一步"特征提取"?
原因在于,原始语音波形里混合了太多信息——说话内容、说话人音色、音量、语速、环境噪声、房间混响、麦克风频响。但具体到一个工程任务,我们关心的东西往往非常明确:
• 语音识别:重点是"说了什么",希望弱化是谁说的、环境如何。
• 声纹识别:重点是"是谁在说",希望弱化具体内容、语速变化。
直接用原始波形,模型也可以学,但付出的数据量、算力和鲁棒性成本都更高。在耳机、门禁、低功耗 IoT 设备这类端侧场景,往往没有这样的计算余地。
还有一个原因:人耳对频率的感知不是线性的。我们对低频更敏感,对高频的分辨率会逐渐下降。物理上的"频率刻度",并不等同于人耳实际感受到的"听觉刻度"。

基于人耳特性的等响曲线(等响度轮廓,人耳在低频区域分辨率更高)
MFCC(Mel-Frequency Cepstral Coefficients,梅尔频率倒谱系数)就是为了解决这两个问题而设计的:用梅尔刻度模拟人耳听感,把高维原始波形压缩成十几到几十维的紧凑特征,保留对识别任务最有用的声学信息。
MFCC 的核心逻辑其实不复杂:模拟人耳听感,把语音里有用的频谱结构提取出来,压缩成一组稳定特征。
一段人声,大致可以看成两部分共同作用的结果:
• 声带振动产生的激励信号:决定音调高低、基频和谐波结构。
• 口腔、鼻腔、咽喉构成的声道响应:决定发音共振峰,承载说话人音色。
二者在时域是卷积关系,在频域是乘积关系,直接分离不容易。MFCC 的整个流程,就是把声音转到更适合分析的空间,再提取稳定、低维、可建模的特征。
下面拆成 6 步来看。
第一步:预加重
人声在传播和发声过程中,高频部分往往相对衰减,后续频谱分析时高频细节容易被盖住。
预加重用一个简单的数字滤波器,把高频部分适当抬起来,让高低频能量更均衡。它的作用是为后面的特征提取创造更好的输入条件。
第二步:分帧加窗
语音是非平稳信号,发音、口型、能量都在不断变化。但在很短的时间内,比如 20~30 ms,语音可以近似看成相对稳定的。
MFCC 把一整段语音切成一帧帧的小片段,常见设置是每帧约 25 ms、帧移约 10 ms,再乘上汉明窗减小频谱泄漏。
这有点像把一段视频拆成连续图片——整段在动,但每一帧本身相对清晰。

语音信号的分帧与加窗示意(帧长约 25 ms,相邻帧重叠 10 ms)
第三步:傅里叶变换
我们听声音,关心的是不同频率成分的强弱,而不是波形的上下振动。
傅里叶变换把每一帧时域波形转到频域,得到各个频率成分的能量分布。就像把混合的音乐拆开,看清各个声部的音量。
第四步:梅尔滤波器组
这一步是 MFCC 的标志性环节。
把线性频率轴映射到梅尔刻度,再通过一组梅尔滤波器对频谱能量汇总——低频区域滤波器分布更密,高频区域更疏,和人耳对不同频段的分辨能力相近。
简单说:用人耳的方式重新"听"一遍声音,低频细节多看,高频细节适当合并。

梅尔滤波器组频率响应图(低频滤波器分布密集,高频稀疏)

经梅尔滤波器组处理后的梅尔语谱图可视化
第五步:取对数
激励信号和声道响应在频域大致是乘积关系,不好直接分离。取对数以后,乘法变成加法,两种变化模式更容易被区分:
• 声道响应体现为频谱上相对平滑的包络,和发音内容、声道结构关系密切。
• 激励信号体现为较细的谐波结构,和基频、音调关系更密切。
这就是倒谱分析里的关键思想,也常被称为同态处理。
第六步:DCT 生成 MFCC 特征
最后对对数梅尔频谱做离散余弦变换(DCT),把频谱包络中的主要变化集中到前面少数几个系数里。
在很多传统语音系统里,常见做法是保留前 12 或 13 个静态系数,再加上一阶差分和二阶差分,形成 39 维特征配置。这不是唯一标准,但很好地体现了 MFCC 的工程价值:用低维度,保留足够有效的语音信息。

最终生成的 MFCC 特征系数谱(横轴时间,纵轴为各 MFCC 系数维度)
MFCC 能在语音领域长期存在,一个重要原因是它既能服务语音识别,也能服务声纹识别,只是两个任务关注的重点不同。
语音识别:判断"说了什么"
语音识别最关心发音内容,不关心说话人是谁。MFCC 在这里的价值,是把不同发音对应的频谱差异提取出来——不同元音的共振峰位置不同,不同辅音的高频能量分布也不同,这些差异都会反映在 MFCC 特征中。
典型应用:手机语音转文字、智能音箱指令识别、车载语音导航、电话客服语音质检、耳机语音唤醒。
现在端到端语音模型已经很强,比如 Whisper 这类模型可以直接从声学特征学习。但在轻量级、低功耗、实时性要求高的场景里,MFCC 依然有价值——比如 TWS 耳机里的唤醒词检测,要在极低功耗下判断用户有没有说出某个关键词,这类任务反而更需要稳定、低维、计算量可控的特征输入。
声纹识别:判断"是谁在说"
声纹识别更关心说话人的声道特征和稳定音色,而不是具体说了哪句话。每个人的声道长度、口腔结构、鼻腔共鸣都不完全相同,这些差异会影响频谱包络,也会体现在 MFCC 等声学特征里。
典型应用:手机声纹解锁、银行政务身份核验、会议说话人分离、门禁与车载用户识别。
需要注意的是,现代声纹识别系统已经大量使用 i-vector、x-vector、ECAPA-TDNN 等更复杂的建模方法,前端特征也不只限于 MFCC。但 MFCC 仍然是简单、稳定、可解释的传统基线,在资源受限设备上依然方便落地。
任何经典技术能留下来,都不是因为"无所不能",而是在某些约束下足够好用。
优点方面,MFCC 的整个计算流程由成熟的信号处理步骤构成,算力开销可控,非常适合端侧实时处理。相比原始波形,特征维度大幅降低;梅尔滤波器、频谱包络、声道响应之间的对应关系清晰,对工程师来说比黑盒特征更容易调试和分析。
局限方面,MFCC 对噪声和混响比较敏感,在嘈杂环境、远场或麦克风质量不稳定时,特征质量会明显下降,通常需要配合降噪、端点检测、归一化等前处理。
它也是一种手工设计特征,不像深度模型那样从数据中自动学习最优表示。在复杂语义理解、跨语言、多说话人长音频等任务上,单靠 MFCC 远远不够。
更准确的定位是:在低功耗、低算力、实时性强、任务边界清楚的语音场景里,MFCC 依然是一个非常实用的工程选择。它不是被大模型淘汰了,也不是永远不可替代,只是适合特定的约束条件。
今天聊 MFCC,不是为了怀旧一个老算法。
它真正值得学习的地方,是它把人耳听觉、语音产生机制和工程计算约束放在了一起——既考虑声音本身是什么,也考虑设备能不能算得动、模型能不能稳定用。
从几元钱的语音模块,到低功耗耳机,再到一些需要可解释、可控、可部署的声纹系统,MFCC 仍然会以不同形式存在。对工程师来说,这类经典特征的价值不在于"新不新",而在于它是否在某个具体场景里,提供了足够好的精度、成本和鲁棒性平衡。
“这也是很多基础技术有意思的地方:它们未必总在台前,但只要约束还在,工程世界就会继续需要它们。”