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

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

sudo apt-get install sox libpcre3 libpcre3-dev libatlas-base-dev
pip install pyaudio # 下载 swig-3.0.10,https://sourceforge.net/projects/swig/files/swig/swig-3.0.10/ tar -xvzf swig-3.0..tar.gz
cd swig-3.0./
./configure --prefix=/usr --without-clisp --without-maximum-compile-warnings
make
sudo make install
sudo install -v -m755 -d /usr/share/doc/swig-3.0.
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 exit status
Makefile:: recipe for target '_snowboydetect.so' failed
make: *** [_snowboydetect.so] Error

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= -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 , in <module>
import snowboydecoder
File "/home/jetbot/temp/github/snowboy/examples/Python3/snowboydecoder.py", line , 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 detected at time: -- ::

参考文章:

Jetson Nano Developer Kit Snowboy

jetson nano 安装 snowboy 遇到的问题及处理的更多相关文章

  1. jetson nano开发使用的基础详细分享

    前言: 最近拿到一块jetson nano 2GB版本的板子,折腾了一下,从烧录镜像.修改配件等,准备一篇开箱基础文章给大家介绍一下这块AI开发板. 作者:良知犹存 转载授权以及围观:欢迎关注微信公众 ...

  2. Jetson Nano系列教程3:GPIO

    摘要: JetsonTX1,TX2,AGXXavier和Nano开发板包含一个40引脚的GPIO头,类似于Raspberry PI中的40引脚头.这些GPO可以通过JetsonGPIOLibrary包 ...

  3. Jetson Nano 系列教程2:串口调试接口登录Jetson Nano

    连接Jetson Nano可以有多种方法,这里我们一一介绍一下.开始本章节前,请先参考上一章,烧写好镜像 直接连接 所谓直接连接,就是将Jetson Nano当做主机,连接HDMI屏幕,连接键盘和鼠标 ...

  4. Darknet YOLOv3 on Jetson Nano

    推荐比较好的博客:https://ai4sig.org/2019/06/jetson-nano-darknet-yolov3/ 用的AlexeyAB的版本,并且给出了yolov3和tiny的效果对比. ...

  5. [Jetson Nano]Jetson Nano快速入门

    NVIDIAJetsonNano开发套件是适用于制造商,学习者和开发人员的小型AI计算机.相比Jetson其他系列的开发板,官方报价只要99美金,可谓是相当有性价比.本文如何是一个快速入门的教程,主要 ...

  6. 1、Jetson Nano 远程桌面XP问题

    jeston nano上网 方法3(最简单的方法) 最简单的方法真的特简单,用USB数据线连接主板的USB接口以及手机,打开手机的USB共享即可,若要使用静态IP,可在主板上修改配置文件,接口一般为u ...

  7. Jetson TX2安装tensorflow(原创)

    Jetson TX2安装tensorflow 大致分为两步: 一.划分虚拟内存 原因:Jetson TX2自带8G内存这个内存空间在安装tensorflow编译过程中会出现内存溢出引发的安装进程奔溃 ...

  8. Jetson Nano Developer Kit

    The Jetson Nano Developer Kit is an AI computer for learning and for making. ​ 一个推理框架,用于部署模型到嵌入式设备. ...

  9. Jetson Nano系列教程1:烧写系统镜像

    下载镜像 NVIDIA官方为Jetson Nano Developer Kit (后面统称为Jetson Nano了)提供了SD卡版本的系统镜像,并且根据JetPack版本不断得在更新.所以你可以直接 ...

随机推荐

  1. Spring IoC(一)bean实例化和依赖注入

    1.IoC容器概述 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入. 所谓 IOC ,就 ...

  2. js 一句代码 让网页变为编辑器

    document.body.contentEditable = true 只要在控制台执行这行语句   页面就可以自由输入编辑了

  3. 浅析PHP页面局部刷新功能的实现小结(转)

    转载地址 https://www.jb51.net/article/38901.htm 方法其实挺多的.以前比较常用的是iframe这样来做.现在多了个ajax,所以一般情况下都是用的ajax.第一种 ...

  4. POJ 2142 The Balance(exgcd)

    嗯... 题目链接:http://poj.org/problem?id=2142 AC代码: #include<cstdio> #include<iostream> using ...

  5. 超长干货丨Kubernetes网络快速入门完全指南

    Kubernetes网络一直是一个非常复杂的主题.本文将介绍Kubernetes实际如何创建网络以及如何为Kubernetes集群设置网络. 本文不包括如何设置Kubernetes集群.这篇文章中的所 ...

  6. 什么是Rogue Histogram?

    Rogue Histogram可以理解为AP的“流氓直方图”,这里大概记录了该AP附近的其他AP的信道和频宽. 例如如下图:可以通过show ap auto-rf 802.11a AP-name / ...

  7. jQuery结合CSS实现手风琴组件(2)----利用seajs实现静态资源模块化引入

    1. 目录结构(webStrom) 2. 代码 1.html <!DOCTYPE html> <html lang="en"> <head> & ...

  8. java面试(一)

    一.java基础 1.JDK和JRE的区别? JDK是java的开发环境,JRE是java的运行环境,即编写java程序就一定需要JDK,只是运行java程序只要JRE就足够了. 2.java中==和 ...

  9. 反射实现定位Servlet中的方法

    public class BaseServlet extends HttpServlet{ @Override protected void service(HttpServletRequest re ...

  10. CircleLinkList(循环链表)

    尾插法和循环链表. #include <stdio.h> #include <stdlib.h> typedef struct CircleLinkList { int dat ...