OfficialKaldi(二十九)| Kaldi的特征提取(翻译注解)

介绍
我们的特征提取和波形读取代码旨在创建标准的MFCC和PLP功能,设置合理的默认值,但保留人们最可能想要调整的选项(例如,梅尔箱的数量,最小和最大频率截止,等等)。此代码仅从包含pcm数据的.wav文件中读取。这些文件通常后缀为.wav或.pcm(尽管有时将.pcm后缀应用于sphere文件;在这种情况下,必须转换该文件)。如果源数据不是wave文件,那么用户可以找到一个命令行工具来对其进行转换,但是为了覆盖一个常见情况,我们确实提供了sph2pipe的安装说明。
命令行工具compute-mfcc-feats和compute-plp-feats计算功能。与其他Kaldi工具一样,不带参数运行它们会提供选项列表。示例脚本演示了这些工具的用法。
计算MFCC功能
在这里,我们描述了如何通过命令行工具compute-mfcc-feats计算MFCC功能。该程序需要两个命令行参数:一个rspecifier用来读取.wav数据(由话语索引)和一个wspecifier来写入这些功能(由话语索引);有关这些术语的更多说明,请参见表概念指定表格式:wspecifiers和rspecifiers。在典型的用法中,我们将数据写入一个大的“存档”文件,但也写出一个“ scp”文件以方便随机访问。请参阅同时写入档案和脚本文件进行解释。该程序不会添加增量功能(为此,请参阅add-deltas)。它接受–channel选项来选择通道(例如–channel = 0,–channel = 1),这在读取立体声数据时很有用。
MFCC特征的计算是通过Mfcc类型的对象完成的,该对象具有函数Compute()来从波形中计算特征。
总体MFCC计算如下:
  • 计算出文件中的帧数(通常为25 ms帧,每次偏移10ms)。
  • 对于每一帧:
    • 提取数据,进行可选的抖动,预加重和直流偏移消除,然后将其乘以开窗函数(此处支持各种选项,例如汉明)
    • 计算此时的能量(如果使用对数能量而不是C0)。
    • 进行FFT并计算功率谱
    • 计算每个熔炉中的能量;这些是例如23个三角形重叠的条带,其中心在mel频域中均等间隔。
    • 计算能量的对数并进行余弦变换,并保持指定的尽可能多的系数(例如13)
    • 可选地进行倒谱提升;这只是系数的缩放比例,可以确保它们具有合理的范围。
三角形梅尔箱所覆盖的频率范围的上限和下限由–low-freq和–high-freq选项控制,它们通常分别设置为接近零和奈奎斯特频率,例如–low-freq = 20和–high-freq = 7800(用于16kHz采样语音)。
这些功能在许多方面与HTK功能有所不同,但是几乎所有这些功能都与具有不同的默认设置有关。使用选项–htk-compat = true并正确设置参数,可以非常接近HTK功能。我们不支持的一种可能重要的选择是能量最大归一化。这是因为我们更喜欢可以以无状态方式应用的归一化方法,并且希望保持特征计算,以便原则上可以逐帧完成并且仍然给出相同的结果。但是,程序compute-mfcc-feats确实具有选项–subtract-mean减去特征的均值。这是根据每个发音完成的;每个说话者有不同的方法(例如,在脚本中搜索“ cmvn”,即倒谱均值和方差归一化)。
计算PLP功能
在早期阶段,用于计算PLP功能的算法类似于MFCC。稍后我们可能会在本节中添加更多内容,但现在参见Hynek Hermansky撰写的“语音的线性感知线性预测(PLP)分析”,美国声学学会杂志,第1卷。87号 4,第1738–1752页(1990年)。
功能级别的人声道长度归一化(VTLN)。
程序compute-mfcc-feats和compute-plp-feats接受VTLN扭曲因子选项。在当前脚本中,这仅用作初始化VTLN线性版本的线性变换的方法。VTLN通过移动三角频率仓的中心频率的位置来起作用。使频率仓移动的扭曲函数是频率空间中的分段线性函数。要了解它,请记住以下数量:
0 <=低频率<= vtln-低
此处,低频和高频是在标准MFCC或PLP计算中使用的最低和最高频率(较低和较高的频率被舍弃)。vtln-low和vtln-high是VTLN中使用的频率截止,其功能是确保所有mel bin均具有合理的宽度。
我们实现的VTLN翘曲函数是一个分段线性函数,具有三个段,将区间[low-freq,high-freq]映射到[low-freq,high-freq]。令翘曲函数为W(f),其中f为频率。中心线段将f映射到f / scale,其中“ scale”是VTLN扭曲因子(通常在0.8到1.2的范围内)。下段与中间段的连接在x轴上的点是定义的点f,因此min(f,W(f))= vtln-low。x轴上的中间段与上段连接的点是定义的点f,因此max(f,W(f))= vtln-high。下段和上段的斜率和偏移量由连续性和W(低频率)=低频率且W(高频率)=高频率的要求决定。此翘曲功能与HTK不同。在HTK版本中,“ vtln-low”
合理的设置如下(对于16kHz采样语音);请注意,这反映了我们对合理值的理解,而不是任何非常仔细的调整实验的产物。
低频率
低电压
高电压
高频率
奈奎斯特
40
60
7200
7800
8000
 

posted on 2020-12-12 23:59  AI大道理  阅读(378)  评论(0编辑  收藏  举报

导航