2a93bea0c850eb8e5551a3aabc61d446.png

机器学习ML从原始数据中提取特征并创建内容的密集表示。这迫使我们在没有噪音的情况下学习核心信息来进行推断。

回到语音识别,我们的目标是在声学和语言模型的基础上找到与音频对应的最佳单词序列。

01535ce49f3340e088d77fb4987772fe.png

为了建立一个声学模型,我们的观测值X由一系列声学特征向量(x₁,x2,x₃,…)表示。在本文中,我们将讨论如何从所学知识中提取音频特征。

需求

我们先来定义一下ASR(自动语音识别器)中对特征提取的一些要求。给定一个音频段,我们使用一个25毫秒宽的滑动窗口来提取音频特征。

c93c08f27b594b5576d064ee71cc7c7a.png

这个25毫秒的宽度足以让我们捕获足够的信息,但是此框架内的特征应保持相对固定。如果我们用4部电话每秒说3个单词,而每个电话又细分为3个阶段,则每秒有36个状态或每个状态约为28毫秒。因此25ms窗口大约正确。

8ee07dcb6fb8f6fc1f1a86ca91895e9e.png

语境在语音中非常重要。发音会根据电话前后的发音而变化。每个滑动窗口相距约10毫秒,因此我们可以捕获帧之间的动态变化以捕获适当的上下文。

音高因人而异。但是,这在识别他/她所说的内容方面几乎没有作用。F0与音高有关。它在语音识别中没有任何价值,应删除。

我们还希望提取的特征能够对说话者是谁以及环境中的噪声具有鲁棒性。同样,像任何ML问题一样,我们希望提取的特征与其他特征无关。开发模型和训练具有独立特征的模型更加容易。

一种流行的音频特征提取方法是具有39个特征的梅尔频率倒谱系数(MFCC)。特征数量很小,足以迫使我们学习音频信息。12个参数与频率振幅有关。它为我们提供了足够的频率来分析音频。

下面是提取MFCC特征的流程。

733e9058f4634731a74cbf98518e3e7a.png

主要目标是:

  • 删除声带激励(F0)-音高信息。
  • 使提取的特征独立。
  • 调整以适应人们对响度和声音频率的感知。
  • 捕获电话动态(上下文)。

梅尔频率倒谱系数(MFCC)

A/D转换

A/D转换采样音频剪辑并将内容数字化,即将模拟信号转换为离散空间。通常使用8或16 kHz的采样频率。

09eb1961845cbf9f35fcfb668a51c5ac.png

预加重

预加重提高了高频能量。对于像元音这样的浊音段,低频比高频有更多的能量。这被称为频谱倾斜,与声门声源有关(声带如何产生声音)。提高高频能量使高级共振峰中的信息更可用于声学模型。这样可以提高电话检测的准确性。对于人类来说,当我们听不到这些高频声音时,就会开始出现听力问题。另外,噪声具有高频率。在工程领域,我们使用预加重来使系统不易受到后续过程中引入的噪声的影响。对于某些应用程序,我们只需要在最后取消撤销即可。

预加重使用滤波器提升更高的频率。以下是有关如何增强高频信号的前后信号。

de50fd84645f69918887257eb07d0b95.png

窗口化

窗口化涉及将音频波形切成滑动帧。

325745f9a34b700508d01c93bbfe97f9.png

但是我们不能只在框架边缘将其切掉。振幅突然下降会产生大量的噪声,并在高频中出现。要对音频进行切片,幅度应在帧边缘附近逐渐降低。

bbd9c18a5437ff9ddefb0e02e72db2d3.png

假设w是应用于时域内原始音频剪辑的窗口。

4cbdc4993dca19cf7f276cb4833cdbdc.png

w的一些替代方法是Hamming窗口和Hanning窗口。下图显示了如何使用这些窗口来截断正弦波形。如图所示,对于Hamming窗口和Hanning窗口,幅度在边缘附近下降。(Hamming窗口的边缘略有突然下降,而Hanning窗口则没有。)

462dd4b62f8090eeff5538b0338ad019.png

w的对应方程为:

399d7ba6dde3377a7622366dc0621c37.png

下图中右上方的是时域中的声波。它主要仅由两个频率组成。如图所示,与矩形窗口相比,带有Hamming和汉宁Hanning的短切帧可以更好地保持原始频率信息,并且噪声更少。

973672c80f62d8292a7997d586660d4d.png

离散傅里叶变换(DFT)

接下来,我们应用DFT提取频域中的信息。

9ae310beaa9ff47c6f4b1efb9cb1fc39.png

梅尔滤波器

设备的测量值与我们的听觉感觉不同。对于人类,感知的响度会根据频率而变化。同样,随着频率的增加,感知的频率分辨率也会降低。也就是说,人类对高频不那么敏感。左图表示梅尔标度如何将测得的频率映射到我们在频率分辨率的情况下所感知到的频率。

4c43da4323b5e3908dd9462c1e8b6f47.png

所有这些映射都是非线性的。在特征提取中,我们应用三角带通滤波器来掩盖频率信息以模仿人类的感知。

203a30b4111ca61bdfbf076b8a223726.png

首先,我们对DFT的输出进行平方。这反映了每个频率(x [k]²)上语音的功率,我们称其为DFT功率谱。我们应用这些三角梅尔级滤波器组将其转换为梅尔级功率谱。每个梅尔标度功率谱时隙的输出代表其覆盖的多个频带中的能量。这种映射称为Mel Binning。m的公式为:

3947e68eccd46c93894be68544f1c31e.png

高频段的列角带通宽度较大,反映了人耳在高频段的灵敏度较低。具体来说,它在1000 Hz以下线性间隔开,然后对数旋转。

