语音识别:安装编译Kaldi详细过程及遇到的一些问题汇总
Posted Keep828
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音识别:安装编译Kaldi详细过程及遇到的一些问题汇总相关的知识,希望对你有一定的参考价值。
语音识别-Kaldi的安装编译实录(Ubuntu环境)
本篇博客用于记录一次用开源语音识别(ASR)工具Kaldi来实现中文语音识别功能的经历,记录一路遇到的一些问题。希望本篇文章可以给广大有需要的人提供一些帮助,也以防之后若再做此方向的东西会重蹈覆辙。
注意:本文是在Ubuntu64位的虚拟机环境下运行的,通过阅读Kaldi官方的INSTALL文件中指出的,似乎不能在Windows下正常编译使用。
Kaldi简介:Kaldi是当前最流行的开源语音识别工具(Toolkit),它使用WFST来实现解码算法。它自带了很多特征提取模块,能提取MFCC/ivector/xvector等语音特征;也自带了很多语音模型代码,可以直接使用或重新训练GMM-HMM等模型;它还支持GPU进行训练。可以说是功能很强大了。更厉害的是,你只需要简单的SHELL编程,就能使用kaldi。kaldi作为一个工具,不需要像库一样进行大量编程,所以使用门槛其实不高。
对应大部分Kaldi的用户来说,我们只需要使用脚本和配置文件就可以完成语音识别系统的训练和预测了。所以我也选择了用Kaldi来完成导师安排的语音识别任务。
一、配置Kaldi环境
安装VMWare虚拟机并安装了Ubuntu,我的版本是Ubuntu20.04.3,安装过程参考:Ubuntu18.04安装教程
Kaldi官方教程:https://kaldi-asr.org/doc/install.html
安装下载,我是从github上直接下载zip然后解压的,官方github链接:https://github.com/kaldi-asr/kaldi
注意,如果下载zip到win上,一定要将zip传输到虚拟机再解压,不要解压后再复制到虚拟机!会出错的!
或者!
也可以使用git命令将其下载到本地,在终端键入:
git clone https://github.com/kaldi-asr/kaldi.git kaldi --origin upstream
======== 下面这部分是我准备thchs30数据集的部分,和本文编译kaldi内容无关 ========
在Ubuntu中安装清华大学开源的thchs30数据集:http://www.openslr.org/18/
这里面的三个文件都要下,一共约8G,下载好后解压放到Kaldi的目录中对应的thchs30目录下新建的thchs30-openslr目录(该目录由自己创建)下:
例如,我的目录如下:
/home/keep/Keep/kaldi-master/egs/thchs30
这个thchs30-openslr是自己创建的,进去将下载来的3个数据集文件压缩到这个文件夹内即可。
在传输数据集的过程中我遇到了Ubuntu磁盘空间满的问题,但是我刚分配了40G,理应不会满,后来我猜测是因为从Win上复制文件到VMWare中可能会有缓存,然后去查了相关文档,发现问题确实如此,解决办法参考了:linux硬盘满了如何处理–ck3208
我的目录里是一个VMWare的dictionary中的./.cache占用了20G的内存,随后我按照上面的博客步骤去释放,问题也就得到了解决。
======== 上面这部分是我准备thchs30数据集的部分,和本文编译kaldi内容无关 ========
二、安装Kaldi依赖包、准备编译
进入kaldi-master项目文件夹,查看./INSTALL,提示需要分别编译tools和src下的文件
在终端键入 cd kaldi-master/tools/extras
键入./check_dependencies.sh
执行该脚本检查包依赖情况
根据提示安装所需要的包
这里遇到了一个问题,是我按提示安装了所有包之后,一直提示我sudo apt-get install zlib1g-dev,我按提示键入命令安装这个zlib提示已安装且是最新版,一直重复得不到解决。
后来尝试先安装它提示的别的包试试,于是尝试安装g++。
先是键入了:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
键入命令:
sudo apt-get update
接着才可以键入安装g++的命令:
sudo apt install g++
中间会提示问是否继续,键入y后回车即可
终于,再次使用./check_dependencise.sh命令查看依赖包提示时已经all OK了。
三、编译
依赖包安装完了,先来编译tools
先cd到tools目录下,键入:
make -j 4 //这个数字4因人而异
#注意:这里的数字4是根据你的虚拟机cpu核心数来的,我这里虚拟机分配了4个核心就输入了4,当然也可以输入<=4的正整数,但是数字越大编译的效率也就越高了,所以看自己来确定这个数字。
编译完提示All done OK.:
编译完tools就可以来编译src了,先cd到src目录下。
键入命令:
./configure
这里出现了如下错误,当我按提示键入了如下图的命令后无果,查阅相关问题,发现了解决办法。
这里需要键入:
sudo apt-get install libatlas-base-dev
此时,再执行:
./configure --shared
看到了SUCCESS表示成功了。
继续依次键入命令:
make depend -j 4
make -j 4
注意:此处的4仍然按照自己分配的CPU核数来修改
键入make
进行编译,make
耗时较长请耐心等待
出现:Done表示成功
现在需要验证一下是否安装成功
进入egs目录,用命令 cat README.txt 查看用例,egs下面包含如voxforge,vystadial_{cz,en},yesno和LDC用例
这里用yesno为例
进入egs/yesno目录,用命令cat README.txt 查看yesno数据集介绍,是一个关于Yes/no识别的简单的数据集
进入egs/yesno/s5目录,执行
./run.sh
这里我出现了这个
考虑到刚刚make编译的过程中重启了一下虚拟机,遂回到scr目录下 重新键入3个命令./configure --shared
, make depend -j 4
, make -j 4
后重新编译再进行此步骤,发现还是解决不了,看到一个同样遇到这个问题的说:
究其原因是在于调用steps/ 和 utils/ 文件夹下的sh文件是报错,找不到文件。发现steps/ 和 utils/ 此时为两个文件。
实际上这两个文件为两个外链文件,类似于windows下的快捷方式。此处本应为外链的形式,但是却变成了两个文件。
错误在于,本人在windows下下载了kaldi的zip包, 解压完之后移动到了ubuntu下安装编译。此时会生成文件而非外链。
解决方法如下:
-
直接在ubuntu下 git clone 项目并解压安装
-
下载zip包在windows, 不解压缩直接传至ubuntu下解压缩并安装。
崩溃了,要重新来一遍了。。艹。。也没办法不是,我去重新来一遍。
最后我用方法2,把zip放到Ubuntu后再解压,然后重新走了一遍步骤二、编译,然后就成功了!
出现%WER 0.00 [ 0 / 232, 0 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10_0.0时,恭喜你,Kaldi安装成功!
感谢:
以上是关于语音识别:安装编译Kaldi详细过程及遇到的一些问题汇总的主要内容,如果未能解决你的问题,请参考以下文章