現在,随着移動應用的日益普及,移動語音應用越來越受到使用者的重視和喜愛,本文将指導使用者如何在Android SDK中使用語音引擎去建立簡單的應用。在Android中使用語音引擎其實是很容易的事情,通過若幹步驟就可以實作了,盡管其中有些地方在使用中要注意。在本教程中,将一步步直接教讀者如何建立語音應用,具體的代碼在文末有下載下傳。
<b> 步驟一 建立Android工程</b>
我們首先建立一個Android工程,選用的是Android 2.3以上SDK的。
<b>步驟二 建立使用者界面</b>
由于我們的例子很簡單,是以隻需要往界面中增添若幹控件就可以了,我們打開main.xml檔案,寫入如下代碼,增加了一個本文框和一個按鈕:
<TextView android:id="@+id/intro"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter some text:"
/>
<EditText android:id="@+id/enter"
<Button android:id="@+id/speak"
android:layout_width="wrap_content"
android:text="Speak"
/>
其中文本框中是輸入要發音朗讀的文字内容。界面如下圖:

▲
<b>步驟三 編寫監聽事件</b>
接下來,我們為按鈕添加事件處理,首先要獲得使用者輸入的文字,代碼如下:
import android.view.View.OnClickListener;
import android.widget.Button;
import android.view.View;
import android.widget.EditText;
public class SpeakingAndroid extends Activity implements OnClickListener
{
//create the Activity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button speakButton = (Button)findViewById(R.id.speak);
//監聽button事件
speakButton.setOnClickListener(this);
}
//onClick事件的響應代碼
public void onClick(View v) {
//獲得使用者輸入的文字
EditText enteredText = (EditText)findViewById(R.id.enter);
String words = enteredText.getText().toString();
//調用語音引擎的方法
speakWords(words);
}
}
<b>步驟四 編寫相關的語音方法</b>
首先,要導入相關的語音引擎包,代碼如下:
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
接下來,為了能系統先對運作語音引擎的準備工作進行檢查,是以先要對其運作前的資料進行就緒檢查,是以首先聲明一個成員變量,如下:
private int MY_DATA_CHECK_CODE = 0;
并且在oncreate方法中,編寫如下代碼:
Intent checkTTSIntent = new Intent();
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
以上代碼的目的為,建立一個Intent,去檢查TTS所需要的資料是否準備好,如果準備好的話,則調用onActivityResult方法,這個方法在下文中會提到。
<b> 步驟五 建立TTS的執行個體</b>
在onActivityResult方法中,可以開始建立其TTS語音引擎的執行個體,代碼如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
myTTS = new TextToSpeech(this, this);
}
else {
Intent installTTSIntent = new Intent();
installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installTTSIntent);
當TTS的資料就緒資料檢查完畢後,将調用這個方法,其中resultCode為TTS驗證是否通過的标記,如果通過驗證的話,則通過myTTS = new TextToSpeech(this, this);
建立一個語音TTS執行個體。如果沒能通過TTS準備就緒的安裝測試,則新聲明一個Intent,将使用者引導到這個安裝TTS引擎的界面中去。
<b>步驟六 初始化引擎的資料</b>
由于在本程式中實作了OnInitListener接口,是以可以在oninit方法中,對語音引擎進行初始化設定,比如設定語言等,首先應該導入相關的類庫,如下:
import java.util.Locale;
在oninit方法中寫入如下代碼:
public void onInit(int initStatus) {
if (initStatus == TextToSpeech.SUCCESS) {
myTTS.setLanguage(Locale.US);
}
else if (initStatus == TextToSpeech.ERROR) {
Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();
}
這裡判斷如果TTS已經就緒成功,則調用setLanguage方法設定為使用對應的語言(這
裡是英文),如果判斷TTS不能準備就緒,則調用Toast的顯示方法告知使用者。
<b> 步驟七 讓TTS說話</b>
在準備好以上步驟後,最後一步就是讓TTS開口說話了,在speakWords方法中,寫入如下代碼即可
private void speakWords(String speech) {
myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
}
其中的speak方法中有很多參數可以選用,具體請參考Android文檔,這裡選用了
參數TextToSpeech.QUEUE_FLUSH,如果想讓TTS語音引擎連續不斷地朗讀,可以使用
myTTS.speak(speech, TextToSpeech.QUEUE_ADD, null)的參數。如果要求應用不再進行朗讀,則可以添加一句:
myTTS.shutdown();
但除非是明确使用者不在需要應用進行朗讀,否則如果要連續讓系統朗讀的話,則不應該添加這句代碼。
<b> 小結</b>
本文簡單一步步地介紹了如何在Android SDK中使用語音引擎TTS,讀者可以通過這個例子,建立更多豐富的語音應用。本文的代碼在
http://mobile.tutsplus.com/tutorials/android/android-sdk-using-the-text-to-speech-engine/可以下載下傳。
本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/736039,如需轉載請自行聯系原作者