티스토리 뷰

반응형

기반 모델은 요즘 핫한 ISFTB와 VITS이다.

 

빠르면서도 퀄리티가 좋은 걸로 유명하다.

 

ljspeech 데이터셋을 쓰는데, 직접해보았을 때 둘 다 무조건 음소별 패딩을 주고 하는 게 낫다.

음소를 붙여서 그냥 Training 하게 되면 발음을 구분을 못한다.

방법은 아래 글 참고.

2024.12.17 - [데이터 사이언스 & 로봇/ML 및 DL 관련 이론] - [TTS] 한국어의 음소와 음절 패딩

 

IPA 발음으로도 실험해보았으나, espeak-ng의 변환은 12년 전에서 변하지 않았으므로 정말 낮은 퀄리티였다(외국인 발음).

다국어를 위해 IPA로 하려면 개인적인 preprocessing이 필요하다. 거의 없어서 직접 만드는 것도 고려해야한다.

 

직접 부딪히고 파인튜닝해보면서 깨달은 점은 다음과 같다.

1. 16000, 22050, 24000khz는 모델에 따라 다르다. 무조건 호환되는 khz를 쓰자. 안 그러면 음질이 노이즈가 낀다.

2. Gan 기반이든 Diffusion 기반이든 loss는 정말 의미가 없다. loss가 더 낮음에도 퀄리티는 더 낮은 경우가 많았다.

loss를 보지 말고 직접 체크포인트로부터 뽑아서 들어보고 판단해보자.

3. 데이터셋이 적다면, 발음 변환 라이브러리를 써서 발음 변환된 걸 기본 텍스트로 쓰는 게 웬만하면 좋다. 더 잘 발음을 판단할 수 있다.

 

이 글을 누가 볼지는 모르겠지만, 누군가에게는 한국어 TTS를 Train 할때의 시행착오를 조금 줄여줬으면 좋겠다.

반응형