一. 基礎知識
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的話可以點擊第二項安裝,在 Default settings 可以設置 Speech rate 和 Language ,如下圖 2 所示可以知道 TTS 支持的語言。
圖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的鏈接,
http://androidappdocs.appspot.com/reference/android/speech/tts/package-summary.html
可以先看下大概瞭解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按鈕就能把內容給朗讀出來。
文章對應的完整代碼例子可以在這裏下載:
http://download.csdn.net/source/2610740
注:文章參加“
首屆Google暑期大學生博客分享大賽——2010 Andriod篇”