비트와 자장가

한국어 발음 프로그래밍 (한국어 tts) 본문

개발/결과

한국어 발음 프로그래밍 (한국어 tts)

eastriver 2020. 7. 26. 20:33

대중들에게 가장 잘 알려진 한국어 tts(text-to-speech) 서비스로는

카카오 스피치,

네이버 클로바 더빙,

구글 클라우드 tts가 있다.

 

많은 tts 서비스는 영어를 기반으로 하고 있어,

해당 기술을 구현하기 위해서는 머신 러닝이 필수적이다.

영어는 쓰이는대로 발음되는 것이 아니기 때문이다.

 

하지만 한국어는 다르다.

한 글자는 한 음절에 상응하고,

보이는대로 발음되지 않을 때는 명확한 발음규칙이 있다...

 

...고 생각하고 머신 러닝이 없거나, 최소화된 tts를 만들자며

예전 코딩을 막 배우기 시작했을 때 토이 프로젝트로 시작했던하루 만에 그만 둬 버린한국어 발음 변환 프로그램을 

이틀 간 리팩토링하며 새로운 사실을 발견했다.

string만 보고선 단어가 합성어인지 아닌지 알 수 없기 때문에,

사잇소리 첨가가 언제 일어날지 간단한 알고리즘으로는 알아낼 수 없다는 것이다!

 

이 충격적인 사실을 깨닫고 나서 즉시 카카오 스피치, 네이버 클로바 더빙, 구글 클라우드 tts에 각각 테스트를 해봤다.

테스트 결과(2020.07.26. 기준)는 다음과 같다:

  카카오 네이버 구글
서울역[서울력]
휘발유[휘발류]
눈요기[눈뇨기]
신여성[신녀성]
담요[담뇨] ×
막일[망닐] × ×
영업용[영엄뇽]
식용유[시굥뉴] ×
한여름[한녀름]
볼일[볼릴] ×
맨입[맨닙] ×
색연필[생년필] × ×
솜이불[솜니불] × ×
백분율[백뿐뉼] ×
풀잎[풀닙] ×
꽃잎[꼰닙]
깻잎[깬닙]
물약[물략] × ×

카카오 스피치:

    모든 목소리가 항상 성공하는 것으로 보아, 사전에서 발음을 읽어오는 듯하다.

   

카카오 발음.aifc
7.02MB

네이버 클로바 더빙:

    끝소리와 초성을 각각 구분해서(연음하지 않고) 또박또박 발음하기 때문에 마치 한국어 발음을 제대로 하는 것처럼 들리기도 하지만,

    목소리에 따라, 상황에 따라 성공할 때도 있고 실패할 때도 있는 것으로 보아 순수하게 데이터셋으로 예측하는 것으로 판단된다아직 베타니까 봐 주자. 

네이버 발음.aifc
6.38MB

구글 클라우드 tts:

    모든 목소리가 [막일, 색연필, 솜이불, 물약]에서 실패한 것으로 보아, 수동으로 예외처리를 하지 않았나 싶다.

구글 발음.aifc
6.23MB

나 역시 수동으로 예외처리를 하는 방식을 채택해서,

한국어 발음 프로그램을 한글을 사랑하는 마음을 가득 담아

금기로 여겨지는 한글 코딩을 해 보았다

github.com/eastriverlee/hangoongmal

 

eastriverlee/hangoongmal

Contribute to eastriverlee/hangoongmal development by creating an account on GitHub.

github.com

이 프로그램은 애플의 AVFoundation 프레임워크를 사용해 실행환경이나 (아마도) 라이센스 제약이 있지만 언젠가는 쓸만한 오픈소스 한국어 tts를 만들 생각이 있다.

 

알고리즘 기반이다 보니 합성어, 한자어, 어간 한정의 발음규칙에 대해서는 처리하지 않고 있다.

즉 "신발을 신고"와 "당신을 신고하겠어"에서의 "신고"를 동일하게 발음한다.

 

한국어 발음은 어렵다.

난 한글을 좋아하지만 한국어는 좀...

 

728x90
반응형
Comments