jetson nano 安装 snowboy 遇到的问题及处理

Snowboy 是 KITT.AI 开发的一个高度可定制的热词检测引擎,当笔者的 jetson nano 加上话筒后,就立马尝试安装,但在安装过程中却发生了错误,所以把处理方式记录了下来以作备忘。

首先,按 Snowboy 官方文档 编译安装 swig-3.0.10 和克隆 snowboy 代码过程都很顺利

sudo apt-get install sox libpcre3 libpcre3-dev libatlas-base-dev &&
sudo pip install pyaudio

# 下载 swig-3.0.10,https://sourceforge.net/projects/swig/files/swig/swig-3.0.10/

tar -xvzf swig-3.0.10.tar.gz
cd swig-3.0.10/
./configure --prefix=/usr --without-clisp --without-maximum-compile-warnings
make
sudo make install
sudo install -v -m755 -d /usr/share/doc/swig-3.0.10
sudo cp -v -R Doc/* /usr/share/doc/swig-3.0.10

git clone
https://github.com/Kitt-AI/snowboy

但在编译 snowboy 代码的 swig/Python3 时发生错误

cd swig/Python3
sudo make

出错信息

../..//lib/ubuntu64/libsnowboy-detect.a: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
Makefile:73: recipe for target '_snowboydetect.so' failed
make: *** [_snowboydetect.so] Error 1

 google 后,发现原来 Makefile 那里少了对 ARM 的判断,需要加上下面图片红框的判断:

nano Makefile

判断的文本: 

  ifneq (,$(findstring aarch64,$(shell uname -m)))
      SNOWBOYDETECTLIBFILE = $(TOPDIR)/lib/aarch64-ubuntu1604/libsnowboy-detect.a
  endif 

然后再编译

sudo make

可以看到编译成功了

g++ -I../../ -O3 -fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++0x  -shared snowboy-detect-swig.o \
../..//lib/aarch64-ubuntu1604/libsnowboy-detect.a -L/usr/lib/python3.6/config-3.6m-aarch64-linux-gnu -L/usr/lib -lpython3.6m -lpthread -ldl  -lutil -lm  -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions -lm -ldl -lf77blas -lcblas -llapack -latlas -o _snowboydetect.so

再将在 snowboy.kitt.ai 上生成的热词放在 examples/Python3 下尝试运行,又发生了一个错误(笔者的热词文件为 tortoise.pmdl)

jetbot@jetbot-desktop:~/temp/github/snowboy/examples/Python3$ python3 demo.py tortoise.pmdl
Traceback (most recent call last):
  File "demo.py", line 1, in <module>
    import snowboydecoder
  File "/home/jetbot/temp/github/snowboy/examples/Python3/snowboydecoder.py", line 5, in <module>
    from . import snowboydetect
ImportError: attempted relative import with no known parent package

这时需要修改 snowboydecoder.py

nano snowboydecoder.py

from . import snowboydetect

替换为

import snowboydetect

  最后,再运行一下 demo.py,已经能成功检测热词了

jetbot@jetbot-desktop:~/temp/github/snowboy/examples/Python3$ python3 demo.py rtoise.pmdl
Listening... Press Ctrl+C to exit
INFO:snowboy:Keyword 1 detected at time: 2020-02-23 09:38:07

参考文章:

Jetson Nano Developer Kit Snowboy

猜你喜欢

转载自www.cnblogs.com/lly277365/p/12348583.html