前言: Android提供了自動朗讀支持。能夠對指定文本內容進行朗讀,從而發生聲音;還容許把文本對應的音頻錄製成音頻文件,方便之後播放。Android的自動朗讀主要經過TextToSpeech來完成,構造器如:TextToSpeech(Context context, TextToSpeech.OnInitListennet listener);當建立TextToSpeech對象時,必須先提供一個OnInitListener監聽器——負責監聽TextToSpeech的初始化結果。android
效果圖以下:ios
使用TextToSpeech的步驟以下:app
- 建立TextToSpeech對象,建立時傳入OnInitListener監聽器監聽示範建立成功。
- 設置TextToSpeech所使用語言國家選項,經過返回值判斷TTS是否支持該語言、國家選項。
- 調用speak()或synthesizeToFile方法。
- 關閉TTS,回收資源。
佈局文件:ide
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/input_text" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"/> <LinearLayout android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/speech" android:text="Speech" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="wrap_content"/> <Button android:id="@+id/record" android:text="Record" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout>
Activity文件佈局
public class SpeechActivity extends AppCompatActivity { private EditText input; private Button speech,record; private TextToSpeech textToSpeech; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_speech); textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if (status == textToSpeech.SUCCESS) { int result = textToSpeech.setLanguage(Locale.CHINA); if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE && result != TextToSpeech.LANG_AVAILABLE){ Toast.makeText(SpeechActivity.this, "TTS暫時不支持這種語音的朗讀!", Toast.LENGTH_SHORT).show(); } } } }); input = (EditText) findViewById(R.id.input_text); speech = (Button) findViewById(R.id.speech); record = (Button) findViewById(R.id.record); speech.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { textToSpeech.speak(input.getText().toString(), TextToSpeech.QUEUE_ADD, null); } }); record.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String inputText = input.getText().toString(); HashMap<String, String> myHashRender = new HashMap<>(); myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, inputText); textToSpeech.synthesizeToFile(inputText, myHashRender, "/mnt/sdcard/my_recorder_audios/sound.wav"); Toast.makeText(SpeechActivity.this, "聲音記錄成功。", Toast.LENGTH_SHORT).show(); } }); } @Override protected void onDestroy() { if (textToSpeech != null) textToSpeech.shutdown(); super.onDestroy(); } }
這裏咱們使用的是中文,int result = textToSpeech.setLanguage(Locale.CHINA);你也能夠根據本身的需求更改成其餘支持的語言。this
最後在AndroidManifest.xml中加入權限:spa
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
總結:經過使用Android提供的TTS,咱們能夠對指定文本內容進行朗讀,從而發生聲音;還容許把文本對應的音頻錄製成音頻文件,保存到本地。code