Ini adalah proyek yang mengubah teks menjadi suara menggunakan kelas TextTospeech yang disediakan oleh Google.
Ini adalah konstruktor TextToSpeech(Context context, TextToSpeech.OnInitListener listener) yang paling default. Ada konstruktor yang dapat mengatur mesin TTS, tetapi saya memutuskan untuk menghilangkannya.
InitListener akan dijelaskan di bawah ini.
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);
Metode setLanguage() di bawah ini dapat mengatur bahasa ucapan. Anda dapat memilih suara yang diperlukan sesuai dengan situasi, seperti lokal.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); // 한글로 설정
}
};
Sebelum menjelaskan, 'ucapan' menunjukkan nilai ID untuk suara yang saat ini sedang diputar. Tampaknya berguna saat mengendalikan banyak suara.
Metode speak(String text, int queueMode, HashMap<String, String> params) telah ditinggalkan dari level API 21. Jadi, sejalan dengan level API, gunakan metode speak(CharSequence text, int queueMode, Bundle params, String utteranceId) sebagai berikut sebagai berikut.
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);
}
Cukup gunakan metode seperti textToSpeech.stop() untuk berhenti pada suara yang saat ini sedang diputar.
Inisialisasi TextTospeech Instan melalui mesin ucapan harus sepenuhnya diakhiri melalui textToSpeech.shutDown() . Atau Seviceconnection ... Saya punya pengecualian.
mantan. Dalam hal aktivitas seperti yang ditunjukkan di bawah ini, Anda dapat menghubungi shutDown() untuk mencocokkan siklus hidup.
@Override
protected void onDestroy() {
if(textToSpeech != null)
textToSpeech.shutDown();
super.onDestroy();
}
Proyek ini membuat kelas TTS dan membuatnya lebih mudah digunakan. Setelah itu, proyek akan ditambahkan ke proyek.
