pyfst是对openfst的python API封装,学习fst过程中,实现代价相对较低,安装的时候只要先装openfst,再pip install pyfst
就OK了,但是,问题就出在这俩步上
openfst版本问题
我装的时候,openfst已经发布到1.6.1版本了,kaldi里面装的也是,所以安装pyfst的时候,我指定的是1.6.1版本的位置,结果编译的时候就各种问题,后来想到可能是版本问题,装了一个常见的1.3.4,直接ok
注意,openfst默认configure的时候,不会编译动态库和静态库,通过--enable-shared
和--enable-static
让其编译的时候,编译库
pyfst通过pip安装
因为openfst安装不在系统目录之下,所以需要给pip提供头文件和链接库的索引位置,命令为1
2
3sudo pip install --global-option='build_ext' \
--global-option='-I/home/wujian/Document/git/openfst-1.3.4/include/' \
--global-option='-L/home/wujian/Document/git/openfst-1.3.4/lib' pyfst
注意的是,-I/L
和后面的路径之间不能存在空格,否则一样找不到头文件
这样的问题在Mac上也出现过,解决思路同上,版本用1.4.3的话还是有问题,<tri/unorder_map>
找不到,所以改成1.4.0版本就ok,但是最新版本还是不行。
补充
在Mac上pip
安装pyaudio的时候,执行:1
2brew install portaudio
sudo pip install pyaudio
也会出现找不到portaudio.h
头文件的错误(可是这个头文件就在/usr/local/include
下面……),最终的解决方法也是类似的:1
2
3sudo pip install --global-option='build_ext' \
--global-option='-I/usr/local/include' \
--global-option='-L/usr/local/lib' pyaudio
PS: 之前以为是portaudio的问题,官网下了一个手动编译安装,但是缺少一个pa_mac_core.h
头文件,所以卸了用brew
了。