袁偉偉 , 胡 軍 ,2, 劉萬鳳
(1.南京航空航天大學(xué) 江蘇 南京 210016;2.南京大學(xué) 江蘇 南京 210093)
隨著我國民航運輸事業(yè)的快速發(fā)展,對培養(yǎng)高水平的空中交通管制(Air Traffic Control,ATC)人員的需要越來越大。其中陸空通話標(biāo)準(zhǔn)用語[1](ATC指令)的訓(xùn)練是空管模擬訓(xùn)練中的一個非常重要的內(nèi)容。
文中對空管模擬訓(xùn)練的語音指令識別與合成技術(shù)問題進(jìn)行了分析與研究,并基于開源語音識別引擎Sphinx-4[2]及語音合成引擎FreeTTS[3]設(shè)計并實現(xiàn)了一個可用于空管模擬訓(xùn)練的語音識別與合成軟件系統(tǒng)AIRSS(ATC Instruction Recognition and Synthesis System).
空管模擬訓(xùn)練機是用來模擬真實的空中交通管制過程的仿真系統(tǒng)是訓(xùn)練管制學(xué)員和飛行學(xué)員的重要方法和有效措施。目前的空管模擬訓(xùn)練機架構(gòu)都設(shè)有管制員席位和飛行員席位,管制學(xué)員的訓(xùn)練時間和訓(xùn)練效果難以有效保證。
統(tǒng)計資料顯示,在飛行事故和不正常情況下,管制人員和飛行人員之間的通信用語錯誤造成的因素占65%。因此,陸空通話用語的規(guī)范、統(tǒng)一、無歧義對飛機飛行的安全有著非常重要的意義,對陸空通話標(biāo)準(zhǔn)用語進(jìn)行訓(xùn)練也是模擬訓(xùn)練的重要內(nèi)容。中國民航局參照國際民用航空組織的ATC用語手冊制定了《空中交通無線電通話用語標(biāo)準(zhǔn)》(MH/T 4014-2003)(以下文中簡稱《標(biāo)準(zhǔn)》),其語法結(jié)構(gòu)規(guī)范、無歧義、樣本空間小且工作環(huán)境噪聲低,比較適合采用語音識別技術(shù)。
本節(jié)中首先分析了ATC指令的基本特征并給出指令格式的設(shè)計,然后給出了語言模型描述文法的設(shè)計,接下來對ATC指令中特殊發(fā)音的識別與合成進(jìn)行了分析,然后說明了識別后處理的方法,以及多次應(yīng)答語音合成技術(shù)。
本文中所研究的ATC指令是 《標(biāo)準(zhǔn)》中所規(guī)定的標(biāo)準(zhǔn)ATC用語。在ATC指令的應(yīng)用場景中,涉及到飛機的進(jìn)近、航線飛行、地面滑行等多個飛行階段,文中對《標(biāo)準(zhǔn)》中的ATC指令進(jìn)行分析后,發(fā)現(xiàn)空中交通管制人員和飛行人員之間的典型通信用語遵循一定的格式,圖1(a),圖 1(b)給出了兩條典型的ATC指令結(jié)構(gòu)的樹形特征分析。

