王炳堃
(閩南理工學院現代教育技術中心,福建石獅362700)
目前公交車進行語音報站基本上采取兩種方式進行報:一種是售票員口頭報站,另一種公交車司機控制按鍵進行語音報站器.這兩種語音播報方式均存在一定的不足:售票員口頭報站往往帶有濃重的地方口音、說話的語速、語調等情況很容易造成乘客聽不懂,不知道車處在什么地方,人在哪里下車等,給乘客乘坐公交車帶來不便;按鍵控制語音報站器這種方式是在公交車進出站時,通過司機按鍵控制來完成公交車語音報站,要求司機時刻關注進、出站的狀態以及每個站點的序號和公交車行駛過程中所遇到的情況.這種播報方式分散了司機的注意力,降低了司機開車的安全系數.利用凌陽SPCE061A板增加設計一個能夠語音輸入,并且有效地對司機語音輸入進行識別,然后進行播報相應內容的公交車報站器,可以有效減少司機在開車過程中只用鍵控播報存在的不足.
從硬件的功能出發,選擇凌陽科技公司生產的SPCE061A板為硬件核心.該板功能強大,板上帶有存儲系統、語音輸入系統、語音輸出系統等,大大方便了公交車報站器的設計.以下功能:
1)該板內部是以unSPTM16位微控制器為核心,不僅能處理一些加、減、或、異或、測試等基本的算術邏輯運算和數據的傳送工作.也能處理一些速度較高的16位×16位的乘法運算和內積運算[1].為公交車報站器進行復雜的數字信號處理帶來了很大的方便.
2)板內部的存儲器有兩個:一個2k字的SRAM和一個32k的字閃存(FLASH)[2].2k字的SRAM可用于公交車報站器子程序調用及返回和中斷處理斷點的保護及返回.32K的字閃存用來存儲公交車報站設計的程序和報站器的語音資源.
3)該板的輸入/輸出端口是單片機與外部設備交換信息的通道.其中,輸入端口負責從外界接收檢測信號、鍵盤信號、語音輸入信號、傳感器輸入信號等.輸出端口負責向外界傳送由單片機產生的處理結果、顯示信息、控制命令、和驅動信號等[3].
4)語音信號通過MIC_IN通道輸入,經過放大器放大,再通過數/模轉換,把語音信號轉化成凌陽SPCE061A板可以識別的信息,凌陽SPCE061A板到語音資源庫中查找相應的語音資源完成報站.
5)該板的語音輸出有兩個通道(DAC1和DAC2).選用通道1(DAC1)接有源音箱,作為公交車外語音播報,司機耳機作為監聽,方便司機對公交車外播報時語音音量大小進行控制.通道2(DAC2)也接有源音箱,作為公交車內語音播報.兩個通道都接帶有源音箱就可以控制公交車內、外播報相關語音信息.
1.2.1 存儲系統的規劃和使用
凌陽SPCE061A板內部的2K字的SRAM是根據“先進后出”的原則進行存儲數據,用于公交車報站器子程序的調用及返回和公交車報站器中斷處理程序斷點的保護及返回.32K的字內存(FLASH)在凌陽SPCE061A板CPU正常工作狀態下均可進行程序的寫入和改寫.32K的字內存(FLASH)分為程序存儲空間(0x0000~0xFFFF)和數據存儲空間[4].程序存儲空間用于存放公交車報站器程序的代碼.數據存儲空間是用來存放公交車報站器的語音資源.對語音資源的修改是采用模塊模式擦除的方法,此方法可以單獨對各個存儲模塊進行擦除修改.
1.2.2 語音的輸入和輸出處理系統
語音處理系統包括語音輸入和語音識別兩個部分.凌陽SPCE061A板本身帶有語音輸入系統(MIC_IN),經過放大器放大,去除干擾信號,模數轉化成凌陽SPCE061A板可以識別的數字信號,再根據識別到的數字信號,到語音資源庫中查找相應的語音資源完成語音播報.
公交車報站器的輸出電路由兩部分構成(公交車內、外播報):接口電路和揚聲器.公交車語音輸出框圖如圖1所示.

