kaldi中的特征提取

2024-05-13 05:38
文章标签 特征提取 kaldi

本文主要是介绍kaldi中的特征提取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   本翻译原文http://kaldi.sourceforge.net/feat.html,由@煮八戒翻译,@wbglearn校对和修改。

 

特征提取

简介

我们做特征提取和波形读取的这部分代码,其目的是为了得到标准的MFCC(译注:梅尔倒谱系数)和PLP(译注:感知线性预测系数)特征,设置合理的默认值但留了一部分用户最有可能想调整的选项(如梅尔滤波器的个数,最小和最大截止频率等等)。这部分代码只读取wav文件里的pcm(译注:脉冲编码调制)数据。这类文件通常带.wav或.pcm后缀(虽然有时.pcm后缀会用于sph文件;这种情况下必须转换该文件)。假如源数据不是wav类文件,则用户可自由选择命令行工具来转换,而我们提供的sph2pipe工具已能满足一般的情况。

命令行工具compute-mfcc-feats和compute-plp-feats计算特征;同其它Kaldi工具一样,不带参数地运行它们会给出一个选项列表。例子脚本里显示了这些工具的用法。

计算MFCC特征

这里我们介绍如何使用命令行工具compute-mfcc-feats计算MFCC参数。该程序需要两个命令行参数:rspecifier是用来读.wav数据(以发音为索引)和wspecifier是用来写特征(以发音为索引);参见The TableconceptSpecifying Table formats: wspecifiers and rspecifiers获取更多关于这些术语的解释。典型的用法是,将数据写入一个大的“archive”文件,也写到一个“scp”文件以便随机存取;参见Writing an archive and a script file simultaneously解释。程序没有添加增量功能(如需添加,参见add-deltas)。它接收选项-channel来选择通道(如–channel=0, –channel=1),该选项在读取立体声数据时很有用。

计算MFCC特征由Mfcc类型的对象完成,它有Compute()函数可以根据波形计算特征。

完整的MFCC计算如下所示:

·       计算出一个文件中帧的数目(通常帧长25ms帧移10ms)。

·       对每一帧:

o      提取数据,可选做dithering(注:直译为抖动,在这里可以理解为类似归一化的预处理),预加重和去除直流偏移,还可以和加窗函数相乘(此处支持多种选项,如汉明窗)

o      计算该点能量(假如用对数能量则没有C0)

o      做FFT(译注:快速傅里叶变换)并计算功率谱

o      计算每个梅尔滤波器的能量;如23个部分重叠的三角滤波器,其中心在梅尔频域等间距

o       计算对数能量并作余弦变换,根据要求保留系数(如13个)

o       选做倒谱变换;它仅仅是比例变换,确保系数在合理范围。

 

上下截止频率根据三角滤波器界定,由选项–low-freq和–high-freq控制,通常分别设置为0Hz和奈奎斯特频率附近,如对16kHz采样的语音设置为–low-freq=20 和 –high-freq=7800。

Kaldi的特征和HTK的特征在很多方面不同,但是几乎所有这些不同归结于有不同的默认值。用选项–htk-compat=true并正确设置参数,能得到同HTK非常接近的特征。一个可能重要的选项是我们不支持能量最大归一化。这是因为我们希望能把无状态方式应用到归一化方法,且希望从原理上计算一帧帧特征仍能给出相同结果。但是程序compute-mfcc-feats里有–subtract-mean选项来提取特征的均值。对每个语音做此操作;每个说话人可以有不同的方式来提取特征均值。(如在脚本里搜“cmvn”,表示倒谱均值和方差归一化)。

计算PLP特征

计算PLP特征的算法与MFCC的算法前期是一样的。稍后我们也许会在此部分增加些内容,但目前参见Hynek Hermansky《语音的感知线性预测(PLP)分析》,Journal ofthe Acoustical Society of America, vol. 87, no. 4, pages 1738–1752 (1990).

特征级声道长度归一化(VTLN)

程序compute-mfcc-feats和compute-plp-feats接收一个VTLN弯折因子选项。在目前的脚本中,这仅用作线性版的VTLN的初始化线性转换的一种方法。VTLN通过移动三角频率箱的中心频率的位置来实现。移动频率箱的弯折函数是一个在频域空间分段线性的函数。为理解它,记住以下数量关系:

0 <= low-freq <=vtln-low < vtln-high < high-freq <= nyquist

此处,low-freq和high-freq分别是用于标准MFCC或PLP计算的最低和最高频率(忽略更低和更高的频率)。vtln-low和vtln-high是用于VTLN的截止频率,它们的功能是确保所有梅尔滤波器有合适的宽度。

我们实现的VTLN弯折函数是一个分段线性函数,三个部分映射区间[low-freq,high-freq]至[low-freq, high-freq]。记弯折函数为W(f),f是频率。中段映射f到f/scale,scale是VTLN弯折因子(通常范围为0.8到1.2)。x轴上低段和中段的连接点是满足min(f,W(f)) = vtln-low的f点。x轴上中段和高端的连接点是满足max(f, W(f)) = vtln-high的f点。要求低段和高段的斜率和偏移是连续的且W(low-freq)=low-freq, W(high-freq)=high-freq。这个弯折函数和HTK的不同;HTK的版本中,"vtln-low"和"vtln-high"的数量关系是x轴上可以不连续的点,这意味着变量"vtln-high"必须基于弯折因子的可能范围的先验知识谨慎选择(否则梅尔滤波器可能为空)。

