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":"RecognitionCompleted","status":20000000,"message_id":"e7e27fcbbfbb4f8da2df6284bb91d16b","task_id":"18bc5a60da156f7e12b711ad67dea253","status_text":"Gateway:SUCCESS:Success."},"payload":{"result":"我要听周杰伦的青花瓷","confidence":0.45584583282470703}}
>>>>
[   886.899713][D][nlpmit  ]ASR Result:
<<<<我要听周杰伦的青花瓷>>>>[   886.906879][D][nlptxt  ]Enter aui_nlp_proc_textcmd
[   886.911848][D][nlptxt  ]process_textcmd:0
[   886.915933][W][nlptxt  ]unknown cmd
[   886.979028][D][MIT_ASR ]call mit_asr_event_cb(>>>>event: 14(EventDialogResult)<<<<) [start]
[   886.987847][D][nlpmit  ]Enter aui_nlp_proc_mit
<<<<
{"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智能语音开发板 文章目录 一.读取云端的返回值 二.原理 三.操作 一.读取云端的返回值 CB5654开发板如何读取云端的返回值 我们最开始拿到的官网提供的例程,绑定了几个云端 ...

  2. 读取24位ad的值_实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值

    摘要:一文带你用小熊派开发板动手做土壤湿度传感器. 一.实验准备 1.实验环境 一块stm32开发板(推荐使用小熊派),以及数据线 已经安装STM32CubeMX 已经安装KeilMDK,并导入stm ...

  3. 在智能全栈开发板(dc-01)碰到的问题及解决方法(stm32,ST-LINK,windows操作系统)

    1.开发板wifi配置Link_State:NO 解决:wifi的加密方式不对(默认是WPA2,但实际上是WPA),也有可能是浏览器问题(因为我成功的时候是改了这两处,也没劲重新试) 2.manage ...

  4. 实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值

    摘要:一文带你用小熊派开发板动手做土壤湿度传感器. 一.实验准备 1.实验环境 一块stm32开发板(推荐使用小熊派),以及数据线 已经安装STM32CubeMX 已经安装KeilMDK,并导入stm ...

  5. 【Android 逆向】Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )

    文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...

  6. 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用枚举?

    在阅读<阿里巴巴Java开发手册>时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下: 在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内 ...

  7. 【解决问题】mybatis plus 读取数据库没有返回值问题 返回值都为null

    JAVA项目中使用mybatis plus 读取MySQL数据库,其中有个字段没有返回值问题,查看SQL都正常有值,但其最后返回值都为null. 排查过程: 可以先在配置文件加上如下语句,可以在控制台 ...

  8. 玩转智能路由器-WRTnode开发板[接上网线]

    2019独角兽企业重金招聘Python工程师标准>>> WRTnode专属网线 首先来介绍这根特殊的网线(图1): 图1 网线引脚说明: 首先需要一根T568B线序的网线.T568B ...

  9. 【平头哥RVB2601开发板试用体验】AT解析器和通过w800 AT命令接入阿里云生活物联网平台

    作者:niu 在RVB2601开发板上,CH2601主芯片通过SPI接口和W800 WIFi/BLE模块通信,W800芯片在此接口上提供AT命令的方式供主芯片使用W800的功能. 根据<W800 ...

最新文章

  1. 人人网 6.0 版申请页面随着滚动条拖动背景图片滚动出现的原理
  2. Vijos1683 有根树的同构问题
  3. DOM相关(主要是var和let的区别用法)
  4. c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量
  5. 如何学习ReactJS:初学者完整指南
  6. 韩国被申遗 (转自果壳)
  7. 嵌入式相关开源项目、库、资料
  8. 数据库实验四 视图实验
  9. php字符串函数 首字,php把字符串中的首字符转换为大写的函数ucfirst()
  10. glusterfs:Server-quorum和Client Quorum
  11. MySQL八股文连环45问,你能坚持第几问?
  12. ORAN C平面传输和基本功能
  13. JavaScript 中的“黑话”,你知多少?
  14. 怎么在手机上赚钱?分享5个赚钱方法,生活费是足够了!
  15. Domain-Adversarial Training of Neural Networks
  16. 独角推荐,只需一个邮箱号就可以注册购买阿里云国际版
  17. 基于单片机的心率脉搏检测电路设计(#0200)
  18. WMS多仓库调拨模块设计
  19. rdkafka线程过多_我是如何处理大并发量订单处理的 KafKa部署总结
  20. QCustomPlot实现极坐标图——QtWidgets

热门文章

  1. Lvs+keepAlived实现负载均衡高可用集群(DR实现)
  2. cron定时怎么设置
  3. 线性代数笔记(6) 矩形的相似——标准型与约当标准型及求法
  4. 基于CocosCreator的切水果小游戏(二)
  5. SAP PR PO采购订单 行项目中时间与时区
  6. 1. Python环境搭建
  7. ubuntu python opencv 实用小技巧小结
  8. 在线电子书阅读微信小程序 毕业设计(5)用户登录注册
  9. Python下载MP4视频
  10. 关于宋词频率统计(R语言)