溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何實現文本內容自動朗讀功能

發布時間:2022-04-08 15:57:59 來源:億速云 閱讀:373 作者:iii 欄目:編程語言

這篇文章主要講解了“Android中如何實現文本內容自動朗讀功能”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android中如何實現文本內容自動朗讀功能”吧!

Android提供了自動朗讀支持。自動朗讀支持可以對指定文本內容進行朗讀,從而發生聲音;不僅如此,Android的自動朗讀支持還允許把文本對應的音頻錄制成音頻文件,方便以后播放。這種自動朗讀支持的英文名稱為TextToSpeech,簡稱TTS。

借助于TTS的支持,可以在應用程序中動態地增加音頻輸出,從而改善用戶體驗。

Android的自動朗讀支持主要通過TextTospeech來完成,該累提供了如下一個構造器:

TextTospeech(Context context, TextTospeech.OnInitListenerlistener)

從上面的構造器不難看書,當創建TextTospeech對象時,必須先提供一個OnInitListener監聽器——該監聽器負責監聽TextTospeech的初始化結果。

一旦在程序中獲得了TextTospeech對象之后,接下來可以調用TextTospeech的setLanguage(Localeloc)方法來設置該TTS發聲引擎應使用的語言、國家選項。

如果調用setLanguage(Localeloc)的返回值是“TextToSpeech.LANG_COUNTRY_AVAILABLE”說明當前TTS系統可以支持所設置的語言、國家選項。

對TextToSpeech設置完成后,就可以調用它的方法來朗讀文本了,具體方法可參考TextToSpeech的API文檔。TextToSpeech類中最常用的方法是如下兩個。

speak(String text,int queueMode,HashMap<String,String>params)
synthesizeToFile(Stringtext,HashMap<String,String>params,String filename)

上面兩個方法都用于把text文字內容轉換為音頻,區別只是speak方法是播放轉換的音頻,而synthesizeToFile是把轉換得到的音頻保存成聲音文件。

上面兩個方法中的params都用于指定聲音轉換時的參數,speak()方法中的queueMode參數指定TTS發音隊列模式,該參數支持如下兩個常量。

TextToSpeech.QUEUE_FLUSH:如果指定該模式,當TTS調用speak方法時, 它會中斷當前實例正在運行的任務(也可以理解為清楚當前語音任務,轉而執行新的語音任務)

TextToSpeech.QUEUE_ADD:如果指定該模式,當TTS調用speak方法時,會把新的發音任務添加到當前發音任務列隊之后——也就是等任務隊列中的發音任務執行完成后再來執行speak()方法指定的發音任務。

當程序用完了TextToSpeech對象之后,可以在Activity的OnDestroy()方法中調用它的shutdown()來關閉TextToSpeech、釋放它所占用的資源。

歸納起來,使用TextToSpeech的步驟如下

1、創建TextToSpeech對象,創建時傳入OnInitListener監聽器監聽創建是否成功。

2、設置TextToSpeech所使用語言、國家選項,通過返回值判斷TTS是否支持該語言、國家選項。

3、調用speak()或者synthesizeToFile方法。

4、關閉TTS,回收資源。

下面的程序示范了如何利用TTS來朗讀用戶所輸入的文本內容。

Speech.java:

public class Speech extends Activity
{
  TextToSpeech tts;
  EditText editText;
  Button speech;
  Button record;
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // 初始化TextToSpeech對象
    tts = new TextToSpeech(this, new OnInitListener()
    {
      @Override
      public void onInit(int status)
      {
        // 如果裝載TTS引擎成功
        if (status == TextToSpeech.SUCCESS)
        {
          // 設置使用美式英語朗讀
          int result = tts.setLanguage(Locale.US);
          // 如果不支持所設置的語言
          if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
            && result != TextToSpeech.LANG_AVAILABLE)
          {
            Toast.makeText(Speech.this, "TTS暫時不支持這種語言的朗讀。", 50000)
              .show();
          }
        }
      }
    });
    editText = (EditText) findViewById(R.id.txt);
    speech = (Button) findViewById(R.id.speech);
    record = (Button) findViewById(R.id.record);
    speech.setOnClickListener(new OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // 執行朗讀
        tts.speak(editText.getText().toString(),
          TextToSpeech.QUEUE_ADD, null);
      }
    });
    record.setOnClickListener(new OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // 將朗讀文本的音頻記錄到指定文件
        tts.synthesizeToFile(editText.getText().toString(), null,  "/mnt/sdcard/sound.wav");
        Toast.makeText(Speech.this, "聲音記錄成功!", 50000).show();
      }
    });
  }
  @Override
  public void onDestroy()
  {
    // 關閉TextToSpeech對象
    if (tts != null)
    {
      tts.shutdown();
    }
  }
}

上面的程序第一行粗體字代碼設置創建了一個TextToSpeech對象,第二行粗體字使用美式英語進行英語朗讀。接下來程序分別體統了兩個按鈕,一個按鈕用于執行朗讀發生,一個按鈕用于將文本內容朗讀音頻保存成聲音文件,分別通過調用TextToSpeech對象的兩個方法完成。

運行程序,可以看到下圖界面:

Android中如何實現文本內容自動朗讀功能

在界面中,當用戶點擊“朗讀”按鈕后,系統將會調用TTS的speak()方法來朗讀文本框的內容;當用戶單擊“記錄聲音”按鈕后,系統會調用synthesizeToFile()方法把文本框中的文本對應的朗讀音頻記錄到SD卡的聲音文件中——單擊該按鈕后將可以在SD卡的根目錄下生成一個sound.wav文件,該文件可以被導出,在其他音頻播放軟件中播放。

程序重寫Activity的onDestroy()方法,并在該方法中關閉了TextToSpeech對象,回收了它的資源。

感謝各位的閱讀,以上就是“Android中如何實現文本內容自動朗讀功能”的內容了,經過本文的學習后,相信大家對Android中如何實現文本內容自動朗讀功能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女