在Jetson Orin Nano等ARM 架构设备上编译安装Pynini库

479 阅读2分钟

一、Pynini库简介与应用场景

Pynini是一个基于加权有限状态转换器(WFST)的文本处理库,由Google研究院开发。该库广泛应用于: • 语音识别系统的发音词典构建 • 自然语言处理中的正则表达式扩展 • 文本规范化与字符串转换 • 机器翻译中的形态学分析

在x86架构设备中,可以通过pip install pynini直接安装。但当我们在边缘计算设备(如NVIDIA Jetson Orin Nano)等ARM架构平台上部署时,由于二进制依赖的缺失,需要手动编译安装核心组件。

二、环境准备与依赖说明

2.1 版本对应关系

根据Pynini官方文档,各版本对应依赖如下:

Pynini版本OpenFST版本
2.1.51.8.2

本教程以Pynini 2.1.5OpenFST 1.8.2组合为例进行演示。

三、详细安装步骤

3.1 OpenFST编译安装

# 安装编译依赖
sudo apt-get install build-essential autoconf libtool

# 下载并解压源码
wget http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-1.8.2.tar.gz
tar -xzvf openfst-1.8.2.tar.gz
cd openfst-1.8.2

# 配置编译参数(启用grm扩展)
./configure --enable-grm --enable-static --enable-shared

# 编译安装(使用多核加速)
make -j$(nproc)
sudo make install

3.2 验证安装结果

检查以下关键文件是否存在:

ls /usr/local/include/fst/extensions/mpdt/compose.h
ls /usr/local/include/fst/extensions/far/far.h
ls /usr/local/include/fst/util.h

3.3 配置环境变量

# 永久生效配置(推荐)
echo 'export CPLUS_INCLUDE_PATH="/usr/local/include:$CPLUS_INCLUDE_PATH"' >> ~/.bashrc
echo 'export LIBRARY_PATH="/usr/local/lib:$LIBRARY_PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc
source ~/.bashrc

3.4 安装Pynini

pip install pynini==2.1.5

四、安装验证与测试

import pynini
text_normalizer = pynini.Fst.read("path/to/your/fst/file")
print("Pynini版本:", pynini.__version__)

五、注意事项

  1. 架构兼容性:本方案适用于Jetson系列(Xavier/Nano)、树莓派4B等ARMv8架构设备
  2. 版本锁定:强烈建议使用pip freeze > requirements.txt固定版本
  3. 动态链接库:若出现libfst.so相关错误,执行sudo ldconfig更新链接
  4. 交叉编译:为其他ARM设备编译时,需使用--host参数指定目标架构

六、排错指南

常见错误解决方案
fatal error: fst/xxxx.h检查CPLUS_INCLUDE_PATH配置
undefined symbol重新编译OpenFST并确认启用共享库
pip安装超时使用清华源:-i https://pypi.tuna.tsinghua.edu.cn/simple

通过以上步骤,您可以在边缘计算设备上成功部署基于WFST的文本处理工具链。这种源码编译方式虽然步骤较多,但能够更好地适配不同硬件平台的特殊需求。