基于AliOS Things玩转智能语音

摘要: 随着AI技术的进步,智能语音开始将人机交互从手+眼睛的传统模式中解放出来。带给人们更便捷、更风趣、更有人情味的体验,让被操作对象变得不再只是一个死板的工具,而更像是一个有生命的助理。“帮我打开空调”,“明天上班需要带伞吗”,“快递到哪了”…在万物互联的时代,你的所有需求只需要一句话便能实现。

点此查看原文:http://click.aliyun.com/m/43694/

随着AI技术的进步,智能语音开始将人机交互从手+眼睛的传统模式中解放出来。带给人们更便捷、更风趣、更有人情味的体验,让被操作对象变得不再只是一个死板的工具,而更像是一个有生命的助理。“帮我打开空调”,“明天上班需要带伞吗”,“帮我冲100块钱话费”…在万物互联的时代,你的所有需求只需要一句话便能实现。
AliOS Things 集成的Link Voice SDK即可实现智能语音交互。

关于阿里智能语音服务

阿里智能语音服务为设备提供语音交互能力、丰富的音乐内容、智能家居控制等,并可进行专有设备技能定制(如:语音操控跑步机、按摩椅等设备)。包括:

通用服务:搜歌、搜栏目、搜电台、问天气、百科、四则运算等;
阿里服务:控制智能家居、充值手机费、天猫超市购物、查询电费等 (需接入账号体系,可参考SDS接入);
私有服务:操控设备、售后电话查询等 (需要技能定制,签约时请提供产品需求)。

功能集成

设备接入阿里语音服务,需要集成Alink SDK和Link-Voice SDK,其中Alink SDK为设备提供接入阿里IoT平台的连接、账号体系、配网、OTA等能力,而Link-Voice SDK为设备提供阿里智能语音服务。设备首先要集成了Alink SDK成为SDS平台的一个设备,才能通过集成Link-Voice SDK使用阿里智能语音服务。

Link-Voice SDK除了依赖Alink为设备完成平台接入设备管理外,还需要表格所列模块完成相应工作。其中websockets用来进行语音数据的交互;opus完成语音录制的PCM格式到opus格式的转换(服务端只接收opus格式);cjson用来做json解析;mbedtls为alink和websockets的底层连接进行加密,为其数据传输提供安全保障。

图片描述

而目前AliOS Things已完成以上表格所有模块的移植适配工作并将其集成进来,所以我们直接使用AliOS Things便可完成愉快的智能语音开发。主mcu性能建议:

Flash>=512KB
RAM>=200KB
CPU>=180Mhz

单次语音识别流程图

简化缓冲处理等细节:
图片描述

开发平台准备

按理满足功能集成章节性能要求,并带音频录制及播放功能的开发板即可。前提是需要完成AliOS Tings的移植适配工作。本文以全志xr871evb(已完成OS适配)为例进行介绍。

本平台资源:

cpu:200Mhz cortext-M4f
RAM:448KB(部分硬件相关code需要加载到ram中运行,实际可用约280KB)
FLASH:2MB SPI FLASH

环境搭建及代码编译

先搭建AliOS开发环境(以linux为例):
AliOS-Things-Linux-Environment-Setup

