Alexa交叉编译(avs-device-sdk)

  • 1 前言
  • 2 环境准备
    • 2.1 工程目录构建
    • 2.2 下载三方库文件
    • 2.3 下载源码
  • 3 编译依赖库
    • 3.1 编译portaudio
    • 3.2编译nghttp2
    • 3.3 编译curl
    • 3.4 编译gstreamer
      • 3.4.1 编译zlib
      • 3.4.2 编译libffi
      • 3.4.3 编译glib
      • 3.4.4 编译gstreamer
      • 3.4.5 编译orc-0.4.26
      • 3.4.6 编译gst-plugins-base
      • 3.4.7 编译gst-plugins-good
      • 3.4.8 编译gst-plugins-good
    • 3.5 编译sqlite3
    • 3.6 编译openssl
  • 4 编译avs源码
  • 5 运行测试

1 前言

亚马逊alexa语音识别解决方案作为业界的主流的语音识别的解决方案,本次交叉编译旨在将alexa移植到arm平台,实现设备的智能语音识别功能。

2 环境准备

2.1 工程目录构建

根据官方文档,先进行工程目录构建,其中source主要放avs源码,third-party存放第三方库文件。

 cd $HOMEmkdir my_projectcd my_projectmkdir build source third-party application-necessitiescd application-necessitiesmkdir sound-files

2.2 下载三方库文件

curl、poraudio、
官网gstreamer下载地址

cd $HOME/my_project/third-party
wget https://github.com/curl/curl/releases/download/curl-7_67_0/curl-7.67.0.tar.gz
wget -c http://www.portaudio.com/archives/pa_stable_v190600_20161030.tgz
wget https://github.com/nghttp2/nghttp2/releases/download/v1.39.2/nghttp2-1.39.2.tar.gz
wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1d.tar.gz
wget https://www.zlib.net/zlib-1.2.11.tar.gz
wget https://sourceware.org/ftp/libffi/libffi-3.2.1.tar.gz
wget https://github.com/winlibs/glib/archive/refs/tags/glib-2.45.4.tar.gz
wget https://gstreamer.freedesktop.org/src/orc/orc-0.4.26.tar.xz
wget https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.12.0.tar.xz
wget https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.12.0.tar.xz
wget https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.12.0.tar.xz
wget https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.12.0.tar.xz
wget https://github.com/sqlite/sqlite/archive/refs/tags/version-3.36.0.tar.gz

2.3 下载源码

cd $HOME/my_project/source
git clone --single-branch https://github.com/alexa/avs-device-sdk.git

3 编译依赖库

3.1 编译portaudio

cd portaudio ./configure --host=arm-linux-gnueabihf --without-jack &&
make -j4

3.2编译nghttp2

cd nghttp2-1.39.2/
./configure --host=arm-linux-gnueabihf --prefix=$HOME/my_project/install/arm/
OPENSSL_CFLAGS=’-I/home/my_project/install/arm/include’
OPENSSL_LIBS=’-lssl -lcrypto -L/home/my_project/install/arm/lib’
ZLIB_CFLAGS=’-I/home/my_project/install/arm/include’
ZLIB_LIBS=’-lz -L/home/my_project/install/arm/lib’
–enable-app

3.3 编译curl

cd curl-7.67.0
./configure --with-nghttp2 --host=arm-linux-gnueabihf --prefix=/home/my_project/third-party/curl-7.67.0/install/arm --with-libssl make -j4 --with-nghttp2=$HOME/my_project/install/arm/

3.4 编译gstreamer

3.4.1 编译zlib

cd zlib-1.2.11/
CC=arm-linux-gnueabihf-gcc ./configure --prefix=$HOME/my_project/third-party/zlib-1.2.11/install/arm
make && make install

3.4.2 编译libffi

cd libffi-3.2.1/
CC=arm-linux-gnueabihf-gcc ./configure --host=arm-linux-gnueabihf --prefix=$HOME/my_project/third-party/libffi-3.2.1/install/arm
make && make install

3.4.3 编译glib

先修改配置文件

cd glib-2.45.3/
vi glib.cache
glib_cv_long_long_format=ll
glib_cv_stack_grows=no
glib_cv_have_strlcpy=no
glib_cv_have_qsort_r=yes
glib_cv_va_val_copy=yes
glib_cv_uscore=no
glib_cv_rtldglobal_broken=no
ac_cv_func_posix_getpwuid_r=yes
ac_cv_func_posix_getgrgid_r=yes

编译glib库

