楊 芳,何 勇,晏 平
(貴州大學 計算機科學與技術學院,貴州 貴陽 550025)
隨著國內的醫(yī)療衛(wèi)生體制改革及信息化建設的不斷深入和醫(yī)療事業(yè)的飛速發(fā)展,人們對于健康的需求日趨加大,同時也期望醫(yī)療服務的水平能變得更加便捷和完善。隨著信息化進程深入到醫(yī)院并快速發(fā)展,如今,電子病歷、護理呼叫系統(tǒng)、網(wǎng)上預約掛號等現(xiàn)代化服務已經(jīng)在提高醫(yī)院工作效率、完善醫(yī)療服務、節(jié)約醫(yī)療成本等方面發(fā)揮出巨大的作用[1]。
但是,醫(yī)院呼叫系統(tǒng)的發(fā)展卻沒有真正的實現(xiàn)其信息化,目前醫(yī)院普遍使用的呼叫系統(tǒng)均是有線的通訊方式,一般分為單/多總線呼叫系統(tǒng)、基于CAN總線呼叫系統(tǒng)等,因此,在通訊線路的選擇、現(xiàn)場布線施工、系統(tǒng)更換等方面都出現(xiàn)了非常多的問題[2]。目前的呼叫模式為按鍵模式和語音對講模式,當病人需要醫(yī)護人員幫助時,按鍵模式下會使得醫(yī)護人員需要當面與病人溝通后才能了解病人需求再進行后續(xù)一系列的處理,溝通會變得非常繁瑣。而在語音對講模式下,醫(yī)護人員在繁忙的狀態(tài)下就無法進行應答,這就增加了溝通成本。因此呼叫系統(tǒng)作為連接醫(yī)護人員和病人的信息橋梁,須從傳統(tǒng)的工作方式中解脫出來,提高其智能化、信息化以適應如今快速發(fā)展的醫(yī)療行業(yè)。
文中將語音控制技術、無線通訊方式等現(xiàn)代化技術引入到醫(yī)療呼叫系統(tǒng)中,使得醫(yī)護人員和病人之間的溝通不再繁瑣,變得更加智能化,同時省去了布線施工的成本。在物聯(lián)網(wǎng)技術飛速發(fā)展的今天,無線通訊技術才是舞臺上的主角,如WiFi、藍牙、ZigBee等[3],這些無線通信技術都應用廣泛且各有所長,在不同的應用場景中發(fā)揮著各自的作用和優(yōu)勢。其中WiFi也在無線通信這個大舞臺上大放異彩,但是其功耗問題一直受到詬病,而NodeMCU將能有效改善這一缺陷,并在滿足物聯(lián)網(wǎng)設備所需要的各個功能的同時降低其功耗。因此,文中基于NodeMCU設計了一款醫(yī)療語音呼叫系統(tǒng)。
設計的語音呼叫系統(tǒng)的總體結構如圖1所示。
圖1 系統(tǒng)總體結構
首先由病房語音終端采集語音信號,存儲至本地語音庫進行識別,獲得匹配到的語音信息后,通過自定義通訊協(xié)議將語音數(shù)據(jù)封裝發(fā)送到NodeMCU,經(jīng)NodeMCU解析處理之后將語音信息發(fā)送到顯示終端的醫(yī)護服務臺的顯示屏和移動端。這種方式可以直接顯示病人的需求,相較于傳統(tǒng)的按鈴方式,省去了醫(yī)護人員和病人的溝通之后來回取藥品等的繁瑣過程。同時當服務臺收到病房請求之后可以及時地發(fā)送回復信息到病房,病人可以得到及時的反饋。
文中采用的NodeMCU是一個開源的物聯(lián)網(wǎng)平臺,可使用的編程語言是Lua,因此也可說該平臺是基于eLua的一種開源項目,底層使用ESP8266 sdk 0.9.5版本[4]。NodeMCU能夠連接外圍設備,因為其包含USB接口、擴展接口和串口,并且這些接口在驅動時都是使用的非阻塞的事件驅動,所以使用時不僅方便,而且在降低功耗方面有很大的優(yōu)勢,在實時物聯(lián)網(wǎng)的應用中也具有一定的優(yōu)勢。NodeMCU是以集成了WiFi的ESP8266片上系統(tǒng)為核心,不需要外接WiFi就可實現(xiàn)無線通信,且由于內部繼承了穩(wěn)定的優(yōu)化算法,在功耗、體積以及成本方面都具有極大的優(yōu)勢。該系統(tǒng)還設計了語音終端采集病人的呼叫請求,并在顯示端進行顯示和處理。硬件總體設計如圖2所示。
圖2 硬件總體設計
語音終端模塊采用LD3320語音識別芯片[5],該芯片識別率較高且不需要事先訓練和錄音來進行非特定人的語音識別[6]。此外,電路設計大大簡化,不需要外接Flash和RAM,內部集成了可實現(xiàn)語音控制和識別以及人機交互功能的穩(wěn)定的優(yōu)化算法。經(jīng)過測試,該算法的識別率可達到95%左右。
該語音模塊采用的ASR技術[7]是只注重語音數(shù)據(jù)特征的非特定人語音識別技術,即識別時不關心是誰發(fā)出的命令,他的年齡和性別,只要使用的是普通話,都可識別。識別的原理是通過轉換然后匹配選取最優(yōu)的結果。首先,使用數(shù)學模型進行建模,然后將收集到的語音數(shù)據(jù)進行頻譜轉換,轉換為語音特征并提取出來,根據(jù)特征生成語音關鍵詞列表,最后選取最優(yōu)的結果進行輸出即可。一般使用LD3320在識別時可以產(chǎn)生4種結果:分別為匹配結果1、匹配結果2、匹配結果3、匹配結果4。將四種匹配結果進行篩選和比對,選取其中最優(yōu)的且出現(xiàn)次數(shù)最多的一個,即為需要的最優(yōu)結果。該芯片的識別容量為1至50個關鍵詞,每條語音數(shù)據(jù)的長度不超過10個中文漢字或者不超過79個字節(jié)的漢語拼音,當然必須為普通話。為了區(qū)別每個字,中間采用空格符作為分隔符,例如換藥的轉換是:“huan yao”。
語音識別芯片[8]的工作流程是:首先對經(jīng)過MIC輸入的聲音流進行頻譜分析,接著對語音進行特征提取,然后匹配關鍵詞語列表中的關鍵詞語,并從此關鍵字列表中匹配得分最高的關鍵詞語作為最終語音識別的結果輸出。
文中采用集成WiFi的NodeMCU低功耗平臺設計方案,實現(xiàn)物聯(lián)網(wǎng)設備無線通信低功耗的目標。該模塊的Node MCU固件平臺采用WiFi SoC ESP8266[9]作為核心,ESP8266是一款超低功耗的UART-WiFi透傳模塊[10],在這個模塊中自身包含可以實現(xiàn)串口和WiFi轉換的TCP/IP協(xié)議棧。而且模塊具有豐富的可實現(xiàn)串口透傳的硬件接口,同時可支持PWM調控以及GPIO的控制。在每次啟動、復位和喚醒時,GPIO15必須保持低電平,GPIO2必須保持高電平;當GPIO0為高電平時表示處于RUN模式,低電平時表示處于FLASH模式;當需要設置為睡眠模式時,GPIO16和RST需連接在一起,GPIO16將輸出低電平去重置系統(tǒng)的喚醒時間[11]。
無線模塊在通信時不需要連接外圍無線設備,也不需要連接WiFi,原理是通過智能連接技術空中抓包獲取無線路由器的ID和password,自動連接路由器并發(fā)送數(shù)據(jù)至硬件部分無線模塊。
無線WiFi通信模塊ESP8266的工作模式有三種:(1)接入點(Access Point)模式,也可稱為AP模式,該模式下允許其他的無線設備接入,提供無線的數(shù)據(jù)訪問服務,一般使用的無線路由和無線網(wǎng)卡即工作在這種模式之下,每一個接入點是被允許互連的,可以把家里使用的無線路由器就作為其中的一個接入點;(2)客戶端(Station)模式,也可稱為STA模式,這種模式是不接受無線的接入的,和無線終端類似,但是可以連接到接入的AP;(3)接入點+客戶端模式,即同時使用AP和STA這兩種模式,在該系統(tǒng)中,需要同時發(fā)送語音數(shù)據(jù),又需要接收服務臺的回復消息,因此該系統(tǒng)主要采用的就是這種工作模式。系統(tǒng)主要使用ESP8266無線模塊的通信處理函數(shù)模塊,以此為載體來構建NodeMCU平臺,并構建無線通信模塊中的WiFi路由的功能,并構建云平臺的服務器的數(shù)據(jù)通信功能。將這些數(shù)據(jù)鏈路構建完成之后,就可將ESP8266中的WiFi無線通信模塊與路由器進行連接,這樣就可實現(xiàn)該系統(tǒng)通過云平臺服務器進行遠程通信的功能。
電源模塊使用SPX3819M5-L-3-3這種噪聲低的線性穩(wěn)壓電源,它的優(yōu)勢是線路簡單。電源SPX3819M5-L-3-3的額定工作電流為500 mA,可滿足NodeMCU啟動時對瞬間電流的要求。
顯示終端模塊使用的是NT35510進行驅動的TFT-LCD液晶屏,其主要是采用IIC總線協(xié)議方式實現(xiàn)。顯示端模塊中存儲的部分采用SD卡實現(xiàn),采用SPI總線協(xié)議。顯示終端還可包含移動端顯示,即可使用手機、平板等便攜式設備進行呼叫信息顯示和處理。
語音終端軟件設計的核心是語音識別程序設計,在該模塊的軟件設計部分整個程序主要從以下流程進行實現(xiàn)。首先對芯片進行一系列的通用初始化,主要包括復位、工作模式的設定、設定使用的時鐘頻率、設定FIFO等相關的初始化操作;完成初始化之后進行LD3320語音識別芯片[12]的工作檢查,確認芯片可以進行后續(xù)的正常工作。當用戶需要進行語音呼叫時按下喚醒按鍵或者喚醒語音,然后進入語音錄入模式,當結束語音的錄入之后,將該語音片段寫入關鍵詞識別列表。LD3320芯片在寫入識別列表的規(guī)則是需要一個特定的編號對應一個識別的條目,編號的數(shù)量不能超過50個,該編號的數(shù)值須小于256且不需要連續(xù),每一個識別的條目為標準的普通話均轉換成小寫漢語拼音,字與字之間用空格進行分隔。接下來進行語音識別的工作,因為需要等待語音識別的結果,所以此時需要打開中斷。當收到回復的反饋信息,將該信息發(fā)送到語音終端,最后將該條內容通過語音終端播放并同時顯示用戶呼叫的內容。
流程如圖3所示。
圖3 語音識別流程
語音終端與NodeMCU通信的數(shù)據(jù)幀采用自定義的通信協(xié)議,主要由幀頭、幀長、數(shù)據(jù)、校驗和幀尾五個部分構成,其中每個部分的定義和占用字節(jié)數(shù)可根據(jù)實際使用來自定義。該系統(tǒng)將幀頭定義為0x0A,可占用長度為1 Byte;幀尾定義為0x2A,可占用長度為1 Byte;校驗和占一個字節(jié),將有效數(shù)據(jù)相加取余;幀長為數(shù)據(jù)的有效長度,可占用長度為1 Byte;數(shù)據(jù)可占用長度為3~256 Byte。
采用以下的幀格式:
幀頭(Header)+幀長(Length)+數(shù)據(jù)(Date)+校驗和(FCS(Check))、幀尾(Footer)
系統(tǒng)在無線通信時可以生成一個包含尋找到的無線局域網(wǎng)的列表,選中列表中包含的模塊便可直接進行連接,采用的控制協(xié)議是TCP可靠協(xié)議[13],發(fā)出或接收的所有指令都將以GET和POST函數(shù)傳送給嵌入在NodeMCU中的無線模塊。該模塊也是基于TCP協(xié)議的HTTP服務,那么模塊在接收到指令請求之后就會對該指令進行解析,此時需調用解析器解析出具體的指令含義,在完成解析之后,可根據(jù)解析出來的結果進行一系列操作,同時將返回執(zhí)行的結果。系統(tǒng)中使用Lua腳本語言編寫WiFi的路由連接程序以實現(xiàn)ESP8266無線通信模塊與無線路由的連接,該程序中的實現(xiàn)首先需要設置WiFi的工作模式,由于系統(tǒng)使用的是STA+AP的工作模式,那么需要設置station模式中所需要的ssid和password,以及設置開啟定時器并進行在station模式下打開AP模式,同意路由的AP連接,當連接WiFi路由成功后,便可直接從路由中獲取客戶端的IP地址,以此進行無線通信。
具體通信流程如圖4所示[14]。
圖4 無線連接流程
顯示端主要包括病人呼叫信息的顯示和信息報警提示,首先進行初始化和啟動NodeMCU無線接收模式,將識別后的語音信息解析完成發(fā)送到顯示端,顯示端就會發(fā)出報警提示音并在顯示屏上將語音內容顯示出來,醫(yī)護人員看到呼叫信息后確認處理,NodeMCU再將處理回復返回到呼叫端。
系統(tǒng)測試時主要采用兩種方式來進行語音終端的喚醒,一種是按鍵喚醒的方式,另一種是特定語音喚醒的方式。通過測試,特定語音喚醒方式由于容易受到環(huán)境的影響,識別率較低,且誤識別情況發(fā)生較頻繁,因此在該系統(tǒng)中主要采用按鍵觸發(fā)的方式,并針對該方式下的識別率進行了測試。測試環(huán)境為1~10 m的范圍內,每間隔1 m對語音終端發(fā)出50~100次的語音請求,具體的測試數(shù)據(jù)如圖5所示。通過本次測試可以得出,可將麥克風靈敏度設置為18、麥克風增益設置為21,系統(tǒng)的語音前端在1~5 m時語音識別率較高。
圖5 語音識別率測試結果
通過測試NodeMCU,無線通信模塊通信穩(wěn)定,傳輸數(shù)據(jù)至云端發(fā)送時延低,錯誤率低,能很好地滿足系統(tǒng)功能需求。
在測試信號強度和丟包率時使用的是Smart RF Studio軟件,分別對系統(tǒng)的每個節(jié)點的這兩個測試項進行了測試,將接收與發(fā)送節(jié)點之間的信道設置為0X0B,它們之間的頻率設置為2 430 Hz,測試環(huán)境分別為有、無障礙,其中無障礙環(huán)境下節(jié)點相距1 m和5 m,有障礙環(huán)境設置為穿墻障礙節(jié)點相距12 m,測試出信號強度的結果如圖6所示。
圖6 信號強度測試結果
文中設計的無線語音呼叫系統(tǒng),使用WiFi無線通訊與語音呼叫相結合的方式,區(qū)別于傳統(tǒng)呼叫系統(tǒng)單一的控制方式,改善了當前有線呼叫系統(tǒng)的局限性,大大簡化了醫(yī)護人員和病人之間的溝通過程,同時針對語音識別芯片解決了外部存儲器數(shù)據(jù)修改困難的問題,并突破了WiFi通訊方式存在的功耗問題。從測試和使用情況上看,該系統(tǒng)運行穩(wěn)定,性能良好,具有不錯的市場前景和應用價值。