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

来源:互联网 发布:怎么缩小毛孔知乎 编辑:程序博客网 时间:2024/05/01 11:33

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 InstallerInstallation Instructions:

  1. Run `sudo sh cuda_8.0.61_375.26_linux.run`
  2. 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依赖的包。其中主要有:

  1. OpenFST:Weighted Finite State Transducer library,是一个用来构造有限状态自动机的库。我们知道隐马尔科夫模型就可以看成是一个有限状态自动机的。这是最终要的一个包,Kaldi的文档里面说:If you ever want to understand Kaldi deeply you will need to understand OpenFst.诶,要学的好多。
  2. ATLAS:这是一个C++下的线性代数库。做机器学习自然是需要很多矩阵运算的。
  3. IRSTLM:这是一个统计语言模型的工具包。
  4. 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
测试之后技能现实成功
0 0