Kaldi 上提供了很多例子让我们学习,这里有一个 Kaldi 上提供例子的列表:
http://kaldi-asr.org/doc/examples.html
但是大部分的数据库来源于LDC,并且需要成为会员才能下载。
我们这里使用一个叫做 TIMIT 的例子,当然他也是需要付费才能使用的数据集。
然而幸运的是我们可以在这个链接里找到所有的内容:
http://www.fon.hum.uva.nl/david/ma_ssp/2007/TIMIT/
因为版权问题我不准备提供直接下载的链接,但是我作为老司机可以指一条路:wget -r
,剩下的就看你自己的造化了。
数据拿到后,目录下会多出很多 .html
的文件。我这里写了一个脚本用于删除这些多余的文件,并将小写目录转换成大写目录(在 Kaldi 的 TIMIT 脚本中写出的目录都是大写的):
|
|
终于我们获得了一个完整的 TIMIT 的数据集,整个数据集内的文件一共有 666.8 MB。
运行 TIMIT 示例脚本
接下来我们终于可以开始使用 Kaldi 提供的一些例子来跑跑看了。
首先我们需要修改数据集的目录:
|
|
然后就可以
|
|
非常不幸,我们在运行脚本的时候回遇到这样的错误:
|
|
关于这个问题的出现,请参考:http://stackoverflow.com/questions/4412945/case-insensitive-search-replace-with-sed/4412964#4412964,原因在于 Mac 上的 sed
并不是标准的 GNU 实现,所以我们需要安装 GNU sed
。
我们可以在 Mac 上重新安装 GNU sed
来解决这个问题:
|
|
如果你没有
brew
请面壁思过。
安装完成后,我们会得到这样一个错误:
|
|
又是 Mac 的坑,awk gensub 是 GNU 上的一个扩展,Mac 上没有实现。
|
|
装好后,再执行
|
|
输出。但是,依然还是有错:
|
|
好吧,我们还要去装 extras/install_irstlm.sh
。
装完后,我们终于能够完成第一部分的脚本,我们就能够看到
|
|
很可惜,我们还是不能完整的运行整个 run.sh
脚本,我们会得到:
|
|
这是因为 TIMIT 的这个例子部署在多机器上,我们想要在本地运行所有的任务,需要修改 cmd.sh
中的内容:
|
|
至此,我们再重新运行
|
|
便能运行完整个脚本,但是这非常依赖时间,我的本子配置如下:
|
|
运行情况如图所示: