欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中使用TextToSpeech的方法

 更新時(shí)間:2021年09月10日 09:51:56   作者:計(jì)蒙不吃魚(yú)  
這篇文章主要介紹了Android中TextToSpeech的使用,通過(guò)初始化語(yǔ)音,這是一個(gè)異步操作,初始化完成后調(diào)用oninitListener,具體實(shí)例代碼跟隨小編一起看看吧

前言

在一年前,和朋友一起碼了一個(gè)英語(yǔ)APP,仿照某APP實(shí)現(xiàn)了單詞的功能,最開(kāi)始就是借助的TextToSpeech,后面感覺(jué)聲音不夠好聽(tīng),于是使用了第三方

APP初稿如圖:

請(qǐng)?zhí)砑訄D片描述

實(shí)現(xiàn)

1.初始化語(yǔ)音。這是一個(gè)異步操作。初始化完成后調(diào)用oninitListener(第二個(gè)參數(shù))。

TextToSpeech mTts = new TextToSpeech(this, this);

2.實(shí)現(xiàn)TextToSpeech.OnInitListener

注意:語(yǔ)言可能不可用。

// 實(shí)現(xiàn)TextToSpeech.OnInitListener.
     public void onInit(int status) {
         if (status == TextToSpeech.SUCCESS) {
             //設(shè)置首選語(yǔ)言為中文,注意,語(yǔ)言可能是不可用的,結(jié)果將指示此
             int result = mTts.setLanguage(Locale.CHINA);
             if (result == TextToSpeech.LANG_MISSING_DATA ||
                 result == TextToSpeech.LANG_NOT_SUPPORTED) {
                 //語(yǔ)言數(shù)據(jù)丟失或不支持該語(yǔ)言。
                 Log.e(TAG, "語(yǔ)言數(shù)據(jù)丟失或不支持該語(yǔ)言");
             } else {
                 //檢查文檔中其他可能的結(jié)果代碼。
                 // 例如,語(yǔ)言可能對(duì)區(qū)域設(shè)置可用,但對(duì)指定的國(guó)家和變體不可用
                 // TTS引擎已成功初始化。
                 // 允許用戶按下按鈕讓?xiě)?yīng)用程序再次發(fā)言。
                 mAgainButton.setEnabled(true);
             }
         } else {
             // 初始化失敗
             Log.e(TAG, "初始化失敗");
         }
     }

3.寫(xiě)一個(gè)朗讀方法,在需要的時(shí)候觸發(fā)(如:點(diǎn)擊事件)

TextToSpeech的speak方法有兩個(gè)重載。

執(zhí)行朗讀的方法

speak(CharSequence text,int queueMode,Bundle params,String utteranceId);

第二個(gè)參數(shù)queueMode用于指定發(fā)音隊(duì)列模式,兩種模式選擇。
(1)TextToSpeech.QUEUE_FLUSH:該模式下在有新任務(wù)時(shí)候會(huì)清除當(dāng)前語(yǔ)音任務(wù),執(zhí)行新的語(yǔ)音任務(wù)
(2)TextToSpeech.QUEUE_ADD:該模式下會(huì)把新的語(yǔ)音任務(wù)放到語(yǔ)音任務(wù)之后,等前面的語(yǔ)音任務(wù)執(zhí)行完了才會(huì)執(zhí)行新的語(yǔ)音任務(wù)。

將朗讀的的聲音記錄成音頻文件

synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId);
 private void sayHello() {
         String hello ="Hellow";
         //TextToSpeech的speak方法有兩個(gè)重載。
         // 執(zhí)行朗讀的方法
         //speak(CharSequence text,int queueMode,Bundle params,String utteranceId);
         // 將朗讀的的聲音記錄成音頻文件
         //synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId);
         //第二個(gè)參數(shù)queueMode用于指定發(fā)音隊(duì)列模式,兩種模式選擇
         //(1)TextToSpeech.QUEUE_FLUSH:該模式下在有新任務(wù)時(shí)候會(huì)清除當(dāng)前語(yǔ)音任務(wù),執(zhí)行新的語(yǔ)音任務(wù)
         //(2)TextToSpeech.QUEUE_ADD:該模式下會(huì)把新的語(yǔ)音任務(wù)放到語(yǔ)音任務(wù)之后,
         //等前面的語(yǔ)音任務(wù)執(zhí)行完了才會(huì)執(zhí)行新的語(yǔ)音任務(wù)

         mTts.speak(hello,
             TextToSpeech.QUEUE_FLUSH,
             null);
     }

4.記得利用Activity的生命周期中將其關(guān)閉

@Override
     public void onDestroy() {
         // 生命周期中結(jié)束
         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);

         //初始化語(yǔ)音。這是一個(gè)異步操作。初始化完成后調(diào)用oninitListener(第二個(gè)參數(shù))。
         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() {
         // 生命周期中結(jié)束
         if (mTts != null) {
             mTts.stop();
             mTts.shutdown();
         }

         super.onDestroy();
     }

     // 實(shí)現(xiàn)TextToSpeech.OnInitListener.
     public void onInit(int status) {
         if (status == TextToSpeech.SUCCESS) {
             //設(shè)置首選語(yǔ)言為中文,注意,語(yǔ)言可能是不可用的,結(jié)果將指示此
             int result = mTts.setLanguage(Locale.CHINA);
             if (result == TextToSpeech.LANG_MISSING_DATA ||
                 result == TextToSpeech.LANG_NOT_SUPPORTED) {
                 //語(yǔ)言數(shù)據(jù)丟失或不支持該語(yǔ)言。
                 Log.e(TAG, "語(yǔ)言數(shù)據(jù)丟失或不支持該語(yǔ)言");
             } else {
                 //檢查文檔中其他可能的結(jié)果代碼。
                 // 例如,語(yǔ)言可能對(duì)區(qū)域設(shè)置可用,但對(duì)指定的國(guó)家和變體不可用
                 // TTS引擎已成功初始化。
                 // 允許用戶按下按鈕讓?xiě)?yīng)用程序再次發(fā)言。
                 mAgainButton.setEnabled(true);
             }
         } else {
             // 初始化失敗
             Log.e(TAG, "初始化失敗");
         }
     }

     private void sayHello() {
         String hello ="計(jì)蒙不吃魚(yú)";
         //TextToSpeech的speak方法有兩個(gè)重載。
         // 執(zhí)行朗讀的方法
         //speak(CharSequence text,int queueMode,Bundle params,String utteranceId);
         // 將朗讀的的聲音記錄成音頻文件
         //synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId);
         //第二個(gè)參數(shù)queueMode用于指定發(fā)音隊(duì)列模式,兩種模式選擇
         //(1)TextToSpeech.QUEUE_FLUSH:該模式下在有新任務(wù)時(shí)候會(huì)清除當(dāng)前語(yǔ)音任務(wù),執(zhí)行新的語(yǔ)音任務(wù)
         //(2)TextToSpeech.QUEUE_ADD:該模式下會(huì)把新的語(yǔ)音任務(wù)放到語(yǔ)音任務(wù)之后,
         //等前面的語(yǔ)音任務(wù)執(zhí)行完了才會(huì)執(zhí)行新的語(yǔ)音任務(wù)

         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>

到此這篇關(guān)于Android中TextToSpeech的使用的文章就介紹到這了,更多相關(guān)adroid TextToSpeech使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論