Kaldi的delta特征

本文详细介绍了Delta特征的概念及其在语音识别中的应用。Delta特征是通过对MFCC特征进行一阶和二阶差分得到的,用于捕捉语音信号的时间变化趋势。文中还对比了Delta特征与splice特征的不同之处。

Delta特征是将mfcc特征(13)经过差分得到的

它是做了一阶二阶的差分

提取的mfcc特征是13维的

然后通过delta就变成了39

一阶差分:

D(P(t))=P(t)-P(t-1)

二阶差分:

D(D(P(t)))=(P(t)-P(t-1))-(P(t-1)-P(t-2))

Delta=Δ=差分

   

   

voxforge/s5/run.sh:116

rm/s5/run.sh:80

vystadial_cz/s5/run.sh:82

都注释了下一行的训练使用delta+delta-delta特征

在这之前,都运行了

steps/align_si.sh --nj "$train_nj" --cmd "$train_cmd" \

--use-graphs true <data-dir> <lang-dir> <src-dir> <align-dir>

"--use-graphs=true"意思是,使用 <src-dir>中的train graph(fsts.JOB.gz)

如果不加上,则默认"use-graphs=false",即用<src-dir>中的tree, final.mdl输入搭配compile-train-graph中生成训练的fst(train graph)

steps/train_deltas.sh是训练一个delta+delta-delta三音素系统(模型)

steps/align_si.sh对delta特征进行apply-cmvn, add-deltas

对lda特征进行apply-cmvn, splice-feats(可选), 用final.mat进行transform-feats

  • delta特征与splice特征的区别

2017/5/20 16:23

[chick](616310753) 16:09:17

delte是显式给出差分

splice是在时间上作扩展

包含了差分信息

但是不是显式给出的,在学习中可能学习不到差分知识,可能学习到别的知识

   

语音研究生求南(287568706) 16:09:58

delta是同一帧复制多次吗?

   

[chick](616310753) 16:10:11

上一帧-当前帧

语音识别原理介绍_V1.3_1034.pdf

分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须 将波形作变换。常见的一种变换方法是提取 MFCC 特征,把每一帧波形变成一 个12维向量。这12个点是根据人耳的生理特性提取的,可以理解为这12个点包含 了这帧语音的内容信息。这个过程叫做声学特征提取。实际应用中,这一步有很 多细节,比如差分、均值方差规整、高斯化、降维去冗余等,声学特征也不止有 MFCC 这一种,具体就不详述了。

   

   

转载于:https://www.cnblogs.com/JarvanWang/p/7499609.html

### 使用Kaldi计算音高特征 在语音处理和分析中,音高是一个重要的声学特性。对于使用Kaldi进行研究或开发工作的人员来说,了解如何利用该工具包有效地提取音高信息至关重要。 为了从音频数据中获取音高特征,在Kaldi中有专门设计的功能模块支持这一操作。具体而言,可以通过`compute-pitch-feats`命令来完成这项任务[^1]。此命令允许用户指定输入波形文件以及输出路径用于存储所得到的音高特征向量。此外,还可以调整参数以适应不同需求下的最佳表现效果。 下面给出一段Python脚本作为示例,展示了怎样调用上述提到的Kaldi工具来进行音高特征的计算: ```python import os from subprocess import call def compute_pitch(wav_scp, output_dir): # 创建输出目录如果不存在的话 if not os.path.exists(output_dir): os.makedirs(output_dir) pitch_ark = f"{output_dir}/pitch.ark" command = [ "compute-pitch-feats", "--verbose=2", "--delta-window=2.5", "--frameshift=0.01", wav_scp, "scp,f:" + pitch_ark.replace(".ark", ".scp"), "| copy-feats ark,t:- ark,scp:{},{}".format(pitch_ark, pitch_ark.replace(".ark", ".scp")) ] joined_command = ' '.join(command) print(f"Executing: {joined_command}") call(joined_command, shell=True) if __name__ == "__main__": # 假设wav.scp包含了指向多个.wav文件的列表 compute_pitch('data/wav.scp', './exp/pitch') ``` 这段代码首先定义了一个名为`compute_pitch`函数,它接受两个参数:一个是`.scp`格式描述了待处理声音样本位置的文件;另一个是指定存放结果的位置。接着设置了一些必要的变量,并构建了一条完整的shell指令字符串,最后执行这条命令从而实现了对给定音频集合中的每一项都计算其对应的音高特征值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值