音频特征建模:音频特征提取

AI拉呱
5 min readOct 12, 2020

--

  • 滤波器与MFCC
  • 梅尔音阶
  • 步骤
  • 计算梅尔滤波器组
  • 微分系数和加速度系数

python_speech_features

滤波器与MFCC

  • 任何自动语音识别系统的第一步都是提取特征。
  • 梅尔频率倒谱系数(MFCC)是广泛用于自动语音和说话者识别的功能。
  • 将信号分成短帧。
  • 假设音频信号在短时间范围内变化不大(当我们说它不变时,我们指的是统计上的,即统计上是平稳的,显然样本在不断变化。即使是短时间尺度)。这就是为什么我们将信号分成20–40ms帧的原因。
  • 对于每个帧,计算功率谱的周期图估计。
  • 将梅尔滤波器组应用于功率谱,对每个滤波器的能量求和。
  • 梅尔滤波器组:第一个滤波器非常窄,可以指示0赫兹附近存在多少能量。随着频率的升高,我们对滤波器的关注也越来越小,滤波器也变得越来越宽。
  • 取所有滤波器组能量的对数。
  • 有了滤波器组能量,我们就可以取它们的对数。这也是由人类听力引起的:我们听不到线性范围的响度。通常,要将声音的感知音量加倍,我们需要将8倍的能量投入其中。为什么是对数而不是立方根?对数允许我们使用倒谱均值减法,这是一种通道归一化技术。
  • 取对数滤波器组能量的DCT。
  • 这样做有两个主要原因。因为我们的滤波器组都是重叠的,所以滤波器组的能量彼此非常相关。DCT对能量进行去相关,这意味着对角协方差矩阵可用于对HMM分类器中的特征进行建模。但是请注意,仅保留了26个DCT系数中的12个。这是因为较高的DCT系数表示滤波器组能量的快速变化,并且事实证明这些快速变化实际上会降低ASR性能,因此通过降低它们可以得到很小的改进。
  • 保持DCT系数2–13,其余部分丢弃。

梅尔音阶

  • 梅尔音阶将纯音的感知频率或音高与其实际测量的频率相关联。
  • ZgY9P2yneCG47ou

步骤

  • 从语音信号开始,假设以16kHz采样。
  • t8DXNZOm6P73KlG
  • 3.计算梅尔间隔的滤波器组。这是一组20–40(26个标准)三角形滤波器,我们将其应用于步骤2的周期图功率谱估计。我们的滤波器组以26个长度为257的向量的形式出现(假定步骤2中的FFT设置)。每个向量大多为零,但在频谱的特定部分非零。为了计算滤波器组的能量,我们将每个滤波器组乘以功率谱,然后将系数相加。完成此操作后,我们剩下26个数字,这些数字可以指示每个滤波器组中的能量。
  • 4.取第3步中26个能量的对数。这使我们剩下26个log滤波器组能量。
  • 5.对26个对数滤波器组能量进行离散余弦变换(DCT),得到26个倒谱系数。对于ASR,仅保留26个系数中较低的12–13。产生的特征(每帧12个数字)称为“梅尔频率倒谱系数”。

计算梅尔滤波器组

微分系数和加速度系数

  • MFCC特征向量仅描述单个帧的功率谱包络,但似乎语音也将具有动态信息,即MFCC系数随时间变化的轨迹是什么。事实证明,计算MFCC轨迹并将其附加到原始特征向量后,ASR性能会提高很多(如果我们有12个MFCC系数,我们还将获得12个delta系数,这些系数将组合起来得出长度为24的特征向量)。
  • wibaxU2AFBMtV4m
from python_speech_features import mfcc
from python_speech_features import delta
from python_speech_features import logfbank
import scipy.io.wavfile as wav
(rate,sig) = wav.read("english.wav")
mfcc_feat = mfcc(sig,rate)
d_mfcc_feat = delta(mfcc_feat, 2)
fbank_feat = logfbank(sig,rate)
print(fbank_feat[1:3,:])

参考:https://github.com/jameslyons/python_speech_features

--

--

AI拉呱
AI拉呱

Written by AI拉呱

创作不易,点击关注和点赞。谢谢你

No responses yet