type
status
date
slug
summary
tags
category
icon
password
概览Acoustic FeatureMFCC (Mel-Frequency Cepstral Coefficients)预加重 (Pre-emphasis)分帧 (Framing)加窗(Windowing)短时傅里叶变换(STFT)Mel滤波器(Mel-filter bank)对数处理(log)离散余弦变换(DCT)动态特征提取 (Dynamic feature extraction)Hidden Markov ModelsLikelihood computation (forward algorithm)Finding the most probable state sequence (Viterbi algorithm)Estimating the parameters (forward-backward and EM algorithms)
概览
Acoustic Feature
- 400dim:以16kHz的方式采样,从采样点中每400个取一帧,相当于每个帧代表了25毫秒的音频数据。
- 39dim:
MFCC
是基于人类听觉系统的特性提取的声学特征,通常包括12-13个MFCC系数,加上能量和它们的一阶、二阶导数。
- 80dim:滤波器组输出是MFCC提取过程中的一个中间步骤,它表示了在Mel频率上的能量分布。80d filter bank output意味着使用了80个Mel滤波器来计算能量
MFCC (Mel-Frequency Cepstral Coefficients)
Cepstrum倒谱→ Spectrum
预加重 (Pre-emphasis)
预加重是语音信号处理中的一个常见步骤,特别是在MFCC特征提取中。其主要目的是减少语音信号的谐波失真,提高傅立叶变换后的信号质量。
以下是预加重的主要原因和考虑因素:
- 均衡频谱: 当人们发音时,语音的低频部分往往比高频部分有更大的幅度。这可能会使得低频部分在后续的处理中占据主导,而忽略了高频部分的信息。预加重可以帮助平衡这个幅度,使得在后续的处理中高频部分也得到足够的关注。
- 提高信噪比: 高频部分的语音信号往往更容易受到噪声的影响,特别是由麦克风和其他传感器引入的噪声。通过强化高频部分,预加重可以提高这些部分的信噪比。
- 强调形成语音的细节: 语言中的一些声音(如/s/和/sh/)主要存在于高频部分。预加重可以帮助强调这些声音,使它们在特征提取中更为明显。
- 简化傅立叶变换的结果: 不进行预加重的原始语音信号可能会导致傅立叶变换后的结果出现许多不规则的峰值。预加重可以使得傅立叶变换的结果更为平滑,更容易进行后续的处理。
数学角度的解释:在这个公式中,代表在时间的信号值,是经过预加重后的信号值,而是一个介于0到1之间的预加重系数。
当我们减去一个比例的前一个样本值,这实际上是一个高通滤波器,强调了高频变化。具体来说,如果信号的高频部分变化很大,那么的值也会很大,从而在预加重后的信号中得到强调。而对于信号的低频部分,其变化相对较小,因此的值较小,所以在预加重后的信号中被减弱。
分帧 (Framing)
语音信号随时间的变化具有变化的特性,即它是非平稳的。这意味着其统计特性会随时间变化。但在短的时间段内(例如10-30ms),它可以被视为近似平稳的。这种平稳性使我们能够对这些小段的信号进行频谱分析,以提取有关语音的有用信息。
- 帧长度 (Frame Length):一个帧的长度通常选择在20到40ms之间。这是因为在这个长度的时间段内,语音信号可以被认为是平稳的。例如,如果采样频率是16000 Hz(每秒16000个样本),那么25ms的帧长度将包含400个样本。
- 帧步长 (Frame Step or Stride):帧步长定义了两个连续帧之间的距离。由于语音信号的特性,连续的帧通常有50%到75%的重叠,这意味着帧步长会是帧长度的25%到50%。例如,如果帧长度是400个样本(25ms),那么10ms的步长将是160个样本。
加窗(Windowing)
汉宁窗是信号处理中常用的窗函数之一。窗函数的主要用途是修改信号,以使其在帧的边界上平滑地过渡到零,从而减少由于短时傅里叶变换引起的频谱泄漏。
- 频谱泄露:当一个信号被“窗口化”(即乘以窗函数)后进行傅里叶变换时,由于该信号在窗外不是零,所以可能会在频域中产生不希望的效应,这种效应称为频谱泄露。
当我们说汉明窗提供了主瓣和旁瓣之间的权衡时,意思是:虽然汉明窗具有较窄的主瓣(良好的频率分辨率),但它的旁瓣的高度较高(这会导致频谱上的“泄露”或误差)
- 边界效应:如果信号在帧的边界上突然中断,将在频域中引入许多不需要的频率成分。
短时傅里叶变换(STFT)
- 为了分析信号的频率,我们通常使用傅立叶变换(FT)。但是,标准的FT只能告诉我们整个信号中存在哪些频率,而不能告诉我们这些频率是在什么时候出现的。
- 为了解决这个问题,我们可以对信号进行“分段”,并对每一段进行傅立叶变换。这样,我们就可以知道每一段的频率分布。这就是STFT的基本思想。
Mel滤波器(Mel-filter bank)
人耳对不同频率的声音感知并不是线性的。例如,我们可以较容易地区分低频声音之间的微小差异,但在高频区域,相同的频率差异可能就不那么明显了。Mel滤波器的设计就是为了模仿这种非线性的听觉特性。简单地说,它帮助我们把复杂的声音信号转换为更接近人类听觉感知的形式。
- 非线性刻度:Mel滤波器基于Mel刻度,这是一个模仿人耳听觉感知的刻度。在这个刻度上,相等的刻度间隔代表着人耳感知到的相同的频率差异。
- 三角形滤波器组:在频谱上,Mel滤波器呈现为一系列的重叠三角形。这些滤波器在低频区域紧密一些,而在高频区域则较为稀疏。这正是为了模拟人耳在低频和高频对声音的不同敏感度。
- 应用于频谱:当你有一个音频信号的频谱时(通常是通过快速傅里叶变换得到的),你可以用Mel滤波器组来"过滤"它。这样,你得到的结果就是一个更加接近人耳听觉的频率表示。
对数处理(log)
对数处理在语音处理和很多其他的信号处理应用中是非常常见的。在MFCC特征提取中,对数处理主要有以下目的:
- 模拟人耳的感知特性:人的听觉系统对声音的感知是对数尺度的,而不是线性的。这意味着当声音的强度加倍时,我们并不感到其响度加倍。通过对信号的幅度应用对数运算,我们可以更接近地模拟人的听觉感知。
- 压缩动态范围:对数转换可以减少信号的动态范围,使得大的值和小的值之间的差异不那么显著。这可以增强小的特征,使它们在后续的处理中更加显著。
- 增加数据的区分度:对数处理后,原本接近的值之间的差异可能会变大,使得这些值在某些计算中更容易被区分。
- 数值稳定性:在某些情况下,例如在Mel滤波器组应用后,幅度谱的某些部分的值可能非常接近于0。直接应用DCT可能会导致数值不稳定。通过先应用对数处理,可以避免这种情况,确保数值的稳定性。
在MFCC的计算过程中,对数处理主要是为了模拟人的听觉感知,并使得特征更具区分性。
离散余弦变换(DCT)
DCT基于余弦函数,可以将信号从其原始域(例如时间域或频域)转换到另一个称为“倒谱”的域。从一个频域表示(Mel滤波器组的输出)转换到另一个频域表示(倒谱)
动态特征提取 (Dynamic feature extraction)
动态特征提取是音频信号处理中常用的一种方法,主要是为了捕获音频信号的时间动态特性。基于时间的一阶和二阶导数是提取这些动态特性的常用手段,这些导数也称为 delta(一阶导数)和 delta-delta(二阶导数)特征。
- Delta (一阶导数)
Delta特征表示的是音频特征如何随时间变化。它们是通过对连续帧的特征系数取差分得到的,可以被看作是特征的一阶导数。数学上,delta特征可被定义为:
- Delta-Delta (二阶导数)
Delta-delta特征提供了特征变化的加速度信息,可以被看作是特征的二阶导数。它们是通过对delta特征进行同样的差分操作得到的。这些特征有助于提供声音的精细变化,如声调的细微变化。
音频信号中的音素通常是非常短暂的,并且它们的声学表示受到前一个音素和后一个音素的影响。这意味着,为了准确识别一个音素,需要考虑其在时间上的上下文。Delta和Delta-Delta特征为模型提供了这种上下文信息,有助于提高识别的准确性。
例如,音素/b/和/p/在声学上可能非常相似,但它们的动态特性(即如何从一个音素过渡到另一个音素)可能有所不同。通过考虑这些动态特性,模型可能会更容易地区分这两个音素。
总之,Delta和Delta-Delta特征提供了关于音频信号如何随时间变化的信息,这对于许多音频和语音识别任务来说是非常有价值的。
Hidden Markov Models
Likelihood computation (forward algorithm)
状态转移矩阵、输出概率、初始状态概率分布矩阵已知,观测值(输出)可以观测,状态不可知
- 模型评估问题:给定模型,计算出现观察序列的概率
- 穷举法:列出所有构成观测序列的可能性,分别计算概率,最后求和(时间复杂度为,T为序列长度,N为输入的状态个数)
- 前向算法:
- 后向算法:从后往前推推算输出概率
Finding the most probable state sequence (Viterbi algorithm)
- 最佳路径问题
Viterbi是从S到之后的每个点都只保留一条最大的路径,依次循环下去,直到到达E
Estimating the parameters (forward-backward and EM algorithms)
因为通常来说,我们只有知道了精确的男女身高的正态分布参数我们才能知道每一个人更有可能是男生还是女生。反过来,我们只有知道了每个人是男生还是女生才能尽可能准确地估计男女各自身高的正态分布的参数(MLE函数求梯度,令梯度等于0即为所求的最值)。 而EM算法就是为了解决“极大似然估计”这种更复杂而存在的 参考链接:
- 模型训练问题
- 前向-后向算法
- 在给定观测下每个时间点每个状态的概率(平滑概率)。
- 状态转移的期望次数,这是参数估计(如Baum-Welch算法)中的一个关键步骤。
可以用于计算:
EM (Expectation-Maximization)
初始设置一个分布,之后根据分布将元素分类,计算每一类中的分布,更新分布;再根据分布将元素分类,计算每一类中的分布;……直到两个分布收敛,不再更新。
- E:求在观测数据的前提下隐变量的期望
- M:求经过隐变量改写的似然函数的极大
Baum-Welch algorithm
对于EM算法的理解- 作者:王大卫
- 链接:https://tangly1024.com/article/note:ASR
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。