본문 바로가기
Android Studio

안드로이드 스튜디오 TTS 관련 코드

by 젼젼39 2024. 4. 8.

- 안드로이드에서 제공하는 TextToSpeech 클래스를 사용해, 안드로이드 애플리케이션에서 텍스트 음성으로 변환하여 읽어주는 기능을 구현하는 코드.

- 초기화 부분, `onInit`, `readAuthent`, `onDestroy` 메서드가 있음

//tts 관련 코드
textToSpeech = TextToSpeech(this, this)

//tts 재생 버튼
btn_playTts.setOnClickListener {
    readAuthent(generatedAuthent)
}
//tts 관련 코드
override fun onInit(status: Int) {
    if (status == TextToSpeech.SUCCESS) {
        val result = textToSpeech.setLanguage(Locale.US)
        if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Toast.makeText(this, getString(R.string.lang_not_supported), Toast.LENGTH_SHORT).show()
        }
    } else {
        Toast.makeText(this, getString(R.string.init_failed), Toast.LENGTH_SHORT).show()
    }
}

//보안문자열을 문자 하나씩 읽도록
private fun readAuthent(generatedAuthent: String) {
    for (char in generatedAuthent) {
        textToSpeech.speak(char.toString(), TextToSpeech.QUEUE_ADD, null, null)
        //중간에 텀 두고 읽도록
        Thread.sleep(100)
    }
}
//tts 관련 코드
override fun onDestroy() {
    if (textToSpeech.isSpeaking) {
        textToSpeech.stop()
    }
    textToSpeech.shutdown()
    super.onDestroy()
}

1. 초기화를 한 다음

2. onInit 메서드를 통해 초기화 상태를 전달받아서, success인 경우 언어를 미국 영어로 설정하고, 실패한 경우 실패 메시지를 토스트로 표시함

3. readAuthent(이름은 변경 가능)에서, 다른 함수를 통해 만든 보안문자를 매개변수로 받아 100밀리초의 간격을 두고 한 글자씩 읽어주는 역할을 하는 메서드를 만들었고,

4. onDestroy 메서드를 통해 액티비티 종료 시 현재 tts가 읽고있는지를 확인하고 읽고 있으면 중지하고, TextToSpeech를 종료함