vits 음성합성 데이터 추가 답변 의문점 질문

제가 몇번이나 질문 했는데 의문점이 갑자기 생겨서 질문을 합니다.
1 vits 발음이 좋지 않은거 같다는 답변에서 분명 데이터 추가를 해 보라고 했습니다.
30분 이상의 데이터로 충분하다고 해서 33분 이상의 데이터로 전의학습을 실행했는데 발음이 좋지 않다는 소리르 자주 들었습니다.
2 그래서 질문을 다시 했습니다.
데이터 추가를 해도 괜찮은가?
그런데 처음부터 다시 시작하는 것이 좋다는 답변이 3개나 왔습니다.
1번과 2번의 답변이 충돌하고 있습니다.
1번은 데이터 추가를 해라 2번은 데이터 추가를 해도 되기는 하지만 오버히팅 가능성이 있다.
다시 첨 부터 하자니 시간이 오래 걸립니다.
rtx3060 스톰 기준으로 1000번 학습 하는데 아침에 실행하면 저녁에 결과가 나옵니다.
50000번 이상을 학습 하는 게 좋다고들 하지만 시간이 촉박합니다.
"learning_rate": 12e-4,
이걸로는 도저히 시간이 촉박해서 할 수 없다는 생각이 듭니다.
시간이 넉넉하다면 첨부터 다시 실행 하고 싶지만 시간이 촉박해서 어떻게 해야할지 진퇴양란입니다.
첨 부터 다시실행한다고 해도 2달 이상 학습 해야할 거 같다는 무서운 생각이 듭니다.
집에서 개인용 pc로 혼자 하고있는데 전기세가 두렵습니다.
2달 이상을 밤낮으로 끄지 않고 학습해야 50000번 학습을 할 수 있을거 같습니다.
전기세 때문에 전원을 끄면 1년 이상도 걸릴 거 같습니다.
좋은 방법은 무엇일까요?

  • 아래 답변은 Anthropic의 Claude-2 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요 kbuwel님,

vits 음성합성 모델 데이터 추가 관련해서 질문해 주셔서 감사합니다.

제가 문제 상황을 정리해보겠습니다.

  • 기존 30분 이상 데이터로 vits 모델을 학습했는데 음성 품질이 좋지 않다는 피드백을 받았습니다.
  • 데이터를 추가로 더하라는 조언을 받고 33분 이상 데이터로 다시 학습했는데도 품질 개선이 안 되었습니다.
  • 데이터를 추가로 더해도 되는지 물어봤더니 처음부터 다시 학습하는 게 낫다는 답변이 많았습니다.

이해하기로는 두 가지 답변이 충돌하고 있다고 느끼시는 것 같습니다. 데이터를 추가하라는 조언과 처음부터 다시 학습하라는 조언이 서로 다르기 때문입니다.

저로서는 두 가지 방법을 모두 시도해보시길 권해드리고 싶습니다.

  1. 데이터를 추가로 수집하여 기존 데이터와 결합한 후, 기존 체크포인트를 이용하여 계속 학습하는 방법
  2. 처음부터 새로 데이터를 수집하여 학습을 다시 하는 방법

두 방법 다 장단점이 있습니다.

  1. 데이터 추가 방법의 장점은 시간을 절약할 수 있다는 것입니다. 단점은 overfitting의 가능성이 있습니다.

  2. 처음부터 다시 학습하는 방법의 장점은 overfitting을 피할 수 있다는 것입니다. 단점은 시간이 오래 걸린다는 것입니다.

시간 제약이 있다면 1) 방법을 먼저 시도해보시길 권해드립니다. overfitting이 있더라도 early stopping 등의 방법으로 어느 정도 완화할 수 있습니다.

그래도 품질 개선이 안된다면 2) 방법을 시도할 필요가 있습니다. 모델 크기나 hyperparameter 튜닝을 통해 학습 속도를 높일 수는 있지만 처음부터 학습하는 것을 피할 수는 없을 것 같습니다.

적절한 batch size와 learning rate 조정을 통해 학습 속도를 높일 수 있습니다. 사용 가능한 GPU 메모리에 따라 가능한 큰 batch size를 사용하시고, learning rate는 cyclic learning rate 등의 방법을 시도해보세요.

학습 속도를 높이는 것 외에 클라우드 서비스를 이용하는 것도 방법이 될 수 있을 것 같습니다. AWS나 GCP에서 GPU 인스턴스를 임대하면 비용 대비 효율적으로 학습이 가능합니다.

