在mac上使用docker进行Kaldi编译

Kaldi -1

安装篇

上次做ontonotes时租的服务器到期了。
但我还是需要整一个好用的环境。
我用的是mac,所以下载了docker desktop配置一下ubuntu16.04环境,不然在mac上安装dependencies的时候就开始疯狂报错了。过程大体仿照这篇博文的顺序。

docker ps #找到container ID
docker exec -it <Container ID> /bin/bash
apt-get update
apt-get upgrade
apt-get install git vim

这个时候我们安装必要dependencies

apt-get install libtool autoconf wget perl subversion build-essential gfortran libatlas-dev libatlas-base-dev zlib1g-dev gawk git sox bison swig -y

接下来下载kaldi源码放到/opt目录下解压。
再下载必要的工具包
openfst-1.7.2.tar.gz
sph2pipe-2.5.tar.gz
cub-1.8.0.tar.gz
sctk-20159b5.tar.gz
比较麻烦的是最后一个,按照/tools目录下Makefile文件给出的链接下载下来的是一个SCTK-后面跟着40个字符的压缩文件。要把名字改成小写的sctk-20159b5.tar.gz。
把这些文件都放到\kaldi-master\tools目录下。不放直接make也可以,但我的网速不允许我这么做。就会报错:

Unable to establish SSL connection.

传输文件用

docker cp 本机文件目录 <Container ID>:docker目录

然后切换到tools目录

extras/check_dependencies.sh #检查依赖有没有装完整
make -j 4

数字根据自己设备决定

完了后切换到…/scr目录

./configure --shared
CXX=g++
make depend -j 4
make -j 2

我最后那个其实使用的是make -j 1
因为用make -j 4我的mac可能是分配给docker内存少吧,总是会报错

internal compiler error: Killed (program cc1plus)
...
make[1]: *** [chain-supervision.o] Error 4
...
Makefile:136: recipe for target 'chain' failed
make: *** [chain] Error 2

这种错。

顺利的话,最后echo done,done
退出docker后建立一个新的镜像

docker commit <Container ID> kaldi:latest

好,现在来测试一下是否编译成功了
两个方法,第一个跑一下/egs里的YESNO例子

cd /kaldi-master/egs/YESNO/s5
./run.sh

跑通了就说明你编译好了。

%WER 0.00 [ 0 / 232, 0 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10_0.0
上一篇:大数据课程-------linux部分


下一篇:使用Docker制作JDK镜像