티스토리 뷰

Android

[Android] TTS 실행하기

LeeeGi 2024. 1. 16. 22:48
반응형

TTS(Text To Speech)는 말 그대로 텍스트를 음성으로 읽어주는 기능이다.

 

간단하게 리스너를 달아주고 speak 함수를 통해 내가 원하는 텍스트를 음성으로 출력할 수 있다.

 

먼저 아래처럼 TextToSpeech 변수를 만든다.

private var tts: TextToSpeech? = null

 

 

다음은 초기화를 진행해야 한다.

나는 확장함수를 이용해 어디서든 초기화해서 사용할 수 있도록 구현했다.

TTSManager.kt
fun initTTS(context: Context): TextToSpeech {
    var tts: TextToSpeech? = null
    tts = TextToSpeech(context) {
            if (it == TextToSpeech.SUCCESS) {
                val result = tts!!.setLanguage(Locale.KOREAN)
                if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                    Log.e("TextToSpeech", "해당 언어는 지원되지 않습니다.")
                    return@TextToSpeech
                }
            }
        }
    return tts
}
TtsActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_tts)
      
    tts = initTTS(this@TtsActivity)
}

 

 

이러면 일단 사용할 준비는 되었다.

간단하게 실행할 함수를 구현해보자.

역시 확장함수를 이용해 어디서든 편하게 실행될 수 있도록 구현해보았다.

TTSManager.kt
fun TextToSpeech?.readText(text: String) {
    this?.speak(text, TextToSpeech.QUEUE_FLUSH, null, "")
    this?.playSilentUtterance(500, TextToSpeech.QUEUE_ADD, null)
}
TtsActivity.kt
findViewById<Button>(R.id.btn_tts_play).setOnClickListener {
    tts?.readText("Start Text To Speech!")
}

 

버튼 하나를 두고 누를때 마다 실행되게 하였다.

 

 

해당 액티비티를 종료할 때는 리소스를 정리해 주어야 한다.

TtsActivity.kt
override fun onDestroy() {
    if (tts != null) {
        tts?.stop()
        tts?.shutdown()
    }
    super.onDestroy()
}

 

 

이상 TTS를 실행하고 리소스를 정리해주는 것까지 간단하게 알아보았다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함