圖1 典型ATC指令樹形結(jié)構(gòu)的分析Fig.1 Analysis the representative ATC command in tree structure
因此,文中將一條完整的ATC指令格式設(shè)計為:
“航班呼號”+“管制區(qū)號”+“指令動作”+“動作狀語”
其中,航班呼號表明接收ATC指令的航空器編號。如:Air China3915(CCA3915),China Eastern2501(CES2501)等 。管制區(qū)號由管制單位名和管制類別(均為字符串)組成。如Beijing Approach(北京進(jìn)近管制)、Guangzhou Tower(廣州塔臺管制),等等。
指令動作和動作狀語則用來表明具體的指令,一條指令中可以只包含一條指令動作和動作狀語,如圖1(a)簡單指令中的increase speed和460,也可以包含多條指令動作和動作狀語,如圖 1(b)復(fù)合指令中的 turn left和 106、(hight)to 和1200 meters。
語言模型是描述自然語言內(nèi)在規(guī)律的數(shù)學(xué)模型,構(gòu)造語言模型是語音識別必不可少的一部分。文中采用了基于文法的語言模型來進(jìn)行ATC指令的語言描述。
語音識別引擎Sphinx-4描述基于文法的語言模型所使用的格式是 JSGF(JavaTM Speech API Grammar Format)[4]。 如圖2中的示例是改變速度時ATC指令的核心JSGF文法描述示例。
語音識別引擎啟動時自動加載定義的語言模型文法,將其轉(zhuǎn)化為非確定有限自動機(NFA),并依據(jù)該自動機決定可識別的單詞或語句。文中按飛行階段的不同對ATC指令集進(jìn)行了分類,設(shè)計多個文法文件,使得可以針對飛行的不同階段加載不同的文法文件,提高語音識別的效率。如圖3所示為進(jìn)近管制階段指令用語的JSGF文法模型的核心部分,其它階段的文法模型從略。

圖2 改變速度的ATC指令的文法描述示例Fig.2 An ATC command of change hight in BNF grammar example

圖3 進(jìn)近管制核心ATC指令的JSGF文法描述示例Fig.3 Core approach control ATC command in JSGF grammar example
在本文的工作中,語音引擎通過音素來定義聲音,即:字母、單詞和特殊發(fā)音之間的映射可以用音素的組合排列(即發(fā)音序列)來實現(xiàn),使得語音識別引擎可以有效地識別特殊發(fā)音的字母、數(shù)字單詞及其組合,語音合成引擎可以根據(jù)單詞對應(yīng)的因素合成語音。
以下給出陸空通話標(biāo)準(zhǔn)用語中主要的3類特殊發(fā)音及其發(fā)音序列的構(gòu)造:
1)數(shù)字特殊發(fā)音的識別與合成:設(shè)計了8個核心的非常用發(fā)音的數(shù)字發(fā)音序列,加上Sphinx-4及FreeTTS發(fā)音字典中已存在的 zero,six,seven,hundred等4個單詞及其發(fā)音序列,總共12個核心的數(shù)字發(fā)音序列用語語音的合成。
2)字母特殊發(fā)音的識別及合成處理:分別用ALPHA~ZULU等單詞的發(fā)音來替換A~Z字母的發(fā)音,如航線代號BARC會被識別為Bravo Alpha Romeo Charlie。
3)專用名詞發(fā)音的識別及合成處理:將部分單詞匯集整理,并將發(fā)音序列添加到發(fā)音及合成字典中。如:ILS(儀表著陸系統(tǒng))的發(fā)音為 I(AY)L(EH L)S(EH S)等。
由于語音識別引擎所識別的語音輸出結(jié)果只是一串由字母單詞組成的字符串文本,不包含任何的結(jié)構(gòu)與語義信息,無法直接作為模擬機服務(wù)器端處理所需的格式。
因此,本文首先對語音識別引擎所輸出的文本字符串設(shè)計了一個處理過程,如圖4所示。來自動生成結(jié)構(gòu)化的消息。其基本思想為:以2.1節(jié)分析得出的ATC指令特征為基礎(chǔ),設(shè)計了一系列語義結(jié)構(gòu)的分析與替換規(guī)則,使用JavaCC(Java Compiler Complier)構(gòu)造基于這些規(guī)則的語法/詞法分析器,自動生成結(jié)構(gòu)化的消息。
又由于,大多數(shù)ATC指令還存在一次,二次應(yīng)答語音指令合成的問題。如高度變化的指令:AA441 new york tower descend to 1200 meters,其一次應(yīng)答合成語音指令為:new york tower AA441 descending to 1200 meters.所以,再次使用JavaCC來自動構(gòu)造基于指令的一次應(yīng)答和二次應(yīng)答的語法/詞法分析器,其過程如圖4所示。

