dueros linux运行,DuerOS开放平台

Linux版本DCS SDK开发指南

Linux版本DCS SDK是基于DCS协议的智能设备语音交互开发包,开发者可以通过Linux DCS SDK实现智能设备与DuerOS之间的通信,降低了设备接入DuerOS的开发成本。Linux DCS SDK提供了语音输入、语音输出、扬声器控制、音频播放控制、闹钟设定等功能。此外,Linux DCS SDK具有网络配置、设备配对能力,结合小度之家SDK,可以轻松实现端设备的网络配置和访问授权。

常用功能

Linux DCS SDK常用功能模块包括应用层接口模块、媒体播放器模块、网络配置和设备配对授权模块、录音模块、唤醒模块等。

应用层接口模块

通过该模块提供的接口可以获取设备信息和对设备进行操控。包括初始化所有模块、控制提示音、控制设备按键、控制灯效、控制音效等。

媒体播放器模块

通过该模块提供的接口实现对用户注册的媒体播放器进行系统调用。包括音乐播放器、TTS播放器、蓝牙播放器、闹钟提示音播放器等。

网络配置和设备配对授权模块

提供无线网络配置、配对(设备发现与账户绑定)、DLP等基础功能,这些基础功能需要配合小度之家SDK完成。

录音模块

提供音频输入接口,音频数据格式为16bit小端,采样率16kHz。默认使用PortAudio库采集音频,也可以根据设备情况创建其他的采集音频方式。

唤醒模块

提供了内置唤醒引擎,唤醒词为“小度小度”。支持语音唤醒和点触式唤醒,默认使用语音唤醒,可以根据设备情况选择合适的唤醒方式。

自定义指令

支持设备注册的自定义指令集合。

开发运行环境

注册设备并申请Linux DCS SDK

请在DuerOS设备控制台上注册智能设备,具体流程请参见控制台接入流程。

Linux DCS SDK工程

Linux DCS SDK工程目录如下。

appresources SampleApp存放资源目录文件。

build存放交叉编译工具。

build.sh编译脚本。

DCSApp目录存放SampleApp源代码。

resources目录存放DCS SDK。

common.res是唤醒资源文件。

config.json是DCS SDK配置文件。

xiaoduxiaodu_all_10022017.umdl是唤醒模型文件。

sdk是DCS SDK相关头文件和so库。

third存放DCS SDK依赖的第三方库文件。

25d87899a7b2b6be4e1827c382e2a5bb.png

运行环境

硬件环境

Linux DCS SDK的硬件需要满足以下条件。

单核CPU主频不小于1GHz

Flash空间不小于128M

内存空间不小于64M

支持浮点运算

软件环境

软件需要具备以下条件。

Ubuntu 16.04及以上的64位版本

支持C++11的编译器(推荐使用GNU GCC 4.9.4及以上版本)

Cmake 3.6.3及以上版本

第三方开源库

Linux DCS SDK依赖以下第三方开源文件。

OpenSSL 1.0.2g

zlib 1.2.8

Nghttp2 v1.24.0

libcurl 7.54.1

SQLite3 3200100

iconv 1.14

Sample application依赖如下第三方库文件。

PortAudio v190600

ffmpeg 3.2.7

注:Linux DCS SDK发布套件里面包含了第三方的开源库,不需要开发者准备。

DCS SDK应用示例

创建应用步骤

使用Linux DCS SDK创建DCSSdkApplication一般分为四步。

修改config.json文件里的设备信息。

构建DCSSdkApplication应用实例。

在main.cpp中初始化DCSSdkApplication。

编译运行DCSSdkApplication。DCSSdkApplication运行成功后,可以与智能设备进行语音交互。

Sample application举例

以Linux DCS SDK中Sample application为例讲解如何创建DCSApplication。Sample application存放在DCSApp目录中。

修改config.json文件里的设备信息。 打开工程文件resources/config.json,将文件中的clientId替换为在小度智能平台上申请的产品client id信息。其中client id信息可以在基础信息里面查询。

3ef386c4af2657ef751116a4cd2dd15b.png

构造DCSSdkApplication实例对象。该实例对象的信息存储对象DcsSdkParameters中,对象DcsSdkParameters的定义请参见DcsSdkParameters.h头文件。下面是Sample Application中参数准备及构建DCSSdkApplication实例过程。

配置并创建设备相应的播放器实例。主要包含语音播报播放器、音乐播放播放器、闹钟闹铃播放器、提示音播放器等。

读取SampleApp配置文件。

Configuration::getInstance()->readConfig()

创建语音播报播放器实例,传入参数为音频设备节点。

auto speakMediaPlayer = mediaPlayer::TtsPlayerProxy::create(configuration->getTtsPlaybackDevice());

创建音乐播放播放器实例,传入参数为音频设备节点。

auto audioMediaPlayer = mediaPlayer::MediaPlayerProxy::create(configuration->getMusicPlaybackDevice());

创建闹钟闹铃播放器实例,传入参数为音频设备节点。

auto alertsMediaPlayer = mediaPlayer::AlertsPlayerProxy::create(configuration->getAlertPlaybackDevice());

