你站在后厨门口,想录下老师傅做红烧肉时锅碗瓢盆的“交响乐”。刀落案板的清脆、油锅滋滋的绵密、颠勺时金属的碰撞全都混进一条起伏的波形里。可这条波形只是“空气在某一瞬间被压缩了多少”——机器既看不懂哪段是炒菜、哪段是说话,也分辨不出高低音。要让机器像老师傅一样听懂声音,得把这条乱糟糟的波形拆开、整理、提炼:把一段录音切成几十个小片段,每个片段再拆成“配料表”,最后压缩成一张能批量复制的“菜谱速查卡”。这就是音频特征提取的全部故事。无论是以人耳感知为尺子的梅尔谱图,还是把谱图浓缩成 13 行数字的 MFCC,本质上都是“把声音原料加工成机器能消化的菜谱”。跟着这条流水线走一遍,你就能看懂语音识别、音频分类这些 AI 应用背后最基础的一环。

岗位关联

音频特征是语音识别、音频分类、音乐检索等任务的第一道食材。掌握 MFCC 与梅尔谱图的提取原理和适用场景,能让你在模型选型时不再靠直觉试错,而是像主厨一样根据菜系选对食材。

目录
  1. 可视化演示
  2. 音频信号基础
  3. 特征预处理
  4. 时频变换
  5. 梅尔谱图
  6. MFCC提取
  7. 特征选型
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示音频特征MFCC与梅尔谱图的核心机制,通过输入/处理/存储/输出四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

音频特征MFCC与梅尔谱图:音频特征 音频特征提取流水线概述 MFCC特征提取与DCT变换 核心机制可视化 音频特征MFCC与梅尔谱图整体架构与关键组件

音频信号基础

想象你站在后厨门口录老师傅做菜。手机里存下的不是“声音”,而是一条随空气压力起伏的曲线:刀落案板时波峰猛地窜高,油锅滋响时频率变得细密。这条曲线横轴是时间、纵轴是振幅,专业上就叫波形。它就是一切音频特征的“原材料”——一锅还没分拣的乱炖。

机器没法直接读懂连续曲线,必须把曲线掰成离散的数字快照:每隔固定时间抓一次振幅,叫采样;把振幅归到有限档位,叫量化。采样和量化合起来就是数字化。想象把一整段翻炒视频剪成一张张胶片,每张胶片都是一个瞬间的“压力读数”。

接下来的问题自然是:每秒抓多少张胶片才够?如果抓太少,高频的“滋滋声”会歪曲成低频的“嗡嗡声”,这在信号处理里叫混叠。要防止混叠,有个硬底线必须守:

回到后厨:如果老师傅颠勺时锅铲碰撞的瞬间可以被两三个采样点抓住,这段录音才不至于“变味”。理解了这个底线,你就知道为什么语音识别常用 16 kHz 采样率——它已经能覆盖人说话的绝大部分频率,多采只是浪费硬盘。

fs≥2fmax⁡\displaystyle f_s \geq 2f_{\max}
意思是每秒采样的次数至少要达到信号最高频率的两倍,才能完整还原声音而不走样。
  1. f\_s(采样率)每秒抓取多少个声音快照,快照越多波形还原越细腻,代价是存储和计算量变大。
    fs=1Tf_s = \frac{1}{T}
  2. f\_max(最高频率)录音中可能存在的最高音高,通常由设备硬件或耳朵听觉上限决定。
    fmax⁡f_{\max}
  3. ≥ 2(奈奎斯特条件)每个周期至少采两个点,才能守住高频不“折叠”成假低频,这是数字音频的底线。
    fs≥2fmax⁡f_s \geq 2f_{\max}

特征预处理

食材到家后,第一步不是下锅,而是清洗改刀。音频也一样,在真正做变换之前,要先经过三道预处理:预加重、分帧、加窗。想象那段后厨录音里,高频的“刀碰砧板”声往往音量很小,容易被低频的“轰隆”背景盖住。预加重要做的,就是把每相邻两个采样点的差值补回信号里,让细小的高频细节显得更清晰。

