Il s'agit d'un projet qui convertit le texte en voix à l'aide de la classe TextTospeech fournie par Google.
Il s'agit du constructeur TextToSpeech(Context context, TextToSpeech.OnInitListener listener) . Il y a un constructeur qui peut définir le moteur TTS, mais j'ai décidé de l'omettre.
InitListener sera décrit ci-dessous.
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() ci-dessous peut définir le langage de la parole. Vous pouvez sélectionner la voix requise en fonction de la situation, telle que 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); // 한글로 설정
}
};
Avant d'expliquer, «OutanceId» indique une valeur d'identification pour la voix actuellement jouée. Il semble utile lors du contrôle de plusieurs voix.
La méthode existante speak(String text, int queueMode, HashMap<String, String> params) a été dépréciée à partir de l'API niveau 21. Ainsi, en ligne avec le niveau de l'API, utilisez la nouvelle méthode speak(CharSequence text, int queueMode, Bundle params, String utteranceId) comme suit comme suit.
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);
}
Utilisez simplement une méthode comme textToSpeech.stop() pour l'arrêt sur la voix actuellement jouée.
L'instruction de TextTospeech initialisée par le moteur vocal doit être complètement terminée via textToSpeech.shutDown() . Ou SeviceConnection ... J'ai une exception.
ex. Dans le cas de l'activité comme indiqué ci-dessous, vous pouvez appeler shutDown() pour correspondre au cycle de vie.
@Override
protected void onDestroy() {
if(textToSpeech != null)
textToSpeech.shutDown();
super.onDestroy();
}
Le projet a créé une classe TTS et l'a rendu plus facile à utiliser. Après cela, le projet sera ajouté au projet.