创建提示音播放器实例,传入参数为音频设备节点。

auto localMediaPlayer = mediaPlayer::LocalPlayerProxy::create(configuration->getInfoPlaybackDevice());

创建本地语音合成播放器节点,用于将文字离线转换为语音播报,传入参数为音频设备节点。

auto localTtsPlayer = mediaPlayer::LocalTtsProxy::create(configuration->getNattsPlaybackDevice());

创建蓝牙播放器,如果硬件设备支持并需要蓝牙播放功能可以创建此实例。

auto blueToothPlayer = mediaPlayer::BlueToothPlayerProxy::create();

准备SDK初始化的参数。

duerOSDcsSDK::sdkInterfaces::DcsSdkParameters parameters;

SDK配置文件的目录设置。

parameters.setPathToConfig(PATH_TO_CONFIG);

SDK运行时动态写入的配置文件路径设置,启动程序时文件可以不存在,但路径必须有效可写。

parameters.setPathToRuntimeConfig(PATH_TO_RUNTIME_CONFIG);

设置设备的唯一编号。

parameters.setDeviceId();

设置TTS的播放器实例。

parameters.setSpeakMediaPlayer(speakMediaPlayer);

设置音频播放器实例。

parameters.setAudioMediaPlayer(audioMediaPlayer);

设置闹钟播放器实例。

parameters.setAlertsMediaPlayer(alertsMediaPlayer);

设置本地提示音播放器实例。

parameters.setLocalAlarmMediaPlayer(localMediaPlayer);

设置会话状态观察类实例。

parameters.setDialogStateObservers({applicationManager});

设置连接状态观察类实例。

parameters.setConnectionObservers(applicationManager);

设置设备相关操作的接口实现类实例。

parameters.setApplicationImplementation(applicationManager);

设置蓝牙资源播放器实例。

parameters.setLocalMediaPlayer(blueToothPlayer);

设置SDK内置的唤醒库。

parameters.setEnableSdkWakeup(true);

auto voiceAndTouchWakeUpObserver = std::make_shared();

parameters.setKeyWordObserverInterface(voiceAndTouchWakeUpObserver);

parameters.setLocalTtsMediaPlayer(localTtsPlayer);

m_dcsSdk = duerOSDcsSDK::sdkInterfaces::DcsSdk::create(parameters);

if (!m_dcsSdk) {

bduer::Logger::log_error("Failed to create default SDK handler!");

return false;

}

初始化PortAudio录音工具,创建PortAudio录音包装器实例。

std::shared_ptr micWrapper = PortAudioMicrophoneWrapper::create(m_dcsSdk);

启用DuerLink相关功能,如配网过程。

初始化DuerLink相关实例。

DuerLinkWrapper::getInstance()->initDuerLink();

启用配网相关功能。

DuerLinkWrapper::getInstance()->startNetworkRecovery();

启用设备发现和DLP(需要配合小度之家SDK进行使用)相关功能。

DuerLinkWrapper::getInstance()->startDiscoverAndBound(m_dcsSdk->getClientId());

在main.cpp中初始化DCSApplication。参考Sample Application程序的在入口文件main.cpp,实现工程的初始化。

创建一个DCSApplication实例。

auto dcsApplication = duerOSDcsApp::application::DCSApplication::create()

通过调用run函数让DCSApplication能持续运行直到退出。

dcsApplication->run()

编译及运行。

编译工程

在工程下执行$sh build.sh build/build.conf,生成相应的XXX_buildout目录。 XXX是平台的名称,如使用Ubuntu平台,生成的文件名称为Ubuntu_buildout。

运行程序

在XXX_buildout/output目录下,通过命令export $LD_LIBRARY_PATH=./lib设置环境,然后运行程序./duer_linux。

当程序运行成功时,可以通过语音与设备进行交互。通过唤醒词唤醒设备,并发出请求,请求示例如下。

小度小度,北京今天天气怎么样

小度小度,今天还有去金华的火车票吗

小度小度,我想订外卖

常见问题

如果不使用默认的PortAudio库采集音频,使用其他方式采集音频,该如何实现?

参照PortAudioMicrophoneWrapper的实现,在采集到音频数据时,通过调用DcsSdk的writeAudioData函数,向DuerOS传送音频数据。

如何使用点触式唤醒方式。

首先在调用create函数时,通过函数parametrs.setEnableSdkWakeup(false)禁用SDK语音唤醒功能,然后在触发与DuerOS的每一次交互前,调用notifyOfTapToTalk函数通知DuerOS开始语音识别。

账号登录失败,日志中出现Peer certificate cannot be authenticated with given CA certificates错误信息,该如何解决?

Linux DCS SDK通过HTTPS访问DuerOS服务,并需要对应的证书信息,默认证书信息在/etc/ssl/certs/目录下,用户也可以通过在resources/config.json中修改curloptCapath配置指定证书目录,另外设备也需要有同步最新时间的能力,否则证书验证也会失败。

闹钟功能失效?

请确认设备是否使用百度账号登录,在小度之家配置后才能使用。

Sample Application调用哪个接口进入配网模式?

请调用DuerLinkWrapper->startNetworkConfig()接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值