然后从github阿里官方开源库下载最新版本的AliOS Things源码(https://github.com/alibaba/AliOS-Things):
以linux下开发为例:

git clone git@github.com:alibaba/AliOS-Things.git

切换到主分支:

git checkout master

建议再在主分支上新建一个自己的开发分支:

git checkout –b dev-xxx(yourname):

到目前为止环境也安装好了,代码也准备完毕,只待编译及烧录测试。
编译link-voice测试例程:

aos make linkvoiceapp@xr871evb xr871=1

代码烧入:

cd platform/mcu/xr871/tools/

修改串口配置:

vim settings.ini 

将串口改成你板子的串口号,可ls /dev/tty*查看,保存退出。

图片描述

代码烧写,先将全志开发板启动选择拨码开关拨至NO位置,如同所示:

图片描述

然后执行

./phoenixMC_linux  开始进行代码烧写,烧写完成后再将拨码开关拨回靠串口位置,重启。

打开minicom或其他串口工具监视设备输入信息,波特率115200。
功能演示:
初次上电后先进行配网:

netmgr connect ssid psswd

其中ssid和psswd分别替换为你无线网络名及密码。
由于没有加本地关键词识别功能,所以现在没次对话需要按键触发。
根据终端提示,待网络连接后,出现以下提示时:
图片描述
按按键2(AK2)触发语音识别功能。

图片描述
此时对着开发板说话,语音数据被编码、上传到云端、识别成功后返回相应信息,识别失败亦有相应提示。

示例:
1:明天上班需要带伞吗?
2.给我讲个鬼故事。
3.推荐一部悬疑电影。
4.把空调打开。

以下为一个小的演示视频:
http://v.youku.com/v_show/id_XMzQ1NjQ4MjIyOA==.html?spm=a2h3j.8428770.3416059.1

API介绍

1)初始化

int pal_init(const struct pal_config *config);

说明: SDK初始化,只需调用一次。
入参:config结构体向SDK传递必须的参数
返回:0成功;-1失败

2)销毁

void pal_destroy();

说明:SDK销毁,释放资源。
入参:无
返回:无

3)获取SDK版本

int pal_version();

说明:返回SDK的版本号
入参:无
返回:SDK版本号

4)设置日志级别

void pal_set_log_level(int level);

说明:设置SDK的日志级别。调试阶段可设置为PAL_LOG_LEVEL_DEBUG方便调试问题,调试稳定之后上线前把日志级别设置为PAL_LOG_LEVEL_ERROR。
入参:level为SDK的日志级别
返回:无

5)设置环境

void pal_set_env(int env);

说明:设置SDK的环境,默认是PAL_ENV_RELEASE,在厂商外部环境下可以连接阿里线上环境。厂商无需使用这个接口。
入参:env为SDK的环境
返回: 无

6)厂商播放器向SDK上报消息

int pal_notify_msg(const char *msg);

说明:厂商的播放器的状态或者按键事件需要按照Link_Voice_SDK_播控协议_v1.0.0.xlsx定义的json格式上报给SDK与上层应用同步状态。
入参:msg为厂商播放器需要向SDK传递的事件消息
返回:0成功;-1失败

7)厂商播放器通过SDK透传ALink消息

int pal_post_alink_msg(const char *msg);

说明:SDK初始化过程会把ALink进行初始化,与阿里平台保持物联长连接,厂商设备需要上报给ALink的消息可通过该接口上报,SDK对该消息进行透传上报给ALink服务端。
入参:msg为厂商需要通过SDK透传给ALink进行上报的消息,格式按照ALink定义的消息格式
返回:0成功;-1失败

8)开始一次语音识别

int pal_asr_start();

说明:设备通过按键或者远场唤醒触发语音识别时调用。
入参:无
返回:0成功;-1失败;

9)发送语音数据

int pal_asr_send_buffer(const char *buffer, int buffer_len);

说明:该接口要在调用pal_asr_start成功了之后调用,发送语音数据。如果是PCM格式的数据,则要求每次640字节。如果返回PAL_VAD_STATUS_STOP则为云端检测到语音结束了,厂商这时候可以调用pal_asr_stop或pal_asr_stop_async来获本次识别结果。
入参:buffer语音数据,buffer_len语音数据长度,字节
返回:返回云端检测到的VAD状态

10)结束本次语音识别(同步接口)

struct pal_rec_result* pal_asr_stop();

说明:pal_rec_result结构体返回本次语音识别的结果,同步的接口。结构体里的字段status表示本次语音识别的状态;should_restore_player_status表示厂商播放器处理完本次语音识别事件之后是否恢复之前的状态,0是不恢复,1是恢复;asr_result表示ASR识别的文本;task_status表示语音识别任务状态,PAL_REC_TASK_STATUS_END表示单次语音识别会话结束,PAL_REC_TASK_STATUS_WAITING表示多轮对话,应当播完TTS之后自动进入拾音状态,开始一次新的语音识别。
入参:无
返回:语音识别结果的结构体