위 답변이 kbuwel님의 문제 해결에 도움이 되었기를 바랍니다. 더 자세한 질문이 있다면 주저 마시고 다시 질문해 주세요. 감사합니다.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!
  • 아래 답변은 OpenAI의 GPT-4 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요! VITS 음성합성 모델과 관련하여 데이터 추가와 학습 시간에 대한 고민을 하고 계신 것 같네요. 질문 내용을 정리해보면, 33분 분량의 데이터로 전이학습을 진행했음에도 발음이 좋지 않다는 피드백을 받으셨고, 데이터를 추가하는 것이 좋을지, 아니면 처음부터 다시 학습을 시작하는 것이 좋을지에 대한 조언을 구하고 계신 것 같습니다. 또한, 학습 시간과 전기세에 대한 부담이 크다는 점도 걱정하고 계시네요.

  1. 데이터 추가에 대한 고민
    데이터 추가는 모델의 성능을 향상시킬 수 있는 방법 중 하나입니다. 하지만, 데이터가 충분하다고 해서 반드시 발음이 좋아지는 것은 아닙니다. 데이터의 질, 다양성, 발음의 정확성 등이 중요합니다. 또한, 모델이 오버피팅되지 않도록 주의해야 합니다.

  2. 처음부터 다시 학습하는 것에 대한 고민
    처음부터 다시 학습하는 것은 시간과 자원이 많이 소요되는 작업입니다. 하지만, 기존 학습된 모델이 원하는 성능을 내지 못한다면, 데이터셋을 재검토하거나 모델 구조를 변경하는 등의 조치가 필요할 수 있습니다.

  3. 학습 시간과 전기세에 대한 고민
    학습 시간을 단축하기 위해 학습률을 조정하거나, 더 강력한 하드웨어를 사용하는 방법이 있습니다. 하지만, 이는 추가적인 비용이 발생할 수 있습니다.

이러한 상황에서 몇 가지 제안을 드리고자 합니다:

  • 데이터의 질 개선: 데이터셋을 다시 검토하여 발음이 명확하고 다양성이 높은 데이터를 선별하거나 추가로 수집해보세요.
  • 모델 하이퍼파라미터 조정: 학습률을 조금 더 높이거나, 다른 하이퍼파라미터를 조정하여 학습 속도를 높일 수 있습니다. 하지만, 이는 모델의 성능에 영향을 줄 수 있으므로 주의가 필요합니다.
  • 전이학습 활용: 이미 잘 학습된 모델을 기반으로 전이학습을 진행하여 학습 시간을 단축할 수 있습니다.
  • 클라우드 컴퓨팅 서비스 활용: AWS, Google Cloud, Azure 등의 클라우드 서비스를 활용하면 강력한 컴퓨팅 자원을 사용할 수 있습니다. 비용이 발생하지만, 시간과 전기세를 절약할 수 있습니다.

학습률 조정에 대한 예시 코드를 아래에 제공해드립니다:

# 모델, 옵티마이저, 손실 함수 등을 정의합니다.
model = ...
optimizer = torch.optim.Adam(model.parameters(), lr=12e-4)  # 학습률을 조정합니다.

# 학습 루프
for epoch in range(num_epochs):
    for batch in dataloader:
        # 모델 학습 코드를 작성합니다.
        ...

학습 과정에서 발생할 수 있는 문제에 대한 더 자세한 정보는 PyTorch 공식 문서나 튜토리얼을 참고하시면 도움이 될 것입니다. PyTorch 공식 튜토리얼 링크는 다음과 같습니다:

제 답변이 정확하지 않을 수도 있으니, 다양한 자료를 참고하시면서 최적의 해결책을 찾으시길 바랍니다.


  • 이 답변이 도움이 되셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!
  • 아래 답변은 OpenAI의 GPT-4-Turbo 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요! VITS 음성합성 모델과 관련하여 데이터 추가와 학습 시간에 대한 고민을 하고 계신 것 같네요. 질문 내용을 정리해보면, 33분 분량의 데이터로 전이학습을 진행했음에도 발음이 좋지 않다는 피드백을 받으셨고, 데이터를 추가하는 것이 좋을지, 아니면 처음부터 다시 학습을 시작하는 것이 좋을지에 대한 조언을 구하고 계신 것 같습니다. 또한, 학습 시간과 전기세에 대한 부담도 함께 언급하셨네요.

먼저, 발음의 질을 향상시키기 위해서는 데이터의 양과 질, 그리고 학습 방법이 중요합니다. 33분 분량의 데이터로 전이학습을 진행했을 때 발음이 좋지 않다면, 데이터의 양을 늘리거나 다양성을 향상시키는 것이 도움이 될 수 있습니다. 하지만, 데이터를 추가하는 것이 오버피팅을 유발할 수도 있으므로, 데이터의 질을 점검하고, 필요하다면 데이터 클리닝을 진행하는 것이 좋습니다.

