王明峰
(廣州航海學院,廣東廣州 510725)
在觸摸操控、手勢識別方式和姿態識別方式等人機交互方式迅速發展的今天,輪機模擬器仍采取傳統的鍵鼠控制方式,存在訓練效率不高和操作方式單一的問題,深入研究輪機模擬器交互方式不但能提高訓練效率,還能推動輪機模擬器發展。目前,部分方案采用嵌入式設備本地化語音識別的措施以解決該問題,但這種方案存在語音識別不準確和時延高的問題。本文基于語音云識別技術和嵌入式設備提出一種輪機模擬器人機交互方案,結合語音云識別的準確性、低時延及嵌入式設備體積小、功能強的優點,提高輪機模擬器利用率和操作便捷性。
傳統的人機交互方式強調視覺而弱邏輯,也稱作GUI(Graphic User Interface),而語音交互則強邏輯無視覺或者強邏輯弱視覺,也稱作VUI(Voice User Interface)[1]。VUI可以通過語言傳遞很多信息,包括認知、邏輯甚至是情緒等。輪機模擬器人機交互不需要對語音進行更深層次分析,僅需要識別出用戶所說的話,并執行相關動作。
此過程大致可以分為五個環節:一是語音采集環節,該過程中采集用戶語音并編碼;二是語音識別環節,該過程中上傳編碼后語音到云端識別并回傳;三是語音處理環節,該過程中將回傳信息轉換為機器可識別的文本信息;四是語音執行環節,該過程中通過對文本識別做出相應動作;五是語音反饋環節,該過程中做完上述動作后將結果反饋給用戶。系統框圖如圖1所示。

圖1 輪機模擬器語音交互系統整體設計
在硬件方面,使用適用于單片機的Python解釋器和庫均可。本文選用支持MicroPython的STM32F103-ZET6作為主控芯片,支持MicroPython是為了使用Python進行軟件部分開發。結合ESP8266 Wi-Fi模塊通信,ISD4004系列完成語音采集與編碼,OLED顯示屏完成語音反饋。硬件總體設計框圖如圖2所示。

圖2 硬件總體設計框圖
其中,為了簡化供電線路,本文采用USB進行5 V供電,并通過降壓芯片轉換為MCU供電電壓,具體電路圖如圖3所示。

圖3 USB供電并轉為MCU電壓
此外,該系統還設計了一塊拓展底板,包括用于連接各個模塊的排母、LED狀態指示燈,目的是保證各模塊之間數據穩定交互及未來系統拓展。其原理圖如圖4所示,完整系統實物圖如圖5所示。

圖4 拓展底板原理圖

圖5 整個系統實物圖
軟件設計的總體思路如下:
第一,設備上電后完成系統自檢,確保設備正常工作。
第二,完成系統自檢后進行系統的初始化,包括各個模塊所需功能的初始化,如STM32的GPIO的初始化、SPI通信和IIC通信的初始化、串口通信的初始化等。
第三,完成各個模塊的初始化后,根據嵌入式軟件開發常用的幾種框架以及該設計的任務需求,選擇使用實時操作系統FreeRTOS(Free Real Time Operating System)。
第四,若采集到語音信號,并收集到語音識別得到的數據,將得到的結果顯示在OLED屏幕上,并通過Wi-Fi模塊將控制指令發送給上位機進行控制。
軟件設計的總體流程如圖6所示。

圖6 軟件設計的總體流程
軟件設計可以分為三個部分,一是核心控制模塊的程序設計,二是各個從設備模塊的驅動程序設計,三是調用云識別的程序設計。在核心控制程序設計過程中,由于該系統預裝了FreeRTOS,更加方便為STM32 芯片做各個任務的控制和資源調度。當ISD4004錄制并存儲后,由STM32通過Python程序調用云端識別并返回給STM32處理后,由OLED屏幕顯示,通過ESP8266實現輪機模擬器中的上位機與語音識別系統之間的交互。在驅動程序設計中,選擇合適的OLED顯示內容和調用ESP8266即可。在調用云識別的程序設計中,經對比,由于科大訊飛并不免費,騰訊云審批煩瑣,在阿里云和百度云中,阿里云相對易用[2],因此,云端識別采用阿里云智能語音服務,其具有識別準、處理快及模型可定制的優點,可以解決普通話不標準、船舶場景下中英混合交流等難題。
在板卡上編寫Python程序,實現輪機模擬器的云識別語音交互與控制,具體操作如下:
第一步,使用以下命令安裝Python SDK:
pip install aliyun-python-sdk-core==2.13.3
第二步,配置環境變量、編碼格式和采樣率。
通過環境變量讀取訪問憑證,智能語音交互的AccessKey ID、AccessKey Secret和AppKey的環境變量名:ALIYUN_AK_ID、ALIYUN_AK_SECRET、NLS_APP_KEY。
發出聲音: “查看發電機運行狀態” ,此時,系統會生成一個PCM編碼格式16 000 Hz采樣率的錄音文件,等待系統返回代碼并在OLED屏幕上顯示。當系統在OLED屏幕上顯示 “錄音文件識別請求成功” 即表示錄音文件已經傳到阿里云識別,當系統在OLED屏幕上顯示 “錄音文件識別成功” ,即表示阿里云已經識別完成錄音文件,并回傳到嵌入式設備。輪機模擬器的機艙監測與報警系統能夠發出聲光報警信號[3]。模擬器系統會顯示當前發電機運行狀態,OLED屏幕同步顯示發電機狀態。
圖7為輪機模擬器屏幕狀態,圖8為當前狀態下OLED屏幕同步顯示狀態。

圖7 當前狀態下輪機模擬器顯示狀態

圖8 OLED顯示狀態
本文設計的基于語音云識別的輪機模擬器交互系統,具有良好的語音交互功能,能夠順暢地同輪機模擬器使用者交互,并根據交互者語音指令完成響應任務。利用該系統可以方便快捷地進行模擬器使用,也可以推廣到其他復雜項目中,具有一定的參考價值。