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