一个合理的设置如下(以16kHz采样的语音为例);注意这反映的是我们理解的合理值,并非任何非常细致的调试实验的结果。

low-freq

vtln-low

vtln-high

high-freq

nyquist

40

60

7200

7800

8000


 

这篇关于kaldi中的特征提取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984827

相关文章

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 `FeatureExtraction` 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算(`calculateSmoothness()`)2. 标记遮挡点(`markOccludedPoints()`)3. 特征提取(`extractF

图特征工程实践指南:从节点中心性到全局拓扑的多尺度特征提取

图结构在多个领域中扮演着重要角色,它能有效地模拟实体间的连接关系,通过从图中提取有意义的特征,可以获得宝贵的信息提升机器学习算法的性能。 本文将介绍如何利用NetworkX在不同层面(节点、边和整体图)提取重要的图特征。 本文将以NetworkX库中提供的Zachary网络作为示例。这个广为人知的数据集代表了一个大学空手道俱乐部的社交网络,是理解图特征提取的理想起点。 我们先定义一些辅助函数

语音特征提取方法 (二)MFCC

下面总结的是第四个知识点:MFCC。因为花的时间不多,所以可能会有不少说的不妥的地方,还望大家指正。谢谢。         在任意一个Automatic speech recognition 系统中,第一步就是提取特征。换句话说,我们需要把音频信号中具有辨识性的成分提取出来,然后把其他的乱七八糟的信息扔掉,例如背景噪声啊,情绪啊等等。       搞清语音是怎么产生的对于我们理解语音有很大

Dimension out of range 等报错解决,可以加拼接后的深度特征提取了

报错 Extracting test features for class bagel: 0%| | 0/110 [00:00<?, ?it/s]Traceback (most recent call last):File "/home/cszx/c1/zgp/3D-ADS-main/patchcore_runner.py", line 46, in evaluatemet

跨模态检索研究进展综述【跨模态检索的核心工作在于:①不同模态数据的特征提取、②不同模态数据之间内容的相关性度量】【主流研究方法:基于传统统计分析的技术、基于深度学习的技术】【哈希编码提高检索速度】

随着互联网上多媒体数据的爆炸式增长,单一模态的检索已经无法满足用户需求,跨模态检索应运而生. 跨模态检索旨在以一种模态的数据去检索另一种模态的相关数据。 跨模态检索的核心任务是:数据特征提取 和 不同模态数据之间内容的相关性度量。 文中梳理了跨模态检索领域近期的研究进展,从以下角度归纳论述了跨模态检索领域的研究成果.: 传统方法;深度学习方法;手工特征的哈希编码方法;深度学习的哈希编码方法

Pointnet++改进即插即用系列:全网首发ACConv2d|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入ACConv2d,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一          2.2 步骤二          2.3 步骤三 1.理论介绍 由于在给定的应用环境中

计算特征相关性的方法,特征提取的方法,如何判断特征是否重要

计算特征相关性可以用皮尔逊系数 (公式及含义解释:表示两组数据的线性关系程度,取值为[-1,1]),衡量的是变量之间的线性相关性,简单快速,但是只对线性关系敏感,非线性不适合;计算特征相关性的指标还有互信息MIC和距离相关系数(Python gist包),取值为[0,1]。 特征工程中包含特征选择和特征提取(区别),特征选择用的是Lasso,OMP,WOMP(特征排序)算法(流程讲清楚),

【通俗理解】深度学习特征提取——Attention机制的数学原理与应用

【通俗理解】深度学习特征提取——Attention机制的数学原理与应用 关键词提炼 #深度学习 #特征提取 #Attention机制 #CNN #Transformer #关联特征 #MLP #拟合处理 第一节:Attention机制的类比与核心概念 1.1 Attention机制的类比 Attention机制可以被视为一个“特征筛选器”,它像是一个精细的筛子,在众多的特征中筛选出

kaldi 中run_ivector_common

kaldi 中run_ivector_common.sh 在使用GMM-HMM对音频和文本进行对齐之后,在使用DNN网络的时候,kaldi中会加入说话人信息,一般用ivector特征,kaldi中run_ivector_common.sh 对特征做了进一步的处理: 对特征进行速度上的扰动处理 # perturb the normal data to get the alignment _sp

spark之特征提取

1、特征处理分类 特征抽取:从原始数据中抽取特征 特征转换:特征的维度、特征的转化、特征的修改 特征选取:从大规模特征集中选取一个子集 2、特征提取 2.1、TF-IDF  词频-逆向文件频率;词频TF(t,d)是词语t在文档d中出现的次数。文件频率DF(t,D)是包含词语的文档的个数。 tf=|t|/|d| tf-idf=tf*idf 公式中使用log函数,当词出现在所有文档中