虽然标准频谱图能提供信号随时间变化的详细频率成分视图,但它有一个重要限制:其频率轴是线性的。这意味着100赫兹到200赫兹之间的距离与8000赫兹到8100赫兹之间的距离被同等对待。然而,人类听觉并非如此。我们对音高的感知更偏向对数关系;对低频变化远比高频变化敏感。为了使音频特征更好地匹配人耳的对数感知特性,引入了基于梅尔刻度间隔的滤波器组。这种方法会产生对数梅尔频谱图,该特征表示已成为现代高性能ASR系统的一个主要组成部分。梅尔刻度:一种基于感知的频率刻度梅尔刻度是一种感知音高刻度,听众认为其音高间隔是相等的。“梅尔”这个名称来源于单词“melody”(旋律),表明该刻度是基于音高比较。赫兹频率($f$)与梅尔刻度($m$)之间的关系由以下公式给出:$$ m = 2595 \cdot \log_{10}(1 + \frac{f}{700}) $$如公式所示,对于低于1000赫兹的频率,映射接近线性,但对于更高频率,则变得越来越对数化。这有效反映了我们耳朵的工作方式,将高频聚拢,同时在语音中保留对低频、听觉上更关键的频率范围的分辨率。{"layout":{"xaxis":{"title":"频率 (赫兹)","gridcolor":"#dee2e6"},"yaxis":{"title":"频率刻度","gridcolor":"#dee2e6"},"title":"线性赫兹刻度与梅尔刻度频率比较","plot_bgcolor":"#f8f9fa","paper_bgcolor":"#f8f9fa","font":{"color":"#495057"}},"data":[{"x":[0,1000,2000,4000,8000],"y":[0,1000,2000,4000,8000],"name":"线性刻度","mode":"lines","line":{"color":"#adb5bd","dash":"dash"}},{"x":[0,1000,2000,4000,8000],"y":[0,1079,1522,2146,2835],"name":"梅尔刻度","mode":"lines","line":{"color":"#748ffc","width":3}}]}梅尔刻度压缩了高频,与线性赫兹刻度相比,能更好地呈现人类音高感知的非线性特性。构建与应用梅尔滤波器组梅尔滤波器组是一组三角形滤波器,我们将其应用于功率频谱图。这些滤波器有两个主要特点:三角形形状: 每个滤波器都是一个三角形,从0开始,上升到峰值幅度1,然后回落到0。梅尔间隔: 滤波器在低频处较窄且紧密排列,而在高频处则变得更宽且分布更开,遵循梅尔刻度。{"layout":{"xaxis":{"title":"频率 (赫兹)","gridcolor":"#dee2e6"},"yaxis":{"title":"滤波器权重","gridcolor":"#dee2e6"},"title":"梅尔间隔滤波器组","plot_bgcolor":"#f8f9fa","paper_bgcolor":"#f8f9fa","font":{"color":"#495057"},"showlegend":false},"data":[{"x":[100,200,300],"y":[0,1,0],"type":"scatter","mode":"lines","fill":"tozeroy","fillcolor":"#a5d8ff","line":{"color":"#339af0"}},{"x":[200,350,500],"y":[0,1,0],"type":"scatter","mode":"lines","fill":"tozeroy","fillcolor":"#bac8ff","line":{"color":"#5c7cfa"}},{"x":[350,550,750],"y":[0,1,0],"type":"scatter","mode":"lines","fill":"tozeroy","fillcolor":"#d0bfff","line":{"color":"#845ef7"}},{"x":[550,900,1250],"y":[0,1,0],"type":"scatter","mode":"lines","fill":"tozeroy","fillcolor":"#eebefa","line":{"color":"#cc5de8"}},{"x":[900,1500,2100],"y":[0,1,0],"type":"scatter","mode":"lines","fill":"tozeroy","fillcolor":"#fcc2d7","line":{"color":"#f06595"}}]}三角形滤波器的可视化。请注意,随着频率的增加,滤波器变得更宽、分布更开,模拟了梅尔刻度。为了生成梅尔频谱图,我们将功率频谱图中每一帧的值乘以每个三角形滤波器的权重,然后将结果求和。如果一个功率频谱图帧有513个频率分量,并且我们使用80个滤波器的滤波器组,这个过程会将513维向量转换为该时间步的80维向量。此操作将线性频率分量的能量有效归类到数量较少但具有感知意义的梅尔频率分量中。从梅尔频谱图到对数梅尔频谱图最后一步是对梅尔滤波器组的能量取对数。这为我们带来了对数梅尔频谱图。我们这样做是出于一个简单但重要的原因:人类对响度的感知也是对数的,而非线性的。一个客观上强度两倍的声音,听起来并不会觉得响度也增加一倍。取对数会压缩滤波器组能量的动态范围,使生成的特征与我们的听觉更吻合。完整过程总结如下。digraph G { rankdir=TB; graph [bgcolor="transparent"]; node [shape=box, style="rounded,filled", fillcolor="#a5d8ff", fontcolor="#495057", color="#4263eb"]; edge [color="#495057"]; Audio -> STFT [label=" 分帧与加窗 "]; STFT -> PowerSpec [label=" 幅度平方 "]; PowerSpec -> MelSpec [label=" 应用梅尔滤波器组 "]; MelSpec -> LogMelSpec [label=" 取对数 "]; Audio [label="原始音频信号"]; STFT [label="短时傅里叶变换"]; PowerSpec [label="功率频谱图"]; MelSpec [label="梅尔频谱图"]; LogMelSpec [label="对数梅尔频谱图"]; }从原始音频信号生成对数梅尔频谱图特征的流程。对数梅尔频谱图在现代ASR中表现出色的原因在下一节中,我们将讨论梅尔频率倒谱系数(MFCCs),它长期以来一直是ASR的标准输入特征。MFCCs是通过对对数梅尔频谱图应用最终变换(离散余弦变换,或DCT)生成的。这一DCT步骤对特征进行去相关处理,这对于老式ASR系统中使用的统计模型(如高斯混合模型)非常有益。然而,对于现代深度学习模型而言,对数梅尔频谱图通常是更受欢迎的输入特征,原因如下:信息丰富度: MFCC生成中的DCT步骤是一种有损压缩。它会丢弃频谱图中的一些信息,而深度神经网络,特别是卷积神经网络和Transformer,可能会发现这些信息有助于区分音素。通过只进行到对数梅尔频谱图的步骤,我们为模型提供了更丰富、更精细的音频表示。对CNN的结构优势: 对数梅尔频谱图本质上是二维图像,其中一轴是时间,另一轴是梅尔频率。这种结构非常适合卷积神经网络(CNN),因为它们旨在从网格状数据中学习模式。CNN可以将二维滤波器应用于频谱图,以识别与语音事件对应的形状和纹理,就像它识别照片中的边缘或形状一样。端到端学习: 现代架构足够强大,能够自主学习最佳特征表示。为它们提供对数梅尔频谱图这类处理较少的特征,使模型能够直接从数据中学习最相关的关联和变换,而不是依赖于DCT的固定变换。在实际操作中,使用Librosa等库生成这些特征简单直接。例如,librosa.feature.melspectrogram函数接受原始波形,并高效计算对数梅尔频谱图,从而隐藏了底层的短时傅里叶变换、加窗和滤波器组应用。我们将在本章末尾的实践练习中应用此内容。