鐘建敏 李曉冬* 李家健 陸任貴 常子鍵
(桂林電子科技大學(xué)電子電路國家級(jí)實(shí)驗(yàn)教學(xué)示范中心,廣西 桂林 541004)
我國是聽障人口數(shù)量最多的國家,其人口已達(dá)2780萬人[1]。作為聽障者使用的主要溝通手段,手語在健全人群體中普及率非常低,這成為他們?nèi)谌肷鐣?huì)的巨大障礙。為了填補(bǔ)這一鴻溝,2016年8月,國務(wù)院印發(fā)了《“十三五”加快殘疾人小康進(jìn)程規(guī)劃綱要》,強(qiáng)調(diào)了“殘疾人服務(wù)科技應(yīng)用等創(chuàng)新要素”的重要性。如何利用現(xiàn)代科技實(shí)現(xiàn)手語翻譯,幫助聽障者與健全人更好地溝通交流成為亟待解決的問題。
當(dāng)前手語識(shí)別技術(shù)大體可分為三種技術(shù)路徑:
(1)基于視覺的手語識(shí)別。該方案利用攝像頭采集手語動(dòng)作的圖像信息后進(jìn)行識(shí)別[2],其優(yōu)點(diǎn)是無須穿戴,體驗(yàn)較好,但數(shù)據(jù)處理量巨大,實(shí)時(shí)性差,而且易受外界環(huán)境影響,在遮擋、強(qiáng)光、弱光或移動(dòng)環(huán)境下識(shí)別困難,在日常交流過程中有很大的局限性。
(2)基于SEMG表面肌電傳感器和慣性測量傳感器的手語識(shí)別。該方案利用皮膚表面的肌電信號(hào)配合手部運(yùn)動(dòng)加速度信息識(shí)別手部動(dòng)作,優(yōu)點(diǎn)是穿戴的體驗(yàn)感較好,但成本較高,識(shí)別準(zhǔn)確率與使用者手部肌肉信號(hào)強(qiáng)度關(guān)系緊密,個(gè)體差異較大。
(3)基于數(shù)據(jù)手套的手語識(shí)別。該方案利用數(shù)據(jù)手套上的彎曲度傳感器和慣性測量傳感器識(shí)別手部動(dòng)作,識(shí)別率較高[3-5],而且成本較低。
聽障人群大多處于社會(huì)底層,收入較低,在保證手語識(shí)別準(zhǔn)確率的前提下,盡可能地降低成本是推廣普及手語翻譯系統(tǒng)的關(guān)鍵,因此,本文選擇了第三條技術(shù)路徑。
系統(tǒng)由數(shù)據(jù)手套和手機(jī)App部分組成,如圖1所示。數(shù)據(jù)手套分為左手和右手,右手為主端,左手為從端。從端將采集到的左手手部動(dòng)作數(shù)據(jù)通過藍(lán)牙發(fā)送給主端,主端將雙手的動(dòng)作數(shù)據(jù)融合后對(duì)手型進(jìn)行初步判斷分類再通過藍(lán)牙發(fā)送到手機(jī)端,手機(jī)端App利用HMM模型中的Viterbi算法對(duì)接收到的數(shù)據(jù)進(jìn)行二次分類最終確定手語類型,并顯示文本、播放語音。數(shù)據(jù)手套實(shí)物及手機(jī)App運(yùn)行界面如圖2所示。
圖1 系統(tǒng)總體框架
圖2 數(shù)據(jù)手套實(shí)物及手機(jī)App運(yùn)行界面
2.1.1 主控模塊
主控模塊采用STM32l4R5處理器,該處理器基于標(biāo)準(zhǔn)的ARM架構(gòu),采用了為高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的Cortex-M內(nèi)核,主頻120 MHz,運(yùn)算性能 150 MIPS,功耗 43 μA/MHz,配置了高達(dá)640KB的RAM和2 048 KB的FLASH,集成了12位的ADC、SPI等眾多外設(shè),此外還帶有FPU單元和DSP指令集,足以滿足手型分類相關(guān)算法對(duì)運(yùn)算速度的要求。
2.1.2 手部動(dòng)作采集模塊
(1)彎曲度傳感器
彎曲度傳感器是一種用來測量彎曲程度的柔性傳感器,利用其在彎曲過程中的阻值變化反映彎曲程度。彎曲度傳感器固定在數(shù)據(jù)手套的5個(gè)手指位置,通過分壓電路將變化的電阻信號(hào)轉(zhuǎn)換為電壓信號(hào)再經(jīng)過AD采樣電路即可獲取手指彎曲數(shù)據(jù)。
(2)慣性測量傳感器
慣性測量傳感器采用MPU9250,與另一款常用的慣性傳感器MPU6050相比,前者在內(nèi)置三軸MEMS陀螺儀和MEMS加速度計(jì)的基礎(chǔ)上增加了磁力計(jì),有效解決了Z軸的漂移問題,精度更高。MPU9250的陀螺儀用于測量手部X、Y、Z三軸的角速度分量,加速度計(jì)用于測量三軸的加速度分量,磁力計(jì)則用于測量三軸的地磁分量,利用這9個(gè)量通過姿態(tài)解算就能得到手部的運(yùn)動(dòng)姿態(tài)信息。
2.1.3 通信模塊
通信模塊采用支持藍(lán)牙5.0BLE(Bluetooth Low Energy)的nRF52832芯片,該芯片提供了一個(gè)UART接口,2個(gè)I2C接口和3個(gè)主動(dòng)SPI接口,功耗僅為5 mA[6]。
2.1.4 電源模塊
考慮到便攜性和續(xù)航能力,數(shù)據(jù)手套選用了330 mAh、3.7 V的聚合物鋰電池,尺寸僅為6 mm厚、22 mm寬、26 mm長。充電電路選擇tp4056單節(jié)鋰電池充電芯片,電路中各模塊、芯片要求3.3 V供電電壓而電池的輸出電壓范圍為2.7~3.7 V,因此,需要穩(wěn)壓電路。電路如圖3所示,左端為充電電路,右端為穩(wěn)壓電路。
2.2.1 程序流程
系統(tǒng)初始化后進(jìn)入數(shù)據(jù)采集循環(huán),通過彎曲度傳感器和慣性測量傳感器獲取的數(shù)據(jù)先分別歸一化,再進(jìn)行數(shù)據(jù)融合,然后采用KNN(K-最近鄰分類)算法在樣本集中找到與當(dāng)前手勢最接近的K個(gè)手勢樣本數(shù)據(jù)及其所屬的m個(gè)分類,最后將這些分類編號(hào)及其概率(獲得的投票數(shù))通過藍(lán)牙發(fā)送到手機(jī)端做進(jìn)一步處理,流程圖如圖4所示。
圖3 電源電路
圖4 數(shù)據(jù)手套端程序流程圖
2.2.2 KNN算法
KNN算法是機(jī)器學(xué)習(xí)算法中最簡單的分類算法之一,當(dāng)要對(duì)一個(gè)新的數(shù)據(jù)進(jìn)行分類時(shí),根據(jù)與它距離最近的K個(gè)已有數(shù)據(jù)的類別來判斷其屬性,本文采用歐式距離,計(jì)算公式如下:
式中,xk為待分類數(shù)據(jù),yi為樣本數(shù)據(jù),xkj為xk的第j個(gè)分量,yij為樣本數(shù)據(jù)yi的第j個(gè)分量,n為樣本及待分類數(shù)據(jù)的維數(shù)。
KNN算法只需簡單增加樣本集,即可應(yīng)對(duì)詞匯量的增加,無需進(jìn)行大量參數(shù)調(diào)整就能獲得不錯(cuò)的性能表現(xiàn),分類準(zhǔn)確率比較高。使用KNN算法前,需要為每一個(gè)手勢采集多組數(shù)據(jù),建立手勢樣本集,當(dāng)樣本集較大時(shí),基于窮舉搜索的KNN算法的時(shí)間復(fù)雜度將會(huì)很大,達(dá)到了O(N),因此,本文采用了基于KDTree的KNN算法,其時(shí)間復(fù)雜度為O(log2N)[7],同時(shí)K取值為3,這樣可以在保證準(zhǔn)確性的同時(shí)大幅度降低計(jì)算復(fù)雜度。當(dāng)然,KNN算法也存在著無法解決手勢的時(shí)間可變性問題:同樣的手勢,不同的人,在不同時(shí)間做出來會(huì)有差異,這會(huì)降低識(shí)別率,因此,初步分類結(jié)果還需在手機(jī)端采用其他算法作進(jìn)一步分析。
系統(tǒng)初始化后,循環(huán)監(jiān)聽數(shù)據(jù)手套端發(fā)來的初判數(shù)據(jù),并分析其連續(xù)狀態(tài)是否結(jié)束,當(dāng)連續(xù)狀態(tài)結(jié)束時(shí),表明使用者已經(jīng)用一組手語表達(dá)完整一段話,程序調(diào)用Viterbi算法計(jì)算出這組手語最有可能表達(dá)的語句組合并返回每一個(gè)詞匯的ID序列,最后播放這組ID對(duì)應(yīng)的音頻,顯示其文字,流程圖如圖5所示。
圖5 手機(jī)App程序流程圖
手語屬于自然語言,完整的表達(dá)通常需要連續(xù)的手語動(dòng)作,是一種較為典型的時(shí)間序列,其上下文中相鄰詞間具有較大的關(guān)聯(lián)性,因此,可以使用隱馬爾科夫模型(HMM)對(duì)其進(jìn)行建模以彌補(bǔ)KNN算法的不足。對(duì)于一段完整的手語,數(shù)據(jù)手套采集到的每個(gè)手語動(dòng)作數(shù)據(jù)是一組已知的觀察序列O={O1,O2,...OT},而這些動(dòng)作數(shù)據(jù)所表示的含義則是隱藏序列S={S1,S2,...,ST};初始狀態(tài)概率向量π是這段手語表達(dá)里首個(gè)手語動(dòng)作可能的m個(gè)含義對(duì)應(yīng)的概率組成的向量;狀態(tài)轉(zhuǎn)移概率矩陣A表示每一個(gè)手語詞匯之間的語言統(tǒng)計(jì)關(guān)系,可通過語料庫計(jì)算出來,這里使用NGram語言模型中的二元Bi-Gram模型,即一個(gè)詞的出現(xiàn)僅依賴于它前面出現(xiàn)的一個(gè)詞;發(fā)射概率矩陣為每個(gè)手語詞匯可能對(duì)應(yīng)的手語動(dòng)作數(shù)據(jù)的概率關(guān)系,由KNN算法獲得。 上述HMM 模型里,λ=(A,B,π)和觀測序列O都已知,需要計(jì)算的是給定觀測序列條件下,概率P(S|O,λ)最大的隱藏序列S,這是一個(gè)解碼問題,可采用Viterbi算法實(shí)現(xiàn)。當(dāng)手語詞匯表比較大時(shí),為減少檢索時(shí)間,用哈希表建立狀態(tài)轉(zhuǎn)移概率矩陣的數(shù)據(jù)結(jié)構(gòu),理論上其時(shí)間復(fù)雜度只需O(1)。
本設(shè)計(jì)選擇了5位掌握手語的健康測試者對(duì)系統(tǒng)錄入的30個(gè)手語詞匯進(jìn)行了測試,測試內(nèi)容分為單一手語測試和連續(xù)手語測試兩項(xiàng)。在單一手語測試中,測試者對(duì)每個(gè)手語動(dòng)作分別操作10次;在連續(xù)手語測試中,測試者利用系統(tǒng)中的30個(gè)手語詞匯隨機(jī)表達(dá)300句話,測試結(jié)果如表1所示。
測試結(jié)果表明單一手語的識(shí)別準(zhǔn)確率超過了93%,連續(xù)手語的識(shí)別準(zhǔn)確率略低,但也超過了90%。
本文設(shè)計(jì)的手語翻譯系統(tǒng)采用了數(shù)據(jù)手套+手機(jī)App方案,實(shí)現(xiàn)難度相對(duì)較低,受使用環(huán)境影響較?。唤Y(jié)合了KNN和HMM模型中的Viterbi兩種算法,在識(shí)別精度上表現(xiàn)良好,且成本較低,手語詞匯的可擴(kuò)展性較好。輸出端以手機(jī)為載體,普通人只需下載安裝App即可與佩戴數(shù)據(jù)手套的聽障人士實(shí)時(shí)交流,其便捷性不言而喻。
表1 系統(tǒng)測試結(jié)果