查看: 528|回复: 1

ASRPRO_小白玩转播报语音“如何判断播报完毕”

[复制链接]

12

主题

52

帖子

1123

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1123
发表于 2023-11-8 21:41:08 | 显示全部楼层 |阅读模式
本帖最后由 libai500 于 2023-11-8 23:54 编辑

苦思冥想无良策  日渐学习日渐新
欢迎您一起来体验学习
特别的语音识别32位单片机天问ASRPRO
001_4.png
阅读本帖前,请先阅读上图范例和编程手册。
更多小白进阶发布:点击返回目录页面
正文开始... ...

如何判断语音已播报完毕

即:如何播报完毕后再继续执行执行程序


     因ASRPRO单片机可以播报语音,因此大家经常用语音播报功能做一些功能解说应用,比如展会展品,模型教具,在程序运行前,先解说或提示,后执行动作。此时就需要准确检测语音是否已经播报完毕。

    本篇就是重点讨论如何检测语音已经播报完毕。并建立自定义功能函数,方便使用。

    我们先建立一个点亮PA4板载灯的程序,程序目的是播报完1000ID提示语后,再点亮板载灯。播报完1001提示语后再关闭板载灯。

001.png

    上图中核心功能函数是如下这个图形指令:

002.png

    下面我们就重点介绍这个自定义功能函数是如何设计的。

003.png

    如上图所示,是异步播报自定义功能函数的非阻塞设计,也就是说,它不能判断和等待播报结束。请求播报成功后,直接退出,没有检测播报结束功能。那么我们如何检测播报是否结束呢?我们看如下图形:

004.png

    如上图,通过天问留给我们的开源代码,我们可以找到播报ID核心函数和它的参数用途。
我们关注到,天问留给我们的开源代码,指示了我们,其中有一个参数是播报完毕回调函数:myplay_end_callback。
也就是说,当该ID语音播报完毕后,会执行一次这个名为myplay_end_callbackmyplay_end_callback的函数,这正是我们需要的。(有朋友估计会问,这类后台函数哪里能找到,有没有手册?目前没有高级API手册,但祝老师给了我们查询工具和开源工程,详见ASRPRO专业画面右上角-编程手册-附录3,VSCODE相关操作介绍)
    那么myplay_end_callbackmyplay_end_callback从哪来?当然需要我们自己建立一个。建立自定义功能函数步骤如下:

005.png
第一步,如上图,打开函数欧能指令集,拖拽一个无返回值的自定义功能框架。
    我们看到,函数自定义功能组里,已经有很多自定义功能,我们不用管他们,只关建立当前的。
006.png
第二步,如上图,起一个合适的名字,既然是自定义,当然允许自己起名字,为了避免重名冲突,我们在名字前面加上自己的标志字母,笔者网名是李白500,那么我们就起名为LB前缀的名字。
007.png
    当然,也不要忘了改写调用参数名字为LB前缀。如上图。
008.png

    如上图,到此我们初步完成了回调自定义工程函数的建立,那么如上图所示,我们如何通知播报自定义功能,播报结束了?经过一个多月的学习演练,我么那当然毫不犹豫的选择消息机制。早先,我们选择用共有变量,但它不便于管理。我们尝试用消息。消息能保持工程的构架清晰,并有助于管理各个程序模块,保持独立性。

009.png
第三步,如上图,先在异步播报自定义功能中,建立一个消息队列,用于接收和存储回调函数发来的播报完毕消息。
        在这里,我们利用图形化的便利性,可以自由安排队列的建立点,而不用遵循C++规则。那么我们自然而然,谁用消息,就建立在谁那里。异步播报要用这个消息,那么我们就在异步播报功能函数里,建立消息。这样便于管理和确保模块独立性。
010.png
第四步,如上图,内容比较多,修改消息名称,配置消息长度,增加一个私有变量pX,用于存储消息,并利用读取消息指令,判断其是否有回调函数发来的消息,如果有,则结束等待,实现播报完毕再继续执行的设计需求。
011.png
第五步,如上图,在回调自定义功能函数中,发送消息给F01异步播报自定义函数。发送什么消息并不重要,我们只需要在播报完毕回调功能函数中,发送一个消息给F01即可。
012.png
    至此,如上图,我们完成了自定义函数搭建和封装
014.png
    我们折叠起来,并使用刚做好的自定义功能“F01异步播报ID”
从而实现了播报完毕再继续执行程序的设计需求。
015.png
上述工程范例可以在最新项目里搜索到。如上图

(完结)
更多范例和解说:点击返回目录页面


回复

使用道具 举报

4

主题

23

帖子

254

积分

中级会员

Rank: 3Rank: 3

积分
254
发表于 2023-11-9 10:14:07 | 显示全部楼层
带入深入了解,可以解决平时用的时候出现的各种疑难杂症.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-4-29 06:25 , Processed in 0.316883 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表