做完预加重,接着就是分帧。声音在 20 毫秒到 40 毫秒内可以近似看成平稳的,但一整句话几秒钟内变化剧烈。所以我们要把长波形切成一个个约 25 毫秒的小片段,相邻片段重叠一半,像切菜时每一刀都叠着前一刀的边缘,防止漏掉关键动作。分帧之后的每一帧,还要乘以一个“窗户”——汉明窗。这扇窗让帧中间的样本保留,让帧两端慢慢趋于零,避免切帧时产生生硬的断裂噪声。

这三步改刀完成后,每一帧都像一片大小统一、边缘平滑的“食材片”。后续不管是做频谱还是画梅尔图,吃的都是这些切好的片,而不是一整块冻肉——分帧加窗的质量,直接决定了后面每一步的稳定性。

y[n]=x[n]−αx[n−1]\displaystyle y[n] = x[n] - \alpha x[n-1]
预加重的公式:用当前采样点减去前一个采样点乘以系数,实现高频提升。
  1. x[n](当前采样点)这一时刻声音的振幅读数,也是预加重要处理的“当前原料”。
    x[n]x[n]
  2. x[n-1](前一个采样点)上一时刻的振幅读数,用来和当前读数做对比。
    x[n−1]x[n-1]
  3. α(预加重系数)通常取 0.97,控制高频被放大的程度,数值越接近 1 放大越明显。
    α≈0.97\alpha \approx 0.97
  4. y[n](输出样本)新的采样值等于当前值减掉上一步的加权,等效于把相邻差异加入信号。
    y[n]=x[n]−αx[n−1]y[n] = x[n] - \alpha x[n-1]

时频变换

食材切好了,现在要分析“这片食材里到底有什么”。傅里叶变换就是那台“成分分析仪”:它假设任意一段信号都能被拆成许多不同频率正弦波的叠加。频率就像菜里的盐、糖、辣椒——每种调料贡献多少量,就是频谱告诉我们的信息。对单个片段做傅里叶变换,得到的叫 FFT 频谱。

但整段录音里有几十个片段,每一片的频谱都在变。于是我们让“分析仪”沿着时间轴一段段滑动,对每一帧分别做变换,这就是短时傅里叶变换(STFT)。把 STFT 的结果按时间排成一行行、按频率排成一列列,再用颜色深浅表示强度,就得到了一张二维的时频图——也叫频谱图。

时频图就像后厨的“全流程监控画面”:横轴是时间,纵轴是音调,亮色代表此刻这个音调很响。传统频谱图用线性频率刻度,低频和高频挤在一起很难看明白。这个缺点启发了一个关键改进——按耳朵的喜好重新标定频率,也就是下一节的梅尔谱图。

X[k]=∑n=0N−1x[n] e−j2πknN\displaystyle X[k] = \sum_{n=0}^{N-1} x[n]\, e^{-j\frac{2\pi kn}{N}}
这是离散傅里叶变换的核心公式:把一帧 N 个时间样本,换算成 k 个频率分量的强度。
  1. x[n](时间样本)帧内第 n 个采样点的振幅值,是变换的输入。
    x[n]x[n]
  2. e^{-j2πkn/N}(旋转因子)一个以 k 为频率编号的复指数,负责“探测”信号里有没有对应频率的成分。
    e−j2πknNe^{-j\frac{2\pi kn}{N}}
  3. Σ(求和)把所有时间样本与对应旋转因子相乘后累加,得到该频率的强度。
    ∑n=0N−1\sum_{n=0}^{N-1}
  4. k(频率索引)第 k 个频率桶,k 越大代表频率越高,X[k] 就是该频率处的能量值。
    X[k]X[k]

梅尔谱图