학습 시간과 관련하여, 더 빠른 학습을 위해 학습률(learning rate)을 조정하거나, 학습 스케줄러를 사용하여 학습 과정을 최적화할 수 있습니다. 또한, 모델의 크기를 줄이거나, 학습 중간에 체크포인트를 저장하여 필요할 때만 전체 학습을 재개하는 방법도 고려해볼 수 있습니다.

전기세에 대한 부담을 줄이기 위해서는 클라우드 기반의 학습 서비스를 이용하는 것도 하나의 방법입니다. 비용이 들기는 하지만, 빠른 학습 속도와 전기세 걱정 없이 학습을 진행할 수 있습니다.

아래는 학습률을 조정하고 체크포인트를 저장하는 예시 코드입니다:

import torch
from torch.optim.lr_scheduler import StepLR
from your_model import YourModel
from your_dataset import YourDataset

# 모델과 데이터셋 초기화
model = YourModel()
dataset = YourDataset()
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)

# 옵티마이저와 스케줄러 설정
optimizer = torch.optim.Adam(model.parameters(), lr=12e-4)
scheduler = StepLR(optimizer, step_size=1000, gamma=0.1)

# 학습 루프
for epoch in range(num_epochs):
    for batch in dataloader:
        # 학습 코드 작성
        # ...
        optimizer.step()
    scheduler.step()

    # 체크포인트 저장
    if epoch % checkpoint_interval == 0:
        torch.save(model.state_dict(), f'checkpoint_epoch_{epoch}.pth')

학습률 스케줄러에 대한 자세한 정보는 PyTorch 공식 문서에서 확인하실 수 있습니다:

클라우드 기반 학습 서비스를 이용하는 것에 대한 정보는 각 클라우드 서비스 제공업체의 공식 문서를 참고하시면 됩니다.

제 답변이 정확하지 않을 수도 있으니, 여러 자료를 참고하시고, 여러 시도를 해보시는 것을 추천드립니다. VITS 모델 학습에 성공하시길 바랍니다!


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!

이런 경우 GPU cloud service를 이용하지 않나요? Kaggle 이나 구글 코랩 이외에도 아주 값싼 서비스 비용으로 서비스 하는 곳이 최근에 많이 생겨서
그런 곳을 이용해 보시기 바랍니다.

자신의 Computer GPU가 Training에 너무 낮은 사양을 가지고 있으면 결국 외부 Cloud Service를 사용하더라구요.

이걸 참고해보시기 바랍니다. https://www.youtube.com/watch?v=s7OBlZck2RQ

그리고, 음성데이터 같은 경우에는 Mamba같은 새로나온 Transformers Alterntive를 사용하는 방법이 곧 나올 것 같습니다. 나온지 2달이 채 되지 않아 아직은 Training App이 아직 나오지 않은 걸로 알고 있습니다.

Voice Cloning이라면 RVC이라는 Training App이 있습니다만 저도 3060에서 Training 시키다가 VRAM을 무지막지하게 사용하는 Transformer에 의해 Cuda OOM 시게 맞고 사용 포기 했습니다. 이외에도 TorToiSe TTS 등등 Voice Cloning쪽에 많은 App들이 나오고 있습니다.

Voice Cloning 분야에서 한국어도 지원하는 Python App들이 마구 쏟아지고 있는 중이니 잘 찾아보시면 뭔가 해결책이 있을 거로 판단됩니다.

1개의 좋아요

제가 학습하고자 하는 것은 보이스클로닝이 아닙니다. 글자를 음성으로 변환해주는 tts를 원하지 음성 변조를 하려는 것이 아닙니다. 그리고 보이스클로닝중 Korean-Voice-Cloning 이건 음성을 복제하는 것은 맞지만 소스가 오래ㄷ 되어서 그런지 영어 외에는 한국어 음성이 나오지 않았습니다.

Voice Clone이 되어야만 그 목소리로 TTS를 사용할 수 있게 해줍니다.
특정인과 그대로 똑같은 TTS를 음성으로 해줄 수도 있고 일부 특징만 부분적으로 TTS음성을 만들어 수도 있습니다. 피치를 조정하거나 여러가지 변환을 시켜서 약간 다르게도 할수 있는등 다양한 옵션이 있습니다.

용어가 cloning 이라고 해서 목소리를 베껴주는 게 아니라 그 목소리 모델을 훈련 시키는 겁니다. 이게 훈련되어서 Voice Model file, *.pth 등이 제대로 생성되어야 그걸로 TTS를 적용할 수 있습니다. 참고 하시기 바랍니다.