语音识别:安装编译kaldi详细过程及遇到的一些问题汇总(代码片段)

Keep828 Keep828     2023-01-28     248

关键词:

语音识别-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下安装编译。此时会生成文件而非外链。

解决方法如下:

  1. 直接在ubuntu下 git clone 项目并解压安装

  2. 下载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安装成功!

感谢:

  1. 基于kaldi和CVTE开源模型的中文识别
  2. [2019.6.21]Ubuntu下Kaldi完整安装步骤以及初步跑通过程
  3. Kaldi安装(ubuntu)

kaldi语音识别工具编译问题记录(踩坑记录)(代码片段)

...最近由于项目需要要研究下ASR语言识别,用到了Kaldi语音识别工具,Kaldi是一个语音识别的工具箱,由C++语言开发,外围用shell脚本或其他脚本调用。这里主要记录下一在编译 查看详情

语音识别工具kaldi下载与安装(代码片段)

1、下载Kaldi是用C++编写的开源语音识别工具包,在ApacheLicensev2.0下免费提供。Kaldi旨在提供灵活且可扩展的组件,包括多种语音信号处理,语音识别,声纹识别和深度神经网络。git下载地址:https://github.co... 查看详情

语音识别工具kaldi下载与安装(代码片段)

1、下载Kaldi是用C++编写的开源语音识别工具包,在ApacheLicensev2.0下免费提供。Kaldi旨在提供灵活且可扩展的组件,包括多种语音信号处理,语音识别,声纹识别和深度神经网络。git下载地址:https://github.co... 查看详情

语音识别工具kaldi下载与安装(代码片段)

1、下载Kaldi是用C++编写的开源语音识别工具包,在ApacheLicensev2.0下免费提供。Kaldi旨在提供灵活且可扩展的组件,包括多种语音信号处理,语音识别,声纹识别和深度神经网络。git下载地址:https://github.co... 查看详情

语音识别工具asv-subtools介绍与安装(代码片段)

...地址:https://github.com/Snowdar/asv-subtools2、安装安装Kaldi语音识别工具,具体参考:【语音识别工具】kaldi下载与安装新建工程文件mkdir-pkaldi/egs/xmuspeech/sre克隆代码到指定文件cdkaldi/egs/xmuspeech/sregitclonehttps://github.com/Snowdar/a... 查看详情

[转]kaldi语音识别

转:http://ftli.farbox.com/post/kaldizhong-wen-shi-bie Kaldi语音识别1.声学建模单元的选择1.1对声学建模单元加入位置信息2.输入特征3.区分性技术4.多音字如何处理?5.NoiseRobustASR6.DeepLearning[DNN/CNN替换GMM]7.在手机等资源受限设备author:Feiten... 查看详情

语音识别工具asv-subtools介绍与安装(代码片段)

1、下载ASV-Subtools是基于Pytorch和Kaldi开发的,主要用于说话人识别、语言识别等任务。ASV-Subtools包含三个主要分支:基本Shell脚本:数据处理、后端评分(大多数基于Kaldi)Kaldi:基本模型的训练(x-vector、TDNN、F-TDNN和多任务学习x-... 查看详情

语音识别工具asv-subtools介绍与安装(代码片段)

1、下载ASV-Subtools是基于Pytorch和Kaldi开发的,主要用于说话人识别、语言识别等任务。ASV-Subtools包含三个主要分支:基本Shell脚本:数据处理、后端评分(大多数基于Kaldi)Kaldi:基本模型的训练(x-vector、TDNN、F-TDNN和多任务学习x-... 查看详情

kaldi之父danielpovey,我为啥选择在小米开发下一代kaldi

...本文约3185字,建议阅读6分钟本文介绍Kaldi之父DanielPovey对语音识别领域技术发展的想法。在2019年小米开发者大会上,Kaldi之父DanielPovey以小米首席语音科学家的身份第一次和国内开发者见面,并表示将继续在小米进行Kaldi的版本... 查看详情

kaldi的timit实例一

TIMIT语音库是IT和MIT合作音素级别标注的语音库,用于自动语音识别系统的发展和评估,包括来自美式英语,8个地区方言,630个人。每个人读10个句子,每个发音都是音素级别、词级别文本标注,16kHz,16bit。注意:不用使用TIMIT配... 查看详情

windows下编译kaldi遇到的一些问题--openfst(代码片段)

...来。首先,系统上要装有cmake,vs2017,git等执行下面代码,安装编译openfst$gitclonehttps://github.com/kkm000/openfst.git$cdopenfst$mkdirbuild64$cdbuild64$cmake-G"VisualStudio152017Win64"../然后,原文说,最后一条指令通常将会输出看起来像下面一样的内容,... 查看详情

[语音识别]kaldi--aidatatang_200zh脚本解析:获取对齐文件(对指定的数据进行对齐,作为新模型的输入)(代码片段)

输入:tree&final.mdl&text&L.fst&feats输出:ali.JOB.gz(根据重新构建的图产生)&final.mdl(cpfrom训练过程的最终结果)steps/align_si.sh--cmd"$train_cmd"--nj10\\data/traindata/langexp/monoexp/mono_ali||exit1;流程:1. 查看详情

[语音识别]kaldi--aidatatang_200zh脚本解析:语言模型准备(代码片段)

输入:data/local/dict输出:data/lang(PhoneSets),(Lcompilation)...可选参数:--num-sil-states<numberofstates>(静音音素的状态数,预设是5)--num-nonsil-states<numberofstates>(非静音音素的状态数,预设是3)--position-dependent-phone 查看详情

[语音识别]kaldi--aidatatang_200zh脚本解析:词典准备(代码片段)

输入:text(所有录音的分词文本信息-如果是自己的数据没有人工分词可能要提前jieba等工具分词一下)输出:data/local/dict文件夹(含extra_questions.txt、lexicon.txt、silence_phones.txt、nonsilence_phones.txt、optional_silence.txt等文件)local/prepare_di... 查看详情

[语音识别]kaldi--aidatatang_200zh脚本解析:环境配置(代码片段)

cmd.sh 硬件配置(单机/集群配置,单机修改成run.pl)path.sh 环境变量配置(导入环境变量)data语料库位置data_url下载语料库的url(中国镜像已经关闭)../cmd.sh##You'llwanttochangecmd.shtosomethingthatwillworkonyour 查看详情

[语音识别]kaldi--aidatatang_200zh脚本解析:数据集介绍

...ff0c;wav,单声道录音环境安静的室内,噪音不影响语音识别录音内容30万条口语化句子录音内容30万条口语化句子录音人6,408人男性2,999人,女性3,301人录音人≤20岁1,481人,21~30岁4,412人,31~40岁244人,40岁以上... 查看详情

[语音识别]kaldi--aidatatang_200zh脚本解析:数据准备(代码片段)

输入:解压后的语料库路径(data/aidatatang_200zh)输出:text,wav.scp,utt2spk,spk2utt#DataPreparation:generatetext,wav.scp,utt2spk,spk2uttlocal/data_prep.sh$data/aidatatang_200zh/corpus$data/aidatatang_200zh/transcript| 查看详情

[语音识别]kaldi--aidatatang_200zh脚本解析:下载数据(代码片段)

输入:语料库位置($data)数据下载路径($data_url)输出:在$data文件夹下新增解压后的语料库(corpus和transcript文件夹,corpus含音频文件和说话人信息等)可选参数:--remove-archive决定是否要在解压后删除data压缩包(默认关闭)loca... 查看详情