keonlee9420 / Expressive-FastSpeech2

PyTorch Implementation of Non-autoregressive Expressive (emotional, conversational) TTS based on FastSpeech2, supporting English, Korean, and your own languages.
Other
267 stars 46 forks source link

prepare_align에서 soundfile 대신 wavfile로 저장 하는 이유가 있나요?? #2

Closed eastjin218 closed 3 years ago

eastjin218 commented 3 years ago

이전 create_dataset에서는 soundfile을 사용하고 prepare_align에서는 wavfile을 사용하여 작성하는 따로 진행하는 이유와 다른 라이브러리를 사용하는 이유가 있을까요??

keonlee9420 commented 3 years ago

안녕하세요 @eastjin218 님. 우선 이 프로젝트에 관심을 가져주셔서 감사합니다.

현재 데이터셋에서 두 method간의 차이는 없습니다. 다만, 이곳에서 정리해준 대로 soundfile이 scipy.io.wavfile보다 보편적으로 제약이 적어 이 프로젝트에서 의도한 general raw data conversion (e.g., video to audio) 을 위해 사용되었습니다. raw data가 이미 음성 파일 (.wav) 이고 sampling rate만 바꿔주면 되는 상황에서는 두 라이브러리 모두 사용가능합니다. 도움이 되셨길 바랍니다.

감사합니다.

eastjin218 commented 3 years ago

감사합니다. repo가 변경된것 같은데 혹시 기존의 실행 방법 부분을 제거한 이유가 있을까요??

keonlee9420 commented 3 years ago

기존은 Emotional TTS만 구현이 되어 있었는데요, non-autoregressive TTS에서의 expressiveness에 대한 연구를 하나씩 추가하고자 repo의 구조를 갱신하였습니다 (repo 이름도 이에 따라 변경되었습니다). 가장 최근 추가된 구현은 Conversational TTS입니다. 각각의 실행 방법이 조금씩 다를 수 있기 때문에 구현 별 실행 방법은 해당하는 branch의 README.md에서 확인하실 수 있습니다.

감사합니다.

eastjin218 commented 3 years ago

설명 감사합니다 앞선 내용과는 별개로 제가 이전 repo 내용처럼 ai-hub를 이용하여 전체 데이터에서에서 400개만 이용하여 학습을 진행 중입니다. 그런데 total loss는 감소하지만 validation total loss는 감소하지않았습니다. 데이터 양의 문제인지 싶어서 전체 데이터를 다 받아서 진행하는데 앞선 결과와 동일하게 validation loss는 오르락 내리락만 하고 감소하지를 않습니다. 문제가 무엇인지 혹시 알 수 있을까요?? 아님 어디서부터 확인해야 할지 알려주실 수 있을까요?? train loss 와 많은 차이를 보이는 곳은 pitch loss와 energy loss 부분입니다

keonlee9420 commented 3 years ago

우선, training loss가 감소하므로 학습은 잘 되고 있는 것이 맞고 validation loss는 처음부터 감소를 하는지 여부에 따라 문제로 따져볼 수 있습니다. 혹시 validation loss가 초반에도 감소를 하지 않나요? tensorboard 화면을 공유해주시면 말씀하신 문제를 이해하는 데 수월할 것 같습니다.

eastjin218 commented 3 years ago

image 전체 step에서 19%정도 진행되었던 결과 입니다. 말쓰하신것 처럼 처음에는 validation loss가 감소를 하다가 다시 올라가고 있습니다

keonlee9420 commented 3 years ago

공유 고맙습니다. README.md에 있는 tensorboard 모습에서 확인하실 수 있듯, 현재 학습이 잘 되고 있는 것으로 보입니다. 학습 중간중간 audio tab의 sample을 확인하시면 확실히 판단하실 수 있을 것으로 보입니다.

참고로, 본 프로젝트에서 다루는 데이터들은 TTS용으로 개발된 것이 아닙니다. 저는 noisy-raw data에서 TTS 모델 학습까지를 모두 다루고자 해당 데이터들을 사용하게 되었지만, 만약 고품질의 합성을 목표로 하신다면 TTS용으로 개발된 다른 공공 데이터들(예를들어 emotiontts_open_db)을 이용하시는 것을 추천드립니다.

eastjin218 commented 3 years ago

감사합니다. 제가 수집하여 적용하고 싶은 데이터도 noisy-raw data에 가깝다면 해당 어떻게 이어서 진행을 하면 좋을까요??

keonlee9420 commented 3 years ago

이어서 진행하신다는 말씀을 정확히 이해하진 못했지만, 아래의 경우들이 가능할 것 같습니다.

  1. noisy-raw data를 이 repo에 연계해서 학습하는 방법은 Emotional-TTS branch들의 README.md의 AIHub 데이터 전처리를 참고해주세요.
  2. clean data를 먼저 학습하고 원하는 데이터에 학습을 원하실 때에는 말 그대로 바로 이어서 학습을 할 수도 있고 여러가지 transfer learning 기법을 적용할 수 있습니다. transfer learning 기법은 구글에 검색해보시면 다양한 자료들이 많이 나오니 살펴보시면 도움이 될 것 같습니다.
  3. 혹은 noisy data를 전처리 해서 학습할 수도 있습니다. [paper, repo]
eastjin218 commented 3 years ago

말씀 감사합니다 혹시 제공해주시는 hifigan모델은 직접 학습으로 구축하신건가요?? 아님 공개되어있는건가요??

keonlee9420 commented 3 years ago

공식 HiFi-GAN repo에 공개된 모델입니다. 참고로 본 프로젝트에서 사용한 데이터셋으로 실험한 것은 아니지만, 별도의 실험에서 KSS dataset에 학습된 VocGAN과 pre-trained된 universal HiFi-GAN을 이용해 KSS sample을 합성해본 결과 큰 차이가 발견되지 않았습니다.