在Ubuntu18的虚拟机上搭建kaldi
博客主体内容转载自:https://blog.csdn.net/by21010/article/details/49072699在进行kaldi安装之前我们需要先做一些准备1、虚拟机性能配置内存至少4G(最好给个五六G,4G的话在编译的时候还是很有可能会出现长时间卡顿的现象,如果你的电脑只有4G内存,那就只能买个内存条了)处理器建议给四个,编译速度比较快,差不多半个多小时吧(...
博客主体内容转载自:https://blog.csdn.net/by21010/article/details/49072699
在进行kaldi安装之前我们需要先做一些准备
1、虚拟机性能配置
内存至少4G(最好给个五六G,4G的话在编译的时候还是很有可能会出现长时间卡顿的现象,如果你的电脑只有4G内存,那就只能买个内存条了)
处理器建议给四个,编译速度比较快,差不多半个多小时吧(我一开始只给一个处理器,编译了近一个半小时还没结束。。。)
硬盘至少30G(编译完所有文件差不多会有21G,第一次只给20G的硬盘,编译到后面被强制停止了。而且最好在虚拟机创建的时候就多给点磁盘空间。不要等到不够用了再去扩展。扩展虚拟机磁盘容量很多坑,导致我搞坏了一个虚拟机。。。)
2、更换下载源——提高下载速度
https://blog.csdn.net/zhangjiahao14/article/details/80554616
Kaldi是一款基于C++编写的开源语音识别工具箱。这款工具既可以在Windows下编译也可以在Linux下编译。不过听学姐说以后还是在Linux下做开发多一些,我就想干脆顺便把Linux环境熟悉熟悉,于是就安了个虚拟机装上了Ubuntu。文档里面也说还是建议在Linux下使用Kaldi。好久没用过Linux了,也不习惯在命令行下操作,编译Kaldi还真是费了我一番功夫。下面把过程记录一下。
一、下载
下载直接利用git版本控制系统就可以了,打开终端,直接在你的实验目录下输入命令:
git clone https://github.com/kaldi-asr/kaldi.git kaldi-trunk --origin golden
- 不一会就从github上下载下来了。当然,首先得确保你安装了git。要是没安装的话,就先输入:
sudo apt-get install git
- 安装git版本控制软件。
二、各目录功能
下载完毕以后,cd kaldi-trunk进去看看下载了一些什么东西。
其中,./tools,./src和./egs这三个目录是比较重要的。
./tools目录下面全部都是Kaldi依赖的包。其中主要有:
- OpenFST:Weighted Finite State Transducer library,是一个用来构造有限状态自动机的库。我们知道隐马尔科夫模型就可以看成是一个有限状态自动机的。这是最终要的一个包,Kaldi的文档里面说:If you ever want to understand Kaldi deeply you will need to understand OpenFst.诶,要学的好多。
- ATLAS:这是一个C++下的线性代数库。做机器学习自然是需要很多矩阵运算的。
- IRSTLM:这是一个统计语言模型的工具包。
- sph2pipe:这是宾夕法尼亚大学linguistic data consortium(LDC)开发的一款处理SPHERE_formatted数字音频文件的软件,它可以将LDC的sph格式的文件转换成其它格式。
./src目录存放的是Kaldi的源代码。./egs存放的是Kaldi提供的一些例子。我们现在要做的就是编译安装Kaldi依赖的各种库,然后编译安装Kaldi。
三、Kaldi的编译
安装之前需要确保你安装了这些软件
apt-get
subversion
automake
autoconf
libtool
g++
zlib
libatal
wget
Ubuntu里面都有,所以直接开始安装。
首先安装依赖包。在./tool目录下输入make,开始编译,输入make -j 4命令可以加快速度(多核并行处理)。
之后切换到./src目录下,输入./configure进行配置,然后输入make depend,完成之后输入make进行编译。当然这个过程也可以并行处理加速,输入make -j 4。经过漫长的编译过程以后,就安装完毕了。
四、运行一个例子
Kaldi自带的例子都放在./egs目录下。
其中最简单的就是yesno这个例子了。这是一个非常小的数据集,每一条记录都是一系列yes或者no的语音,标注是由文件名来标注的。先运行一下。切换到./egs/yesno/s5目录下,运行sudo ./run.sh命令。
经过一段时间的训练和测试,可以看到运行结果。
WER为0.00。看来这个例子识别的还是挺准的。
PS:WER(Word Error Rate)是字错误率,是一个衡量语音识别系统的准确程度的度量。其计算公式是WER=(I+D+S)/N
,其中I代表被插入的单词个数,D代表被删除的单词个数,S代表被替换的单词个数。也就是说把识别出来的结果中,多认的,少认的,认错的全都加起来,除以总单词数。这个数字当然是越低越好。
下面进入./waves_yesno目录瞧一瞧。
全部都是.wav格式的音频文件。可以打开一个文件听一听,发现是一个老男人连续不停地说yes或者no,每个文件说8次。文件名中,0代表那个位置说的是no,1代表说的是yes。这个实验没有单独的标注文件,直接采用的是文件名来标注的。
更多推荐
所有评论(0)