所有这些努力都试图模仿我们耳朵中的基底膜如何感知声音的振动。出生时,基膜在耳蜗内大约有15,000根毛发。下图显示了这些毛发的频率响应。因此,下面的曲线形状响应仅由Mel滤波器组中的三角形近似得出。

5f96b9953b5a71752508fffa3cc24ff8.png

我们模仿耳朵如何感知那些毛发的声音。简而言之,它是通过使用梅尔滤波库的三角滤波器建模的。

dd6cfe106dd97ff302c760c72c0ae17e.png

梅尔滤波器组输出功率谱。人类对高能量下的小能量变化不如低能量水平下的小变化敏感。实际上,它是对数的。因此,我们的下一步将把对数从梅尔滤波器组的输出中删除。这也减少了对于语音识别不重要的声学变体。接下来,我们需要解决另外两个需求。首先,我们需要删除F0信息(音高)并使提取的特征彼此独立。

倒频谱— IDFT

以下是语音产生方式的模型。

a036cd82e94be627eb8872aa7d298595.png

我们的发音控制着声道的形状。源滤波器模型将声带产生的振动与我们的关节产生的滤波器结合在一起。声门的波形将通过声道的形状在不同的频率被抑制或放大。

我们的下一步是计算将声门源和滤波器分开的倒频谱。图(a)是y轴为振幅的频谱。图(b)取幅度的对数。仔细观察,该波在1000到2000之间波动大约8次。实际上,每1000个单位波动大约8次。大约是125 Hz,即声带的源振动。

6381d0f87936fe50e791fdc0ff822de2.png

正如观察到的,对数频谱(下面的第一张图)组成了与电话(第二张图)和音高(第三张图)有关的信息。第二张图中的峰值标识了区分电话的共振峰。但是,我们如何分开它们呢?

82a298790b643f9f12d7d31c0d5281f9.png

回想一下,在变换之后,时域或频域中的周期是反转的。

1256071ab17a9766a63af215ff96a7b6.png

回想一下,音调信息在频域中的周期很短。我们可以应用傅立叶逆变换将音高信息与共振峰分开。如下所示,音高信息将显示在中间和右侧。中间的峰值实际上对应于F0,并且与电话相关的信息将位于最左侧。

140f1ae61572ce8cecc640dad4c90b8e.png

这是另一种可视化。左图上的实线是频域中的信号。它由虚线所示的电话信息和音调信息组成。在IDFT(离散傅立叶逆变换)之后,将周期为1/T的基音信息转换为右侧T附近的峰值。

c8b553c9354d7378ddec8a720729798e.png

因此,对于语音识别,我们只需要最左边的系数并丢弃其他系数即可。实际上,MFCC仅采用前12个倒谱值。这12个系数还有另一个重要的性质。对数功率谱是真实且对称的。它的逆DFT等效于离散余弦变换(DCT)。

81190b0e85bf8a0aa47c90089ab2eccf.png

DCT是正交变换。在数学上,转换产生不相关的特征。因此,MFCC特征是高度无关的。在ML中,这使我们的模型更易于建模和训练。如果我们使用多元高斯分布对这些参数建模,则协方差矩阵中的所有非对角线值都将为零。从数学上讲,此阶段的输出是

1335a2284b712fa67b60bc04390c3c2c.png

以下是12个倒谱系数的可视化。

e87a564c3ba2cc482e5fd9ed451f2dc8.png

动态特征(δ)

MFCC具有39个特征。我们最终确定12个,剩下的是什么。第13个参数是每帧中的能量。它可以帮助我们识别电话。

3196b923e55daf8069f4d48e9f154bbc.png

在发音中,上下文和动态信息很重要。清晰的发音,如停止关闭和释放,可以通过共振峰过渡来识别。特征随时间的变化提供了电话的上下文信息。另外13个值计算下面的增量值d(t)。它可以测量从上一帧到下一帧的特征变化。这是特征的一阶导数。

f5d0c7e3e586e5c367f4f35715bf1fa6.png

最后13个参数是d(t)从上一帧到下一帧的动态变化。它充当c(t)的二阶导数。

因此39个MFCC特征参数是12个倒谱系数加上能量项。然后,我们还有2个对应于δ和双δ值的集合。

91cfdc681be0e141cfa02bdbee442eb7.png

倒谱均值和方差归一化

接下来,我们可以执行特征归一化。我们用均值对特征进行归一化,然后将其除以方差。均值和方差是用特征值j在一次发声中在所有帧上计算的。这使我们可以调整值以抵消每个记录中的变量。

958eb344de471c4bea875d2940f56eae.png

但是,如果音频剪辑很短,则可能不可靠。相反,我们可以根据说话者甚至整个训练数据集来计算平均值和方差值。这种类型的特征归一化将有效地取消较早完成的预强调。这就是我们提取MFCC特征的方式。最后一点,MFCC的抗噪能力不是很强。

感知线性预测(PLP)

PLP与MFCC非常相似。出于听觉动机,它使用相同的响度预加重和立方根压缩,而不是对数压缩。

44b311bb91bf26c62af5f992f7814708.png

它还使用线性回归来最终确定倒频谱系数。PLP的精度稍好一些,而噪声鲁棒性则更好。但是也相信MFCC是安全的选择。在整个系列中,当我们说提取MFCC特征时,也可以提取PLP特征。

结论

ML为问题域建立模型。对于复杂的问题,这非常困难。本文中的特征提取方法在很大程度上取决于经验结果和观察结果。随着DL的引入,我们可以减少黑客的攻击来训练复杂的模型。但是,某些概念对于DL语音识别仍然有效并且很重要。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