RoBoLoG

[JAVA] TextToSpeech (TTS) 안드로이드 TTS 한국어 목소리 바꾸기 본문

Study/Android

[JAVA] TextToSpeech (TTS) 안드로이드 TTS 한국어 목소리 바꾸기

SKJun 2023. 7. 4. 16:35

[JAVA] TextToSpeech (TTS) 안드로이드 TTS 한국어 목소리 바꾸기

 

Android에서 JAVA로 TextToSpeech를 보여주는 예시는 많지만 목소리를 바꿔주는 예시는 없어서 만들어보았습니다.

 

TextToSpeech 객체 이름이 tts일 때 아래와 같이 목소리를 세팅해줄 수 있습니다.

 

Set<Voice> voices = tts.getVoices(); // 사용 가능한 목소리들
// ko-KR-language, ko-kr-x-ism-local, ko-kr-x-koc-local, ko-kr-x-kob-local, ko-kr-x-kod-local
Voice voice = voices.stream()
        .filter(v -> v.getName().equals("ko-kr-x-ism-local"))
        .findFirst()
        .orElse(null);

if (voice != null) {
    tts.setVoice(voice); //목소리 세팅
}

 

  1. TextToSpeech 객체 초기화: 먼저, Android에서 TextToSpeech 객체를 생성하고 초기화합니다. 이는 TTS 엔진을 사용할 수 있게 해줍니다.
  2. 사용 가능한 목소리 조회: tts.getVoices() 메서드를 호출하여 사용 가능한 목소리들을 Set<Voice> 타입으로 받아옵니다. 이 목록에는 다양한 언어와 지역별 목소리 옵션이 포함됩니다.
  3. 한국어 목소리 필터링: 한국어 목소리만 필터링하기 위해 Java의 Stream API를 사용합니다. voices.stream()을 통해 Stream을 생성하고, filter 메서드로 원하는 목소리를 필터링합니다. 예를 들어, 'ko-kr-x-ism-local'과 같은 이름을 가진 목소리를 찾습니다.
  4. 목소리 선택: 필터링된 Stream에서 findFirst() 메서드를 사용하여 첫 번째 요소를 선택합니다. 이는 원하는 한국어 목소리가 됩니다. 만약 해당 목소리가 존재하지 않으면 orElse(null)을 통해 null을 반환합니다.
  5. 목소리 설정: 선택한 목소리가 null이 아닌 경우, tts.setVoice(voice) 메서드를 사용하여 TTS의 목소리를 설정합니다. 이렇게 하면 TextToSpeech 기능이 해당 목소리로 텍스트를 읽어줍니다.
  6. 한국어 목소리 옵션: 현재 가능한 한국어 목소리로는 ko-KR-language, ko-kr-x-ism-local, ko-kr-x-koc-local, ko-kr-x-kob-local, ko-kr-x-kod-local 등이 있습니다. 각각 다른 특성과 억양을 가진 목소리일 수 있습니다.

이 방법을 사용하면 Android 앱에서 다양한 한국어 목소리로 TextToSpeech 기능을 구현할 수 있습니다. 

 
 
 

 

반응형
728x90

 

728x90
반응형