鲲鹏服务器kaldi 运行voxforge例子

网友投稿 604 2022-05-29

1       介绍

Kaldi是当前最流行的开源语音识别工具(Toolkit),它使用WFST来实现解码算法。Kaldi的主要代码是C++编写,在此之上使用bash和python脚本做了一些工具。

voxforge是个收集语音的网址,你可以免费的得到语音库。下载的话你可以用一些批量下载的软件或者利用kaldi/egs/voxforge/s5里的getdata.sh来下载。大概有12.6GB的大小,大家保证你的linux系统有足够的空间来存储。

2       安装准备

华为云购买一台鲲鹏服务器

本文以云服务器KC1实例搭建,云服务器配置如表1-1所示。

表1-1 云服务器配置

项目

说明

规格

kc1.large.2 | 2vCPUs | 4GB

磁盘

系统盘:高IO(40GB)

操作系统要求如表1-2所示。

表1-2 操作系统要求

项目

说明

-

Ubuntu

18.04

在公共镜像中已提供。

Kernel

4.15.0

在公共镜像中已提供。

3       安装kaldi

参考博客:https://bbs.huaweicloud.com/blogs/173186

我安装的目录是/usr/local/kaldi

运行voxforge例子时候,需要online-gmm-decode-faster 和 online-wav-gmm-decode-faster,

online-wav-gmm-decode-faster 用来回放wav文件来识别的;

online-gmm-decode-faster用来从麦克风输入声音来识别的。

参考如下步骤安装:

1)bash extras/install_portaudio.sh

a. 在kaldi/tools目录下运行 bash extras/install_portaudio.sh

该脚本下载pa_stable_v19_20111121.tgz并且解压,执行时候报错:

b. 修改文件:vi config.sub (解决configure: error: cannot guess build type; you must specify one)

查找“x86”内容的位置,在其位置后面增加aarch64类型,具体2处增加:

case $basic_machine in处

(1)

| x86 | xc16x | xstormy16 | xtensa \

改为:

| x86| aarch64 | xc16x | xstormy16 | xtensa \

鲲鹏服务器上kaldi 运行voxforge例子

(2)

| x86-* | x86_64-* | xc16x-* | xps100-* \

改为:

| x86-* | aarch64-* | x86_64-* | xc16x-* | xps100-* \

c. 重新打包:pa_stable_v19_20111121.tgz

rm –rf pa_stable_v19_20111121.tgz

tar –zcvf pa_stable_v19_20111121.tgz portaudio

d. 修改extras/install_portaudio.sh后重新执行

在./configure 后面在加上参数

./configure --prefix=`pwd`/install --with-pic

改为:

./configure --prefix=`pwd`/install --with-pic --host=aarch64 --build=aarch64

extras/install_portaudio.sh

2) 安装online

cd /usr/local/kaldi/src/online

make -j2

3) 安装onlinebin

cd /usr/local/kaldi/src/onlinebin

make -j2

生成 online-gmm-decode-faster 和 online-wav-gmm-decode-faster

5       分析和执行voxforge中online_demo例子

Voxforge目录下有三个子目录,分别是gst_demo,online_demo,s5,其中s5是特征提取,模型训练,得出模型的例子,online_demo是根据模型进行进行在线语音识别,识别麦克风输入,是推理过程。这里分析online_demo例子。

默认模式离线文件解码: online_demo/run.sh

离线在线解码:online_demo/run.sh  --test-mode live

run.sh脚本分析(分析离线语音识别模型):

1)下载online-data.tar.bz2,如果目录下有该语言包,则跳过次步骤,-:

http://sourceforge.net/projects/kaldi/files/online-data.tar.bz2

2)解压,生成online-data,如下为目录结构

--online-data

--audio  //该目录存放wav语言文件

--models

--tri2a

--tri2b_mmi  //脚本中采用此模型

在tri2a或者tri2b_mmi目录下,有模型文件model(tri2a多了一个final.mdl,即model文件的软链接),有转移矩阵文件matrix

说明:

(1)audio:可以将需要测试的wav文件拷贝到此目录

(2)tri2b_mmi目录下的文件是在s5训练中生成的,可以将s5下的exp目录下的final.mdl, s5目录下的exp下的tri下的graph_word里面的words.txt,和HCLG.fst,考到models的tri2a或者tri2b_mmi下,或者拷贝到自己新建的模型目录。

3)将audio目录下的wav文件加入文件列表input.scp

> $decode_dir/input.scp         for f in $audio/*.wav; do             bf=`basename $f`             bf=${bf%.wav}             echo $bf $f >> $decode_dir/input.scp         done

4)online-wav-gmm-decode-faster对文件列表进行语音识别

online-wav-gmm-decode-faster --verbose=1 --rt-min=0.8 --rt-max=0.85\             --max-active=4000 --beam=12.0 --acoustic-scale=0.0769 \             scp:$decode_dir/input.scp $ac_model/model $ac_model/HCLG.fst \             $ac_model/words.txt '1:2:3:4:5' ark,t:$decode_dir/trans.txt \             ark,t:$decode_dir/ali.txt $trans_matrix;;说明:ali.txt记录对齐的状态与帧之间关系   trans.txt记录解码结果的数字

5)估计模拟解码的错误率

鲲鹏 语音通话

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:缓存用不好,Bug改到老
下一篇:海思移植opencv+车辆检测
相关文章