cd glib-2.45.3/
CC=arm-linux-gnueabihf-gcc ./configure --with-pcre=internal --enable-libmount=no
–prefix=/home/my_project/third-party/glib-2.45.3/install/arm
LIBFFI_CFLAGS=’-I/home/my_project/third-party/libffi-3.2.1/install/arm/lib/libffi-3.2.1/include/’
LIBFFI_LIBS=’-lffi -L=/home/my_project/third-party/libffi-3.2.1/install/arm/lib’
ZLIB_CFLAGS=’-I/home/my_project/third-party/zlib-1.2.11/install/arm/include’
ZLIB_LIBS=’-lz -L/home/my_project/third-party/zlib-1.2.11/install/arm/lib’
–host=arm-linux-gnueabihf --cache-file=glib.cache --disable-selinux
–disable-xattr --disable-libelf

3.4.4 编译gstreamer

cd gstreamer-1.12.0/
CC=arm-linux-gnueabihf-gcc ./configure --prefix=$HOME/my_project/third-party/gstreamer-1.12.0/install/arm
–host=arm-linux-gnueabihf
LIBS=’-lz -L/home/my_project/third-party/zlib-1.2.11/install/arm/lib’
GLIB_CFLAGS=’-I/home/my_project/third-party/glib-2.45.3/install/arm/include/glib-2.0/
-I/home/my_project/third-party/glib-2.45.3/install/arm/include/glib-2.0/glib/
-I/home/my_project/third-party/glib-2.45.3/install/arm/lib/glib-2.0/include/’
GLIB_LIBS=’-lglib-2.0 -lgio-2.0 -lgmodule-2.0 -lgobject-2.0
-lgthread-2.0 -L=/home/my_project/third-party/glib-2.45.3/install/arm/lib
-lffi -L=/home/my_project/third-party/libffi-3.2.1/install/arm/lib’

3.4.5 编译orc-0.4.26

cd orc-0.4.26/
CC=arm-linux-gnueabihf-gcc ./configure --prefix=$HOME/my_project/third-party/orc-0.4.26/install/arm
–host=arm-linux-gnueabihf
make && make install

export PKG_CONFIG_PATH=/home/my_project/third-party/orc-0.4.26/install/arm/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/home/my_project/third-party/glib-2.45.3/install/arm/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/home/my_project/third-party/zlib-1.2.11/install/arm/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/home/my_project/third-party/libffi-3.2.1/install/arm/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/home/my_project/third-party/orc-0.4.26/install/arm/lib/pkgconfig:$PKG_CONFIG_PATH

3.4.6 编译gst-plugins-base

cd gst-plugins-base-1.12.0/
CC=arm-linux-gnueabihf-gcc ./configure --prefix=$HOME/my_project/third-party/gst-plugins-base-1.12.0/install/arm
–host=arm-linux-gnueabihf
LIBS=’-lz -L/home/my_project/third-party/zlib-1.2.11/install/arm/lib’
GLIB_CFLAGS=’-I/home/my_project/third-party/glib-2.45.3/install/arm/include/glib-2.0/
-I/home/my_project/third-party/glib-2.45.3/install/arm/include/glib-2.0/glib/
-I/home/my_project/third-party/glib-2.45.3/install/arm/lib/glib-2.0/include/’
GLIB_LIBS=’-lglib-2.0 -lgio-2.0 -lgmodule-2.0 -lgobject-2.0
-lgthread-2.0 -L=/home/my_project/third-party/glib-2.45.3/install/arm/lib
-lffi -L=/home/my_project/third-party/libffi-3.2.1/install/arm/lib’
ORC_CFLAGS=’-I/home/my_project/third-party/orc-0.4.26/install/arm/include/orc-0.4’
ORC_LIBS=’-lorc-0.4 -L=/home/my_project/third-party/orc-0.4.26/install/arm/lib’
–disable-x --disable-xvideo --disable-ogg --disable-oggtest --disable-freetypetest --disable-vorbis --disable-vorbistest --disable-pango --disable-alsa

3.4.7 编译gst-plugins-good

cd gst-plugins-good-1.12.0/
CC=arm-linux-gnueabihf-gcc ./configure --prefix=$HOME/my_project/install/arm/
–host=arm-linux-gnueabihf
LIBS=’-lz -L/home/my_project/install/arm/lib’
GLIB_CFLAGS=’-I/home/my_project/install/arm/include/glib-2.0/
-I/home/my_project/install/arm/include/glib-2.0/glib/
-I/home/my_project/install/arm/lib/glib-2.0/include/’
GLIB_LIBS=’-lglib-2.0 -lgio-2.0 -lgmodule-2.0 -lgobject-2.0
-lgthread-2.0 -L=/home/my_project/install/arm/lib
-lffi -L=/home/my_project/install/arm/lib’
ORC_CFLAGS=’-I/home/my_project/install/arm/include/orc-0.4’
ORC_LIBS=’-lorc-0.4 -L=/home/my_project/install/arm/lib’
–disable-x --disable-rtsp --disable-videobox --disable-oss
–disable-cairo
–disable-jack
–disable-jpeg
–disable-libcaca
–disable-libdv
–disable-libpng
–disable-pulse
–disable-dv1394
–disable-shout2
–disable-soup
–disable-speex
–disable-taglib
–disable-vpx
–disable-wavpack
–disable-bz2
–disable-gdk_pixbuf
–disable-flac

