适用于平头哥CB5654智能语音开发板

文章目录

  • 一、读取云端的返回值
  • 二、原理
  • 三、操作

一、读取云端的返回值

CB5654开发板如何读取云端的返回值

我们最开始拿到的官网提供的例程,绑定了几个云端的功能

二、原理

首先是整体看一下云端返回参数:

[   981.520858][D][nlpmit  ]Enter aui_nlp_proc_mit
<<<<
{"header":{"namespace":"VirtualAssistant","name":"RecognitionCompleted","status":20000000,"message_id":"dad4c26b55ab4bd790c44db1c2229d84","task_id":"18bc5a60da15b863a38471dc3adb80bc","status_text":"Gateway:SUCCESS:Success."},"payload":{"result":"声音调小一点","confidence":0.43344905972480774}}
>>>>
[   981.552902][D][nlpmit  ]ASR Result:
<<<<声音调小一点>>>>
[   981.559788][D][nlptxt  ]Enter aui_nlp_proc_textcmd
[   981.564669][D][nlptxt  ]process_textcmd:0
[   981.568755][W][nlptxt  ]unknown cmd
[   981.592052][D][MIT_ASR ]call mit_asr_event_cb(>>>>event: 14(EventDialogResult)<<<<) [start]
[   981.601274][D][nlpmit  ]Enter aui_nlp_proc_mit
<<<<
{"header":{"namespace":"VirtualAssistant","name":"DialogResultGenerated","status":20000000,"message_id":"cc3b3fdc84ec485bbd95bfa95c39ba25","task_id":"18bc5a60da15b863a38471dc3adb80bc","status_text":"Gateway:SUCCESS:Success."},
"payload":{"display_text":"好的","spoken_text":"好的",
"action":"Action://audio/set_volumn","action_params":[{"name":"sound","value":"down"}],"semantics":[{"score":1,"slots":{"degree":[{"raw_value":"调小","norm_value":"down",
"score":0.0,"offset":2,"count":2}]},"domain":"general_command","source":"jsgf","intent":"set_volumn"}]}}
>>>>
[   981.655911][D][nlpmit  ]NLP Action:
<<<<Action://audio/set_volumn>>>>
[   981.662667][D][nlpmit  ]NLP Result:
<<<<好的>>>>
[   981.667751][D][MIT_TTS ]Enter aui_cloud_req_tts
[   981.685123][D][MIT_TTS ]TTSStart
[   981.738402][D][media   ]set vol:80 type:0
[   981.742422][I][sc5654  ]i2s o1 pdev=0x246d244
[   981.746909][D][media   ]set vol:80 type:1
[   981.806021][D][MIT_ASR ]consumig thread end
[   981.951292][D][media   ]media1 stop
[   981.959359][D][media   ]state:1 type:1
[   981.963339][D][media   ]set vol:80 type:1
[   981.967386][D][media   ]play1 vol:80 vol_ret:0 url:fifo://mittts
[   981.973452][I][player  ]player_new, 132 enter.
[   981.978019][I][player  ]player_new, 171 leave. player = 0x260376c
[   981.984272][I][player  ]player_play, 501 enter. player = 0x260376c
[   981.993930][I][player  ]player_play, 518 leave. player = 0x260376c
[   982.062094][D][MIT_TTS ]TTSEnd

可以看到重要的两个指令是:

{"header":{"namespace":"VirtualAssistant","name":"RecognitionCompleted","status":20000000,"message_id":"dad4c26b55ab4bd790c44db1c2229d84","task_id":"18bc5a60da15b863a38471dc3adb80bc","status_text":"Gateway:SUCCESS:Success."},"payload":{"result":"声音调小一点","confidence":0.43344905972480774}}
{"header":{"namespace":"VirtualAssistant","name":"DialogResultGenerated","status":20000000,"message_id":"cc3b3fdc84ec485bbd95bfa95c39ba25","task_id":"18bc5a60da15b863a38471dc3adb80bc","status_text":"Gateway:SUCCESS:Success."}, "payload":{"display_text":"好的","spoken_text":"好的","action":"Action://audio/set_volumn","action_params":[{"name":"sound","value":"down"}],"semantics":[{"score":1,"slots":{"degree":[{"raw_value":"调小","norm_value":"down","score":0.0,"offset":2,"count":2}]},"domain":"general_command","source":"jsgf","intent":"set_volumn"}]}}

