Feature extraction (kaldi 翻译+个人理解)

2023-11-22 19:58

本文主要是介绍Feature extraction (kaldi 翻译+个人理解),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

kaldi原文地址:http://www.kaldi-asr.org/doc/feat.html

Introduction:

我们的特征抽取和读波形的代码旨在创建标准的MFCC和PLP特征,在程序中已经设置好合理的默认值并且还留下了可选择项使用户可以适度调整,比如mel bins的数目,频率截断值得最大值和最小值。这个代码值读包含pcm数据的wav文件。这些文件普遍都有wav和pcm的后缀(尽管有时pcm后缀的文件被应用在sphere files中(不明觉厉))。在这种情况下,这文件就会被转换。如果源数据不是一个wave文件,然后就取决于用户用命令行工具去转换它,但为了掩盖一个普通情况,我们为sph2pipe提供一个安装指导。这个命令行工具compute-mfcc0feats和compute-plp-feats计算这些特征,和其他kaldi工具类似,不带参数运行他们会给出一个选项列表。scripts中的例子展示了这些工具的用法。

computing MFCC features:

通过命令行工具compute-mfcc-feats,我们描述MFCC特征使如何被计算的。这个项目需要两个命令行参数:一个rspecifier(度wav数据,indexed by utterance) ,另一个是wspecifier(用来写特征,indexed by utterance)。

kaldi把数据写成一个大的archive文件,同时也写一个scp文件方便的随机访问。这个项目不添加delta特征,kaldi也接受一个选项-channel来选择channel(如-channel=0,-channel=1),当读stereo(立体声)数据时会起作用。

MFCC特征的计算是通过Mfcc类型对象完成的,这是一个Compute()函数来计算来自waveform的特征。

1 得到文件中帧的数目(典型的是25ms帧长10ms的帧移)

2 对于每一帧:

  2.1 抽取数据,做可选抖动、预相位和直流偏移消除,用窗函数对其进行相乘(如汉明窗)

  2.2 算出这个点的能量(如果用log-energy,而不是C0)

  2.2 做FFT变换,计算能量谱。

  2.3 计算每一个mel bin的能量,例如,23个三角形重叠箱,其中心在mel频域中等距分布

  2.4 计算log能量,并进行cos变换,保持指定的系数(如13)

  2.5 有选择地做倒谱抬举,这只是一个系数缩放,确保其在一个合理的范围

频率低的值或者高的值都被截断了,通过选项-low-freq和-high-freq,总被设置为0和奈奎斯特频率,如(对于16kHZ采样的语音来说,-low-fre1=20,-hith-freq=7800 )。

该工具提取的特征与htk提取的特征不同,其大多因为默认的参数不同导致的,设置选项-htk=true并且正确设置参数,从理论上来讲是接近HTK特征的。一个可能重要的选项是我们不支持能量max-normalization。这是因为我们你们更偏向于可以以无状态方式应用的标准化方式。希望保留特征计算,以便原则上可以逐帧进行,并且仍然给出相同的结果。但是命令行compute-mfcc-feats有一个选项是-subtract-mean来减去特征的均值。这会在每帧上都进行,对于每个人有不同的处理方式(如cmvn,意味着谱平均和方差标准化)。

Computing PLP features

在前面阶段,计算PLP和计算MFCC是类似的,感知线性预测(Perceptual linear predictive, PLP).

 

Feature-level Vocal Tract Length Normalization(VTLN)

特征级声道长度标准化。

命令行compute-mfcc-feats和compute-plp-feats都接受一个VTLN变形因子选项。在当前scripts中这仅仅被当作是VTLN线性版本的一种初始化线性变换的方法。VTLN的作用是移动三角形频率箱的中心频率位置。在频率空间中,移动频率箱的翘曲函数是一个分段线性函数要理解它,请记住以下数量0 <= low-freq <= vtln-low < vtln-high < high-freq <= nyquist。

我们执行的VTLN翘曲函数是一个分段的函数,一共分为三段映射到[low-freq,high-freq],设该翘曲函数为W(f),其中f就是频率。中心段将f映射为f/scale,其中scale为VTLN的翘曲因子(通常设置在0.8-1.3之间)。X轴的下段与中间段相连的点是f点,使得min(f,W(f))=vtln-low。X轴的下段与中间段相连的点是f点,使得max(f,W(f))=vtln-high.低段和高段的斜坡于偏置由连续性决定,并且满足W(low-freq)=low-freq and W(high-freq)=high-freq,这个变形函数于HTK的不同,在HTK的版本中,“vtln-low”和“vtln-high”量被解释为X轴上不连续发生的点。这就意味着vtln-high变量需要基于已知翘曲因子的范围来认真选择(否则空mel bins这种情况会发生)。

对于16k的语音数据来说,可参考如下设置

这篇关于Feature extraction (kaldi 翻译+个人理解)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分