make -j 4 && make install

3.4.8 编译gst-plugins-good

cd gst-plugins-ugly-1.12.0/
CC=arm-linux-gnueabihf-gcc ./configure --prefix=$HOME/my_project/install/arm/
–host=arm-linux-gnueabihf
LIBS=’-lz -L/home/my_project/install/arm/lib’
GLIB_CFLAGS=’-I/home/my_project/install/arm/include/glib-2.0/
-I/home/my_project/install/arm/include/glib-2.0/glib/
-I/home/my_project/install/arm/lib/glib-2.0/include/’
GLIB_LIBS=’-lglib-2.0 -lgio-2.0 -lgmodule-2.0 -lgobject-2.0
-lgthread-2.0 -L=/home/my_project/install/arm/lib
-lffi -L=/home/my_project/install/arm/lib’
ORC_CFLAGS=’-I/home/my_project/install/arm/include/orc-0.4’
ORC_LIBS=’-lorc-0.4 -L=/home/my_project/install/arm/lib’
–disable-a52dec
–disable-amrnb
–disable-amrwb
–disable-cdio
–disable-dvdread
–disable-lame
–disable-mpeg2dec
–disable-mpg123
–disable-sidplay
–disable-twolame
–disable-x264

make -j 4 && make install

3.5 编译sqlite3

cd sqlite-autoconf-3360000/
./configure --host=arm-linux-gnueabihf --prefix=$HOME/my_project/third-party/sqlite-autoconf-3360000/install/arm
make && make install

3.6 编译openssl

cd openssl-OpenSSL_1_1_1d/
./config no-asm --prefix=$HOME/my_project/third-party/openssl-OpenSSL_1_1_1d/install/arm --cross-compile-prefix=arm-linux-gnueabihf-
vi Makefile
#删除 -m64
make && make install

4 编译avs源码

cd $HOME/my_project/build
cmake $HOME/my_project/source/avs-device-sdk \-DCMAKE_TOOLCHAIN_FILE=../source/avs-device-sdk/AvsDeviceSdk.cmake \-DGSTREAMER_MEDIA_PLAYER=ON \-DCMAKE_INSTALL_PREFIX=$HOME/my_project/install/arm_avs \-DTARGET_RPATH=$HOME/my_project/install/arm/ \-DUSE_CCACHE=ON \-DPORTAUDIO=ON \-DPORTAUDIO_LIB_PATH=$HOME/my_project/install/arm/lib/libportaudio.so \-DPORTAUDIO_INCLUDE_DIR=$HOME/my_project/install/arm/include \-DCMAKE_BUILD_TYPE=DEBUG \-DCURL_INCLUDE_DIR=$HOME/my_project/install/arm/include/ \-DCURL_LIBRARY=$HOME/my_project/install/arm/lib/libcurl.so \-DSQLITE_INCLUDE_DIR=$HOME/my_project/install/arm/include \-DSQLITE_LIBRARY=$HOME/my_project/install/arm/lib/libsqlite3.so \-DCRYPTO_INCLUDE_DIR=$HOME/my_project/install/arm/include \-DCRYPTO_LIBRARY=$HOME/my_project/install/arm/lib/libcrypto.so \-DGLIB_INCLUDE_DIR=$HOME/my_project/install/arm/include/glib-2.0 \-DGLIB_LIBRARY=$HOME/my_project/install/arm/lib/libglib-2.0.so make SampleApp

5 运行测试

认证,下载相关的db文件到database

 mkdir $HOME/my_project/build/Integration/databasecd $HOME/my_project/source/avs-device-sdk/tools/Installsudo bash genConfig.sh config.json 12345 \$HOME/my_project/build/Integration/database \$HOME/my_project/source/avs-device-sdk \$HOME/my_project/build/Integration/AlexaClientSDKConfig.json \-DSDK_CONFIG_MANUFACTURER_NAME="my_project" \-DSDK_CONFIG_DEVICE_DESCRIPTION="ubuntu"

拷贝挂载运行,查看log看还有什么报错需要解决。

 cd $HOME/my_project/build./SampleApp/src/SampleApp ./Integration/AlexaClientSDKConfig.json DEBUG9

