运行前需要更改的地方:
1、matlab安装的路径以及matlab的license文件
2、噪声的路径;background.scp,以及噪声文件
3、run.sh文件中一处find $dir 改为 find $task,同样在utils/mixwithnoise.sh也存在这样的问题
数据准备部分:
1、运行时,在utils/mixNoiseWith.sh步出错,查看一下background.scp文件对应的噪声文件是否存在,或者修改噪声文件地址
2、 运行时出错,数据aligns出错,检查*.scp文件为空;
更改产生*.scp文件的utils/mixSpeechWithNoise.sh的查找目录,即可得到*.scp;
3、这样仍存在一个问题是:$dir/../${task}_fbank_*/*.feat> $dir/../${task}_fbank.feat 文件为空;
可能是读取的htkfeau文件为空或者在转化为kaldi格式的特征时,工具有问题,另外一种可能是在写入到*_fbank.feat文件时出错,尚未验证
4、当进行AEC或者NS处理时,htkfeat2kaldifeat一步会出现 double free or corruption的错误
解决办法:
5、在运行时出现这样的情况:主要是在utils/mixSpeechWithNoise.sh这一步时,出现无穷尽的processed ??? utts ,还有在utils/ace.sh步也会出现这样的情况,如下图
是在语料文件夹中生成很多其他文件,之后也会执行。导致一直在执行。
解决方法 :在每次执行前,删除生成的中间文件。
6、
原因:
1)出现至少两个文件名相同
2)在utils/align.sh一步中,用到的可执行文件缺少相应的库文件
解决方法:
1)重命名
2)缺少共享文件libfst.so.1文件,指定对应的动态链接库地址,若对应链接库不存在,需要重新编译,当然·这是在有源码的情况下可以做的。好在本程序包用到的可执行文件(/bin,/lib)大部分是可以在kaldi上找到的,只要将kaidl在GPU平台上编译就好了。【详解见文末】
7、现在遇到的问题是在第一次执行脚本时,在第六步align.sh,会出现问题,
尝试了一下,在不删除生成的中间文件时,
再次执行脚本,align.sh可以通过,但在模型训练部分出现问题,退出,在log日志文件里提示:
解决办法:检查了生成的pcm文件,其中在utils/aec.sh之后,生成的pcm有问题,注释掉utils/aec.sh即可。
8 . ./wav2feat: error while loading shared libraries: libfst.so.0: cannot open shared object file: No such file or directory
把需要的库文件写入/.bashrc文件或者在path.sh文件里添加所需库的路径。
9、
在GPU上跑,会出现
估计是可执行的二进制文件在CPU上编译的,在GPU上执行通过不了,
解决办法:
把data/kws*和all_20161227拷贝到在CPU上,再执行r1.sh文件,进行模型训练,通过,得到mars.q文件
10、kaldi在GPU上安装
【Centos6.8 显卡GFORCE TITAN X 驱动:DriverVersion:375.26 CUDA:8.0 】
I 安装前准备
安装前你需要对你的centos进行配置,步骤如下:
# yum check-update; 检查更新
# yum install -y; 安装找到的更新,确保已安装的软件是最新版的
依赖软件的安装(如果已经安装可以跳过)。
( 1) sudo yum install libtool
( 2) sudoyum install autoconf
( 3) sudo yum install wget
( 4) sudo yum install perl
( 5) sudo yum install subversion
( 6) sudo yum install zlib
II 安装
( 1)静态库安装方法(默认):
# cd tools; make
# ./install_atlas.sh
# cd ../src; ./configure; %此步骤中只能用configure, 加入--shared会报错:
# make depend; make
( 2) 动态库安装方法:
# cd tools; make
将 install_atlas.sh 中的 ../configure $opt --prefix=`pwd`/install || exit 1;
改为:
../configure $opt --prefix=`pwd`/install --shared|| exit 1;
# ./install_atlas.sh
# cd ../src; ./configure --shared 这里如果报错, 请将--shared去掉
# make depend; make
如果不报错,kaldi大致就装好了
其中要注意
1、新版的kaldi中的irsltlm是没有编译的,需要手动编译一下
2、kaldi目录下,src/cudamatrix中没有编译出可执行文件,所以make test是failture的
下面转到CUDA安装
下载完cuda8.0后,执行如下语句,运行runfile文件:
sudo sh cuda_8.0.27_linux.run
执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia361驱动时,一定要选择否,因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。
安装成功后会出现如下界面:
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/textminer
Please make sure that
– PATH includes /usr/local/cuda-8.0/bin
– LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as rootTo uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driver
安装完毕后,再声明一下环境变量,并将其写入到 ~/.bashrc 的尾部:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后设置环境变量和动态链接库,在命令行输入:
$ sudo gedit /etc/profile
在打开的文件末尾加入:
export PATH = /usr/local/cuda/bin:$PATH
保存之后,创建链接文件:
sudo gedit /etc/ld.so.conf.d/cuda.conf
在打开的文件中添加如下语句:
/usr/local/cuda/lib64
然后执行
sudo ldconfig
使链接立即生效。
3、测试cuda的Samples
cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery
makesudo ./deviceQuery
如果显示的是一些关于GPU的信息,则说明安装成功了。
查看GPU信息,其中注意
下面转到src/cudamatrix,编译Makefie,CUDA_ARCH=-gencode arch=compute_61,code=sm_61,数字改为上面的计算能力
再make test,你会发现
这样就能顺利训练DNN
总结:此唤醒程序包运行需注意的几点如下:
1、产生的中间文件需删除,包括
还要删除的是语料文件夹中产生的新文件。一定要删除干净!
2、可执行文件的对应链接库存在且指向正确,并且是在该平台上编译通过的。所以的可执行文件都需正确。注意nnet-train-frmshuff需要在GPU上编译通过,这个就涉及到kaldi中cudamatrix的编译,详情见上。