人耳对音高的感知不是线性的:1000 Hz 以下,我们能细听出两个音的差别;可到了 4000 Hz 以上,频率差个几百赫兹耳朵也觉得“差不多”。所以科学家想出一把更贴合听觉的“尺子”——梅尔标度。把物理频率映射到梅尔刻度,低频部分被拉长,高频部分被压缩,就像厨师偏爱的调料被放在砧板手边,不常用的塞进角落。

映射的数学形式很简洁:

拿到梅尔刻度后,我们在频谱上设计一组三角滤波器:低频处滤波器又窄又密,像细筛子,能捕捉细微差别;高频处又宽又疏,像粗漏勺,只留大块能量。每个滤波器把对应频段的能量加权求和,就得到一组能量值。再取对数压缩动态范围——因为耳朵对响度也是对数感知——最后按时间排列,就得到梅尔谱图:一张横轴时间、纵轴梅尔频率、颜色代表响度的“风味地图”。

m=2595log⁡10(1+f700)\displaystyle m = 2595 \log_{10}\left(1 + \frac{f}{700}\right)
把以赫兹为单位的频率换算成“耳朵感受到的音高”,对数压缩让高频的变化没那么敏感。
  1. f(原始频率)物理世界测出的频率值,单位 Hz,例如钢琴中央 C 是 261.6 Hz。
    ff
  2. 1 + f/700(归一基线)先除以 700 再加 1,保证在 f=0 时对数结果仍为 0。
    1+f7001 + \frac{f}{700}
  3. log10(对数压缩)对数值做 10 为底的对数,让高频差异被压缩,模拟人耳感知。
    log⁡10\log_{10}
  4. 2595(刻度常数)把对数结果放大到和梅尔值匹配的范围,使 1000 Hz 大约对应 1000 mel。
    25952595

MFCC提取

梅尔谱图信息量很大,一帧可能有上百个维度的值。如果直接喂给传统机器学习模型,一是维度太高,二是相邻维度之间高度相关,模型容易“消化不良”。这时就要请出最后一位后厨助手—— MFCC。

MFCC 的全称是梅尔频率倒谱系数。关键一步是离散余弦变换(DCT):把梅尔谱图里相互关联的能量,投影到一组互相独立的余弦基上,像把一堆挤在一起的调料重新摆进独立格子,每种调料一格,互不串味。DCT 之后取前 13 个数,就得到一张极简的“速查卡”。这张速查卡只保留最重要的声音形状信息,丢掉那些对识别没帮助的冗余细节。

取完前 13 个系数,MFCC 就算完成了。不过语音是流动的,单帧系数只是“静态快照”。为了让模型感受到语速和语调的变化,工程师还会再算一阶差分(Delta)系数——比较相邻帧的系数变化,相当于记录“这勺调料是快进还是慢放”。把静态系数和 Delta 系数拼在一起,就构成语音识别中最经典的特征向量。

ci=∑m=1MEmcos⁡(iπ(m−0.5)M)\displaystyle c_i = \sum_{m=1}^{M} E_m \cos\left(\frac{i\pi(m-0.5)}{M}\right)
对 M 个梅尔滤波器能量做余弦变换,得到第 i 个 MFCC 系数。
  1. E\_m(滤波器能量)第 m 个梅尔滤波器输出的对数能量,是 DCT 的输入。
    EmE_m
  2. cos(余弦基)每个系数用一个不同频率的余弦波作为模板,依次匹配能量分布的形状。
    cos⁡(iπ(m−0.5)M)\cos\left(\frac{i\pi(m-0.5)}{M}\right)
  3. i(系数序号)第 i 个系数,i 越小代表声音的整体轮廓越粗,i 越大代表细节越多,通常只取前 13 个。
    i=0,1,2,…i = 0, 1, 2, \dots
  4. M(滤波器个数)梅尔滤波器总数,一般取 26 到 40 个,决定 DCT 的输入宽度。
    MM

