Kaldi环境在mac虚拟机和linux下搭建

3/3/2017来源:C/C++教程人气:1782

Kaldi是开源语音识别工具平台。这款工具既可以在Windows下编译也可以在linux下编译。目前研究生的研究方向是深度学习的语音识别,所以开始进行一些初步的工作。由于家里的台式机和实验室的电脑都是普通PC机,而自己的笔记本又是mac PRo。所以准备同时在两种主机上搭建环境,不过参考说还是在Linux下做开发多一些,我就顺便把Linux装在mac的虚拟机上,就安了个虚拟机装上了Ubuntu14.04。文档里面也说还是建议在Linux下使用Kaldi。没怎么用过Linux了,用了一天的时间搭建Kaldi最后完成了并跑了一下测试例子。下面把过程记录和遇到问题记录一下。

1. 下载 Ubuntu 14.04 版本 建议用这个版本,16的版本会带来一些问题,之后查到的资料和解决方法少。 。 2. 在 Windows 10 系统下面创建空白磁盘分区: - 右键我的电脑 - 选择管理 - 选择磁盘管理 - 选择一个磁盘 - 右键压缩卷 - 压缩后的磁盘变成为未分配部分(80G) 3. 下载并安装好软碟通(UltraISO) - 打开软件 - 点击打开 - 找到 Ubuntu 系统所在目录,找到 iso 文件并打开 - 点击启动,选择写入硬盘镜像 - 大概检查下各个选项(基本是默认格式) - 点击格式化 - 点击写入 - 刻录完成 4. 从 USB 启动选择空闲空间安装 Ubuntu 即可(可以使用easyBCD进行系统启动切换)

之后还遇到装好了系统后分辨率非常不兼容的问题,由于我用的是34寸带鱼屏,用命令行修改分辨率无法解决,去N卡官网下载了linux对应的驱动.run格式,之后安装(安装方法自行读娘,提醒下要在无图形界面的模式下输入安装的命令行Ctrl+Alt+F1,否则报错)

安装 CUDA 以及 Kaldi 之前的基本配置

输入: sudo apt-get update sudo apt-get install libtool sudo apt-get install autoconfsudo apt-get install wget sudo apt-get install perl sudo apt-get install subversion sudo apt-get install build-essential sudo apt-get install gfortran sudo apt-get install libatlas-dev sudo apt-get install libatlas-base-dev sudo apt-get install zlib1g-dev (中间的是数字 1) sudo apt-get install gawk

安装 CUDA(推荐CUDA下载安装)

到官方下载对应的包

https://developer.nvidia.com/cuda-downloads

Base Installer
Installation Instructions:
Run `sudo sh cuda_8.0.61_375.26_linux.run`Follow the command-line prompts
 设置环境变量 输入: sudo nano /etc/profile - 在文件的最后一行添加 PATH="$PATH:/usr/local/cuda-7.5/bin" - 然后保存并退出 Ctrl+字母 输入: source /etc/profile 输入: echo $PATH 输入: sudo nano /etc/ld.so.conf - 在第二行写入 include /usr/local/cuda-7.5/lib64 注:如果是第一次装机,先要设置一下 root 密码 输入: sudo passwd root root 密码设置好之后,输入 su 进入 root 账号 输入:ldconfig 输入:exit 输入:sudo service lightdm start

安装 Kaldi 第一步:下载 Kaldi 源代码 现在 Kaldi 的最新网址是:http://www.kaldi-asr.org/ 同时,下载地址是:https://github.com/kaldi-asr/kaldi 下载后,提取并放在主文件夹下即可。 注:推荐使用 Ubuntu 直接在浏览器下载,最好不要用 Windows 下载完之后用 U 盘拷贝过 去,我当时就是这样做的,结果有些权限问题比较麻烦。 第二步:准备阶段 编译 Kaldi 之前需要完成: 1. 修改 gcc 以及 g++版本 注:Ubuntu14.04 默认安装的 gcc/g++版本是 4.8,编译 Kaldi 所需的版本要在 4.8 以下,所以 需要要把 gcc/g++版本降成 4.6 1.1 首先查看安装的版本: 输入: ls /usr/bin/gcc* 如果没有版本 4.6,则需要安装: 输入: sudo apt-get install gcc-4.6 sudo apt-get install gcc-4.6-multilib sudo apt-get install g++-4.6 sudo apt-get install g++-4.6-multilib 1.2 安装之后选择当前版本 修改 gcc 输入: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 之后输入: sudo update-alternatives --config gcc 之后手动选择所需 gcc 版本编号,输入 1,即选择当前 gcc 版本为 4.6,之后回车 修改 g++输入: sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 40 之后输入: sudo update-alternatives --config g++ 之后需要手动选择 g++版本编号,输入 1,即选择当前 g++版本为 4.6,之后回车 1.3 修改后查看当前版本 输入: gcc –version g++ --version 查看当前版本 2. 修改默认 shell 输入:sudo ln -s -f bash /bin/sh 3. 安装 git 输入:sudo apt-get install git

输入:

git clone https://github.com/kaldi-asr/kaldi.git kaldi-trunk --origin golden下载的速度很慢
 要有耐心,尤其是防止电脑休眠中断(掉过坑)

/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格式的文件转换成其它格式。 编译 Kaldi 输入: cd ./kaldi-master/tools make –j 4 注:如果中途没有退出的话就基本没问题了。需要注意的是安装过程中全程保持网络畅通。 如果实在看下载进度条没速度,就自己下载好相应的包,放在应该存放的目录下即可。输入: cd ../src ./configure 注:检查 OpenFST 和 ATLAS 两个外部库是否安装成功,并且检查 CUDA 是否安装成功。 没问题的话应该有如下显示: 输入: make depend –j 4 make –j 4

单独编译 cudamatrix 输入: cd kaldi-maser/src/cudamatrix/ sudo nano Makefile - 把文件中的 TESTFILES 改成 BINFILES 输入: cd ~/kaldi-master/src/cudamatrix make all ./cu-vector-test 测试之后技能现实成功