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

鲲鹏小玩家 发表于 2020/06/02 20:36:33 2020/06/02
【摘要】 1 介绍 Kaldi是当前最流行的开源语音识别工具(Toolkit),它使用WFST来实现解码算法。Kaldi的主要代码是C++编写,在此之上使用bash和python脚本做了一些工具。 voxforge是个收集语音的网址,你可以免费的得到语音库。下载的话你可以用一些批量下载的软件或者利用kaldi/egs/voxforge/s5里的getdata....

1       介绍

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

 

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

 

2       安装准备

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

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

1-1 云服务器配置

项目

说明

规格

kc1.large.2 | 2vCPUs | 4GB

磁盘

系统盘:高IO40GB

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

1-2 操作系统要求

项目

说明

下载地址

Ubuntu

18.04

在公共镜像中已提供。

Kernel

4.15.0

在公共镜像中已提供。

3       安装kaldi

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

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

 

4       搭建voxforge语音库

 

运行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 \

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_demoonline_demos5,其中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)估计模拟解码的错误率

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。