CB5654开发板之读取云端返回值

简介: 本文介绍 CB5654开发板之读取云端返回值

image.png

上一篇博文讲了如何进行串口的配置

这次讲一下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
怎么播放,网络音乐

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

原理就是,确定云端返回动作,然后根据信息来处理动作,播放故事的话,就可以运用播放函数。

文章来源:芯片开放社区
原文链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.1b87180fOJm8Ux&id=3802481971679600640

相关文章
|
存储 网络虚拟化 索引
【OSTEP】分页(Paging) | 页表中究竟有什么 | 页表存在哪 | 内存追踪
【OSTEP】分页(Paging) | 页表中究竟有什么 | 页表存在哪 | 内存追踪
693 0
|
11月前
|
人工智能 数据可视化 测试技术
如何从海量数据中精准提取关键信息,并让Agent更智能地理解用户意图?让模型推理成为Agent开发者的‘超级助手’?
本文产品专家三桥君探讨了AI Agent开发中的核心推理场景与实用技巧,帮助开发者提升模型智能水平。涵盖关键场景:模糊信息处理、海量数据提炼、复杂文档解析、多阶段任务规划、跨模态视觉推理、代码审查及智能评估。同时提出实用技巧:简洁指令设计、避免分步诱导、结构化信息分隔、显式约束声明及动态迭代优化。
558 0
|
10月前
|
XML JSON 数据挖掘
电商API 接口是什么?怎么使用API?
电商API是电商平台提供的数据接口,允许第三方工具与其系统交互,实现订单管理、库存同步、数据分析等自动化操作。通过API,卖家可高效管理多平台业务,提升运营效率。
|
人工智能 API 定位技术
MCP全方位扫盲
MCP(Model Context Protocol)是由Anthropic提出的协议,旨在标准化大模型与外部数据源和工具的通信方式。其核心架构包括MCP Client(客户端)和MCP Server(服务端),通过标准化接口实现解耦,支持不同LLM无缝调用工具。相比传统方法,MCP简化了Prompt工程,减少定制代码,提升复用性。实际场景中,如天气查询或支付处理,MCP可智能调用对应工具,优化用户体验。MCP的核心价值在于标准化通信、统一工具描述及动态兼容性,成为大模型与外部服务的智能桥梁。
|
存储 缓存 内存技术
计算机硬件存储器中临时存储
【8月更文挑战第3天】
3585 7
计算机硬件存储器中临时存储
|
安全 Linux 数据处理
Linux hostid命令:主机标识符的奥秘
Linux hostid命令:主机标识符的奥秘
|
存储 人工智能 分布式计算
云计算的基本概念
云计算的基本概念
7828 0
|
存储 缓存 算法
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第3章 数据流 3.1同步数据流
Ptolemy II 能够使异构系统的开发和仿真一同进行,将开发和仿真作为整个系统建模的一部分。正如前两章讨论的那样,不同于其他设计和建模环境,Ptolemy II的一个关键创新在于支持多种计算模型,这些计算模型可被剪裁以适应具体的建模问题。
2172 0
|
算法 定位技术
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
605 2
|
存储 安全 定位技术
使用阿里云的国外和国内云服务器
使用阿里云的国外和国内云服务器
596 1