一次交互会有asr和nlp两次事件,但两次事件的task id相同,如果asr处理是对该值赋值,说明要忽略后续的nlp处理。根据代码,我们可以看到,声音调整已经绑定了TTS后的执行动作 。

cJSON *action = cJSON_GetObjectItemByPath(js, "payload.action");if (cJSON_IsString(action)) {if (strcmp(action->valuestring, "Action://audio/set_volumn") == 0) {    //判断字符串app_aui_cloud_tts_wait_finish();           //等待ret = aui_nlp_action_set_volume(js);        //执行if (ret == 0) {done = 1;}
}

三、操作

我们需要完成的就是判断、等待 和执行 那如何让开发版唱歌呢? 对开发版说,我想听青花瓷,云端返回数据如下

<<<<
{"header":{"namespace":"VirtualAssistant","name":"DialogResultGenerated","status":20000000,"message_id":"84038aa745ad4aa2a8c885ba340868c2","task_id":"18bc5a60da156f7e12b711ad67dea253","status_text":"Gateway:SUCCESS:Success."},
"payload":{"spoken_text":"我要开始唱周杰伦的青花瓷了。",
"action_params":[{"name":"listenFile","value":"http://iot-cdn.tuling123.com/202005141738/54b8c0fa8fb682ec06c33ef6c998dbdb/media/audio/20180524/dd55dcb5a8ab432a82db85ad2207eb3d.mp3"}]}}
>>>>
[   887.035706][D][nlpmit  ]NLP Result:
<<<<我要开始唱周杰伦的青花瓷了。>>>>

关键还是如何对相应的指令绑定TTS后的执行动作。 可以看到唱歌返回的参数是

"action_params":[{"name":"listenFile","value":"http://iot-cdn.tuling123.com/202005141738/54b8c0fa8fb682ec06c33ef6c998dbdb/media/audio/20180524/dd55dcb5a8ab432a82db85ad2207eb3d.mp3"}]}}