Alexa交叉编译(avs-device-sdk)相关推荐

  1. 基于Ubuntu交叉编译FFmpeg Windows SDK

    写在前面 FFmpeg是一个开源且跨平台的音视频解决方案,集采集.转码.流式化为一身,项目的libavcodec编解码模块和libavformat媒体格式模块,支持非常非常丰富的编解码格式和容器封装格 ...

  2. Work with Alexa : 智能设备连接到Alexa

    背景: 我想开发一款基于Amazon Alexa的智能家居设备.目前使用Alexa语音服务有两种方式:AVS Device SDK内置设备和设备连接到Alexa.本文介绍设备连接到Alexa这种方式. ...

  3. 从零开始,搭建 AI 音箱 Alexa 语音服务

    本文来自作者 Mike 在 GitChat 上分享 「从零开始,搭建 AI 音箱 Alexa 语音服务」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 一.概述 生活场景的引入: 物联网的 ...

  4. Linux平台:Alexa语音服务快速入门指南

    原文地址 译者:远方的自由 转载请注明出处: http://blog.csdn.net/z2066411585 概述 用于C++的AVS设备SDK为Alexa语音服务提供了一个现代化的C++(11或更 ...

  5. Alexa Voice Service

    原文:AVS Documentation 1.简介 1)具有Alexa 功能的产品是什么样子的 (1)这个产品可以访问Alexa 服务 (2)这个产品可以被唤醒词 "Alexa" ...

  6. 在“树莓派”上玩语音识别(附代码)

    语音助理已经迅速成为一个重要的产品功能,这要归功于流行的基于智能语音的产品,例如 Amazon Echo 和 Google Home.虽然语音服务提供商为开发人员提供了应用程序编程接口 (API) 支 ...

  7. 美国智能音响生态系统对比分析

    美国智能音响生态系统对比分析 The article is released under license CC BY-NC-ND 4.0 The IoT Boot Camp series course ...

  8. Android NDK 减少 so 库体积方法总结

    1. 背景 基于亚马逊 AVS Device SDK 改造的全链路语音 SDK 最终编译的动态库有几十个,单架构动态库大小有几十兆,之前在Iot设备中勉强跑着,但是这个体积对于手机应用来说是致命的,各 ...

  9. 物联网技术周报第 103 期: DIY 智能音箱:基于 Raspberry Pi + Snowboy + AVS

    新闻 \\ \ <设计缺陷将导致亚马逊Echo变身成为监听设备>MWR的安全研究专家发现亚马逊Echo存在一个物理攻击漏洞,该漏洞将允许攻击者获得设备的root shell,然后安装恶意软 ...

  10. LiteOS学习笔记-9LiteOS SDK oc流程之MQTT

    LiteOS学习笔记-9LiteOS SDK oc流程之MQTT MQTT协议 MQTT协议简介 MQTT消息类型 LiteOS中MQTT实现 LiteOS OC MQTT 抽象组件 概述 配置并连接 ...

最新文章

  1. 来了来了!趋势预测算法大PK!
  2. C++智能指针(设计和使用)
  3. 白话 Python 的函数式编程
  4. ffmpeg内存模型及AVPacket和AVFrame API基本使用
  5. TypeScript Type Compatibility 类型兼容性
  6. 回溯法 -数据结构与算法
  7. 机器学习深度学习知识点总结
  8. 软件接口测试一个项目的实战,全网最全postman接口测试教程和接口项目实战~从入门到精通!!!...
  9. 7.3通过JVM来监控Spring Boot
  10. [AtCoder Beginner Contest 133]F - Colorful Tree
  11. 路由守卫 Maximum call stack size exceeded
  12. 中国高铁线路、列车、开通时间数据(2003-2020年)
  13. 多维正态分布与图形识别
  14. aloha仿真matlab,ALOHA协议的MATLAB仿真开题报告(参考).doc
  15. 非监督多类域适应:理论,算法和实践
  16. 惠民“大数据”强化共享发展
  17. Java架构师视频+授课资料
  18. python中and怎么计算_Python中 and,or 的计算规则
  19. 《MFC编程》:MFC程序的分类
  20. 华为路由器负载均衡_华为路由器双出口负载均衡+备份(示例代码)

热门文章

  1. 初学编程应该买什么样的电脑?
  2. 【论文】如何下载SCI论文
  3. 工控机在机器视觉系统中的应用
  4. 【Android】NanoHttpd学习(一)
  5. STM32F205转GD32F205晶振不能起振,什么原因?
  6. QT 资源管理器和.qrc文件的使用
  7. 智能制造:三体智能革命
  8. MT6573驱动开发日志之touchpanel
  9. 谐波分析matlab仿真,教程:利用GUI对Simulink模型进行谐波分析
  10. C++语法基础--句柄类