jaywalnut310 / glow-tts

A Generative Flow for Text-to-Speech via Monotonic Alignment Search
MIT License
651 stars 150 forks source link

멀티-스피커 버전 버그? #11

Open Ondal90 opened 4 years ago

Ondal90 commented 4 years ago

안녕하세요. 좋은 synthesizer을 올려주셔서 감사합니다. LJ-speech데이터로 실험결과 기존 synthesizer에 비해 속도측면에서 압도적인 것을 확인하였습니다. 그리고 주신 조언에 따라 multi-speaker버전으로 변경하여 구동하였는데, 저의 경우 버그가 발생하였습니다. LJ+개인데이터(1hour)를 이용하여 학습한결과 발화는 하나 가끔 문장에서 목소리의 피치가 매우 높게 올라가는 문제가 발생하였습니다. 데이터가 적어서 생기는 문제인지 아니면 해결중인 문제이신지 궁금해서 남겨봅니다. multi-speaker로 변경하기 위해 TextMelSpeakerLoader와 TextMelSpeakerCollater n_speakers, gin_channels 를 수정하였고 speaker_id도 데이터셋에 포함시켰습니다. 맨 처음 스텝으로 LJ데이터만 이용, 위의 모듈들을 변경 후 구동시킨 결과 성공적으로 목소리가 합성되었으며, 그 후 개인데이터 셋을 이용하여 구동시켜 개인데이터의 목소리가 짧은 시간인데도 합성되는 놀라운 결과를 얻었습니다. 하지만 위에 서술한 목소리의 피치가 매우 높게 올라가는 문제 및 LJ의 목소리가 약간 섞인듯한 문제가 발생하여 골머리를 앓고 있습니다. 혹시 결레가 아니라면 multi-speaker버전을 올리지 못하는 이유가 이 버그 때문인지 아니면 어떤 이슈가 있는지 알려주실 수 있나요?

jaywalnut310 commented 4 years ago

So your situation is: 1) you have your own multi-speaker dataset, and the total duration of the dataset is only one hour. 2) you trained the model with the LJ dataset, and fine-tuned it to the low resource dataset. 3) The synthesized speech contains unnatural high pitch patterns, or the speaker identities are blended.

I haven't tried those experiments, I just trained the multi-speaker model, which was trained on the LibriTTS dataset, from scratch. And in my case, I never encountered the mixing voice issues. So, due to my lack of experiences, I could not tell in certain, but my guess is: 1) your dataset might be too small to train. 2) Didn't you provide the same id number for LJ speaker and a speaker in your dataset? or did you properly provide id at inference? I don't know the exact reason... 3) Yes, the unnatural high pitch issue happened sometimes. In my opinion, one way to resolve the issue could be replacing the naive global conditioning with recently proposed methods such as (https://arxiv.org/abs/1906.00794).

The high pitch issuse is one of the problems that I'm currently working on, but the main reason I didn't upload the multi-speaker version was that the pronunciation of the model would not be good enough when trained on open datasets. In many multi-speaker open datasets, there are many speakers who don't speak clearly or speak the same word differently. For example, the dataset might contain British, American, and Australian speakers.

Sorry for the lateness of uploading multi-speaker version, I'll upload it when the multi-speaker model trained on open datasets will be comparative to the LJ version.