본문 바로가기

TTS

Bytes are all you need

#1.

일단,, Grapheme과 byte representation으로 합성기의 text 단위를 어느것을 쓰는게 나은지 비교 실험한 것이 나오는데, phoneme까지 비교를 했어야 유의미하고 흥미로운 비교라고 생각한다.

 

phoneme을 고려하면 음질 측면에서는 byte이 phoneme보다 이득이라고 할 수 없겠지만,

byte representation만이 갖는 절대적인 이득은 기존 TTS에 언어 추가가 용이하다는 점이다.

=> 왜냐면 byte representation을 예측하는 문제는 사전에 정의된 음소 집합에서 예측하는 문제와 달리 확장성이 무한하기 때문이다. 이 세상 어떤 언어도 256가지의 byte의 조합으로 표현 가능하니까. (이 점은 IPA도 해당되지만 IPA는 비싸다)

 

=> 그런데 language code one-hot vector를 사용해 TTS의 음질에 크게 이득을 봤다고 했는데,  language vector를 사용하려면 적어도 사전에 내가 몇 개의 언어까지 이 TTS를 확장할 것인지의 계획은 처음부터 갖고 있어야 할 것이다. 처음에는 4개 언어의 TTS를 만들려고 했는데 나중에 5번째 언어를 추가하고 싶다면 더 이상은 확장할 수 없게 되는 것이다.

 

그리고 저자들이 한글이 완성형밖에 없다고 생각하고 있다는 느낌을 받았다.

한글 완성형이 아니라 조합형을 쓰면 grapheme 수가 훨씬 줄어드는데 굳이 완성형으로 grapheme을 쓸 이유가 있을까?

애초에 grapheme 수가 적은 언어로 영어와 스페인어를 설정하고, grapheme 수가 커서 byte representation의 효과를 볼 언어로 일어와 한국어를 가정해버렸기 때문에 한글 완성형을 고집했을 것 같다.

 

#2. 

솔직히, 원래는 막연하게 multi-language TTS에서는 text embedding space를 여러 언어가 공유하면서 IPA를 굳이 안써도 text embedding space가 더 잘 학습될 거라고 생각했는데, 이 논문을 보면서 근거 없는 추측이었을 수도 있다고 생각했다. 

=> 기존에 하도 IPA 기반 연구만 봐오다 보니 착각하고 있었던 것이다.

=> 이게 어느 정도 잘못된 생각이었냐면, 좀 후려쳐서 말하면 사실은 multi-lingual TTS의 성능 상한선이 mono-lingual이라고 말할 수도 있다.

=> 기업에서 (IPA를 안 쓴다는 가정 하에) multi-lingual TTS 연구를 할 이유는 지원 언어 확장의 비용을 줄이기 위해서가 주된 이유인 듯 하다.

 

#3. Forgetting 방지

Netwrok adaptation을 하면서 기존 데이터로 학습한 것을 잊지 않게 하기 위해서 heuristic한 비율로 기존 데이터와 신규 데이터를 섞어 훈련 시키는 트릭을 알게 돼서 유익했다. 전에 Multi-speaker TTS를 DB1으로 학습한 뒤 DB2로 adaptation하려다가 forgetting 현상을 경험한 적이 있다.

'TTS' 카테고리의 다른 글

E2E TTS에서 postnet이 필요한 이유  (0) 2020.03.14
Japanese/Korean/Vietnamese Corpus  (0) 2020.02.08
Global style token  (1) 2020.01.17
Deep Voice 3  (0) 2020.01.17
Transformer TTS  (0) 2020.01.17