佘彩東 肖培 宮鶴 胡天立


摘 ?要:目前,語音交互系統大多數為一對一模式,為了解決這一問題,設計了一套基于人臉識別的語音交互系統,實現了一對一到一對多模式的轉換。系統的硬件部分選用開源硬件領域中較為高階的樹莓派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.