圖4 JavaCC替換處理流程圖Fig.4 Flow chart of replace in JAVACC
根據(jù)空管用語的應(yīng)答要求,一次應(yīng)答要求立即應(yīng)答,二次應(yīng)答要等到指令完成后再做應(yīng)答,當(dāng)二次應(yīng)答與一次應(yīng)答都要進(jìn)行語音合成時,二次應(yīng)答推遲到一次應(yīng)答完成之后進(jìn)行。對此,解決方案如下:
使用Java中的多線程來模擬多次應(yīng)答,每一次應(yīng)答啟動一個線程。如圖5所示。

圖5 多次應(yīng)答及沖突處理流程圖Fig.5 Repetitious answer and conflict process flow chart
在上述關(guān)鍵問題分析的基礎(chǔ)上,基于語音識別引擎Sphinx-4及合成引擎FreeTTS,設(shè)計并實現(xiàn)了涵蓋起飛、進(jìn)近、著陸、航路飛行、地面滑行等多個不同空中交通管制場景的語音識別及合成系統(tǒng)AIRSS,其系統(tǒng)框架如圖6所示。下面給出各個功能模塊的說明:
1)語音信息的采集:其功能是監(jiān)聽麥克風(fēng)的輸入,采集管制學(xué)員的語音信息,作為語音識別引擎的識別輸入。

圖6 AIRSS的系統(tǒng)處理框圖Fig.6 System process architecture in picture
2)初始化配置信息:主要實現(xiàn)系統(tǒng)初始化時,輸入輸出、發(fā)音字典、聲學(xué)模型、系統(tǒng)運行等配置信息的加載。
3)語言模型配置:主要負(fù)責(zé)設(shè)計與配置不同飛行階段的語言模型文法。
4)特殊發(fā)音的識別:主要解決ATC指令中特殊發(fā)音的問題。
5)多次應(yīng)答處理:完成由上文中關(guān)于多次應(yīng)答的處理功能。利用Java中的多線程技術(shù)完成多次應(yīng)答的功能和多次應(yīng)答沖突的處理。
在本節(jié)中給出了標(biāo)準(zhǔn)的ATC指令在AIRSS系統(tǒng)中應(yīng)答響應(yīng)時間及語音合成兩個方面的實驗及效果分析。分別使用100條具有一次應(yīng)答和二次應(yīng)答的ATC指令實驗統(tǒng)計分析。一次應(yīng)答的評價響應(yīng)時間在1.5 s左右。個別二次應(yīng)答的響應(yīng)時間在2.9 s及以上,這主要是由于與當(dāng)時的一次應(yīng)答產(chǎn)生了沖突,推遲了應(yīng)答響應(yīng)的時間。所以應(yīng)答的系統(tǒng)響應(yīng)時間滿足了系統(tǒng)的基本需求。
最后,使用語音引擎來替代人工機長席位,語音引擎的應(yīng)答發(fā)音是否真實自然也是本模擬系統(tǒng)要考慮的重要方面。圖7為一次應(yīng)答指令:Air China niner one three two Nanjing approach turning left heading one four five.加入停頓前后的語音合成效果圖。

