Unity 개발/기술 향상

[WebGL] Google TTS(Text-to-Speech) Unity WebGL에 적용하기

내공부방 2024. 9. 9. 21:48
반응형

1. TTS란 무엇인가?

TTS는 텍스트를 음성으로 변환하는 기술을 의미합니다. 즉, 컴퓨터가 입력된 텍스트를 읽어주는 기능을 제공하는 것!!

 

2. Google TTS의 특징

Google TTS는 공식적으로 Unity를 지원하고 있지 않지만 API 형태로 제공되기 때문에 보다 쉽게 통합할 수 있는 장점이 있습니다.

 

3. Google TTS를 Unity WebGL에 적용하는 방법

Google TTS를 Unity WebGL 프로젝트에 적용하기 위해서는 몇 가지 단계를 거쳐야 합니다!

Step 1: Google Cloud Text-to-Speech API 설정

해당 설정은 해당 블로그의 절차와 동일합니다! 

https://developer-growth-history.tistory.com/46

 

[WebGL] Google STT(Speech-to-Text) Unity WebGL에 적용하기

Google STT(음성 인식 기술)를 Unity WebGL 프로젝트에 적용하는 방법에 대해 알아보겠습니다. 1. STT란 무엇인가?STT는 음성을 텍스트로 변환해주는 기술입니다. 즉, 사용자가 말한 내용을 컴퓨터가 이

developer-growth-history.tistory.com

 

Step 2: Unity 프로젝트 설정

* 음성 데이터를 저장하지 않고 바로 재생할 수 있는 WavUtility을 활용했다 

https://github.com/deadlyfingers/UnityWav

 

GitHub - deadlyfingers/UnityWav: WAV utility for saving and loading wav files in Unity

WAV utility for saving and loading wav files in Unity - deadlyfingers/UnityWav

github.com

 

/// <param name="text">출력할 텍스트</param>
/// <returns></returns>
public IEnumerator CallGoogleCloudAPI(string text)
{
    var request = new GoogleCloudTextToSpeechRequest
    {
        input = new SynthesisInput { text = text },
        voice = new VoiceSelectionParams { languageCode = "ko-KR", name = "ko-KR-Standard-C", ssmlGender = "MALE" },
        audioConfig = new AudioConfig { audioEncoding = "LINEAR16" }
    };


    string json = JsonUtility.ToJson(request);
    byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(json);
    ...

	//응답 데이터
    string responseJson = www.downloadHandler.text;
    var response = JsonUtility.FromJson<GoogleCloudTextToSpeechResponse>(responseJson);

    byte[] audioData = System.Convert.FromBase64String(response.audioContent);

    AudioClip clip = WavUtility.ToAudioClip(audioData);
	audioSource.clip = clip;
    audioSource.Play();
    
}

 

출력하고자 하는 텍스트 문구를 넣어 TTS를 통해 음성 데이터로 만들고 

WavUtility를 통해 AudioClip을 생성하면 된다! 

 

반응형