11)结束本次语音识别(异步接口)

void pal_asr_stop_async(pal_asr_callback callback, void *user);

说明:异步返回的接口,功能与pal_asr_stop一样。
入参:callback注册的回调函数,用于返回语音识别结果;user用户自定义指针,在callback中会回传给用户
返回:无

12)取消本次语音识别

void pal_asr_cancel();

说明:取消本次的语音识别。
入参:无
返回:无

13)销毁语音识别结果

void pal_rec_result_destroy(struct pal_rec_result *result);

说明:pal_asr_stop和pal_asr_stop_async返回的语音识别结果,需要通过该接口来释放资源。
入参:result需要销毁的结果
返回:无

14)文本转语音(同步接口)

struct pal_rec_result* pal_get_tts(const char *text);

说明:提供文本转语音的功能。返回的结果pal_rec_result需要通过pal_rec_result_destroy销毁。
入参:text需要转换的文本
返回:返回的结构体,文本转语音的结果在tts字段中,是一个可播放的url。

更多

关于AliOS Things更多信息,请参考https://github.com/alibaba/AliOS-Things/wiki
关于Link Voice的更多信息,请参考https://iot.aliyun.com/product/voice?spm=a2c2j.8959409.5007732.14.666018deKqxNU7

识别以下二维码,干货
图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot2.0整合Mybatis-Plus多数据源

文章目录一、pom依赖二、application.yml多数据源配置三、持久层3.1. UserMapper 接口3.2. 接口映射UserMapper.xml(可以不写)四、逻辑处理层4.1. IUserService 接口4.2. 接口实现类IUserServiceImpl五、通用返回对象封装六、测试UserController七、启动类加扫描mapper注解八、…

百度积极回应阿波龙项目不实报道;半数开发者认为学习新语言很困难;腾讯在长沙建立首个智慧产业总部……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 惠普在其官网上公布了即将发…

精打细算使用MaxCompute搭建数仓

摘要: MaxCompute是一套阿里自主研发的数据仓库解决方案。产品除了功能、性能、简单等优势外,还能在费用上节省下一大笔前。墨迹天气使用MaxCompute,除了性能和稳定性也有提升外,整体存储和计算的费用比之前节省70%。这是如何做到…

计算机知识产权 教学目标,计算机教学设计模板

计算机教学设计模板计算机是现今学生们学习的一个重点,那么关于计算机的教学设计又应该怎么进行呢?下面就随小编一起去阅读计算机教学设计模板,相信能带给大家启发。第一篇:计算机教学设计模板【学习目标】了解计算机网络的发展,…

linux 环境 安装nginx

文章目录一、Nginx简介:1.1 Nginx是什么?1.2 能干什么?1.3 有什么特点?二、Nginx安装依赖环境2.1 安装gcc2.2 安装pcre2.3 安装zlib2.4 安装openssl2.5 综合命令安装(一步到位)三、下载/解压/安装NGINX3.1 在线下载nginx3.2 解压n…

行!这下 CSDN 玩大了!粉丝:太良心

CSDN从建立之初,我们的初心就是为了帮助广大开发者解决技术问题,成为大家最喜爱的技术社区。今年是CSDN的20周年,我们也为大家准备了一份良心礼物,可谓吐血操作。我们与AI博士唐宇迪 / Oracle认证讲师等4位讲师,共同为…

markdown html vue,vue项目引入markdown

