1. 텍스트를 소리로 변환해보자.
1.1. AzureTTS Sample Project.
- 먼저, 빈 프로젝트를 하나 만들고, AzureTTS 샘플을 받아서 프로젝트폴더에 추가하자. UE4(https://github.com/breakstring/AzureTTS)
UE5(https://github.com/nedcrow/AzureTTS) - 프로젝트를 열어보면 블루프린트가 이렇게 딱 하나 보인다.
- 블루프린트도 열어보면,
- 예제 노드들이 촤악 펼쳐져있다. 모두 알아두는게 좋다만, 당장 우리가 사용할 그룹은 딱 두 그룹이다.
1.2. AzureCognitiveService
- '샘플'을 열어봤으니 일단 Play 부터 눌러보는게 당연지사겠지만, 지금은 Play버튼을 눌러도 아무 소리가 들리지 않는다. 먼저 SubscriptionKey, TTSEndPoint 변수에 값부터 담아줘야한다.
그러려면 잠시 Microsoft Azure Cognitive Services 사용자부터 되어야 한다.
처음 계정을 만드는 경우 1년 무료이용 가능하고, 음성 서비스는 일부 무료이다.
가격표: https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/speech-services/
https://portal.azure.com/#blade/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/overview
- 가입과 TextToSpeech service 구독을 마치면 포털 페이지 최신 서비스에 뜬다. https://portal.azure.com/#home
그리고 해당 서비스를 누르면 이런 페이지가 나타난다. TTSEndPoint 먼저 확인 가능하다. 하지만 여기 보이는 엔드포인트는 토큰용 엔드포인트기 때문에 조금 수정이 필요하다.
엔드포인트 형식 참고: https://docs.microsoft.com/ko-kr/azure/cognitive-services/speech-service/regions
TTS EndPoint = https://koreacentral.api.cognitive.microsoft.com/cognitiveservices/v1
- SubscriptionKey 경우는 우측하단에 있는 키를 관리하려면 여기를 클릭 링크를 클릭하면 나타나는 Key1을 사용하자. 두 변수를 모두 잘 적었다면 Play 버튼을 눌렀을 때, 목소리를 들을 수 없다.
... 죄송합니다.
TextToSpeech 노드는 데이터를 가져오기만할 뿐 소리를 들려주지는 않는다. 때문에 이 데이터를 가공해서 우리 귀에 속삭여줄 노드가 필요하다.
1.3. 데이터 형변환(TArray<uint8> to USoundWave)과 Runtime Audio Importer
- 일단은 단순히 소리가 잘 들리는지 확인이 목표이기에 플러그인을 이용해보겠다.
Runtime Audio Importer!
Runtime Audio Importer 객체는 목표 타입으로 오디오정보를 불러올 때 마다 특정 이벤트를 호출한다.
AzureTTS 경우, raw-*-*-mono-pcm 결과는 불러와지지 않았다.
audio-*-*-mono-mp3 타입의 경우 mp3, riff-*-*-mono-pcm 타입의 경우 wav 포멧으로 잘 불러와졌다.
- 자, 이제 진짜로 플레이 버튼을 누르면 목소리가 들려올것이다.
흠, 하지만 뭔가 찜찜하다.
변수로 입력한 텍스트도 목소리도 영어다. 주관적이지만 듣기평가 PTSD가 올 것 같아 심히 불편할 수 있다.
- 그러니 자랑스러운 한글을 사용해보자. '나랏말싸미 듕귁에 달아..'.
그리고 플레이를 누르면, 당당한 한국어는 물론이며 아예 아무 소리도 나오지 않을 것이다.
뭔가 또 다른 변수들을 건드려야한다.
1.4. SSML(Speech Synthesis Markup Language) 수정
- 먼저 SSML 생성부를 보면 'Xml:lang' 속성이 있다. 이걸 한국어로 바꿔주자.
- 그리고 VoiceName** 이라는 변수들은 성우 목소리인데, 한국성우로 바꿔주자.
한국어 남,녀 목소리를 기본으로 제공해준다. (영어는 많던데 조금, 아주 조금 치사하다.)
- 이제 Play 버튼을 누르면 반가운 한국어가 들려올 것이다!
이 다음에는 목소리에서 Viseme 값을 추출해보겠다.
'GameDevelopmentDiary > UnrealDiary' 카테고리의 다른 글
언리얼4 립싱크(Text To Speech) 구현 방법 Part4 (완성) (1) | 2022.03.10 |
---|---|
언리얼4 립싱크(Text To Speech) 구현 방법 Part3 (0) | 2022.03.10 |
언리얼4 립싱크(Text To Speech) 구현 방법 Part1 (0) | 2022.03.07 |
립싱크 - (메타휴먼, 리얼루전) (0) | 2021.12.28 |
Unreal HTML5 빌드 기록 (0) | 2021.11.12 |