ASR中数据增广

ASR中数据增广

在ASR中,真实的使用场景中可能语音和训练的数据有差异,导致准确率很低,包括语速,音调,噪音,混响,因此我们在训练的数据加入对这些因素的考量,这个叫做数据增广(Data Augmentation)。

使用sox这个免费工具我们可以改变语速和语调

除了sox,也可以使用ffmpeg。

加噪音和混响可以使用ffmpeg或者Kaldi。

加混响的效果可以参看A study on data augmenta更多... “ASR中数据增广”

ASR之Listen Attention Spell

ASR之Listen Attention Spell

本篇是关于学习LAS的笔记,图片来自这个视频,

和论文 Attention is All You Need

Listen

黄色的三角形代表的是filter,每次filter吃3个feature(一次吃几个feature,可以自定义),然后产生一个数字,三角形向右移动一个feature,然后再拿3个feature,做同样的事情。有很多个这这样的filter,这样就会… 更多... “ASR之Listen Attention Spell”

Kaldi的Phones文件夹下面的文件介绍

Kaldi的Phones文件夹下面的文件介绍

里面共有三种格式 csl, int, txt ,其实内容都是一样的,

align_lexicon
表示对齐文件,是由lexiconp.txt的第一列第三列提取出来生成

context_indep
非正常音素集合,包含(静音(SIL),口语噪声(SPN),非口语噪声(NSN)和笑声(LAU)

silence
静音音素

nonsilence
正常音素 可以认为和上面的silence是… 更多... “Kaldi的Phones文件夹下面的文件介绍”

Kaldi中的topo结构

Kaldi中的topo结构

Kaldi中的topo结构,在每个样例中是以topo文件表示,在代码中是由HmmTopology这个类表示,拓扑结构中的参数的更新会在TransitionModel这个类体现出来。

下面是Kaldi中yesno样例下面的topo文件,文件位置:
egs/yesno/s5/data/lang/topo

这个文件是由utils/gen_topo.pl生成,而这个脚本是在utils/… 更多... “Kaldi中的topo结构”

Kaldi中为什么要计算CMVN

Kaldi中为什么要计算CMVN

CMVN是Cepstral Mean Variance Normalization的缩写,中文直译为倒谱均值方差归一化。这里插一句Cepstral这个词是就是谱(spectrum)这个单词的前4个字母倒过来。

在把MFCC送到解码器之前,kaldi会计算一个CMVN。为什么计算CMVN,下面给出一个理由
实际情况下,受不同麦克风及音频通道的影响,会导致相同音素的特征差别比较大更多... “Kaldi中为什么要计算CMVN”

vimdiff常见操作

vimdiff是一个方便的文本类型的比较工具。命令如下:
$vimdiff file1 file2

默认是窗口被切分成左右2个小窗口,不同之处会高亮显示,可以采用快捷键 ]c 调到下一个不同处,[c调到上一个不同处。

我通常采用这个工具比较代码和合并代码,可以配置git采用vimdiff比较合并代码
$git config –global diff.tool vimdiff
$git config –g… 更多... “vimdiff常见操作”

声学特征iVector及其Kaldi实现

提取流程

  1. UBM
    universal background model[1]
    使用GMM建模,UBM的训练通过EM算法完成,有两种方法:
    • 所有的数据训练出来一个UBM,需要保证训练数据的均衡
    • 训练多个UBM,然后合在一起,比如根据性别分成两个,这样的话可以更有效的利用非均衡数据以及控制最后的UBM。
  2. supervector

使用MAP adaptation对UBM的高斯进行线性插值,获得speaker相关的GMM… 更多... “声学特征iVector及其Kaldi实现”