KALDI语音识别thch30训练记录
 2018-06-22 14:46:23   888   0   

本文最后更新于天前,文中介绍内容及环境可能已不适用.请谨慎参考.

又接到新的预研项目,语音识别,有搞头呢。

一步步来,先记录下过程,边预研边记录。使用的机器为ubuntu16.04

 

参考

本来看官方文档一直看的这个kaldi_for_dummies.html,准备自己准备数据,写脚本来搞,但是感觉任务有点繁重,后续再搞吧.

先把thchs30训练出来看看。

一. 基础安装

以下为egs/thchs30 的训练记录.

1.1. kaldi安装不表,照着官方文档来就是了,gitclone

测试环境是我们项目经理安装的,据说对机器要求比较高,这个反正能用就行。

1.2. 环境安装-记录1-SRILM安装

需要手动GNU awk

apt-get install gawk

然后需要到 SRILM官方下载 安装包. srilm.tgz 放到 tools目录

最后直接执行命令安装.

kaldi-install-path/tools/install_srilm.sh

 

  • 二. thch30 中文语音训练

百度了好多文档和资料,查看了下 egs/thch30/s5/lcoal/download_and_untar.sh  

发现原来有公开的中文语音数据下载,清华大学的王东之前已经整理了一份中文普通话的语音数据集.

2.1 thchs30 数据包下载

需要下载目录下的 data_thchs30.tgz      resource.tgz test-noise.tgz 3个文件 8G左右的数据,速度还是很快

好家伙,直接下载下载好了,

这个里面相关的数据应该都准备好了,绝对要花费相当多的时间,

看官方那个100句数字的列子就很繁琐,有些文件对应关系还没怎么弄明白,用这个下载下来的对应验证一下就OK了。

后面弄自己的词应该也有个依照.

2.2 数据准备

thchs数据解压至 ~/openslr_data/data_thchs30目录

在 egs/thch30/local/目录执行 thchs-30_data_prep.sh 生成必须的 wav.scp utt2spk spk2utt word.txt phone.txt text 文件

~/kaldi/egs/thchs30/s5/local$   ./thchs-30_data_prep.sh  ~/kaldi/egs/thchs30/s5/ ~/openslr_data/data_thchs30

数据准备完成

thchs30/s5/ ~/openslr_data/data_thchs30
creating data/{train,dev,test}
cleaning data/train
preparing scps and text in data/train
cleaning data/dev
preparing scps and text in data/dev
cleaning data/test
preparing scps and text in data/test
creating test_phone for phone decoding

上面写的是直接生成训练数据

实际上使用run.sh可以一并生成训练数据/准备必要文件/训练,一个流程走完.

三 错误跟踪处理

!位置修改:修改 s5/run.sh 中的thchs 变量为 ~/openslr_data/  【实际的数据文件wav的目录】,然后运行 run.sh即可,在数据准备好了后,直接开始训练.

 

3.1. 错误:sh: 1: qsub: not found

官方文档data prepare里面有提到,本地没有安装GridEngine需要将 cmd.sh中的所有命令改为run.pl

We will first need to configure whether the jobs need to run locally or on the Oracle GridEngine. Instructions on how to do this are in cmd.sh.

If you do not have GridEngine installed, or if you are running experiments on smaller datasets, execute the following command on your shell.

train_cmd="run.pl"
decode_cmd="run.pl"