那我们就要对动作进行判断,为listenFile,并且要播放青花瓷的URL (http://iot-cdn.tuling123.com/202005141738/54b8c0fa8fb682ec06c33ef6c998dbdb/media/audio/20180524/dd55dcb5a8ab432a82db85ad2207eb3d.mp3)

怎么播放,网络音乐

aui_player_play(MEDIA_MUSIC, "http://cop-image-prod.oss-cnhangzhou.aliyuncs.com/resource/undefined1577166283488/AudioTest1.mp3/", 1);

CB5654开发板之读取云端返回值相关推荐

  1. 平头哥智能语音CB5654开发板如何读取云端的返回值

    CB5654开发板如何读取云端的返回值 我们最开始拿到的官网提供的例程,绑定了几个云端的功能 首先是整体看一下云端返回参数: [ 981.520858][D][nlpmit ]Enter aui_nl ...

  2. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

  3. 【STC12C5A60S2】TOF250(IIC)基于51系列开发板的运用

    目录 一.前言 二.硬件准备 二.软件准备 三.硬件接线图 四.例程源码 五.烧录说明 5.1 烧录接线示意图 5.2 烧录动态图 六.结果输出 一.前言 此片文章主要介绍如果通过51系列开发板来读取 ...

  4. 【STC12C5A60S2】TOF250(TTL)基于51系列开发板的运用

    目录 一.前言 二.硬件准备 二.软件准备 三.硬件接线图 四.例程源码 五.烧录说明 5.1 烧录接线示意图 5.2 烧录动态图 六.结果输出 一.前言 此片文章主要介绍如果通过51系列开发板来读取 ...

  5. 2.23 haas506 2.0开发教程 - KeyPad - 矩阵键盘(仅支持M320开发板)

    haas506 2.0开发教程 - KeyPad - 矩阵键盘 矩阵键盘 320矩阵键盘连线 案例说明 测试代码 功能测试 class - KeyPad keypad.init() - 初始化keyp ...

  6. read-sequence的返回值

    2019独角兽企业重金招聘Python工程师标准>>> 当处理二进制流时,我见过几次这种用法: (let ((elements-read (read-sequence buffer ...

  7. python flask 返回值 状态码 设置

    在使用Flask以及插件Flask-RESTful来开发RESTful API时,返回值和状态码的设计是非常重要的一个部分.对于初学者,在不使用response或errorhandler()等装饰器时 ...

  8. 【STM32F103ZE】TOF250(TTL)基于STM32系列开发板的运用

    目录 @[TOC](目录) 一.前言 二.硬件准备 二.软件准备 三.硬件接线图 四.例程源码 五.烧录说明 5.1 烧录接线示意图 5.2 烧录动态图 六.结果输出 一.前言 此片文章主要介绍如果通 ...

  9. linux通过以太网线上网,开发板通过以太网卡的互联网连接尝试

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 我在Ubuntu虚拟机的开发环境中成功编译了符合iTop-4412开发板的嵌入式Linux内核的boa执行文档,放 ...

最新文章

  1. 电子产品如何使用IAP方式升级程序
  2. 3.7 PPP协议和HDLC协议
  3. 网易云信+妙克:从零到标杆的在线音视频音乐教学之路
  4. Teradata QueryGrid整合最佳分析技术 拓展客户选择空间
  5. java 怎么页面授权访问_Java调用Linkedin接口API之:获取授权
  6. Linux添加网站后无法显示,Linux:SElinux导致网站无法访问
  7. 高斯滤波器是低通还是高通_经典模拟滤波器仍值得研究吗?
  8. Mac程序开机启动项优化
  9. 曲线积分与曲面积分的计算机应用,曲线积分与曲面积分(解题方法归纳).doc
  10. 使用bat一键修改ip地址(包括静态、动态ip)
  11. 如何解决Unity高版本使用EasyTouch5的问题
  12. GCN与图谱理论(三):图的谱分析与图傅里叶变换
  13. 转:优秀的人,往往都具备这5种视角
  14. 计算机任务驱动法教学应用,“任务驱动法”在职教计算机教学中的应用
  15. matlab对摄像头实时运动目标检测,基于Matlab实时运动目标跟踪检测系统
  16. 【中秋佳节】CSDN卷王们内卷--中秋节要不要休息呢?
  17. 下载IE6安装文件到本地的方法
  18. html5怎么实现雨滴效果,雨滴效果——HTML5之特效
  19. require和import的区别?
  20. idea+exe4j/launch4j/jsmoonth的打包exe+Inno Setup

热门文章

  1. 【Mac使用技巧】Mac导航栏图标位置调整
  2. MySQL数据库处理中英文取首字母排序
  3. 牛逼,竟然有人开源躺平学习资料!
  4. 鹰眼AI:鸿蒙系统的企业级安全监控工具
  5. 数据结构实验一,第1题:基于顺序存储结构的图书信息表的创建和输出
  6. 编写并运行php程序,上传所编写的PHP程序代码,并上传运行后的效果截图
  7. 仿个人税务 app html5_警惕!你下载的个税APP可能是假的!蹭热点窃信息要注意!...
  8. 怎么使用cmd命令更改文件后缀
  9. 为什么选择计算机科学
  10. 如何在不依靠的工资收入的情况下,做到月入过万?