国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發之文本內容自動朗讀功能實現方法

2019-10-22 18:28:27
字體:
來源:轉載
供稿:網友

本文實例講述了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

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

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

提示:由于不同的文字,在不同的語言、國家中的發音是不同的,尤其是歐美,它們所使用的都是字母文字,因此一段文本內容,使用不同的語言、國家選項來朗讀,發音效果是截然不同的。目前Android的TTS暫時不支持中文。

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌阳县| 岑巩县| 姚安县| 余庆县| 景德镇市| 庐江县| 吉木萨尔县| 葫芦岛市| 安吉县| 龙泉市| 甘孜县| 格尔木市| 龙岩市| 德安县| 即墨市| 辽宁省| 冀州市| 县级市| 南部县| 宁强县| 灵璧县| 镇康县| 甘肃省| 五峰| 海口市| 竹溪县| 武功县| 湄潭县| 灵丘县| 龙口市| 亚东县| 岳西县| 温宿县| 通榆县| 武陟县| 安乡县| 高安市| 长治县| 韶关市| 长岭县| 井研县|