一、下载Kaldi模型
下载地址:GitHub - kaldi-asr/kaldi: kaldi-asr/kaldi is the official location of the Kaldi project.
二、按照INSTALL文件编译
(一)在tools/中安装
查看其中的INSTALL
1. 要检查Kaldi的依赖项,并安装
(1)检查依赖项
extras/check_dependencies.sh
每次运行,会给出安装依赖的建议。安装完每一步依赖,再运行一遍,直到可以成功运行
使用以下命令,安装所需要的依赖包:
这个命令将会安装 g++
, make
, automake
, autoconf
, git
, sox
, gfortran
, libtool
,
subversion
, 和 python2.7
。
sudo apt-get install g++ make automake autoconf git sox gfortran libtool subversion python2.7
继续跳出安装建议:
sudo apt-get install zlib1g-dev
安装intel-mkl-full
sudo apt-get install intel-mkl-full
安装过程会跳出如下提示:
使用Tab按键,选中确定后回车,下列步骤选择默认"否",继续安装
此时,再运行extras/check_dependencies.sh应该会看到如下反馈,表示依赖安装完毕。
(2)兼容问题的处理方案(上面一步执行成功的请跳过)
如果extras/check_dependencies.sh因为兼容问题不能正确执行,可以按照下列格式,指定你拥有的g++最新版本执行。这里的4.8可以更换为您系统当前的g++版本。
CXX=g++-4.8 extras/check_dependencies.sh
2. 编译
(1)在tools文件夹下执行下列命令:
make
安装完毕,显示如下:
(2)兼容问题的处理方案(上面一步执行成功的请跳过)
如果执行make时因为兼容问题不能正确执行,可以按照下列格式,指定你拥有的g++最新版本执行。这里的4.8可以更换为您系统当前的g++版本。
make CXX=g++-4.8
3. CPU配置
如果您有多个CPU并希望加快速度,可以通过向make提供"-j"选项来进行并行构建,例如使用4个CPU:
make -j 4
执行完毕,显示如下:
4. 安装模型
(1)按照提示,安装IRSTLM
extras/install_irstlm.sh
执行完毕,显示如下:
(2)继续执行下列安装代码
extras/install_kaldi_lm.sh
5. 设置环境变量
按照上面安装后的提示:“Please source tools/env.sh in your path.sh to enable it” 设置环境变量。
上一步操作后,当前目录为kaldi-master/tools,需要退回到kaldi-master目录下,使用cd命令退一层目录,执行环境变量配置命令, 将tools/env.sh
脚本中的命令和设置加入到当前Shell的环境中。
cd ..
source tools/env.sh
执行结果如下
(二)在src/中安装
其中的INSTALL文件,显示如下:
上述文件:
这些说明适用于类UNIX系统(这些步骤已在各种Linux发行版、Darwin和Cygwin上运行过)。对于原生Windows编译,请参见…/windows/INSTALL。
您必须首先完成…/tools/INSTALL中的安装步骤(编译OpenFst;获取ATLAS和CLAPACK头文件)。
1. 执行./configure --shared
./configure --shared
2. 编译命令
(1)执行命令一:
第一次执行使用A.第一种执行方式,非第一次执行,使用B. 第二种执行方式
A. 第一种执行方式:直接生成依赖关系,同时运行的作业数被固定为2。
make depend -j 2直接生成依赖关系,同时运行的作业数被固定为2。
其中,数字 2 是调用cpu核心数,一半为当前硬件cpu核心数的一半以内为宜。如果不做设置,该命令不会限制并行作业的数量,甚至会压倒强大的工作站,因为Kaldi构建是高度并行化的。
当前使用虚拟机是4核cpu,所以执行时选择了使用2颗核心。执行完毕显示如下:
B. 第二种执行方式:首先会执行清理操作,然后生成依赖关系,同时运行的作业数由系统CPU核心数决定。
make -j clean depend
执行完毕后,显示如下:
(2)执行命令二:
make -j 2
再次强调:其中,数字 2 是调用cpu核心数,一半为当前硬件cpu核心数的一半以内为宜。如果不做设置,该命令不会限制并行作业的数量,甚至会压倒强大的工作站,因为Kaldi构建是高度并行化的。
编译完成显示如下:
(三)测试
1. yesno语音识别
参考网站:刘永浩记__Kaldi理解与部署cvte模型_kaldi cvte-CSDN博客
进入egs/yesno/s5文件夹,执行run.sh,命令如下:
./run.sh
在执行该脚本的时候,会首先从kaldi官网上下载yesno例子的wav文件,然后再对其进行训练和识别
执行结束显示如下:
在最后显示:%WER 0.00 [ 0 / 232, 0 ins ,0 del ,0 sub ],表示识别结果非常准确。
上述执行结果,表示,总共单词个数为232个,多认的(ins)、少认的(del)、认错的(sub)单词数加起来,去除以总共测试的单词数(N),WER反映了识别的准确率,该值越小越好。
2. 以aishell为例的语音识别过程
参考网站:kaldi做语音识别_语音识别_Paprika_coin-GitCode 开源社区
cd egs/aishell/s5
修改cmd.sh的配置,我是用的是geany,可以通过sudo apt install geany下载安装。
geany cmd.sh
(1)将cmd.sh修改为:
原文件的queue是基于集群的,这里我们用本机/服务器跑,因此改为run.sh。
(2)新建目录
首先在根目录下建立路径:/export/a05/xna/data然后下载数据集。
回到根目录命令:
cd /
新建export文件夹,并进入该文件夹,由于在根目录下操作,需要使用sudo
sudo mkdir export
cd export
新建a05文件夹,并进入
sudo mkdir a05
cd a05
新建xna文件夹,并进入
sudo mkdir xna
cd xna
新建data文件夹
sudo mkdir data
(3) 执行下载数据并训练
之后输入下列命令开始执行,这里下载数据集要在run.sh前面加sudo命令,这是路径的缘故。下载数据集用到的脚本是local/download_and_untar.sh 需要下载两个数据文件:data_aishell 和 resource_aishell.
sudo ./run.sh
就开始进行语音识别过程了。强烈建议逐行运行,运行当前行时,把其他暂时注释调,这样清楚看见每个阶段的过程。
由于我的虚拟机只能使用2个CPU核心,无法使用GPU,处理速度太慢。这里不展示最后结果。