Ubuntu上安装pyfst

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
3
sudo 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
2
brew install portaudio
sudo pip install pyaudio

也会出现找不到portaudio.h头文件的错误(可是这个头文件就在/usr/local/include下面……),最终的解决方法也是类似的:

1
2
3
sudo 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了。