Android TTS學習——TTS初體驗
一. 基礎知識
TextToSpeech 簡稱 TTS , 稱為語音合成, 是 Android 從 1.6版本 開始支援 的新功能 ,能 將所指定的文字轉成不同語言音訊輸出。
在具體介紹前我們先來看下Adnroid系統帶的TTS設定介面,點選Settings->Speech synthesis,如下圖所示:
圖 1 Android TTS設定介面
當點選“Listen to an example”時,會發出“
This is an example of speech synthesis in English.
”,如果沒有安裝
TTS Data的話可以點選第二項安裝,在
圖2 TTS 語言選擇
如果勾選“Always use my settings ”時要注意,設定了這個選項後那麼我們就不能在程式中對 speech rate 和 Languages 進行設定了,這裡的設定回覆蓋我們程式中的設定。
TTS功能需要有TTS Engine的支援,下面我們就來了解下android提供的TTS Engine。
Android使用了叫Pico的支援多種語言的語音合成引擎,Pico在後臺負責把分析輸入的文字,把分本分成他能識別的各個片段,再把合成的各個語音片段以聽起來比較自然的方式連線在一起,這個過程Android系統幫我們做,我們只把他當做一個神奇的過程就可以了。
TTS engine依託於當前 Android Platform 所支援的幾種主要的語言: English 、 French 、 German 、 Italian 和 Spanish 五大語言 (暫時也是沒有對中文提供支援)。 TTS可以將文字隨意的轉換成以上任意五種語言的語音輸出。與此同時,對於個別的語言版本將取決於不同的時區,例如:對於 English ,在 TTS 中可以分別輸出美式和英式兩種不同的版本 。
二. 例項分析
下面我們先做一個具體的例項來親自體會一下Android的TTS的效果。
我們做一個簡單的輸入英文句子然後朗讀出來的例子,瞭解Android的TTS使用方法。
在具體做之前給個AndroidTTS的API的連結,
可以先看下大概瞭解TTS提供的功能。
圖3 Android TTS API
可以看到TTS提供了兩個介面和兩個類。
我們希望做的效果如下:
圖4 實現效果圖
上面一個輸入框,點選Speak按鈕則朗讀上面的文字內容。
建立一個Android工程,工程名為AndroidTTSDemoFirst,其中SDK必須選擇1.6版本及以上。
其中Main.xml檔案很簡單,如下所示:
Java檔案的編寫:
要使用TTS得實現OnInitListener介面
接著定義好下面要用到的幾個變數:
雖然安裝Android1.6版本及之後的Android機器都預設安裝了TTS引擎,但某些裝置可能會因為儲存容量的限制而缺少安裝和語言對應的資原始檔,因此在使用TTS前,得先要檢查是否安裝了TTS語言資料,在onCreate函式中新增以下內容:
這裡啟動一個新的Intent去檢查TTS資料是否已經安裝,我們根據其返回的結果進行處理,如下所示:
如果返回CHECK_VOICE_DATA_PASS表示檢查成功,可以新建一個 TextToSpeech ,否則就去下載 TTS資料。
當TTS資料檢測成功建立一個TextToSpeech後,就會呼叫介面OnInitListener中定義的回撥函式
在這個回撥函式裡,我們設定語言,然後就可以進行使用 TTS引擎進行操作了。
建立一個TextToSpeech是需要佔用資源的,因此我們要適時的釋放這個資源:
最後,在onCreate函式中設定 EditText和Button的使用:
至此,我們的 Demo就完成了,當啟動程式後,首先會朗讀“ This is an example of speech synthesis in English. ”,然後你在EditText中輸入內容,點選Speak按鈕就能把內容給朗讀出來。
文章對應的完整程式碼例子可以在這裡下載:
注:文章參加“
首屆Google暑期大學生部落格分享大賽——2010 Andriod篇”