您好,登錄后才能下訂單哦!
這篇文章主要介紹Android中如何使用TextToSpeech,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
APP初稿如圖:
1.初始化語音。這是一個異步操作。初始化完成后調用oninitListener(第二個參數)。
TextToSpeech mTts = new TextToSpeech(this, this);
2.實現TextToSpeech.OnInitListener
注意:語言可能不可用。
// 實現TextToSpeech.OnInitListener. public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { //設置首選語言為中文,注意,語言可能是不可用的,結果將指示此 int result = mTts.setLanguage(Locale.CHINA); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { //語言數據丟失或不支持該語言。 Log.e(TAG, "語言數據丟失或不支持該語言"); } else { //檢查文檔中其他可能的結果代碼。 // 例如,語言可能對區(qū)域設置可用,但對指定的國家和變體不可用 // TTS引擎已成功初始化。 // 允許用戶按下按鈕讓應用程序再次發(fā)言。 mAgainButton.setEnabled(true); } } else { // 初始化失敗 Log.e(TAG, "初始化失敗"); } }
3.寫一個朗讀方法,在需要的時候觸發(fā)(如:點擊事件)
TextToSpeech的speak方法有兩個重載。
執(zhí)行朗讀的方法
speak(CharSequence text,int queueMode,Bundle params,String utteranceId);
第二個參數queueMode用于指定發(fā)音隊列模式,兩種模式選擇。
(1)TextToSpeech.QUEUE_FLUSH:該模式下在有新任務時候會清除當前語音任務,執(zhí)行新的語音任務
(2)TextToSpeech.QUEUE_ADD:該模式下會把新的語音任務放到語音任務之后,等前面的語音任務執(zhí)行完了才會執(zhí)行新的語音任務。
將朗讀的的聲音記錄成音頻文件
synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId);
private void sayHello() { String hello ="Hellow"; //TextToSpeech的speak方法有兩個重載。 // 執(zhí)行朗讀的方法 //speak(CharSequence text,int queueMode,Bundle params,String utteranceId); // 將朗讀的的聲音記錄成音頻文件 //synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId); //第二個參數queueMode用于指定發(fā)音隊列模式,兩種模式選擇 //(1)TextToSpeech.QUEUE_FLUSH:該模式下在有新任務時候會清除當前語音任務,執(zhí)行新的語音任務 //(2)TextToSpeech.QUEUE_ADD:該模式下會把新的語音任務放到語音任務之后, //等前面的語音任務執(zhí)行完了才會執(zhí)行新的語音任務 mTts.speak(hello, TextToSpeech.QUEUE_FLUSH, null); }
4.記得利用Activity的生命周期中將其關閉
@Override public void onDestroy() { // 生命周期中結束 if (mTts != null) { mTts.stop(); mTts.shutdown(); } super.onDestroy(); }
SpeechActivity.java
public class SpeechActivity extends Activity implements TextToSpeech.OnInitListener { private static final String TAG = "SpeechDemo"; private TextToSpeech mTts; private Button mButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.text_to_speech); //初始化語音。這是一個異步操作。初始化完成后調用oninitListener(第二個參數)。 mTts = new TextToSpeech(this, this); mButton = (Button) findViewById(R.id.again_button); //觸發(fā) mButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { sayHello(); } }); } @Override public void onDestroy() { // 生命周期中結束 if (mTts != null) { mTts.stop(); mTts.shutdown(); } super.onDestroy(); } // 實現TextToSpeech.OnInitListener. public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { //設置首選語言為中文,注意,語言可能是不可用的,結果將指示此 int result = mTts.setLanguage(Locale.CHINA); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { //語言數據丟失或不支持該語言。 Log.e(TAG, "語言數據丟失或不支持該語言"); } else { //檢查文檔中其他可能的結果代碼。 // 例如,語言可能對區(qū)域設置可用,但對指定的國家和變體不可用 // TTS引擎已成功初始化。 // 允許用戶按下按鈕讓應用程序再次發(fā)言。 mAgainButton.setEnabled(true); } } else { // 初始化失敗 Log.e(TAG, "初始化失敗"); } } private void sayHello() { String hello ="計蒙不吃魚"; //TextToSpeech的speak方法有兩個重載。 // 執(zhí)行朗讀的方法 //speak(CharSequence text,int queueMode,Bundle params,String utteranceId); // 將朗讀的的聲音記錄成音頻文件 //synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId); //第二個參數queueMode用于指定發(fā)音隊列模式,兩種模式選擇 //(1)TextToSpeech.QUEUE_FLUSH:該模式下在有新任務時候會清除當前語音任務,執(zhí)行新的語音任務 //(2)TextToSpeech.QUEUE_ADD:該模式下會把新的語音任務放到語音任務之后, //等前面的語音任務執(zhí)行完了才會執(zhí)行新的語音任務 mTts.speak(hello, TextToSpeech.QUEUE_FLUSH, null); } }
text_to_speech.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/again_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:enabled="false" /> </LinearLayout>
以上是“Android中如何使用TextToSpeech”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。