투케이2K

65. (AndroidStudio/android/java) tts (Text-to-Speech) 기능을 사용해 텍스트 파일 음성 출력 실시 본문

Android

65. (AndroidStudio/android/java) tts (Text-to-Speech) 기능을 사용해 텍스트 파일 음성 출력 실시

투케이2K 2021. 2. 26. 09:01

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//======== [클래스 전역 변수 선언] ========
String data = "안녕"; //텍스트 데이터

public static TextToSpeech tts; //tts 객체 선언
boolean LangFlag = false; //한국어 지원 여부 확인을 위한 플래그



//======== [onCreate 부분 - 초기 tts 객체 생성] ========
try {
	tts = new TextToSpeech(A_TTS.this, new TextToSpeech.OnInitListener() {
		@Override
		public void onInit(int status) {
			if (status == TextToSpeech.SUCCESS) {
				//TODO 작업 성공
				int language = tts.setLanguage(Locale.KOREAN);  //TODO 한국 언어 설정 지정
				if (language == TextToSpeech.LANG_MISSING_DATA
						|| language == TextToSpeech.LANG_NOT_SUPPORTED) { //TODO 한국 언어 설정을 지원하는지 확인 실시
					// 언어 데이터가 없거나, 지원하지 않는경우
					Log.d("---","---");
					Log.d("//===========//","================================================");
					Log.d("//A_TTS//","[TTS 음성 출력 기능]"+" ["+"실행 : 성공 - 한국어 지원 하지 않음"+"]");
					Log.d("//===========//","================================================");
					Log.d("---","---");
					LangFlag = false; //TODO 플래그값 변경
				}
				else {
					// 준비 완료
					Log.d("---","---");
					Log.d("//===========//","================================================");
					Log.d("//A_TTS//","[TTS 음성 출력 기능]"+" ["+"실행 : 성공 - 한국어 지원 가능"+"]");
					Log.d("//===========//","================================================");
					Log.d("---","---");
					LangFlag = true; //TODO 플래그값 변경
				}
			}
			else {
				// 작업 실패
				Log.d("---","---");
				Log.d("//===========//","================================================");
				Log.d("//A_TTS//","[TTS 음성 출력 기능]"+" ["+"실행 : 실패"+"]");
				Log.d("//===========//","================================================");
				Log.d("---","---");
				LangFlag = false; //TODO 플래그값 변경
			}
		}
	});
}
catch (Exception e){
	e.printStackTrace();
}



//======== [tts 실행 부분] ========
if(LangFlag == true){ //TODO 한국어를 지원하는 경우
	tts.speak(data,TextToSpeech.QUEUE_FLUSH, null);
}
else {
	tts.speak("default english",TextToSpeech.QUEUE_FLUSH, null);
}



//======== [액티비티 종료 메소드] ========
@Override
public void onDestroy(){
	super.onDestroy();
	Log.d("---","---");
	Log.d("//===========//","================================================");
	Log.d("","\n"+"[A_TTS > onDestroy() 메소드 : 액티비티 종료 실시]");
	Log.d("//===========//","================================================");
	Log.d("---","---");
	//TODO === [tts 자원 해제 실시] ===
	try {		
		if(tts != null){
			tts.stop();
			tts.shutdown();
			tts = null;
		}
	}
	catch (Exception e){
		e.printStackTrace();
	}
}

/* =========================== */

반응형
Comments