鄭州電視臺 單志霞
TTS功能在移動終端的應(yīng)用
鄭州電視臺 單志霞
TTS(Text To Speech),即從文本到語音。TTS所用的關(guān)鍵技術(shù)就是語音合成(Speech Synthesis)技術(shù)。早期的TTS一般采用專用的芯片實現(xiàn),但主要應(yīng)用于家用電器或兒童玩具中。目前,中文TTS系統(tǒng)中比較常用的有IBM、Microsoft、Fujitsu、科大訊飛、捷通華聲等研究的系統(tǒng)。本文,筆者主要介紹科大訊飛TTS系統(tǒng)開發(fā)包Aisound的應(yīng)用。
訊飛輕量級語音合成系統(tǒng)Aisound是科大訊飛基于全球領(lǐng)先的語音合成技術(shù),主要針對各行業(yè)應(yīng)用的嵌入式設(shè)備,為用戶提供語音信息獲取和語音交互應(yīng)用能力的軟件模塊,并將普通文本字符轉(zhuǎn)換為自然語音輸出的一款TTS軟件。Aisound語音合成系統(tǒng)不受操作系統(tǒng)的限制,不增加用戶額外的硬件成本,并針對嵌入式設(shè)備資源受限的特點,在資源占用、可移植性等方面都取得了突破性進展,其合成效果整體上已超過普通人的說話水平。語音合成系統(tǒng)的系統(tǒng)框架圖如圖1所示。
圖 1 語音合成系統(tǒng)框架
在移動終端上實現(xiàn)TTS,其開發(fā)原理比較簡單。由于目前移動終端的開發(fā)基本上已經(jīng)實現(xiàn)語音、短信、數(shù)據(jù)等業(yè)務(wù)的模塊化,并且UI系統(tǒng)也做的相當(dāng)成熟,因此我們在添加TTS功能時,只需要使用第3方的軟件開發(fā)包即可:通過修改編譯規(guī)則,將開發(fā)包提供的庫文件編譯進去,然后調(diào)用其提供的標(biāo)準(zhǔn)API接口。
1.語音合成的基本流程。
(1)為TTS分配一塊足夠大的堆空間。
(2)初始化資源。
(3)使用ivTTS_Create創(chuàng)建一個TTS實例。
(4)使用ivTTS_SetParam設(shè)定TTS的各種參數(shù)。如,各回調(diào)函數(shù)、輸入輸出方式、語言、文本編碼類型、音量和語速等。
(5)使用ivTTS_SynthText輸入文本,開始合成(合成過程中,調(diào)用合成的線程會被堵塞,直到退出合成)。
(6)合成結(jié)束后,調(diào)用ivTTS_Destroy釋放實例。
(7)釋放各種資源。
(8)合成中,可以隨時調(diào)用ivTTS_Exit打斷合成。
2.TTS常用的回調(diào)函數(shù)。Standard API定義了5個回調(diào)函數(shù),分別為事件回調(diào)函數(shù)、參數(shù)改變回調(diào)函數(shù)、流式輸入回調(diào)函數(shù)、處理進度通知回調(diào)函數(shù)和輸出回調(diào)函數(shù)。本文,筆者僅對常用的4個回調(diào)函數(shù)作一簡要介紹。
(1)事件回調(diào)函數(shù)。TTS通過事件回調(diào)來獲取需要的線程控制或者通知用戶一些事件。例如:實例需要sleep時,調(diào)用該回調(diào)通知用戶將TTS線程sleep;在系統(tǒng)緩沖了足夠的數(shù)據(jù)時會調(diào)用該回調(diào),通知用戶開始讀取數(shù)據(jù);在某些特定平臺,可能需要事件回調(diào)來切換上下文。
(2)參數(shù)回調(diào)函數(shù)。當(dāng)實例參數(shù)發(fā)生變化時,系統(tǒng)會調(diào)用參數(shù)回調(diào)函數(shù)來通知用戶。如果是用戶實例參數(shù)發(fā)生改變,則不調(diào)用該回調(diào)。
(3)輸入回調(diào)函數(shù)。當(dāng)輸入模式為流式輸入時,系統(tǒng)會通過調(diào)用輸入回調(diào)函數(shù),來獲取合成的內(nèi)容。
(4)輸出回調(diào)函數(shù)。系統(tǒng)合成過程中產(chǎn)生的語音數(shù)據(jù)會通過該回調(diào)傳給用戶,相應(yīng)的語音數(shù)據(jù)的格式也會隨之給出。
3.Aisound的輸入輸出方式。Aisound提供2種輸入方式(流式輸入和塊式輸入)和2種輸出方式(輸出回調(diào)和用戶主動獲取數(shù)據(jù))。
(1)流式輸入。當(dāng)輸入模式為流式輸入時,系統(tǒng)會通過調(diào)用輸入回調(diào)函數(shù)來獲取合成內(nèi)容。流式輸入比較復(fù)雜時,此方法已不再適用,Aisound默認(rèn)為塊式輸入。
(2)塊式輸入。直接將輸入文本塊的指針傳遞給系統(tǒng)即可。
(3)輸出回調(diào)方式。系統(tǒng)合成過程中產(chǎn)生的語音數(shù)據(jù)會通過該回調(diào)傳給用戶,用戶可對數(shù)據(jù)進行處理。
(4)用戶主動獲取數(shù)據(jù)方式。系統(tǒng)將數(shù)據(jù)暫存在一個緩存區(qū)中,用戶通過指定的接口獲取數(shù)據(jù)。剛開始合成時,當(dāng)緩存區(qū)的數(shù)據(jù)達到指定大小時,系統(tǒng)會通過事件回調(diào)通知用戶可以開始讀取數(shù)據(jù)。緩存區(qū)滿時,系統(tǒng)通過事件回調(diào)通知用戶將線程sleep。
綜上,通過TTS功能的實現(xiàn),可以有效提高移動終端的使用友好性,特別是針對老年人、視力弱的人群具有很好的使用效果。同時該TTS功能實現(xiàn)簡單,不需額外添加設(shè)備,不用增加成本就可實現(xiàn)新功能,從而大大提高了該終端產(chǎn)品的市場競爭力。