原文地址 译者:远方的自由 转载请注明出处: http://blog.csdn.net/z2066411585
构建MediaPlayerInterface 参考实现是可选的,但是要求:
注意: 插件可能依赖于需要基于GStreame的MediaPlayer安装的库,才能正常工作
构建示例应用是可选的,但是要求:
注意: 示例应用程序将使用或禁止唤醒词,如果在没有唤醒词的情况下构建,则示例程序将禁用免提模式
iHeartRadio播放器需要一下解码器和安装包
在创建构建之前,你需要安装运行AuthServer
所需要的一些软件,AuthServer
是使用Flask在Python中构建最小的授权服务器. 它提供一种简单的方式来获取你的第一个刷新令牌,这将用于集成测试
并获取所有与AVS交互所需要的访问令牌
重要提示 : AuthServer
仅用于测试目的,商业产品将使用亚马逊开发者门户上提供用于远程授权和本地授权的指令获得使用亚马逊(LWA)证书的登录,有关其他信息,参见AVS Authorization
如果你的系统上没有安装pip
,遵循详细的安装说明:链接
对于Windows运行这个命令
pip install flash requests
对于Unix/Mac运行这个命令
pip install –user flash requests
如果你还没有,按照这些说明注册产品和创建一个安全配置文件
确保注意以下内容,稍后配置AuthServer
需要用到以下内容
重要提示:确保你在网页选项卡中设置了允许来源和允许返回URL
以下说明假定满足所有要求和依赖关系,并已经克隆仓库(或保存本地压缩包)
支持以下构建类型:
DEBUG
- 用-g
编译标志位显示调试日志RELEASSE
- 添加-O2
标志并删除-g
标志MINSIZEREL
- RELEASE
标志位编译并用( -O s)
优化为编译最小体积的版本指定构建类型,使用这个命令代替下面的步骤4:
cmake <absolute-path-to-source> -DCMAKE_BUILD_TYPE=<build-type>`
注意:唤醒词检测和关键字检测可互换使用
用于C++的AVS Device SDK支持来自Sensory和KITT.ai唤醒词检测.
构建唤醒词检测需要以下选项: 请用Sensory的SENSORY
替换<wake-word-name>
和KITT.ai的KITTAI
:
-D<wake-word-name>_KEY_WORD_DETECTOR=<ON or OFF>
-指定在构建期间唤醒词启用还是禁用-D<wake-word-name>_KEY_WORD_DETECTOR_LIB_PATH=<absolute-path-to-lib>
- 唤醒词库的路径-D<wake-word-name>_KEY_WORD_DETECTOR_INCLUDE_DIR=<absolute-path-to-include-dir>
- 唤醒词头文件目录的路径注意: 要列出所有可用的 CMake选项,使用以下命令:-LH
如果使用Sensory唤醒词,版本要求5.0.0-beta.10.2 或更高版本
这是一个cmake命令构建Sensory的例子
cmake <absolute-path-to-source> -DSENSORY_KEY_WORD_DETECTOR=ON -DSENSORY_KEY_WORD_DETECTOR_LIB_PATH=.../alexa-rpi/lib/libsnsr.a -DSENSORY_KEY_WORD_DETECTOR_INCLUDE_DIR=.../alexa-rpi/include
请注意,在运行cmake并将其构建到SDK之前,你可能需要授权Sensory库,可以在Sensory Github页面下发现一个授权Sensory库的脚本bin/license.sh
一个矩阵计算库,被称为BLAS,需要使用KITT.ai,以下是安装此库的示例命令:
apt-get install libatlas-base-dev
brew install homebrew/science/openblas
这是一个cmake命令构建KITT.ai的例子:
cmake <absolute-path-to-source> -DKITTAI_KEY_WORD_DETECTOR=ON -DKITTAI_KEY_WORD_DETECTOR_LIB_PATH=.../snowboy-1.2.0/lib/libsnowboy-detect.a -DKITTAI_KEY_WORD_DETECTOR_INCLUDE_DIR=.../snowboy-1.2.0/include
MediaPlayer
(MediaPlayerInterface的参考实现)基于GStreamer,并不是默认生成,要构建MediaPlayer
必须CMake指定-DGSTREAMER_MEDIA_PLAYER=ON
选项
如果GStreamer通过源码安装,构建的时候必须CMake通过DCMAKE_PREFIX_PATH
选项指定前缀路径
这是一个cmake
命令的例子
cmake <absolute-path-to-source> -DGSTREAMER_MEDIA_PLAYER=ON -DCMAKE_PREFIX_PATH=<path-to-GStreamer-build>
PortAudio是运行C++示例程序的AVS设备SDK必须的,构建说明可用于Linux
和macOS
这是使用PortAudio为C++构建AVS Device SDK 的示例CMake命令:
cmake <absolute-path-to-source> -DPORTAUDIO=ON
-DPORTAUDIO_LIB_PATH=<path-to-portaudio-lib>
-DPORTAUDIO_INCLUDE_DIR=<path-to-portaudio-include-dir>
例子:
cmake <absolute-path-to-source> -DPORTAUDIO=ON
-DPORTAUDIO_LIB_PATH=.../portaudio/lib/.libs/libportaudio.a
-DPORTAUDIO_INCLUDE_DIR=.../portaudio/include
创建一个外部构建:
1.克隆一个仓库(或下载解压该压缩包)
2.创建一个外部编译目录. 重要:这个目录不能是源目录的子目录
3.cd
你的编译目录
4.在你的编译目录,运行cmake
,你应该看到下面的消息:
-- Please fill <absolute-path-to-build-directory>/Integration/AlexaClientSDKConfig.json before you execute integration tests.
打开Integration/AlexaClientSDKConfig.json
用你最喜欢的文本编辑器填写你的产品信息
5.从编译目录,运行make
编译SDK
SDK需要配置json文件,其中一个例子在Integration/AlexaClientSDKConfig.json
.json的内容应该填入你的产品信息(你在注册产品和创建安全配置文件从开发人员门户获得),和数据库和声音的位置.这个json文件
是集成测试正常工作必须的,也适用于示例应用程序
该文件的格式如下:
{
"authDelegate":{
"clientSecret":"<Client Secret for your device from the Amazon Developer Portal>",
"deviceSerialNumber":"<A unique value that you create, similar to a SKU or UPC. E.g. "123456">",
"refreshToken":"${SDK_CONFIG_REFRESH_TOKEN}",
"clientId":"<Client ID for your device from the Amazon Developer Portal>",
"productId":"<Product ID for your device from the Amazon Developer Portal>"
},
"alertsCapabilityAgent":{
"databaseFilePath":"/<absolute-path-to-db-directory>/<db-file-name>",
"alarmSoundFilePath":"/<absolute-path-to-alarm-sound>/alarm_normal.mp3",
"alarmShortSoundFilePath":"/<absolute-path-to-short-alarm-sound>/alarm_short.wav",
"timerSoundFilePath":"/<absolute-path-to-timer-sound>/timer_normal.mp3",
"timerShortSoundFilePath":"/<absolute-path-to-short-timer-sound>/timer_short.wav"
},
"settings":{
"databaseFilePath":"/<absolute-path-to-db-directory>/<db-file-name>",
"defaultAVSClientSettings":{
"locale":"en-US"
}
},
"certifiedSender":{
"databaseFilePath":"/<absolute-path-to-db-directory>/<db-file-name>"
}
}
注意:deviceSerialNumber
是你创建的唯一标识符,它不是亚马逊提供的.注意:根据Alexa Voice Service Agreement
包含在仓库库中的音频资料被授权”Alexa Materials”
在创建外部构建目录之后,下一步是运行AuthServer
从LWA中获取有效的刷新令牌
AuthServer
:python AuthServer/AuthServer.py
你应该看到一条指示服务器正在运行的消息
http://localhost:3000
Integration/AlexaClientSDKConfig.json
中将会填充刷新令牌,在你继续之前,Integration/AlexaClientSDKConfig.json
中确保有刷新令牌是重要的用于C++的AVS Device SDK单元测试使用Google Test框架,确保已经安装Google Test,然后运行make all test
开始集成测试之前,确保所有单元测试都已经通过
为了运行Sensory唤醒次检测单元测试,你必须从GitHub下载以下文件并存放在<source dir>/KWD/inputs/SensoryModels
确保集成测试正常运行
为了运行KITT.ai唤醒次检测单元测试,你必须从GitHub下载以下文件并存放在<source dir>/KWD/inputs/KittAiModels:
resources/alexa/alexa-avs-sample-app
中的alexa.umdl
是重要的集成测试确保你的构建可以从AVS提出请求和接收响应
重要:集成测试参考AlexaClientSDKConfig.json
文件,你必须创建它,如果你没有完成此操作,参见Create the AlexaClientSDKConfig.json file
部分(上面)
运行集成测试使用这个命令:Create the AlexaClientSDKConfig.json file
如果你的项目是基于GNU/Linux平台(Ubuntu,Debian等)构建的,有一个可选的的集成测试,用于测试慢速网络的ACL(Access Control List: 是路由器和交换机接口的指令列表,用来控制端口进出的数据包),启用这个测试,使用 CMake这个选项
cmake <absolute-path-to-source> -DNETWORK_INTEGRATION_TESTS=ON –DNETWORK_INTERFACE=eth0
注意:网络接口的名称可以使用ifconfig -a
查看
重要:这个测试需要root权限.
如果该项目是用Sensory唤醒词构建,你必须从GitHub下载以下文件并放在<source dir>/Integration/inputs/SensoryModels
保证集成测试正常运行:
如果该项目是用KITT.ai唤醒构建,你必须从Github下载以下文件并放在<source dir>/Integration/inputs/KittAiModels
保证集成测试的正常运行:
resources/alexa/alexa-avs-sample-app
中的alexa.umdl
,确保KITT.ai集成测试的正常运行注意: 需要使用PortAudio和GStreamer进行构建
在运行示例程序之前,请注意应用程序需要的两个参数,第一个是必须的,并且是AlexaClientSDKConfig.json
的路径,第二个是只有在构建具有唤醒词支持的示例程序才需要,并且是包含唤醒词模型的文件夹路径.
从你的构建目录跳转到SampleApp/src
目录,运行这个命令:
TZ=UTC ./SampleApp <REQUIRED-absolute-path-to-config-json> <OPTIONAL-absolute-path-to-wake-word-engine-folder-enclosing-model-files> <OPTIONAL-log-level>
注意: 支持以下日志记录级别,提供最高和最低的日志记录级别: DEBUG9, DEBUG8, DEBUG7, DEBUG6, DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, DEBUG0, INFO, WARN, ERROR, and CRITICAL
重要:启动示例应用程序后,你必须等待几秒钟才能加载应用程序,然后再进行第一次请求,这是一个已知问题,将在以后的版本解决.
这些说明假定你已经按照说明创建了外部构建目录,运行cmake
命令,你必须使用DCMAKE_INSTALL_PREFIX
选型指定安装路径.
CMake的示例命令:
cmake <absolute-path-to-source>
-DCMAKE_INSTALL_PREFIX=<absolute-path-to-out-of-source-build>
运行cmake
之后,运行make install
安装这个SDK
库和头文件将被安装到指定的目录,另外,生成AlexaClientSDK.pc
,可以在支持pkg-config.
系统上使用
使用SDK构建应用程序,必须为CMake制定安装的前缀路径,例如:
cmake -DCMAKE_PREFIX_PATH=<absolute-path-to-install>
注意:你可能需要指定rpath
将SDK链接到你的应用程序
注意:在你的应用程序,需要将包含路径添加到RapidJSON
本地构建API文档,从构建目录运行这个命令:make doc
.