Alexa交叉编译(avs-device-sdk)
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)相关推荐
- 基于Ubuntu交叉编译FFmpeg Windows SDK
写在前面 FFmpeg是一个开源且跨平台的音视频解决方案,集采集.转码.流式化为一身,项目的libavcodec编解码模块和libavformat媒体格式模块,支持非常非常丰富的编解码格式和容器封装格 ...
- Work with Alexa : 智能设备连接到Alexa
背景: 我想开发一款基于Amazon Alexa的智能家居设备.目前使用Alexa语音服务有两种方式:AVS Device SDK内置设备和设备连接到Alexa.本文介绍设备连接到Alexa这种方式. ...
- 从零开始,搭建 AI 音箱 Alexa 语音服务
本文来自作者 Mike 在 GitChat 上分享 「从零开始,搭建 AI 音箱 Alexa 语音服务」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 一.概述 生活场景的引入: 物联网的 ...
- Linux平台:Alexa语音服务快速入门指南
原文地址 译者:远方的自由 转载请注明出处: http://blog.csdn.net/z2066411585 概述 用于C++的AVS设备SDK为Alexa语音服务提供了一个现代化的C++(11或更 ...
- Alexa Voice Service
原文:AVS Documentation 1.简介 1)具有Alexa 功能的产品是什么样子的 (1)这个产品可以访问Alexa 服务 (2)这个产品可以被唤醒词 "Alexa" ...
- 在“树莓派”上玩语音识别(附代码)
语音助理已经迅速成为一个重要的产品功能,这要归功于流行的基于智能语音的产品,例如 Amazon Echo 和 Google Home.虽然语音服务提供商为开发人员提供了应用程序编程接口 (API) 支 ...
- 美国智能音响生态系统对比分析
美国智能音响生态系统对比分析 The article is released under license CC BY-NC-ND 4.0 The IoT Boot Camp series course ...
- Android NDK 减少 so 库体积方法总结
1. 背景 基于亚马逊 AVS Device SDK 改造的全链路语音 SDK 最终编译的动态库有几十个,单架构动态库大小有几十兆,之前在Iot设备中勉强跑着,但是这个体积对于手机应用来说是致命的,各 ...
- 物联网技术周报第 103 期: DIY 智能音箱:基于 Raspberry Pi + Snowboy + AVS
新闻 \\ \ <设计缺陷将导致亚马逊Echo变身成为监听设备>MWR的安全研究专家发现亚马逊Echo存在一个物理攻击漏洞,该漏洞将允许攻击者获得设备的root shell,然后安装恶意软 ...
- LiteOS学习笔记-9LiteOS SDK oc流程之MQTT
LiteOS学习笔记-9LiteOS SDK oc流程之MQTT MQTT协议 MQTT协议简介 MQTT消息类型 LiteOS中MQTT实现 LiteOS OC MQTT 抽象组件 概述 配置并连接 ...
最新文章
- 来了来了!趋势预测算法大PK!
- C++智能指针(设计和使用)
- 白话 Python 的函数式编程
- ffmpeg内存模型及AVPacket和AVFrame API基本使用
- TypeScript Type Compatibility 类型兼容性
- 回溯法 -数据结构与算法
- 机器学习深度学习知识点总结
- 软件接口测试一个项目的实战,全网最全postman接口测试教程和接口项目实战~从入门到精通!!!...
- 7.3通过JVM来监控Spring Boot
- [AtCoder Beginner Contest 133]F - Colorful Tree
- 路由守卫 Maximum call stack size exceeded
- 中国高铁线路、列车、开通时间数据(2003-2020年)
- 多维正态分布与图形识别
- aloha仿真matlab,ALOHA协议的MATLAB仿真开题报告(参考).doc
- 非监督多类域适应:理论,算法和实践
- 惠民“大数据”强化共享发展
- Java架构师视频+授课资料
- python中and怎么计算_Python中 and,or 的计算规则
- 《MFC编程》:MFC程序的分类
- 华为路由器负载均衡_华为路由器双出口负载均衡+备份(示例代码)