圖7 應(yīng)答指令語音合成的發(fā)音停頓(前后對比)Fig.7 Answer command synthesis(no pause/with pause)
初始的模擬效果(如圖7(a)),沒有考慮到背景語義信息相關(guān)的節(jié)奏停頓(比如,航班號的停頓),發(fā)音不夠自然;加入了停頓控制后(如圖7(b)),可以看出,同樣的發(fā)音命令,發(fā)音時常由5.2 s增加到了7.0 s,而聲音的強度(縱坐標(biāo))并沒有發(fā)生變化,已經(jīng)具有了更加貼近真人發(fā)音的效果。
目前,已經(jīng)有不少軟件系統(tǒng)使用了語音技術(shù),其核心的語音識別引擎如IBM公司的ViaVoice[6]等。文獻(xiàn)[6]中較早的給出了基于ViaVoice的一種空管模擬訓(xùn)練機的語音應(yīng)用系統(tǒng)的設(shè)計方案,但缺乏核心問題的分析。文獻(xiàn)[7-9]主要只是介紹語音識別技術(shù)語音識別文法的設(shè)計規(guī)則,缺乏語音訓(xùn)練模塊的分析和設(shè)計。本文對系統(tǒng)的整個處理框架給出了詳細(xì)的說明,并給出了AIRSS系統(tǒng)的設(shè)計與實現(xiàn)。在語音合成方面,解決了多次應(yīng)答沖突處理的問題,而且加入了發(fā)音停頓控制,使得語音合成效果更自然更貼近真人發(fā)音。
文中對語音識別及合成技術(shù)在空管領(lǐng)域中的應(yīng)用進(jìn)行了研究,分析了語音識別及合成過程中空管指令的特征分析,語言模型的設(shè)計,特殊發(fā)音的識別與合成,及多次應(yīng)答的處理方法等關(guān)鍵問題。在此基礎(chǔ)上,以Sphinx-4及FreeTTS為核心設(shè)計并實現(xiàn)了一個AIRSS空管語音識別系統(tǒng),并給出了相關(guān)ATC指令實驗結(jié)果的統(tǒng)計和分析。
進(jìn)一步的工作包括,陸空通話標(biāo)準(zhǔn)用語指令的擴充。本文工作中設(shè)計并實現(xiàn)的指令主要包括塔臺管制用語、進(jìn)近管制用語和區(qū)域管制用語中常用的指令,部分不常用的管制用語尚未添加(如:緊急情況處理等),下一步可以將這部分指令也添加到語音識別及合成系統(tǒng)中,以使整個系統(tǒng)更加完善。
[1]李京東,楊新湦,毛笑歌,等.MH/T 4014-2003.空中交通無線電通話用語[S].北京:中國民用航空總,2003.
[2]Walker W,Lamere P,Kwok P,et al.Sphinx-4:A flexible open source framework for speech recognition [R].Tech.Rep, TR-2004-139, Sun Microsystems Laboratories,November,2004.
[3]FreeTTS 1.2:A speech synthesizer written entirely in the JavaTM programming language[EB/OL].(2012).http://freetts.sourceforge.net/docs/index.php.
[4]Holland W.A Unified language Model architecture for Webbased speech recognition grammars[C]//2006 IEEE International Symposium on Signal Processing and Information Technology.2006, 294-299.http://java.sun.com/products/java-media/speech/forDevelopers/JSGF/.
[5]Glassfish Kenai Migration.JavaCC.[EB/OL].(2012-10).http://javacc.java.net/.
[6]徐肖豪.空管模擬機的IBM ViaVoice技術(shù)實現(xiàn)研究 [J].中國民航學(xué)院學(xué)報,2002,20(3):6-15.XU Xiao-hao.Research of ATC simulator based on IBM ViaVoice technology[J].Journal of Civil Aviation Flight University,2002,20(3):6-15.
[7]王丹霞.語音識別技術(shù)在DRS雷達(dá)模擬機系統(tǒng)中的實現(xiàn)[J].中國民航飛行學(xué)院學(xué)報,2006,17(2):31-34.WANG Dan-xia.The implementation of DRS radar simulator system based on speech recognition technology[J].Journal of Civil Aviation Flight University,2006,17(2):31-34.
[8]蘇寶林.基于AVR單片機的語音識別系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2012(11):136-138.SU Bao-lin.Design of phonetic recognition system based on AVR[J].Modern Electronics Technique,2012(11):136-138.
[9]馬躍,楊磊,王巍.嵌入式語音識別系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2010(5):121-124.MA Yue,YANG Lei,WANG Wei.Design and implementation of embedded speech recognition system[J].Modern Electronics Technique,2010(5):121-124.