特征选型

现在我们手上有三种菜谱:线性频率的时频图、按耳朵调味的梅尔谱图、压缩后的 MFCC 速查卡。到底用哪张?答案取决于你在开什么店。

如果是语音识别场景,比如把会议录音转成文字,MFCC 至今仍是经典选择。传统语音识别流水线用 MFCC 喂给声学模型,是因为它维度低、去相关、能抓住发音器官的轮廓特征,还避免了高频噪音的干扰。就像快餐店翻台快,需要一张一眼就能读的速查卡。

如果是环境声音分类、音乐流派识别这类任务,梅尔谱图通常是更好的“原料”。因为 CNN 这类深度模型擅长在二维图像上找局部纹理,梅尔谱图保留了完整的时频纹路,比 MFCC 少了一道压缩损耗。

而若你有一台算力充裕的 GPU,深度端到端模型甚至可以跳过人工特征,直接把时频图或原始波形丢给网络去学。但了解 MFCC 和梅尔谱图的差异仍然重要:它决定了你输入端怎么设计、数据增强怎么做、特征维度怎么调。选对特征,就像选对菜谱——不是越复杂越好,而是越贴合这个任务越好。

---

Δct=ct+1−ct−12\displaystyle \Delta c_t = \frac{c_{t+1} - c_{t-1}}{2}
一阶差分公式:用前后两帧的系数差除以 2,估算当前帧的变化速度。
  1. c\_{t+1}(后一帧系数)下一时刻的 MFCC 系数,用来“向前看”。
    ct+1c_{t+1}
  2. c\_{t-1}(前一帧系数)上一时刻的 MFCC 系数,用来“向后看”。
    ct−1c_{t-1}
  3. 除以 2(对称差分)取前后帧的平均变化幅度,避免偏向某一侧的时间方向。
    12\frac{1}{2}

AI 应用场景

会议录音自动转写

阶段:音频特征提取 → 声学模型训练

解决的问题:会议录音动辄一两个小时,人工整理纪要耗时费力。传统方法直接处理原始波形,模型很难收敛,且背景掌声、空调噪音、多人重叠说话都会干扰识别。MFCC 先做预加重突出人声高频细节,再用低维去相关的系数让声学模型专注于“发音轮廓”,大幅降低训练难度。

具体案例:某互联网公司把每周的产品评审会录音切成句子,逐帧提取 13 维 MFCC 加 Delta 系数,输入 CTC 声学模型转成文字,再配合语言模型生成纪要。原本需要 3 小时的人工整理,压缩到 10 分钟以内的 AI 初稿。

城市噪声监测与异常事件识别

阶段:数据预处理 → 特征选择 → 分类模型训练

解决的问题:城市里要识别“工地违规施工”“汽车爆破声”“人群异常骚动”,这些声音高频细节丰富,MFCC 压缩后反而会丢掉关键纹理。梅尔谱图保留了完整的时频结构,配合 CNN 可以捕捉局部纹理变化,达到更高的分类准确率。

具体案例:某智慧城市项目在路口部署麦克风阵列,将 3 秒音频切成梅尔谱图,输入轻量级 CNN 分类器,不仅可以区分鸣笛和刹车,还能检测到深夜违规施工的钻机声,并向城管平台推送告警。

音乐检索与哼唱识别

阶段:特征嵌入 → 相似度检索

解决的问题:用户哼唱一小段旋律要找到原曲,传统文本式标签无法匹配。时频图经过神经网络编码成固定维度的嵌入向量后,可以度量“旋律形状”的相似度。梅尔谱图的人耳感知刻度让编码器更关注听觉上相似的片段,检索效果远好于直接比对 MFCC。

具体案例:音乐 App 推出“哼唱搜歌”功能,将用户 6 秒哼唱转为梅尔谱图,通过预训练音频编码器得到 128 维向量,在百万级歌曲库中做余弦相似度检索,Top 10 命中率超过 80%。

