sh-lee-prml / HierSpeechpp

The official implementation of HierSpeech++
MIT License
1.13k stars 134 forks source link

TTV model에 관한 질문 #23

Closed Gabibing closed 5 months ago

Gabibing commented 5 months ago

안녕하세요. 굉장한 프로젝트를 오픈소스로 올려주셔서 감사합니다. VC과 TTS를 융합하기 위해서 w2v를 뽑아내는 컨셉이 정말 재밌습니다.

흥미가 생겨서 학습을 시켜보고 있던 중에 TTV transformer 관련 질문이 생겨 이렇게 issue 올립니다.

posterior => decode 는 잘 되는 것을 확인했습니다만, prior와 posterior 분포간의 kl divergence가 굉장히 크고 어느 시점 이후로 제대로 학습이 안 되고 있습니다.

  1. 두 분포간의 차이를 줄이기 위해 추가하신 feature가 있을까요?
  2. TTV를 학습시키는데 얼마나 걸리셨을까요?

감사합니다.

sh-lee-prml commented 5 months ago

안녕하세요

먼저, TTV 모델의 경우

  1. Reconstruction Loss
  2. CTC Loss
  3. KL Loss
  4. F0 Regression Loss

로 학습을 했습니다.

답변드리면,

Q1. 두 분포간의 차이를 줄이기 위해 추가하신 feature가 있을까요?

A1. CTC Loss를 통해서 Posterior과 Prior의 Alignment가 더 정확하게 생성되어 두 분포간의 차이가 줄어드는 것을 확인했습니다.

논문에 적힌 것 외에는 추가적인 Feature를 이용하지 않았습니다.

추가적으로 F0 Predictor와 관련해서 실제 학습에는 원본 W2V으로 학습했습니다.

Predicted W2V 이용 시 inference 성능이 향상되나, KL 분포 학습에 영향을 미칠 것으로 예상됩니다. (혹시나 해당 부분 한 번 수정해보시면 좋을 것 같습니다.)

현재 내부적으로는 Decoder 만 Fine-tuning하여 Predicted W2V으로부터 F0 학습을 통해 개선을 했습니다. (다른 부분은 Freeze)

GPU 4개 배치 128 (GPU당 32)로 학습을 하였으며, 해당 부분도 학습 안정성에 영향을 줄 것으로 생각합니다.

Q2. TTV를 학습시키는데 얼마나 걸리셨을까요?

100만스탭 정도 학습 시키는데 6~7일 정도 걸렸습니다.

발화는 만스탭에서도 되었으며, 학습이 진행하면서 CTC Loss 최적화와 함께 발음 정확도 (CER, WER) 및 Duration이 개선되어 지표를 확인하면서 오래 학습시켰습니다.

참고로 W2V Loss는 높아도 실제 Inference 시에 큰 문제가 없습니다. (Perturbed W2V으로부터 Synthesizer를 학습하여)

감사합니다

Gabibing commented 5 months ago

답변 정말 감사합니다. 확실히 f0는 따로 학습시키면 좋을 것 같네요. 추가로 질문이 더 생겼는데 wavlm, hubert, whisper 등 다른 모델로도 content 인코딩을 시도해보셨다면, 그 결과에 대해서도 공유해주시면 큰 도움이 될 것 같습니다. (7번째 layer 가 아니라 다른 layer의 결과도 궁금합니다!)

새해 복 많이 받으시고 일익번창하시길 기원합니다 :)

sh-lee-prml commented 5 months ago

안녕하세요.

  1. WavLM

WavLM 이용 시, Speech Perturbation과 함께 이용하면 발화를 못하는 문제가 발생했습니다.

  1. HuBERT

Continuous representation을 이용 시,

W2V < HuBERT < XLS-R < MMS

결과로 성능 향상이 있습니다.

추가적으로 다양한 언어로 학습된 Wav2Vec 2.0 을 이용하면서 다양한 언어에서 성능 향상을 기대하였기 때문에 XLS-R --> MMS 로 변경하면서 실험을 했습니다.

HuBERT의 경우, Unit으로 변경하여 이용하는 모델들이 많아 호환성에서 장점이 있지만 발음 정확도가 상당히 많이 손실되어 이용하지 않았습니다.

  1. Whisper

Whisper의 경우 발음 정확도 측면에서는 더 좋았습니다만, 음성의 Expressiveness가 떨어지게 되었습니다. 입력에 F0와 함께 이용 시, MMS 피처를 이용하더라도 발음 정확도도 개선이 되어 MMS를 이용했습니다.

  1. MMS Layer

저희 초기 실험에서 MMS 7 번째 layer에서 가장 낮은 CER과 높은 SECS값을 얻어 이용했습니다. 다만, 해당 부분은 7~14 Layer에서 엄청 큰 차이는 보이지 않습니다.