鄭州電視臺 單志霞
TTS功能在移動終端的應用
鄭州電視臺 單志霞

TTS(Text To Speech),即從文本到語音。TTS所用的關鍵技術就是語音合成(Speech Synthesis)技術。早期的TTS一般采用專用的芯片實現,但主要應用于家用電器或兒童玩具中。目前,中文TTS系統中比較常用的有IBM、Microsoft、Fujitsu、科大訊飛、捷通華聲等研究的系統。本文,筆者主要介紹科大訊飛TTS系統開發包Aisound的應用。
訊飛輕量級語音合成系統Aisound是科大訊飛基于全球領先的語音合成技術,主要針對各行業應用的嵌入式設備,為用戶提供語音信息獲取和語音交互應用能力的軟件模塊,并將普通文本字符轉換為自然語音輸出的一款TTS軟件。Aisound語音合成系統不受操作系統的限制,不增加用戶額外的硬件成本,并針對嵌入式設備資源受限的特點,在資源占用、可移植性等方面都取得了突破性進展,其合成效果整體上已超過普通人的說話水平。語音合成系統的系統框架圖如圖1所示。

圖 1 語音合成系統框架
在移動終端上實現TTS,其開發原理比較簡單。由于目前移動終端的開發基本上已經實現語音、短信、數據等業務的模塊化,并且UI系統也做的相當成熟,因此我們在添加TTS功能時,只需要使用第3方的軟件開發包即可:通過修改編譯規則,將開發包提供的庫文件編譯進去,然后調用其提供的標準API接口。
1.語音合成的基本流程。
(1)為TTS分配一塊足夠大的堆空間。
(2)初始化資源。
(3)使用ivTTS_Create創建一個TTS實例。
(4)使用ivTTS_SetParam設定TTS的各種參數。如,各回調函數、輸入輸出方式、語言、文本編碼類型、音量和語速等。
(5)使用ivTTS_SynthText輸入文本,開始合成(合成過程中,調用合成的線程會被堵塞,直到退出合成)。
(6)合成結束后,調用ivTTS_Destroy釋放實例。
(7)釋放各種資源。
(8)合成中,可以隨時調用ivTTS_Exit打斷合成。
2.TTS常用的回調函數。Standard API定義了5個回調函數,分別為事件回調函數、參數改變回調函數、流式輸入回調函數、處理進度通知回調函數和輸出回調函數。本文,筆者僅對常用的4個回調函數作一簡要介紹。
(1)事件回調函數。TTS通過事件回調來獲取需要的線程控制或者通知用戶一些事件。例如:實例需要sleep時,調用該回調通知用戶將TTS線程sleep;在系統緩沖了足夠的數據時會調用該回調,通知用戶開始讀取數據;在某些特定平臺,可能需要事件回調來切換上下文。
(2)參數回調函數。當實例參數發生變化時,系統會調用參數回調函數來通知用戶。如果是用戶實例參數發生改變,則不調用該回調。
(3)輸入回調函數。當輸入模式為流式輸入時,系統會通過調用輸入回調函數,來獲取合成的內容。
(4)輸出回調函數。系統合成過程中產生的語音數據會通過該回調傳給用戶,相應的語音數據的格式也會隨之給出。
3.Aisound的輸入輸出方式。Aisound提供2種輸入方式(流式輸入和塊式輸入)和2種輸出方式(輸出回調和用戶主動獲取數據)。
(1)流式輸入。當輸入模式為流式輸入時,系統會通過調用輸入回調函數來獲取合成內容。流式輸入比較復雜時,此方法已不再適用,Aisound默認為塊式輸入。
(2)塊式輸入。直接將輸入文本塊的指針傳遞給系統即可。
(3)輸出回調方式。系統合成過程中產生的語音數據會通過該回調傳給用戶,用戶可對數據進行處理。
(4)用戶主動獲取數據方式。系統將數據暫存在一個緩存區中,用戶通過指定的接口獲取數據。剛開始合成時,當緩存區的數據達到指定大小時,系統會通過事件回調通知用戶可以開始讀取數據。緩存區滿時,系統通過事件回調通知用戶將線程sleep。
綜上,通過TTS功能的實現,可以有效提高移動終端的使用友好性,特別是針對老年人、視力弱的人群具有很好的使用效果。同時該TTS功能實現簡單,不需額外添加設備,不用增加成本就可實現新功能,從而大大提高了該終端產品的市場競爭力。