Python 演示

python57 行
import numpy as np sr = 16000n_total = int(0.16 * sr)t = np.arange(n_total) / srx = (0.6 * np.sin(2 * np.pi * 220 * t) + 0.4 * np.sin(2 * np.pi * 880 * t)     + 0.2 * np.random.randn(n_total)) def pre_emphasis(sig, alpha=0.97):    return np.append(sig[0], sig[1:] - alpha * sig[:-1]) def framing(sig, frame_len=320, hop=160):    n_frames = 1 + (len(sig) - frame_len) // hop    return np.stack([sig[i * hop:i * hop + frame_len] for i in range(n_frames)]) def hamming_win(n):    return 0.54 - 0.46 * np.cos(2 * np.pi * np.arange(n) / (n - 1)) def power_spec(frames, n_fft=512):    return np.abs(np.fft.rfft(frames, n_fft)) ** 2 def mel_filterbank(n_mel=26, n_fft=512, sr=16000):    lo = 0    hi = 2595 * np.log10(1 + sr / 2 / 700)    mels = np.linspace(lo, hi, n_mel + 2)    hz = 700 * (10 ** (mels / 2595) - 1)    bins = np.floor((n_fft + 1) * hz / sr).astype(int)    fb = np.zeros((n_mel, n_fft // 2 + 1))    for m in range(1, n_mel + 1):        for k in range(bins[m - 1], bins[m]):            fb[m - 1, k] = (k - bins[m - 1]) / (bins[m] - bins[m - 1])        for k in range(bins[m], bins[m + 1]):            fb[m - 1, k] = (bins[m + 1] - k) / (bins[m + 1] - bins[m])    return fb def dct_feature(mel_energy, n_coef=13):    n_mel, n_frames = mel_energy.shape    coef = np.zeros((n_frames, n_coef))    m = np.arange(n_mel) + 0.5    for i in range(n_coef):        basis = np.sqrt(2.0 / n_mel) * np.cos(i * np.pi * m / n_mel)        coef[:, i] = basis @ mel_energy    return coef def extract_mfcc(sig, frame_len=320):    sig = pre_emphasis(sig)    frames = framing(sig, frame_len) * hamming_win(frame_len)    spec = power_spec(frames)    mel_energy = mel_filterbank() @ spec.T    log_energy = np.log(mel_energy + 1e-10)    return dct_feature(log_energy) if __name__ == '__main__':    feat = extract_mfcc(x)    print('MFCC 形状(帧数, 系数数):', feat.shape)    print('前 3 帧系数:')    print(feat[:3])
目的:用 numpy 从零实现一条完整的 MFCC 提取流水线,验证“预加重 → 分帧 → 加窗 → FFT → 梅尔滤波 → 对数能量 → DCT”的每一步。
  1. return np.append(sig[0], sig[1:] - alpha * sig[:-1])预加重:拿当前采样点减掉上一采样点的加权,把高频细节“描深”。
  2. np.stack([sig[i * hop:i * hop + frame_len] for i in range(n_frames)])分帧:把长波形切成 320 点的小块,模拟短时平稳。
  3. 0.54 - 0.46 * np.cos(...)汉明窗:让帧两端平滑收敛,防止频谱泄漏。
  4. np.fft.rfft(frames, n_fft)快速傅里叶变换:把每帧时域信号变成频域谱。
  5. 2595 * np.log10(1 + sr / 2 / 700)把最高采样频率换算成梅尔值,作为滤波器上限。
  6. fb[m - 1, k] = (k - bins[m - 1]) / (bins[m] - bins[m - 1])构造三角滤波器的上升沿,让低频滤波器更窄更密。
  7. basis @ mel_energy用余弦基对梅尔能量做投影,去掉维度间相关性,得到 MFCC 系数。

常见误区