圖1 公交車語音輸出框圖
凌陽SPCE061A板有兩個通道(DAC1和DAC2)作為音頻輸出口.通道1(DAC1)作為司機耳機和公交車外部揚聲器的語音輸出口,司機耳麥作為監聽,方便司機控制音量的大小.通道2(DAC2)直接接有源音箱,作為公交車內語音的播報.凌陽SPCE061A板的自帶的揚聲器功率比較小,只有8 Ω,0.5W,這樣的功率滿足不了整輛公交車報站器工作的要求.兩個輸出通道端口(DAC1和DAC2)都接有源音箱作為語音輸出口,完成公交車報站.
1.2.3 公交車報站器硬件平臺的搭建
搭建公交車報站器硬件平臺以凌陽SPCE061A板為核心,把語音處理系統的輸入口都引到報站器的外部方便司機控制.2k字的SRAM和32k的字內存(FLASH)不夠用,可以擴充外存儲器.對輸出通道端口(DAC1和DAC2)進行正確地連接.把公交車內、外揚聲器、司機耳麥監聽接到相應的通道上,完成公交車報站器硬件平臺的搭建.
公交車報站器硬件以凌陽SPCE061A板16位微處理器為核心控制系統,具有通用單片機的編程特性和過程.從這個特性出發,為提高編程開發效率,一般采用unSPTM軟件集成開發環境為開發平臺.unSPTM軟件有下面幾個特點和優勢:(1)適用范圍廣,可以在多個操作系統下運行,例如:WINDOW98、WINDOWS2000、WINDOWSXP等.(2)友好的交互界面,方便用戶了解、使用.(3)豐富的菜單選項,多個工作窗口為程序的編輯、編譯、調試、仿真運行提供方便.(4)多個項目文件(C文件、匯編文件、頭文件),為程序的移值、生成提供了可能.對于程序的仿真處理可以是在線調試,也可以是脫機使用,給用戶進行仿真處理提供了更多的選擇.un-SPTM軟件可以進行兩種語言的編寫(C語言和匯編語言),提高了程序的可控性.
2.2.1 語音資源的建設與管理
公交車站點播報采用語音報站,決定了必須預先規劃建立數字化的站點語音資源.由于凌陽SPCE061單片機只能處理.72k壓縮格式的特定語音資源,生成.72k壓縮格式的語音資源要使用凌陽語音壓縮工具——Compress tool來對語音資源進行壓縮.凌陽語音壓縮工具只能處理.wav格式的語音資源文件,在進行語音壓縮之前就要先進行格式轉化.然后才能進行語音資源的壓縮.語音資源壓縮完以后,要建立語音資源播報的地址,使公交車報站器能找到相應的語音資源完成播報[5].語音資源的建設必須由數字化語音錄制、格式轉化、壓縮存儲這幾個環節構成,把它添加到資源項目下,構建合理的資源地址表完成公交車播報.
2.2.2 語音識別與播報處理系統
進入凌陽SPCE061A板上語音輸入控制播報方式可以通過鍵7和鍵8兩個鍵來控制.鍵8是控制進入語音訓練的一個鍵.語音訓練完成后,公交車報站器會播報一個提示語音——開始,就進入語音識別.這時通過司機語音輸入,就可以完成公交車報站.當按鍵盤上“reset”后,再按鍵7,就直接進入語音識別,完成公交車播報.執行讓看門狗操作(*P_Watchdog_Clear=0x0001;),作用是監視系統是否正常運作.當系統運行時,每隔0.75s必須清除看門狗計數器,防止程序進入死循環.如果看門狗計數器沒有被清除,CPU會認為系統無法正常工作,它將會強行進行系統復位,然后返回,繼續掃描鍵盤[6].語音輸入控制播報系統主要包括三個部分:初始化、語音訓練、語言識別.
1)初始化.語音輸入控制播報系統初始化.
2)語音訓練.語音訓練所要完成的任務就是建立語音模型.簡單地說就是司機輸入的語音信息跟對應語音資源建立聯系.在進入語音輸入控制播報方式時,先判斷報站器是否已經完成語音訓練(檢查訓練的標志位),如果還未語音訓練,要先進行語音訓練.語音訓練時,要輸入兩個前后相同的語音.兩個語音,時間間隔不能太長,語音訓練才能成功.在語音訓練成功后將訓練的語音資源存儲在Flash存儲器中.如果報站器已經語音訓練過,則會把存儲在Flash中的語音資源調出來裝載到辨識器中.司機輸入語音時,公交車報站器就完成相應語音的播報.
3)語音識別.完成語音訓練后,公交車報站器就可以進行語音識別,在語音識別系統中,對輸入的語音信息進行判斷(是否能在語音資源庫中找到相關資源),如果找不到匹配語音資源,就會提示出錯.如果找得到語音資源相匹配,則播報出相應的語音資源完成公交車報站.
語音輸入控制播報系統流程圖如圖2所示.