3.2. Binary file (standard inputmatches

处理data/dict/lexicon.txt总是报错,在文件就这么一句话,反复折腾好久,发现是run.sh中的脚本 grep命令有问题,将文件当成二进制的了,

给命令加上 grep -av 强制当文档处理就生成出来了..., linux果然不熟悉啊-_-!

 grep -va '<s>' |grep -av '</s>'|sort -u  > data/dict/lexicon.txt || exit 1;

这算是训练中了吧...

  • 四. 训练文件规则说明

每个语音文件都需要一个唯一ID标识uttid,除开语音文件,还需要以下文件,所有文件均为文本格式,每行一条记录对应单个语音文件.

该部分需要自己根据语料库分别就train,test,cross validation目录生成以下文件:

1. text : < uttid > < word >     

  语音唯一标识   语音对应的语句中包含的词

2. wav.scp : < uttid > < utter_file_path >

  语音唯一标识   语音文件所在的具体位置.

3. utt2spk : < uttid > < speakid >

语音唯一标识   语音文件说话人标识.   ,训练过程是识别N多个说话人的样本,统计记录。

4. spk2utt : < speakid > < uttid >

 语音文件说话人标识 语音唯一标识列表  .   这个与utt2spk是可以相互推导的,使用kaldi提供的util工具包可以生成.

5. word.txt : 同 text

 

五. 训练结果

跑了一下午,跑到 steps/train_quick.sh 这里,没跑完,被我ctrl+c了,

第二天来看,发现其实后台还是在跑,跑到了半夜3点多...

反正tri3b是跑完了,tri4b里面的数据还不完整,按网上资料来看,前面的数据已经能用了,那么就先试试吧.

exp目录训练结果,不同的训练方式及结果

以tri3b为例,有用解码数据文件

tri3b/final.mdl -->35.mdl

tri3b/graph_word/words.txt   tri3b/graph_word/HCLG.fst 

六. 训练结果及模型的使用,语音识别解码

做了这么多的目的就是为了识别语音数据,上面的过程已经把训练语音数据生成了模型/字典/统计概率fst等.

接下来就是反向解码使用了.

6.1. 安装portaudio

使用 tools/install_portaudio.sh    

PortAudio是一个免费的、跨平台的、开放源码的音频I/O库。它可以让你用C或C++来编译并在多种平台能够运行的简单音频程序,包括Windows、Macintosh OS X和UNIX(OSS / ALSA)。它旨在促进不同平台上开发人员之间的音频软件融合。许多应用程序已经使用PortAudio库进行音频I/O处理。

 运行 回到 src/  下,运行 make ext

运行了好半天,完成

6.2.补充下播放wav文件

sudo apt-get install sox libsox-fmt-all
paly xxx.wav

搞了半天,远程vncviewer播放不了声音..

用手机录了下是m4a的格式,好吧转换下把.

安装: 
apt-get install libav-tools 
然后 
avconv -i xx.m4a -ar 16000 xx.wav

6.3.测试tri1

复制voxforege下的online_demo 至 thch30/s5目录. 在online_demo新建相应目录结构.

对应数据为tri1下的数据

tri1/final.mdl -->35.mdl

tri1/graph_word/words.txt   tri1/graph_word/HCLG.fst 

 cp -r ../voxforge/online_demo/ .

修改run.sh,将目录和上方自己的文件结构对应上

坑爹了。。我说的是 你好。。你好. 这识别的什么狗屎...

6.4.测试tri3

基本一样,增加mat文件及增加配置参数--left-context=3 --right-context=3

配置

结果。。,音调没识别出来嘛。。。


 2018-07-04 14:06:54 
 1

  本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵 固定链接: 【KALDI语音识别thch30训练记录】 转载请注明


 相关文章:


发表新的评论
{{s_uid}}   , 欢迎回来.
您的称呼(*必填):
您的邮箱地址(*必填,您的邮箱地址不会公开,仅作为有回复后的消息通知手段):
您的站点地址(选填):
留言:

∑( ° △ °|||)︴

(๑•̀ㅂ•́)و✧
<( ̄) ̄)>
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
╮( ̄▽ ̄)╭
( ̄ε(# ̄)
(⊙ˍ⊙)
( ̄▽ ̄)~*
∑( ° △ °|||)︴

文章分类

可能喜欢 

KxのBook@Copyright 2017- All Rights Reserved
Designed and themed by 野生的喵喵   1621422   44911