基于树莓派的智能语音提醒系统
扫描二维码
随时随地手机看文章
引 言
随着科技的迅猛发展,人们的生活水平日益提高,众多的科技产品使人们的生活更加便捷与高效。与此同时,人们的需求也越来越高,这就需要更多智能化的产品走进人们的日常生活中。近年来,随着物联网的普及,智能家居产品的使用越来越普遍 [1]。试想一下这样一个场景,当你收拾东西慌忙出门时,来到门口,传来一个声音提醒你别忘了带某份重要文件,你因此避免了一次工作上的重大失误。这样的智能生活体验正是本文智能语音提醒系统可以带给用户的。
目前,该领域的产品较少,比较出名的是 Nut 防丢贴片, 但其不能解决出门忘带东西的问题,且有其他不少缺陷。首先,用户手机对该 Nut 的 APP 必须完全信赖,提供所有权限,且必须保持蓝牙一直处于开启状态,给用户带来极大不便 ;其次,Nut 防忘贴片根据贴片与手机之间蓝牙信号的强弱判断距离,对环境的适应性较差,在墙体较多的地方、较近的距离就会报警,而在空旷的地方、较远的距离却不会报警, 家庭的门是一个固定位置,Nut 防忘贴片无法做到出门时提醒。本文智能语音提醒系统可在用户来到门口时,提醒用户带某物或做某事,弥补了目前产品在这一板块功能的不足。
系统以树莓派为核心进行控制,用户在手机上安装通过蓝牙串口软件改进后的“提醒小助手”APP,该软件将用户备忘的信息通过蓝牙发送到树莓派。当用户出门时,树莓派将摄像头拍摄的用户照片上传至服务器进行人脸识别,通过返回的结果判断是家中的哪一位用户,并将其备忘的信息通过音响读出,从而达到提醒用户的目的。
1 系统硬件构成
1.1 系统总体结构
系统以树莓派为控制核心,摄像头、音响、屏幕等外设都与树莓派相连,手机通过蓝牙与树莓派连接,树莓派通过WiFi 连接到云端服务器,总体结构如图 1 所示。
1.2 树莓派 3 代 B+
树莓派作为微型计算机,相比传统计算机只是缺少了显示屏幕和键盘,USB 端口可以方便地连接 Linux 免驱摄像头, 具有独立的 40 个 GPIO 引脚。树莓派可以运行 Python 语言, 并进行编译,运算速度快,价格低 [2]。
树莓派 3 代 B+ 是树莓派基金会于 2018 年 3 月 14 日发布的新版本,如图 2 所示,主频达到了 1.4 GHz,在无线网络以及蓝牙性能上相比上一款产品也有较大提升。树莓派作为系统大脑,强大的性能是完成系统核心功能的基础。
图 2 树莓派 3 代 B+
1.3 USB 高清摄像头
由于要对照片进行人脸识别,因此需要照片足够清晰。本文选用 1080P 高清 USB 摄像头,如图 3 所示,相比树莓派原装摄像头 Pi Camera 的清晰度提高了许多。
图 3 USB 高清摄像头
1.4 便携式音响
用户备忘的信息需要通过语音的方式读出,通过便携式音响来完成,如图 4 所示。在实际操作过程中发现,树莓派与音响通过蓝牙配对与连接不稳定,所以采用有线连接的方式,保证系统稳定性。
图 4 便携式音响
1.5 20 寸屏幕
屏幕用于实现系统的附加功能,即“魔镜”的功能。屏幕上显示当前的精确时间、天气、温度、风力、日落时间,以及未来几天的天气与温度。屏幕正中显示问候语,系统会在上午、下午、晚上显示不同类型的问候语。摄像头固定在屏幕边框上,用户出门时只需下意识地看看时间、温度、天气等,就可被摄像头拍照,然后上传到服务器进行人脸识别。屏幕如图 5 所示。
2 系统各部分功能的实现
2.1 整体的运作流程
用户在手机上打开“提醒小助手”APP,打开蓝牙并连接到树莓派,此时用户就可在 APP 的消息发送界面将备忘的信息发送至树莓派,树莓派根据连接手机的 Mac 地址识别是家庭中哪位成员备忘的消息,并将用户发来的信息存到相应文本中。若用户出门,用户看“魔镜”时会被摄像头拍照,树莓派则将照片上传至 Face++ 平台服务器中进行识别,平台在事先已经建立好的家庭人脸集合中识别出最相似的人脸,树莓派通过平台返回的数据即可判断出是家庭中的哪位成员,随后将相应的备忘内容读出,提醒用户。系统整体运作流程如图 6 所示。
2.2 与树莓派的蓝牙连接以及数据传送
树莓派 3 代 B+ 自带蓝牙功能,无需另外加装蓝牙模块,但在实际使用过程中发现,树莓派的原生蓝牙在传统连接方式下与手机只能实现配对,无法实现稳定连接。因此,本文采用 RFCOMM 协议,在该协议的监听功能下实现手机与树莓派蓝牙的连接。RFCOMM 协议还提供查看连接设备信息的功能,可获取手机的 Mac 地址,由此区分是哪位家庭成员的手机。在该协议下,树莓派收到的信息会自动储存到/dev/rfcomm0中,这是一个会随着蓝牙连接的断开而删除的文件,用程序可将其写入到该家庭成员对应的文本文件中,用户每次写入的信息会覆盖前一次的信息。出于对用户误触发或没听清等情形的考虑,提醒完之后备忘信息不会被立即删除,实现该部分功能的主要 Python 程序如图 7 所示,其中 get_mac_addr 是将手机的 Mac 地址从设备信息表中提取出来的函数。
2.3 利用 Face++ 平台实现人脸识别
人脸识别的程序一直循环运行,摄像头也一直处于循环拍照状态。若未识别到家庭成员的人脸则不执行任何指令 ;若识别到某一家庭成员的人脸,则读出相应的备忘信息。事先调用 API 在 Face++ 平台上创建一个 Faceset,Faceset 是所有家庭成员人脸照片的集合,这些照片作为家庭成员的人脸标准照片。Face++ 平台的人脸识别能力强大,提供每位家庭成员一张人脸照片即可。当摄像头拍摄照片后,通过调用 API 的方式将该照片上传至 Face++ 平台服务器,并在Faceset 中寻找与其最相似的照片,最后返回置信度,找到标准照片的 Face_token(Face_token 即为与传到 Face++ 平台服务器的照片一一对应的编号)。若置信度小于设定阈值,则不执行任何指令 ;若置信度大于设定阈值,则通过 Face_token识别出是哪位家庭成员,即可将备忘内容读出进行提醒。
2.4 将用户备忘的信息用语音读出
用户备忘的内容最终要通过语音的方式从便携式音响中读出,为此本文在树莓派上安装 eSpeak软件作为一款开源软件,便于将文字转为语音读出。在此基础上,利用 eSpeak 读取文本文件里的内容,从而将用户备忘的内容读出。调用API进行人脸识别及将备忘信息语音读出的主要 Python程序如图 8 所示,其中 get_conface是通过 API向 Face++平台服务器请求 Search功能并将返回值中的 confidence与 face_ token提取出来的函数,espeak_txt_chinese是将指定文本中的内容通过 eSpeak 软件语音读出的函数。
图 8 调用 API 进行人脸识别及将备忘信息语音读出的主要程序
3 系统实现
安装好的系统外观如图 9 所示,用屏幕支架可将屏幕悬空固定,支架可调节,便于将屏幕置于方便且舒适的位置与角度。摄像头固定在屏幕上方,用户观看屏幕时会被摄像头拍照,树莓派与便携式音响等放置在任意方便位置即可。系统运行之后,屏幕上出现了时间、天气、问候语等信息。
系统测试时,模拟有两名家庭成员的情景,APP 界面如图 10 所示。两名成员都先后发送了自己的备忘信息,模拟出门场景。两名成员先后出门,出门时看“魔镜”上的天气、时间及问候语,其出门场景分别如图 11、图 12 所示,系统正确地读出了相应的备忘信息。测试到有效的人脸识别范围为距摄像头两米以内,符合实际要求。
图 9 安装好的系统外观
图 10 系统 APP 界面
图11 第一名用户的出门场景图12 第二名用户的出门场景
4 结 语
智能家居以提高生活高效性、舒适性与便利性为主旨, 着眼于生活中的小细节,以改善用户生活体验。本文智能语音提醒系统着眼于生活中普遍存在的出门忘物与出门忘事现象,在用户出门时提醒相应的备忘信息,屏幕上的时间、天气与问候语增添了科技感与亲切感,给用户的生活带来了便利与更好的体验。