npm install showdown接下来是用法:export default {data () {return {content:,converter:null}},watch:{content:contentChanged},mounted(){ this.init(); },methods: {init(){var showdown require(showdown);var converter new showdown.Converter();this.co…

厉害了!阿里安全图灵实验室在ICDAR2017 MLT竞赛刷新世界最好成绩

摘要: 近日,阿里安全图灵实验室(Alibaba Turing Lab)的ATL Cangjie OCR算法在ICDAR2017的MLT(Competition on Multi-lingual scene text detection)自然场景多语言文本检测竞赛中刷新了世界最好成绩&#x…

Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了!

有的人可能会觉得题目有点夸张,其实不夸张,题目没有使用任何修辞手法!认真读完本文,你就知道gblfy说的是对的了! 文章目录一、背景二、分析思路三、实战1. 创建工程2. pom.xml3. redis配置4. 使用5. 项目打包6. 启动项…

孩子学计算机最佳年龄,孩子学编程最佳年龄是几岁

孩子学编程最佳年龄是几岁2021-01-18 16:58:11文/董玉莹孩子学习编程的最好是几岁?本文整理了相关内容,欢迎阅读。孩子学习编程的最好是几岁6-18岁!从国内外的典型案例来看6-18岁是孩子学习“编程”的最佳时机,这个阶段的孩子左右…

python画两条曲线_python – 在Matplotlib中绘制两个图之间的线

在许多情况下,来自其他答案的解决方案是次优的(因为只有在计算点之后没有对图进行任何更改时它们才有效). 更好的解决方案是使用专门设计的ConnectionPatch: import matplotlib.pyplot as plt from matplotlib.patches import ConnectionPatch import numpy as np f…

5G基站功耗,到底有多大?

戳蓝字“CSDN云计算”关注我们哦!作者 | 小枣君来源 | 鲜枣课堂前不久,从某运营商流出的一张图,在小枣君的朋友圈里被广泛传播。就是这张(点击可看放大观看):图中显示的,是该运营商在广州、深圳…

“前端+应用”两大监控利器商业化首发 ARMS领跑APM市场

摘要: 日前,阿里巴巴中间件(Aliware)旗下产品业务实时监控服务ARMS正式商用。首发商用的ARMS目前涵盖应用监控和前端监控两大功能。由此,ARMS的商业化正式填补了阿里云在APM(Application Performance Management)领域空…

Spring Boot2 整合 Shiro ,两种方式全总结!

前言:在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro。 文章目录一、Spring Security 和 Shiro 的比较二、原生的整合2.1. 创建一个 Spring Boot 项目…

html5 coverflow,使用FancyCoverFlow实现3D无限循环切换视图

FancyCoverFlow重写了gallery实现了画廊特效。这里记录下具体的使用方法:1 在布局文件中添加控件android:id"id/fancy_cover"android:layout_width"match_parent"android:layout_height"wrap_content"android:layout_marginTop"…

5G精华问答 | 5G关键技术解读

5G的概念虽然很早就已经提出,但是对于大多数用户来说,真正听到并且对5G有了初步的了解还是在今年。今天就让我们来看看关于5G的精华问答吧。1Q:5G标准是怎么来的,由谁制定的?A:5G是由“第三代合作伙伴计划组…

关于python的保留字_Python中的保留字

原博文 2020-01-29 20:03 − Python 包含的保留字可以执行如下命令进行查看: →import keyword →keyword.kwlist [False, None, True, and, as, assert, break, class, continue, d...01000 相关推荐 2019-09-28 21:13 − Python python是一种跨平台的计算机程序设…

Spring Boot2 整合 Ehcache

用惯了 Redis ,很多人已经忘记了还有另一个缓存方案 Ehcache ,是的,在 Redis 一统江湖的时代,Ehcache 渐渐有点没落了,不过,我们还是有必要了解下 Ehcache ,在有的场景下,我们还是会…

传奇谢幕,回顾霍金76载传奇人生

摘要: 根据外媒报道,著名物理学家斯蒂芬威廉霍金(Stephen William Hawking)去世,享年76岁,霍金的家人已经确认了这一消息。 原文地址:http://click.aliyun.com/m/43771/ “在爱因斯坦生日这天&a…

数据中台与苏秦挂六国相印

戳蓝字“CSDN云计算”关注我们哦!作者 | 一一来源 | 边缘计算社区阅读本文前先思考一个问题:数据中台如何创造更多价值?1梁宁看中台——什么是数据中台梁宁老师是阿里巴巴的湖畔大学产品模块学术主任、百度集团顾问。有人问梁宁,中…