基于人脸识别的语音交互系统设计

2019-06-24 06:23佘彩东肖培宫鹤胡天立
科技创新与应用 2019年13期
关键词:人脸识别

佘彩东 肖培 宫鹤 胡天立

摘  要:目前,语音交互系统大多数为一对一模式,为了解决这一问题,设计了一套基于人脸识别的语音交互系统,实现了一对一到一对多模式的转换。系统的硬件部分选用开源硬件领域中较为高阶的树莓派3代b+开发板,运行linux操作系统,图像采集装置为500万像素摄像头,音频输入装置为即插即用的USB麦克风;系统软件部分的开发语言为Python这一脚本语言。

关键词:语音交互系统;人脸识别;树莓派3代;Python;API

中图分类号:TP391.4       文献标志码:A 文章编号:2095-2945(2019)13-0111-03

Abstract: At present, most of the speech interaction systems are one-to-one mode. In order to solve this problem, a set of speech interaction system based on face recognition is designed, and the conversion from one-to-one to one-to-many mode is realized. In the hardware part of the system, the higher order raspberry pie third generation b+development board in the open source hardware field is selected, which runs Linux operating system. The image acquisition device is a 5 million pixel camera, and the audio input device is a USB microphone for plugging and playing. The development language of the software part of the system is Python, which is a script language.

Keywords: speech interaction system; face recognition; Raspberry Pie Generation 3; Python; API

傳统的人机交互中信息的输入主要是通过按键或者触摸屏来完成,并通过显示器实现输出,该方式较为被动,且在某些领域中,存在相关缺陷,例如在车载交互系统中,使用该方式则会存在相关的安全隐患。

语音交互系统作为目前人机交互中的新宠儿,在工业控制、军事、医疗等领域中得到了大量应用,与传统的交互系统相比,语音交互系统更为主动。目前,语音交互系统大多数为一对一模式,即不管使用用户为何人,系统都会将其归为同一用户,为了解决这一问题,通过结合人脸识别技术设计了一套基于人脸识别的语音交互系统,实现了一对一到一对多模式的转换。

考虑到整个系统除了负责图像以及语音数据的采集与处理之外,还需要运行对应的图形界面以及应用程序,而普通的单核开发板很难满足设计要求。因此整个系统采用主频为1.2GHz的四核树莓派3代b+开发板,该开发板在性能上能够完美的达到设计要求。

1 语音识别及人脸识别介绍

1.1 语音识别技术

语言作为人们生活中最常用的信息交互方式,如果机器能够通过语言来与人进行信息交互,是不是能够为人们提供更便捷的服务,于是语音识别技术应运而生。语音识别技术起始于20世纪50年代,由贝尔实验室Davis等人使用模拟电路实现了一台10个英文数字的语音识别系统AUDREY。20世纪60年代末Baum等人将隐马尔科夫模型(HMM)加入语音识别领域。之后各种新技术的逐渐出现,使得语音识别技术逐渐成熟。现在,语音识别正朝着自然连续语音的方向发展。

1.2 人脸识别技术

人脸识别是人体生物特征识别方法中的一个主要研究方向,它具有主动性、非侵犯性和用户友好等许多优点。最早的自动人脸识别研究论文见于1965年Chan & Bledsoe在Panoramic Research Inc发表的技术报告,到现在已有五十多年的历史。人脸识别可分为二维人脸识别和三维人脸识别,二维人脸识别易受光照、表情等因素的影响,使得识别准确性受到限制,而三维人脸识别技术则能够很好地解决这一问题,因此,通过三维信息数据进行人脸识别将是今后的主要研究手段。

2 系统硬件设计

图1是系统的硬件结构图,系统的主控制器为树莓派3代b+开发板,图像采集部分采用可自动调焦的500万像素摄像头,语音采集部分采用即插即用的USB麦克风,显示部分为一块7寸HDMI接口的LCD触控屏,最后的语音输出则使用功率放大器加喇叭。

2.1 树莓派3代b+开发板

树莓派是一个信用卡大小的“卡片电脑”(Single board Computer,单板机)。包括运行频率1.2GHz的Broadcom BCM2837芯片组、一个64位四核ARM Cortex-A53处理器、一个双核Videocore IV@ 多媒体协处理器、一个1GB LPDDR2存储器、四个USB 2.0接口、一个HDMI视频接口、一个RCA音频接口、一个CSI摄像机接口和40个GPIO口等,板载蓝牙和WIFI,可连接电源、键盘、鼠标和网线,具备PC机的基本功能。除了具备丰富的外部接口,还具有价格低、体积小、性能强、功率小、资源多等特点;支持raspbian、ubuntu、Android、Win10 IOT等多种操作系统。

综上所述,树莓派3代b+开发板的性能及其所具有的外设能够很好地满足系统设计要求。系统主要用到树莓派中的HDMI视频接口、RCA音频接口、CSI摄像机接口和有一个USB接口。

2.2 其他模块介绍

除了主控制器之外,系统还需要以下各个模块协同工作才能实现设计要求:

微雪500万像素摄像头:该摄像头兼容树莓派的任何版本,支持自动调焦,自带红外补光灯,支持红外夜视,感光芯片为OV5647。该模块用于系统的图像采集。

USB麦克风:高灵敏度,有效距离2米以上,即插即用,无需安装任何驱动,适合任何一款带USB接口的电脑机型。该模块用于语音信号的采集。