误区“语音识别用 MFCC 效果好,那我做鸟叫分类、音乐流派分类也直接用 MFCC,反正都是音频特征。”

正解MFCC 是传统语音识别为了配合 GMM/HMM 而设计的高度压缩特征,丢掉了很多时频纹理细节。现代深度学习分类任务里,梅尔谱图保留了完整的“风味地图”,CNN 可以直接从局部图案里学到判别信息,效果往往比 MFCC 更好。就像做红烧肉用的是整块五花肉,而做肉馅才会先绞成碎末——你用错了部位,菜就变味了。

为何常见:入门资料大多以语音识别为案例,导致初学者误以为 MFCC 是所有音频任务的默认答案,忽视了特征与任务的匹配关系。

误区“音频采样率当然越高越好,信息多一点总没错,反正现在硬盘很大。”

正解采样率提升一倍,数据量就翻一倍,训练和推理都会变慢。更重要的是,采样率超过奈奎斯特需求并不会带来额外收益。语音识别人声频率大约在 300 Hz 到 3400 Hz 之间,16 kHz 采样已绰绰有余;只有处理蝙蝠超声波这类特殊场景才需要高采样率。超过需求的采样,相当于把后厨每一粒灰尘都拍进菜谱,除了增大体积没有任何用处。

为何常见:直观上“信息越多越好”符合生活经验,但忽略了同等信息在决策场景中存在边际效用递减,也容易忽略存储和算力成本。

误区“把长音频切成小帧,就是为了让模型吃 smaller batch,方便并行计算。”

正解分帧的根本原因是语音是非平稳信号,但短时间(20 到 40 ms)内可以近似平稳。只有在这种短时平稳假设下,FFT 得到的频谱才有物理意义。如果对整段 10 秒音频直接做傅里叶变换,得到的只是各种频率在 10 秒内的平均能量,完全丢失时间轮廓。分帧切出来的不是“小批次”,而是“有意义的最小分析单元”。

为何常见:初学者容易从工程实现的角度理解分帧,忽略了它背后的信号处理前提。

误区“梅尔滤波器组就是把频谱均匀切成几十个等宽的频段,每个频段算一个能量。”

正解梅尔滤波器组在低频处又窄又密、高频处又宽又疏,这与等宽的线性滤波器完全不同。设计逻辑来自人耳对低频更敏感、对高频不敏感的生理特性。等宽切分适合线性频谱图,但拿到梅尔刻度下就会错误地放大高频噪声的权重。

为何常见:很多简化示意图把滤波器画成一排相似的三角形,初学者看多了就默认它们是等间距的。

误区“MFCC 和梅尔谱图是同一个东西,只是叫法不同。”

正解梅尔谱图是二维热力图,保留时间和梅尔频率两个维度的能量信息;MFCC 是梅尔谱图经过对数压缩和 DCT 之后提取出的十来个系数。二者是“食材”与“速查卡”的关系:前者信息全但冗余多,后者维度低但丢掉部分细节。用错术语会直接影响团队协作和模型选型。

为何常见:二者名字里都带“梅尔”,处理流程又前后承接,初学者很容易把上游产物和下游产物画上等号。

面试题

Q1. 预加重在音频特征提取中的主要目的是?

单选题 · easy

  • A.提高录音采样率
  • B.放大高频分量← 正确答案
  • C.降低背景底噪
  • D.增加声道数量

答案:B。预加重通过当前样本减去上一个样本的加权来突出相邻差值,本质是放大高频细节。它既不改变采样率,也不直接降噪,更与声道无关,所以选择 B。

Q2. 人耳对音高的感知更接近以下哪种标度?

单选题 · easy

  • A.线性标度
  • B.梅尔标度← 正确答案
  • C.分贝标度
  • D.时间标度

答案:B。人耳对低频分辨力强、高频分辨力弱,梅尔标度就描述了这种非线性感知。分贝标度描述响度而非音高,线性标度不符合听觉特性,故选择 B。

