使用kaldi进行语音自动切分、模型训练和强制对齐

1 篇文章 2 订阅
1 篇文章 0 订阅

这里,主要介绍一下网上的教程,经过一步步实验,对某些可能让人容易误解的地方进行注释。

1. 只有原始录音和音素标注,进行初次以及多轮的单音素、三音素模型训练,并且基于这些模型进行语音切分:

http://pages.jh.edu/~echodro1/tutorial/kaldi/kaldi-training.html

手工实验下来,只有两个地方略微不同。

1. 网上谈到要在lexicon.txt的顶部加入<oov> <oov>,然后在silence_phones.txt中加入oov。在初次进行训练时,他给的命令是: 

cd mycorpus
utils/prepare_lang.sh data/local/lang 'OOV' data/local/ data/lang

这里出错了,说OOV没有定义。
所以,实际上,在lexicon顶部要加入的是 oov oov,没有尖括号,小写。在silence_phones.txt中写入的也是oov,小写,没有尖括号。那么在这个命令中,要写成'oov',这样才能对齐。其实,可以把oov都换成sp,等,任何符号,表示静音段或者不认识的音素。
2. 写入silence_phones.txt的代码,作者写的是:

echo –e 'SIL'\\n'oov' > silence_phones.txt

我用的ubuntu 16.X,这个命令生成的phones.txt是一行 -e SIL\noov。显然,这不是想要的,我们要生成的是两行,第一行是SIL,第二行是oov。
3. 偶尔会有些路径上的不一致。不过,至少,在这个教程里,绝大部分路径是一致的。这个教程与接下来的强制对齐的路径略有不同,主要是 exp/tri4a_ali,后者写的是exp/tri4a_alignment。

2. 在第一个教程的基础上,进行强制对齐。
http://pages.jh.edu/~echodro1/tutorial/kaldi/kaldi-forcedalignment.html

我运行完第4步,完成了强制对齐文件ctm文件的获取。基于这个文件和data/lang/phones.txt等就可以抽取出想要的音素对齐结果了,不用再使用他的工具了。其实,主要是我看不懂.R文件,暂时不想学,所以,这一步,我可以直接用python生成最终的TextGrid文件了,一步到位。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值