kaldi windows 安装怎么操作?在本文中winiwn7小编将给大家分享介绍下关于windows 系统中如何安装 kaldi 程序的详细操作方法。
1、安装前的准备
进行相关VS工程的更新和修改前,请确认你已经完成了以下列表所述工作,以保证后续更新的正确进行:
已在Ubuntu Server上成功安装并运行Kaldi;
请自行搜索相关Kaldi在Ubuntu上install/building的相关资源,这里不是重点,不再赘述。 [Code Link] https://github.com/kaldi-asr/kaldi
已在Ubuntu Server上下载THCHS30语料库,并成功运行至少 tri2b的步骤;
[Example Code Dir] TRUNK_ROOT/egs/thchs30/s5/ [Corpus Link] http://www.openslr.org/18/
在Windows平台上已安装Cygwin,并可以运行Unzip,Git, Wget, Patch命令,及Perl脚本;
如果没有,请使用Cygwin Setup重新添加一下package: [x] unzip : Info-ZIP [x] git : Distributed version control system [x] wget : Utility to retrieve filts from the WWW via HTTP and FTP [x] patch : Applies diff files
在Windows平台上下载相同版本Kaldi代码,并依据相关Guide生成VS工程,并可编译(尽管编译有错误);
[Guide] https://github.com/kaldi-asr/kaldi/blob/master/windows/INSTALL.md Note:
VS工程选择VS2015(v140), 配置选择 x64 Debug/Release
请fellow步骤 1,2,3,4,6,8,9,10,11,12,13,15,16
步骤15使用选项: (kaldi)/windows$ generate_solution.pl –vsver vs2015 –enable-openblas
如果无法使用wget下载代码,请使用浏览器打开相关网址直接下载,注意版本;
pthreads-w32-2-9-1-release.zip
OpenBLAS-v0.2.14-Win64-int32.zip
mingw64_dll.zip
如果无法 patch /pthread-2.9.1.patch, 请修改pthreadsPre-built.2includepthread.h的ending type为UNIX模式;
2、问题及解决方法
Kaldi自带的VS工程的编译问题,主要是由PortAudio模块的缺失和openfst版本过低一起的。下面我们来逐一解决。
Note: 以下步骤的验证,可以只编译/运行 (kaldi)kaldiwin_vs2015_OPENBLASkaldiwin_vs2015.sln 中的 oneline-wave-gmm-decode-faster工程。 编译整个Solution 600多个Project太耗时。
3.1 PortAudio的更新及编译
. PortAudio 问题 fata error C1083: Cannot open include file: ‘portaudio.h’: No such file or directory 原因 PortAudio 子模块未安装 方法 Install PortAudio module and also ASIO supported sub-module 步骤 1) 下载 pa_stable_v190600_20161030.tgz 和 asiosdk.zip , 拷贝到 (kaldi)/tools/ 目录 . 2) cd (kaldi)/tools/ . 3) tar -xvf pa_stable_v190600_20161030.tgz . 4) unzip asiosdk.zip . 5) mv ASIOSDK2.3/ portaudio/src/hostapi/asio/ASIOSDK . 6) 在VS2015中打开 (kaldi) oolsportaudiouildmsvcportaudio.sln,选择x64/Release配置进行编译。 . 7) 打开(kaldi)kaldiwin_vs2015_OPENBLASkaldiwinvariables.props, 添加PortAudio相关信息. > —————- 在<PropertyGroup Label="UserMacros">子项下添加: <PORTAUDIO>D:Local\_WorkProj_DLkaldi_win_valid oolsportaudio</PORTAUDIO> <PORTAUDIOLIB>D:Local\_WorkProj_DLkaldi_win_valid oolsportaudiouildmsvcx64</PORTAUDIOLIB>
在<ItemGroup>子项下添加: <BuildMacro Include="PORTAUDIO"> <Value>$(PORTAUDIO)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="PORTAUDIOLIB"> <Value>$(PORTAUDIOLIB)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> . 8) 打开(kaldi)kaldiwin_vs2015_OPENBLASkaldiwinkaldiwin.props, 添加PortAudio相关信息. > —————- 在<AdditionalIncludeDirectories>子项下添加: $(PORTAUDIO)include;$(PORTAUDIO)srccommon;
在<AdditionalLibraryDirectories>子项下添加: $(PORTAUDIOLIB)Debug;
在<AdditionalDependencies>子项下添加: portaudio_x64.lib;pa_ringbuffer.obj; . 9) Rebuild kaldiwin_vs2015.sln 的 oneline-wave-gmm-decode-faster工程.
3.2 Openfst的更新及编译
. Openfst 问题 context-fst.h(90): error C2143: syntax error: missing ‘;’ before ‘<’ table-matcher.h(289): error C2143: syntax error: missing ‘;’ before ‘<’ trivial-factor-weight.h(112): error C2143: syntax error: missing ‘;’ before ‘<’ … 原因 openfst版本不匹配, 当前使用为1.6.2, VS工程中使用的是1.3.4 方法 更新openfst版本,添加/修改相关windows平台适配代码 步骤 1) 下载 openfst-1.6.2.tar.gz 和 openfst-1.6.2.patch, 拷贝到 (kaldi)/tools/ 目录 . 2) cd (kaldi)/tools/ . 3) rm -rf openfst . 4) tar -xvf openfst-1.6.2.tar.gz . 5) patch -b -p1 < openfst-1.6.2.patch . 6) 在VS2015中打开 (kaldi) oolsopenfst-1.6.2openfst.sln,选择x64/Release & Debug配置进行编译. . 7) 打开(kaldi)kaldiwin_vs2015_OPENBLASkaldiwinvariables.props, 修改openfst相关信息. > —————- 将<PropertyGroup Label="UserMacros">子项下的<OPENFST><OPENFSTLIB>内容修改为: <OPENFST>(KALDI_ROOT) oolsopenfst-1.6.2</OPENFST> <OPENFSTLIB>(KALDI_ROOT) oolsopenfst-1.6.2x64</OPENFSTLIB> . 8) 打开(kaldi)kaldiwin_vs2015_OPENBLASkaldiwinopenfstwin_debug.props, 修改openfst相关信息. > —————- 将<AdditionalDependencies>子项下的openfstx64-gd.lib内容修改为: <AdditionalDependencies>libfst.lib;%(AdditionalDependencies)</AdditionalDependencies> . 9) 打开(kaldi)kaldiwin_vs2015_OPENBLASkaldiwinopenfstwin_release.props, 修改openfst相关信息. > —————- 将<AdditionalDependencies>子项下的openfstx64.lib内容修改为: <AdditionalDependencies>libfst.lib;%(AdditionalDependencies)</AdditionalDependencies>
3.3 pthread-win的路径错误
. pthread-win 问题 12>LINK : fatal error LNK1104: cannot open file ‘pthreadVC2.lib’ 原因 pthreads路径错误 方法 更改kaldiwin_vs2015 solution配置文件中pthreads路径 步骤 1) 打开(kaldi)kaldiwin_vs2015_OPENBLASkaldiwinvariables.props, 修改openfst相关信息. > —————- 将<PropertyGroup Label="UserMacros">子项下的<PTHREADW>内容修改为: <PTHREADW>(KALDI_ROOT)pthreadsPre-built.2</PTHREADW>
3.4 dll files missing的错误
. dll files missing 问题 编译完成后运行时,提示找不到相关的dll文件 原因 工程运行依赖的dll文件未注册 方法 拷贝dll文件到可执行文件目录下 步骤 1) 相关dll的位置如下所示 > —————- libopenblas.dll (KALDI_ROOT) oolsOpenBLAS-v0.2.14-Win64-int32inlibopenblas.dll portaudio_x64.dll (KALDI_ROOT) oolsportaudiouildmsvcx64Debugportaudio_x64.dll libgcc_s_seh-1.dll (KALDI_ROOT) oolsmingw64_dlllibgcc_s_seh-1.dll libgfortran-3.dll (KALDI_ROOT) oolsmingw64_dlllibgfortran-3.dll libquadmath-0.dll (KALDI_ROOT) oolsmingw64_dlllibquadmath-0.dll . 2) 请将其拷贝到工程生成的执行文件目录(kaldi)kaldiwin_vs2015_OPENBLASx64Debug下
3.5 控制台中文输出乱码
. 解码输出中文乱码 问题 online-wave-gmm-decode-faster.exe的控制台输出的解码后的文本显示是乱码 原因 解码所需的字典文件word.txt的编码格式(UTF-8)和中文版windows的控制台默认的编码格式(GBK)不一致 方法 字典文件和控制台的编码格式需要保持一致 步骤 1) 用notepad++将word.txt编码格式更改为GB2312(GBK) 参考下图:
以上便是winwin7分享的windows 装kaldi 的详细操作方法! |