Q3. 分帧加窗中,汉明窗的主要作用是?

单选题 · mid

  • A.增大信号音量
  • B.消除频谱泄漏← 正确答案
  • C.降低采样位数
  • D.压缩动态范围

答案:B。直接截断一帧信号会在端点处产生突变,导致频谱上出现原本不存在的频率成分,这就是频谱泄漏。汉明窗让帧两端平滑趋近于零,从而抑制泄漏,而不是改变音量或位数。

Q4. MFCC 与梅尔谱图的最大区别在于?

单选题 · mid

  • A.MFCC 额外做了 DCT 压缩← 正确答案
  • B.MFCC 不包含任何频率信息
  • C.两者在数学上完全相同
  • D.梅尔谱图无法被人可视化

答案:A。梅尔谱图是经过梅尔滤波和对数能量的二维图谱,MFCC 再对其做 DCT,取前若干个系数以去相关降维。MFCC 仍包含频率的感知信息,梅尔谱图完全可以可视化,故选 A。

Q5. 梅尔滤波器组中滤波器间隔的分布特点是?

单选题 · hard

  • A.低频密高频疏← 正确答案
  • B.全频段均匀等间距
  • C.高频密低频疏
  • D.随机无规律的分布

答案:A。梅尔刻度是在频谱上按人耳感知重新标定的,低频段的频率间隔被拉大,因此设计出的三角滤波器低频窄而密、高频宽而疏,选择 A。B 是线性滤波器组的特点。

Q6. DCT 在 MFCC 提取中的核心作用是?

单选题 · hard

  • A.去除时间帧冗余
  • B.去除系数相关性← 正确答案
  • C.增加频率分辨率
  • D.降低采样位数

答案:B。梅尔滤波器能量之间高度相关,DCT 把它们投影到一组互相正交的余弦基上,实现去相关,使少量系数即可刻画主要信息。它不改变分辨率,也不涉及采样位数。

Q7. 下列属于 MFCC 特征提取流水线步骤的有?

多选题 · mid

  • A.预加重提升高频← 正确答案
  • B.分帧与加窗处理← 正确答案
  • C.情感标签人工标注
  • D.短时傅里叶变换← 正确答案

答案:ABD。MFCC 流水线依次包含预加重、分帧加窗、STFT/FFT、梅尔滤波和 DCT。情感标注属于数据标注,不属于特征提取步骤,因此选 A、B、D。

Q8. 关于梅尔谱图的描述,正确的是?

多选题 · hard

  • A.横轴通常表示时间← 正确答案
  • B.纵轴使用梅尔频率刻度← 正确答案
  • C.颜色深浅代表能量强弱← 正确答案
  • D.提取前无需任何预处理

答案:ABC。梅尔谱图是 STFT 结果经过梅尔滤波和对数能量后形成的二维图,横轴时间、纵轴梅尔频率、颜色表示能量。它在绘制前同样需要预加重、分帧加窗等预处理,故 D 错误。

Q9. 影响时频图时间分辨率和频率分辨率的因素有?

多选题 · hard

  • A.窗函数的长度← 正确答案
  • B.FFT 变换点数← 正确答案
  • C.窗函数的类型← 正确答案
  • D.音频文件的名称

答案:ABC。窗越长,频率分辨率越高但时间分辨率越低;FFT 点数影响频域采样密度;窗类型影响频谱泄漏程度。音频文件名与信号本身无关,不影响分辨率。

Q10. 根据奈奎斯特采样定理,采样率应满足什么条件?

单选题 · easy

  • A.等于信号的平均频率
  • B.大于等于最高频率两倍← 正确答案
  • C.小于最低频率的两倍
  • D.可以任意设置大小

答案:B。奈奎斯特定理指出,要无失真还原信号,采样率必须不低于最高频率的两倍。低于该值会发生混叠,等于平均频率或任意设置都无法保证还原,故选 B。