韓思清,徐乾
(中國人民大學(xué)附屬中學(xué),北京100080)
手語是一種依靠動作和視覺交流的特殊語言,是聾啞人交流的工具。手語由雙手的手型、位置、方向、面部表情、唇動、體勢信息的組合構(gòu)成,聾啞人學(xué)習(xí)手語可以提高的生活學(xué)習(xí)和工作質(zhì)量,正常人學(xué)習(xí)手語可以為聾啞人提供更好的服務(wù)。然而,中國手語包含3000多個常用的詞匯,使得學(xué)習(xí)手語需要投入非常多的時間和巨大的努力,阻礙了正常人與聾啞人之間的正常交流[1]。
隨著計算機的普及使用,以及人工智能技術(shù)的發(fā)展,研究人員一直在努力實現(xiàn)手語與人類自然語言之間自動互譯,手語識別是其中的重要研究方向。手語識別的目的就是通過計算機提供一種有效的、準(zhǔn)確的機制,將手語翻譯成文本或語音,使得聾啞人和聽力正常人之間的交流變得更加方便、快捷。
手語識別開始于90年代,從手語數(shù)據(jù)的采集設(shè)備來劃分,主要包括基于數(shù)據(jù)手套的和基于視覺的兩種系統(tǒng)?;谝曈X的手語識別系統(tǒng)受限于計算機視覺的技術(shù)能力,前端手形的檢測非常困難,并且,識別受背景和光照影響非常大,因此,目前基于視覺的手語識別系統(tǒng)只能實現(xiàn)有限的手語識別。數(shù)據(jù)手套結(jié)合運動傳感器,可以容易地獲得較精確的手語數(shù)據(jù),已經(jīng)可以實現(xiàn)大詞匯量的手語識別,但數(shù)據(jù)手套成本非常高,嚴(yán)重限制了技術(shù)的推廣應(yīng)用。
針對上述問題,本文提出與漢語拼音具有映射關(guān)系的手指動作方法,利用這種編碼和映射方法,可以將手指的動作,簡單、精確地映射到對應(yīng)的漢字語音,這樣可以省去手語識別過程,利用手指的動作即可發(fā)聲。在本文提出的編碼方法的基礎(chǔ)上,可以構(gòu)建低成本的聾啞人發(fā)聲手套,本文提出了利用工控機和STM32 ARM芯片兩種方案實現(xiàn)這種發(fā)聲手套。
手指動作及其與漢語拼音的映射方法具體如下:
(1)手指動作
大拇指的指尖或指節(jié)的一側(cè),與同一只手的其他四指的指尖、或指節(jié)的一側(cè)接觸,構(gòu)成一個手指動作;或利用手指的指尖或指節(jié)的一側(cè),與同一只手的手掌接觸,構(gòu)成一個手指動作。
(2)手指動作與漢語拼音之間的映射方法
將一只手的一個手指動作與漢語拼音的聲母對應(yīng),形成該手指動作與漢語拼音的一個聲母之間的映射關(guān)系,然后選擇這只手其他不同的手指動作,分別于其他漢語拼音聲母對應(yīng),最終形成這只手不同的手指動作與漢語拼音不同聲母之間的一一映射。將另一只手一個手指動作與漢語拼音的韻母對應(yīng),形成該手指動作與漢語拼音的一個韻母之間的映射關(guān)系,然后選擇這只手其他不同的手指動作,分別于其他漢語拼音韻母對應(yīng),最終形成這只手不同的手指動作與漢語拼音不同韻母之間的一一映射。當(dāng)雙手各自、同時做出一個手指動作,分別對應(yīng)漢語拼音的一個聲母和一個韻母,對應(yīng)的聲母和韻母組合,構(gòu)成一個漢字的漢語拼音的聲母和韻母。
采用手的動作,可以代表漢語拼音的聲調(diào):一只手的手掌方向,分別代表漢語拼音聲調(diào)的陰平、陽平、上聲、去聲和輕聲五個聲調(diào)。或采用兩只手的手掌方向的組合,分別代表漢語拼音聲調(diào)的陰平、陽平、上聲、去聲和輕聲五個聲調(diào)。
下面舉例說明手指動作及其與漢語拼音的映射方法的具體實現(xiàn)。圖1(a)是與手指動作編碼相關(guān)的指節(jié)和指節(jié)側(cè)部的示意圖。
圖1 與手指動作編碼指節(jié)定義的示意圖及手指動作示意圖
圖1(a)中,當(dāng)手掌面向本人、向上豎起,自上而下的指節(jié),分別為第一指節(jié)、第二指節(jié)、第三指節(jié),其中,大拇指沒有第三指節(jié);對于每個指節(jié),以大拇指一側(cè)的方向為外側(cè),以小拇指一側(cè)的方向為內(nèi)側(cè),以手掌一側(cè)的方向為前側(cè),以手背一側(cè)的方向為后側(cè),分別為一個指節(jié)4個側(cè)部,包括指節(jié)內(nèi)側(cè)、指節(jié)外側(cè)、指節(jié)前側(cè)和指節(jié)后側(cè)。
可以通過以下方法,形成手指動作與漢語拼音之間的映射:雙手各自同時做出一個手指動作,分別對應(yīng)漢語拼音的一個聲母和一個韻母,對應(yīng)的聲母和韻母組合,構(gòu)成一個漢字的漢語拼音。再利用左手的手掌方向和右手手掌方向的組合,分別代表漢語拼音聲調(diào)的陰平、陽平、上聲、去聲和輕聲五個聲調(diào)。
以圖1(b)為例,左手的手指動作編碼代表了漢語拼音聲母h,右手的手指動作編碼代表了漢語拼音韻母ao,聲母和韻母組合,構(gòu)成漢語拼音hao,兩只手的手掌方向,左手手掌方向向下,右手手掌方向向上,代表漢語拼音聲調(diào)的上聲,可以代表好、郝等漢字的發(fā)音。
為了開展編碼方法的研究,本文首先利用系統(tǒng)集成搭建了利用工控機為控制核心的發(fā)聲手套。發(fā)聲手套主要包括:工控機、DIO采集卡、數(shù)據(jù)手套、陀螺傳感器和音箱,系統(tǒng)框圖如圖2所示:
圖2 以工控機為控制核心的發(fā)聲手套系統(tǒng)框圖
工控機采用ADLINK工控計算機,DIO采集卡采用PCIe7396 DIO采集卡,陀螺傳感器選用WT901C陀螺。數(shù)據(jù)手套上的開關(guān)量,通過DIO采集卡采集到工控機中,工控機依據(jù)采集的雙手?jǐn)?shù)據(jù)手套的開關(guān)量,確定漢語拼音對應(yīng)的聲母和韻母,然后,工控機采集安裝于數(shù)據(jù)手套上的陀螺傳感器輸出的傾角值,根據(jù)傾角值確定漢語拼音的音調(diào),確定具體的發(fā)音,再利用發(fā)音調(diào)用內(nèi)部的TTS動態(tài)庫,驅(qū)動音箱發(fā)聲。
在本方案中,數(shù)據(jù)手套主要是由開關(guān)陣列、手套和開關(guān)陣列電纜組成,另外,陀螺傳感器安裝在手套的手背上。兩只數(shù)據(jù)手套的開關(guān)陣列,分別對應(yīng)漢語拼音的聲母陣列和韻母陣列,聲母陣列包含23個獨立開關(guān),韻母陣列包括33個獨立開關(guān),每個開關(guān)的一端與DIO采集卡的一個采集端口連接,并通過上拉電阻接到工控機的5V供電,每個開關(guān)的另一端接工控機的地,當(dāng)開關(guān)開時,DIO采集卡對應(yīng)端口采集為高電平“1”,當(dāng)開關(guān)按下時,DIO采集卡對應(yīng)端口采集為低電平“0”。端口采集為低電平“0”時,該端口為有效狀態(tài),對應(yīng)某一聲母或韻母。
在本方案中,陀螺傳感器的傾角值通過串口輸出到工控機。發(fā)聲通過直接調(diào)用Windows的SAPI庫實現(xiàn)。
在編碼研究過程中,采用了MATLAB軟件作為編程工具,受限于PCIe7396 DIO采集卡對MATLAB的支持,工控機安裝了32位Windows 7操作系統(tǒng),MATLAB程序的基礎(chǔ)調(diào)用主要包括SAPI庫、串口和PCIe7396 DIO采集卡的開發(fā)庫。
MATLAB編程圍繞一個聲母、韻母和音調(diào)的三維表開展,聲母、韻母在表中的序號由PCIe7396 DIO采集卡的采集值提供,音調(diào)的序號由串口采集的陀螺傳感器值確定,利用聲母、韻母和聲調(diào)確定的序號,在三維表中查到由聲母、韻母和聲調(diào)確定發(fā)音的漢字。MATLAB程序循環(huán)調(diào)用PCIe7396 DIO采集卡,直到采集到有效的聲母和韻母編碼,然后讀取兩個串口,解析得到雙手手套上的兩個陀螺傳感器的角度值,轉(zhuǎn)換為聲調(diào),再利用聲母、韻母和聲調(diào)的編碼值查表,提取表中對應(yīng)的漢字,再將漢字作為參數(shù)調(diào)用SAPI的actxserver函數(shù)和Speak函數(shù),進(jìn)行TTS轉(zhuǎn)換,輸出語音信號,驅(qū)動音箱發(fā)聲。
工控機為控制核心的發(fā)聲手套可以進(jìn)行編碼方法的研究,但這種系統(tǒng)無法便攜使用,因此,本文開發(fā)了可穿戴的以STM32 ARM芯片為控制器的發(fā)聲手套。系統(tǒng)框圖如圖3所示。
圖3(a)中,上部是主數(shù)據(jù)手套,主要包括控制器、開關(guān)陣列、角度傳感器、通信模塊、電池、手套、語音合成模塊和揚聲器,下部是從數(shù)據(jù)手套,主要包括開關(guān)陣列、角度傳感器、控制器、通信模塊、電池和手套??刂破鞑捎肧TM32 ARM芯片,角度傳感器選用JY901角度傳感器,語音合成模塊采用XFS5152CE語音合成模塊,通信模塊采用HC-08藍(lán)牙模塊,電池采用4節(jié)鎳氫充電電池。
數(shù)據(jù)手套上的開關(guān)陣列,直接接入STM32控制器的GPIO管腳,采集的雙手?jǐn)?shù)據(jù)手套的開關(guān)量,確定漢語拼音對應(yīng)的聲母和韻母,然后,STM32控制器采集安裝于數(shù)據(jù)手套上的角度傳感器輸出的傾角值,根據(jù)傾角值確定漢語拼音的音調(diào),確定具體的發(fā)音,再將發(fā)音編碼輸出到語音合成模塊,驅(qū)動揚聲器發(fā)聲。
圖3 以STM32 ARM芯片為控制核心的發(fā)聲手套系統(tǒng)框圖及照片
在本方案中,將全部模塊集成到數(shù)據(jù)手套上,兩只數(shù)據(jù)手套具有獨立的控制器、角度傳感器、供電和開關(guān)陣列,通過藍(lán)牙模塊進(jìn)行數(shù)據(jù)通信,主數(shù)據(jù)手套還包括語音合成模塊和揚聲器。
兩只數(shù)據(jù)手套的開關(guān)陣列,分別對應(yīng)漢語拼音的聲母陣列和韻母陣列,聲母陣列包含23個獨立開關(guān),韻母陣列包括33個獨立開關(guān),每個開關(guān)的一端與STM32控制器的GPIO管腳連接,每個開關(guān)的另一端接工控機的地,當(dāng)開關(guān)開時,STM32控制器的GPIO對應(yīng)管腳采集為高電平“1”,當(dāng)開關(guān)按下時,STM32控制器的GPIO對應(yīng)管腳采集為低電平“0”。端口采集為低電平“0”時,該端口為有效狀態(tài),對應(yīng)某一聲母或韻母。在本方案中,傾角器的傾角值通過串口輸出到STM32控制器。STM32控制器將發(fā)音編碼及其發(fā)聲控制指令通過串口輸出到語音模塊,驅(qū)動揚聲器發(fā)聲。
發(fā)聲手套軟件的開發(fā)采用Keil軟件作為編程工具,基于ST公司提供的固件庫函數(shù),利用于C語言進(jìn)行編程,程序的硬件編程主要包括串口通信和GPIO采集。
編程圍繞一個聲母、韻母和音調(diào)的三維表開展,聲母、韻母在表中的序號由GPIO采集的采集值提供,音調(diào)的序號由串口采集的角度傳感器值確定,利用聲母、韻母和聲調(diào)確定的序號,在三維表中查到由聲母、韻母和聲調(diào)確定發(fā)音的漢字。軟件流程圖如圖4所示,圖4(a)為主數(shù)據(jù)手套的軟件流程圖,圖4(b)為從數(shù)據(jù)手套的軟件流程圖。
圖4 軟件流程圖
程序循環(huán)讀取GPIO端口,直到采集到有效的聲母和韻母編碼,然后讀取兩個串口,解析得到雙手手套上的兩個角度傳感器的角度值,轉(zhuǎn)換為聲調(diào)編碼,在上述采集構(gòu)成中,主數(shù)據(jù)手套的程序通過串口接收從數(shù)據(jù)手套發(fā)聲的編碼值,再利用聲母、韻母和聲調(diào)的編碼值查表,提取表中對應(yīng)的漢字,再將漢字作為參數(shù),構(gòu)建語音合成模塊的發(fā)聲命令,通過串口發(fā)送到語音合成模塊,語音合成模塊接收命令驅(qū)動揚聲器發(fā)聲。
本文提出了基于手指動作的漢語拼音編碼方法,并給出了試驗驗證系統(tǒng)實現(xiàn)和發(fā)聲手套原型系統(tǒng)實現(xiàn),兩種系統(tǒng)實現(xiàn)與實際產(chǎn)品仍存在差距,在手套的舒適性、開關(guān)陣列的可靠性、電路的集成度等方面需要進(jìn)一步改進(jìn)。