7寸LCD电容触摸液晶屏:800*480分辨率,显示清晰,USB供电,与树莓派3代开发板配套使用支持触摸功能。该模块用于界面的显示。

TPA3116D2數字功放模块:带开关、音量可调、电源反接保护,双声道2*50W。该模块用于语音信号的输出。

3 系统软件设计

3.1 软件运行环境配置

系统通过调用百度语音的API接口来实现语音的识别与合成,调用图灵机器人的API接口来实现智能对话,调用opencv库来进行人脸检测,调用face++API接口来进行人脸识别。

配置相关运行环境首先需要移植Raspbian操作系统,然后通过apt-get配置好opencv相关运行环境,然后使用pip安装API请求相关库,主要有pyaudio、numpy、wave、picamera等,命令使用方法为pip install pyaudio。最后前往对应网站申请相关apikey。

3.2 软件执行流程

如图2所示,系统软件执行流程大致可分为三大步。

第一步为人脸检测,此步骤使用HaarCascade来进行人脸检测,需要用到识别人脸的XML文件在安装opencv的时候已经安装完成,除了可以使用自带的XML外,也可以自己训练所需的Cascade文件,在此不做详细介绍,以下为部分代码:

# 加载所需XML文件

face_cascade = cv2.CascadeClassifier( '/opencv/data/lbpcascades/lbpcascade_frontalface.xml' )

#对图片进行灰度化处理

gray = cv2.cvtColor( image, cv2.COLOR_BGR2GRAY )

#调用函数检测人脸,返回人脸坐标列表

faces = face_cascade.detectMultiScale(gray)

在第一步检测到对应人脸之后,第二步就是调用face++的API接口来进行人脸识别,首先需要将第一步中识别的图片进行base64编码处理;接下来通过requests的post请求进行调用,将会返回对应的JSON字符串,其中人脸唯一标识字段是face_token;然后在本地数据库中搜寻对应标识信息,如果存在对用用户,则会加载对应用户配置信息用于接下来的语音识别,如果不存在该用户,则会在本地数据库中添加该用户,以下为部分代码:

#对图片进行base64编码处理

img_b64=base64.b64encode(dts.read())

#post请求,url_search为请求地址,post_face_compare为请求数据

r = requests.post(url_search, data=post_face_compare)

最后一步就是进行语音交互,在第二步中已经加载对应的用户信息,也就是说系统现在已经知道服务的对象为谁。该步骤首先会检测是否有语音信号(通过设置对应阈值实时检测),有的话通过分别调用语音识别、智能回答、语音合成的API接口来进行实时交互,以下为部分代码:

#获取最大值,通过与阈值进行对比就可以判断是否有语音信号

temp = np.max(audio_data)

#以wav格式存储语音数据,filename为文件名,save_buffer为语音数据

save_wave_file(filename, save_buffer)

#对语音信号进行base64编码处理

speech_base64=base64.b64encode(s_file).decode(“utf

8”)

#使用post方法调用语音合成API

m_res=requests.post(url=asr_server,headers=m_header,data=json_data)

#调用图灵机器人API接口获取回答结果

r=requests.post(url,data=json.dumps(values))

#使用mpg123播放在线语音数据

os.system('mpg123  \“%s\” '%(geturl.encode('utf8')))

经过测试,系统除了达到设计要求外,还具有很强的拓展性,通过修改本地用户配置信息数据库或图灵机器人中的知识库,系统可用于多种不同场合,例如用于智能家居时,通过在图灵机器人的知识库中添加对应家电操作语句,就能够识别对应家电操作指令,通过在本地配置文件中添加用户备忘录字段,就能根据用户的不同展示对应的备忘信息。

4 结束语

该系统在现有语音交互系统的基础上加以改进,添加人脸识别技术,实现了语音交互系统由一对一到一对多模式的转换,使系统的服务更加人性化。据中国报告大厅发布的《2014-2020年中国智能家居行业竞争格局分析及投资可行性分析报告》一文指出,预计到2020年国内智能家居产业规模将达到3576亿元。如果将该系统用作智能家居的交互系统,其前景是十分广阔的。

参考文献:

[1]韦银,王杰辉.基于语音识别模块的家庭交互系统设计[J].福建电脑,2016,32(12):22-23.

[2]梁汉泉,陈锦彪.基于语音控制的人机交互智能系统研究[J].新技术新工艺,2015(09):84-86.

[3]卜秋月.基于OpenCV的人脸识别系统的设计与实现[D].吉林大学,2015.

[4]夏振杰.基于人脸识别技术的身份认证系统实现简介[J].科技信息,2010.

[5]李生笔.基于OMAP5912平台的人机语音交互系统[D].太原理工大学,2008.

[6]李麟.家用机器人语音识别及人机交互系统的研究[D].哈尔滨工业大学,2007.

[7]何昀.基于虹膜的人体特征识别方法研究与实现[D].东北师范大学,2006.

[8]邴志刚,刘媛,崔世钢.机器人开发平台中语音交互系统的实现[J].天津职业技术师范学院学报,2004.

猜你喜欢
人脸识别
人脸识别的“国标”来了
中科视拓开放商业版本人脸识别算法
人脸识别好用但不能滥用
荣耀畅玩7C:人脸识别
iPhoneX来了!
“人脸识别”人工智能测谎仪研发成功