2883浏览
查看: 2883|回复: 6

[教程] 语音自助打印出入证

[复制链接]
本案例采用的是树莓派、古德微平台、全向麦、热敏打印机、小音箱。实现的功能是语音唤醒、语音识别,自助拍照,生成打印出入证。
先上两张热敏打印机的小图:
   语音自助打印出入证图1   语音自助打印出入证图2
设备完整连接图:
语音自助打印出入证图8
一、主程序:
首先开启语音提示,开启takePhoto拍照子线程,开启printPass打印子线程,最后开启语音唤醒Wakeup函数。
语音自助打印出入证图3
程序开始后,三个线程都在等待中。takePhoto和printPass两个线程因为不满足开关变量的要求,一直在等待。Wakeup函数则在等待语音信号输入。
我们的程序设计思想是,先通过阻塞式的wakeup运行,满足语音条件,改变photo变量的值来启动takePhoto子线程。拍照结束后,再改变print变量来启动printPass子线程,最终实现自助打印出入证的效果。
二、语音唤醒:Wakeup函数
语音自助打印出入证图4
通过全向麦开始:“小度、小度”的语音唤醒。唤醒成功后,通过音箱播放清脆的提示音“叮”,进行拍照准备,完成后下达命令“请拍照”,程序开启麦克风录音,将录取的3秒音频文件转换为文字,从文字字符串中查找字符“拍”的位置。如果查找结果不等于0,说明查找成功,赋开关变量photo为1。这时takePhoto子线程的条件满足了,子线程开始运行。如果查找结果等于0,说明是查找失败,赋值开关变量photo为0,不进行拍照程序。
三、takePhoto:拍照子线程
语音自助打印出入证图5
拍照子线程是在接收到拍照开关变量photo的值后,拍一张照片,然后关闭摄像头。然后把照片保存到文件中,输出相应的语音提示。最后把photo变量设为0,防止重复拍照。同时把print变量设为1,准备开启打印子线程。
四、printPass:打印子线程
语音自助打印出入证图6
printPass子线程用是来控制热敏打印机打印出入证的。其中print是一个开关变量,控制子线程是否工作。当print值为1的时候,开启子线程,程序运行完成后,print开关变量重新赋值为0,防止重复打印。
程序中设计了一些空行,主要实现文字内容的排版空间的调整。有的是大空行,有的是小空行。最行为了方便撕票,打印了两个空行。
程序中的照片,是上一个子线程takePhoto中采集的照片。

至此,我们的语音自助打印出入证的功能全部实现。
由于拍照的主人是一只小熊,所以最终我们获取的是一张小熊的出入证。
语音自助打印出入证图7
   视频地址:

glwz007  初级技匠

发表于 2020-2-18 10:12:27

请问打印机什么接口的?如何驱动?
回复

使用道具 举报

rzyzzxw  版主

发表于 2020-2-18 10:30:29

强大,加上屏,就更方便拍照了。
回复

使用道具 举报

白吃白给  中级技师 来自手机

发表于 2020-2-18 10:40:26

淄博杨广峰 发表于 2020-2-17 22:36
本案例采用的是树莓派、古德微平台、全向麦、热敏打印机、小音箱。实现的功能是语音唤醒、语音识别,自助拍 ...

很棒啊,感觉可以做一个把说的话打印出来的
回复

使用道具 举报

DFrJ5KYVQaH  中级技匠

发表于 2020-2-18 11:10:34

这个打印机是USB接口的,不用驱动
回复

使用道具 举报

淄博杨广峰  初级技师
 楼主|

发表于 2020-2-18 13:50:12

rzyzzxw 发表于 2020-2-18 10:30
强大,加上屏,就更方便拍照了。

支持朱老师,有屏才能体现所见即所得!
回复

使用道具 举报

淄博杨广峰  初级技师
 楼主|

发表于 2020-2-18 14:50:14

白吃白给 发表于 2020-2-18 10:40
很棒啊,感觉可以做一个把说的话打印出来的

可以试试。效果不是很好。原因是语音识别准确率还需提高。
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail