黃 華 仲元昌
(西南大學工程技術學院1,重慶 400716;重慶大學通信工程學院2,重慶 400044)
TTS在智能公交報站系統中的應用
黃 華1仲元昌2
(西南大學工程技術學院1,重慶 400716;重慶大學通信工程學院2,重慶 400044)
在傳統公交車報站系統中,采用“錄音-存儲-回放”的方法要求存儲器的容量較大。為解決這一問題,結合GPS技術和TTS技術,設計了一種新型公交報站系統。該系統以TTS方式輸出語音,使存儲器存儲的不是語音信號波形參數信息,而是播報語音漢字文本信息。試驗結果表明,采用這種方式,存儲空間只用到傳統方式的17.1%,節省了存儲空間。
文語轉換(TTS) 智能報站 語音合成 GPS 存儲器
目前,公交報站系統有傳統按鍵報站方式,有利用全球定位系統(global positioning system,GPS)定位報站方式[1],也有采用無線射頻技術的公交線路站點識別的報站方式[2]。但是對于輸出報站的語音都是采用“錄音-存儲-回放”的方式,即先對要報站的語音內容和廣告內容進行錄音,然后把它存儲在Flash存儲器中,當需要播放時就從存儲器中讀取相應的內容。這種方式的優點是輸出語音質量較高,缺點在于當公交線路較長時需要存儲的內容較多,Flash存儲器的容量隨之增加,成本也隨之增加。
文語轉換(text to speech,TTS)技術是將計算機自己產生的或外部輸入的文字信息轉變為可以聽得懂的、流利的漢語口語輸出的技術,隸屬于語音合成[3]。文語轉換是目前研究的一個新點課題。目前,對于嵌入式TTS的研究也有了較大的突破,已經由原來的單獨一個詞的語音合成輸出,發展到了現在的短語、句子的語音合成輸出;并且在多音字及特殊符號的識別、處理等方面都有了較大的提高[4]。
本文利用比較成熟的TTS技術,代替傳統的“錄音-存儲-回放”方式,設計了一種新公交報站系統。這樣,一方面不需要大容量的存儲器,節約了成本;另一方面更改公交線路或廣告內容時,只需要更改相應的文字信息,不需要重新錄制,操作方便。
系統主要由GPS接收模塊、單片機主控制器、語音輸出模塊、揚聲器等構成。系統的結構框圖如圖1所示。

圖1 系統結構框圖Fig.1 Structure of the system
系統中單片機為主控制機。由于GPS接收模塊與單片機之間,以及TTS語音模塊與單片機之間均采用串口通信,要求單片機至少具有兩個串口,因此單片機選用STC10F10。另外,由于沒有利用額外的存儲器,公交線路和廣告信息都存儲于單片機的ROM中,因此這要求較大的ROM存儲空間。根據試驗選取4 kbit的存儲空間,一般的單片機都能滿足。
系統通過GPS接收模塊獲取公交車所在位置的緯度值和經度值,從而確定公交車當前位置[5],再經過一定的程序算法確定當前公交車的狀態,包括進站狀態、出站狀態和運行狀態三個狀態。TTS語音輸出模塊根據相應的狀態輸出相應的語音信息。
語音播放電路利用中文語音合成芯片OSYN06188實現。語音播放電路如圖2所示。

圖2 語音播放電路圖Fig.2 Voice playback circuit
OSYN06188可以通過異步串口接收待合成的文本,可直接通過脈寬調制(pulse width modulation,PWM)輸出方式驅動揚聲器,也可外接單支三極管驅動揚聲器,即可實現文本到聲音(TTS)的轉換[5]。單片機以信息幀格式向TTS芯片發送命令碼,對TTS芯片進行系統設置。TTS芯片根據命令碼及參數進行相應操作,并向信息終端返回命令操作結果。本系統采用PWM輸出直接驅動揚聲器。
系統采用5 V直流電源供電。由于OSYN06188的核心電壓(CVDD)只需要3 V左右的電壓,所以將電源電壓通過兩個二極管降壓(3 V左右)后提供給核心電壓CVDD引腳。
單片機通過串口向OSYN06188發送命令、數據和接收語音合成芯片回傳的信息。OSYN06188的第22腳為低電平請求Ready/Busy-Status引腳,低電平表示空閑,請求上位機發送數據,單片機可以采用查詢或中斷的方式發送數據。本系統設計將該引腳置空。單片機通過OSYN06188芯片回傳的數據,經軟件分析處理后了解芯片的工作狀態。
GPS在車載終端上有較大的應用前景,也有大量有關GPS在車輛導航及公交報站中的應用的文獻[1-2]。GPS接收機接收衛星發出的信號,經過計算處理就可報告GPS接收機的位置、時間和運動狀態,通過三角定位原理可計算出車輛當前所處的經度、緯度、時間、速度和航向[6]。GPS在接收機數據輸出的方式有串口RS-232方式輸出、USB方式輸出。
系統采用的GPS接收模塊是SUN-SF5032。該模塊工作電壓為5 V,與單片機之間采用異步串行通信方式,速率為9 600 bit/s,每幀包括8個數據位、1位停止位,無奇偶校驗位。數據格式采用NMEA-0183格式,輸出數據采用ASCI碼字符,內容包含了緯度、經度、速度、日期、航向及衛星狀況等信息[7]。以1幀/s的速率依次輸出完整的數據格式如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>,*<13><CR><LF>
其中:<1>表示世界標準時間(UTC),24 h制,格式為hhmmss.ss;<2>表示緯度值,格式為 ddmm.mmmm;<3>表示南北半球,N表示北緯,S表示南緯;<4>表示經度值,格式為dddmm.mmmm;<5>表示東西半球,E表示東經,W表示西經;<6>表示定位質量指示,0表示固定不變,1表示可變定位標準定位系統(standard positioning system,SPS)模式,2表示差分GPS模式;<7>表示使用的衛星數。
對于公交報站系統,我們只需要從GPS模塊中讀出標準時間、經度和緯度,然后通過軟件計算得出當前點距離站點的距離,從而確定當前公交車的狀態。
主程序設計主要包括兩大部分程序設計,即從GPS模塊讀出定位信息和播放相應語音。單片機通過串口讀出GPS模塊中的數據,通過分析NMEA-0183數據字段得出經度值和緯度值。
軟件處理主要包括計算當前點距離公交站點的距離以及確定當前的行駛方向,然后通過查表的方式確定公交車的當前狀態。主程序設計流程圖如圖3所示。

圖3 主程序流程圖Fig.3 Flowchart of the main program
單片機以1次/s的速率讀取GPS的數據,然后利用式(1)計算與起點站之間的距離。

式中:λA和ΦA分別為A點的經度和緯度;λB和ΦB分別為B點的經度和緯度;D為距離。
公交車在每兩個站點之間的運行要經歷到站、出站和運行3個狀態[8]:①到站,播報到站信息;②出站,播報出站臺信息;③運行,介紹行車沿途的城市風貌、播放廣告、預報下站站名等。
每一種狀態需要播放的話音信息如表1所示。

表1 公交運行狀態及播放語音信息Tab.1 Bus running status and voice message broadcast
公交運行線路先存儲在單片機的內部ROM中。單片機與語音合成芯片通信應嚴格遵守語音芯片的通信協議。
每個信息幀最多56個字節:第一個字節為開始字節0x01,第二、三、四個字節為參數描述字節,后面最多跟著50個數據字節;0x04為結束字節;最后一個字節為發送異或校驗字節[9-10]。
當要進行播放時,單片機首先從存儲器中取出要播放的文本,再根據參數設置要求,設置好第二、三、四三個參數描述字節;然后將所有字節相異或,生成校驗字節;最后通過串口向TTS芯片發送。當TTS芯片收到字節后會向信息終端傳輸回應幀,每個回應幀共回送3個字節。
① 若收到0x01、0x11、0x04三個字節,表示接收校驗成功;
② 若收到0x01、0x10、0x04三個字節,表示接收校驗失敗;
③ 若收到0x01、0x12、0x04三個字節,表示全部播音完成。
其中,第一個字節0x01表示回送開始,第二個字節表示接收校驗成功或失敗或播完,第三個字節0x04表示回送結束。若單片機接收校驗失敗,則重新發送剛才的內容。
本次試驗以重慶市北碚區892公交運行線路為例。892公交沿途路線為:市九醫院-和平路口-北碚車站-北碚區門診-西南大學-雙柏樹高速路口-308廠。將各站點的經度、緯度存儲于單片機的ROM中,存儲內容如表2所示。

表2 892線路各站點經度緯度Tab.2 The latitude and longitude of each stop of line 892
由表2可見,當公交車由市九醫院站點開往308廠方向時,經度值減少,反之則經度值增加。在程序設計時,可以利用線路特點簡化程序設計。為了利用表1判別當前公交狀態,在程序中利用兩個變量分別存儲前一時刻從GPS模塊讀出的經度值和緯度值,以及當前時刻的經度值和緯度值。首先根據經度值的變化方向(增加、減小),確定公交車的運行方向;再計算當前點到前一站點和下一站點的距離,確定現在公交車是在運行狀態、進站狀態還是出站狀態;最后根據相應的狀態調用相應的語音信息,通過TTS模塊播放[11]。
與采用“錄音-存儲-回放”傳統的公交系統相比,系統存儲節省的空間計算如下。對于本線路播報的站語音信息和廣告信息共用時間大約為30 s。如果采用64 kbit/s的采樣速率以脈碼調制(pulse code modulation,PCM)方式進行錄音存儲[9],則需要的存儲空間為64 kbit/s×8×60=30 720 kbit,大約需要30 MB的存儲空間。而本系統將播報的內容以文本形式存儲在存儲器中,一個漢字在存儲器中要占用2 B的空間,系統需要播報的內容共有264個漢字,存儲空間僅需要528 B。相比存儲空間只用到傳統方式的17.1%,節省了存儲空間。
本系統利用GPS技術使站點識別、公交運行狀態查詢實現了自動化,不需要駕駛員通過按鍵來確定播放相應的語音內容;利用TTS技術將原來對語音信號波形直接進行的錄音存儲方式,改為存儲要播放的語音文本信息,大大節省了存儲空間。在今后的研究中可以進一步利用TTS播放語音的一些優點,對語音信號進行控制。如當環境噪聲較大時,可以控制TTS模塊提高輸出語音的音量,或者改變播放的語音速率,使報站系統進一步完善。
[1]許連華,李學慶.基于GPS的公交車自動報站系統[J].計算機工程,2005,31(23):191-192,218.
[2]曹云川,周遐,金瑞.公交車自動報站器設計[J].昆明理工大學學報:理工版,2009,34(3):44-47.
[3]呂士楠.TTS技術的發展和展望[C]∥第六屆全國人機語音通訊學術會議,2001:33-37.
[4] Acero A.An overview of text-to-speech synthesis[C]∥Proceedings of IEEE Workshop on Speech Coding,Delavan,USA,2000:1.
[5]張勤,李家權.GPS測量原理及應用[M].北京:科學出版社.2005:220-266.
[6] 周應軍.智能交通系統ITS概述[J].汽車與配件,2003,37:26-28.
[7]黃金明.基于ARM9的公交車智能報站系統的設計[J].自動化儀表,2008,29(6):53-55.
[8]林綠洲,陸起涌.基于GPS與GPRS的公交智能監控系統[J].儀器儀表學報,2006,27(6):561-563.
[9]吳杰,張保平.ISD4004芯片在現場錄放音系統中的應用[J].微處理機,2004(4):60-62.
[10]畢曉君,靜廣宇,徐先鋒.利用TTS技術實現文本文件的語音合成[J].計算機應用,2004,23(9):49-50.
[11]黃華,仲元昌,胡江坤,等.中文語音合成系統語音速率調節方法[J].西南大學學報:自然科學版,2011,33(3):153-157.
Application of TTS in Intelligent Bus Stop Announcement System for Public Transportation
In traditional bus stop announcement systems for public transportation,the method of“record-storage-playback”needs large capacity memory,to solve this problem,a new bus stop announcement system using GPS and TTS(text-to-speech)technologies is designed.With this method,in the memory,the text messages to be broadcasted are stored instead of the parameters information of the waveforms of voice signals.The experimental results show that only 17.1%of the storage space of traditional method is requested,thus the storage space is saved.
Text to speech(TTS)Intelligent announcementSpeech synthesis Global positioning system(GPS)Memory
TN912+.33
A
西南大學第四屆教育教學改革研究基金資助項目(編號:2010JY015)。
修改稿收到日期:2012-01-24。
黃華(1981-),男,2011年畢業于重慶大學電路與系統專業,獲碩士學位,講師;主要從事語音合成與電路系統方面的研究。
行業信息