TextToSpeech Android
1.0.0
這是一個使用Google提供的TextTospeech類將文本轉換為語音的項目。
它是最默認的TextToSpeech(Context context, TextToSpeech.OnInitListener listener)構造函數。有一個可以設置TTS引擎的構造函數,但我決定省略它。
Initlistener將在下面描述。
private TextToSpeech textToSpeech;
@Override
protected void onCreate(Bundle savedInstanceState) {
textToSpeech = new TextToSpeech(this, initListener);
}
//음성 재생 상태에 대한 callback을 받을 수 있는 추상 클래스
private UtteranceProgressListener progressListener = new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) { // 음성이 재생되었을 때
}
@Override
public void onDone(String utteranceId) { // 제공된 텍스트를 모두 음성으로 재생한 경우
}
@Override
public void onError(String utteranceId) { // ERROR!
}
};
textToSpeech.setOnUtteranceProgressListener(progressListener);
下面的setLanguage()方法可以設置語音語言。您可以根據情況選擇所需的聲音,例如Locale.English,Locale.Canada。
//음성 관련 초기화 상태에 대한 callback을 받을 수 있는 인터페이스
private TextToSpeech.OnInitListener initListener = new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR)
textToSpeech.setLanguage(Locale.KOREAN); // 한글로 설정
}
};
在解釋之前,“ TusteranceId”表示當前正在播放的聲音的ID值。在控制多個語音時,它似乎很有用。
現有的speak(String text, int queueMode, HashMap<String, String> params)方法已從API級別21中刪除。因此,與API級別一致,請使用新的speak(CharSequence text, int queueMode, Bundle params, String utteranceId)方法,如下所示。
String text = editText.getText.toString();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
String myUtteranceID = "myUtteranceID";
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, myUtteranceID);
}
else {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "myUtteranceID");
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, hashMap);
}
只需將諸如textToSpeech.stop()之類的方法用於當前正在播放的語音中的停止即可。
必須通過textToSpeech.shutDown()完全終止通過語音引擎進行初始化的文本傳播。或SeviceConnection ...我有例外。
前任。在活動的情況下,您可以調用shutDown()以匹配生命週期。
@Override
protected void onDestroy() {
if(textToSpeech != null)
textToSpeech.shutDown();
super.onDestroy();
}
該項目創建了TTS類,並使其更容易使用。之後,項目將添加到項目中。
