天天看點

Android中使用語音引擎入門七步曲

現在,随着移動應用的日益普及,移動語音應用越來越受到使用者的重視和喜愛,本文将指導使用者如何在Android SDK中使用語音引擎去建立簡單的應用。在Android中使用語音引擎其實是很容易的事情,通過若幹步驟就可以實作了,盡管其中有些地方在使用中要注意。在本教程中,将一步步直接教讀者如何建立語音應用,具體的代碼在文末有下載下傳。

 <b> 步驟一 建立Android工程</b>

  我們首先建立一個Android工程,選用的是Android 2.3以上SDK的。

  <b>步驟二 建立使用者界面</b>

  由于我們的例子很簡單,是以隻需要往界面中增添若幹控件就可以了,我們打開main.xml檔案,寫入如下代碼,增加了一個本文框和一個按鈕:

   &lt;TextView android:id="@+id/intro"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="Enter some text:"

/&gt; 

&lt;EditText android:id="@+id/enter"

&lt;Button android:id="@+id/speak"

    android:layout_width="wrap_content"

    android:text="Speak"

/&gt;

  其中文本框中是輸入要發音朗讀的文字内容。界面如下圖:

Android中使用語音引擎入門七步曲

  <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,如需轉載請自行聯系原作者