圖2 語音輸入控制播報系統的主程序流程圖
2.2.3 核心功能中斷服務程序
公交車報站器是在鍵盤控制播報方式的基礎上增加一下語音控制播報方式,由兩種方式相結合進行語音報站,公交車司機可以通過鍵盤的輸入來控制公交車報站,也可以通過語音的輸入控制來完成公交車播報.因此中斷服務程序既有鍵中斷響應,也有語音中斷響應.
1)鍵中斷響應.公交車報站器工作時。當有按鍵按下的時候,公交車報站器鍵盤上的鍵就會產生按鍵觸發,報站器接收相應的鍵觸發信息進行中斷響應,即中斷入口(每個中斷源都有自己的入口地址)[7].鍵中斷響應后,將鍵中斷響應信號傳向中斷服務程序入口地址.公交車報站器對中斷優先級進行判斷,如果中斷響應信號優先級比較低,則不響應按鍵的中斷請求,直接返回到主程序的運行過程中.如果中斷響應信號優先級比較高,則先執行按鍵的中斷請求,當中斷響應結束后,再返回到主程序的運行過程中,等待再次中斷響應.
2)語音中斷響應.當公交車報站器就進入語音輸入控制報站后,公交車報站器是語音輸入控制系統和鍵輸入控制系統同時工作的.當有語音中斷響應時,公交車報站器會對輸入的語音進行中斷響應,如果語音中斷響應優先級比較低,則不響應按語音中斷響應,直接返回到主程序的運行過程中.如果語音中斷響應的優先級比較高,則先執行語音中斷響應,當中斷響應結束后,再返回到主程序的運行過程中,等待再次中斷響應.
中斷服務程序流程圖如圖3所示.

圖3 中斷服務程序流程圖
2.2.4 公交車報站器系統的優化管理
1)公交車報站器進行系統優化管理,需要對語音資源的容量進行管理,盡量減小語音資源,對于相同的語音資源,可以把語音資源截下來,通過代碼編寫,把兩段語音資源相連接,相同的語音資源只用一段,能在多個語音句中使用.例如:對于公交車站所有站點,只要把每一站的名稱××站截下來,和后面的一個相同的語音資源相連接,完成語音的播報,大大減少了語音資源的容量,提高了報站器運行的速度,優化了系統管理.
2)公交車報站器進行系統優化管理,要對語音資源進行合理管理,注意語音資源的質量,讓乘客聽清楚語音播報的具體內容.
3)公交車報站器進行系統優化管理,要加強語音識別系統的識別能力,使報站器能靈敏地識別所輸入的語音,并快速、準確地作出判斷,進行報站.
4)公交車報站器進行系統優化管理,要更合理地管理好存儲系統,不要讓存儲系統的空間不足,使報站器不能正常合理地工作,也不要讓存儲系統的空間太大,造成資源的浪費.存儲空間的大小應比相應的存儲資源略大一些,做到合理、有效地利用資源.
基于凌陽SPCE061A單片機的公交車報站器在鍵盤控制播報的基礎上增加語音輸入控制播報.司機在開車過程中對報站的方式有了選擇性.選擇用鍵盤輸入控制播報方式,按相應鍵,公交車報站器就會播報相應鍵的語音信息.選擇用語音輸入控制播報方式,司機輸入相關語音信號,公交車報站器會把司機輸入的語音信號進行放大,去除噪音,再進行模數轉化成凌陽SPCE061A單片機可以識別的語音信息,從語音庫中查找相應有語音資源完成報站.公交車報站器會越來越滿足實際要求,使其更具有人性化特點.
[1] 楊帥;薛嵐;吳洪兵,等.基于語音處理技術的人機交互系統的設計[J] .工礦自動化,2010,38(4):123-127.
[2] 余彥霖.基于凌陽SPCE061A單片機的語音導引系統的設計與總結報告[J] .科技信息,2011,28(1):99-100.
[3] 李輝,寧祎,鄧遵義.SPCE061A單片機程序存儲器的擴展技術[J] .機電產品開發與創新,2008,21(4):67-69.
[4] 孔祥洪,孟健,王令群.凌陽16位單片機原理與應用[M] .北京:北京航空航天大學出版社,2009.
[5] 孔祥洪,董昌春,王令群.凌陽16位單片機實訓教程[M] .北京:北京航空航天大學出版社,2009
[6] 黃智偉.全國大學生電子設計競賽制作實訓[M] .2版.北京:北京航空航天大學出版社,2011.
[7] 盧勝利.基于凌陽SPCE061A設計實驗平臺的專業綜合設計教程[M] .北京:機械工業出版社,2007.