[오디오 전처리] RVC AI 성우 데이터셋 슬라이싱 스크립트

[오디오 전처리] RVC AI 성우 데이터셋 슬라이싱 스크립트

 

안녕하세요. 파이썬 기반의 자동화 파이프라인을 구축하고 있는 개발자입니다.

로컬 환경에서 RVC(Voice Conversion) 모델을 학습할 때, 10분 이상의 롱테이크 오디오를 그대로 인풋으로 밀어 넣으면 consumer GPU(RTX 2060 6GB 등) 환경에서는 세션이 바로 터져버립니다. 호흡선(무음)을 추적하여 오디오를 3~5초 조각으로 정밀 분할해 주는 자동화 스크립트를 공유합니다.

구형 requirements.txt 대신 현대 파이썬 표준 패키지 규격인 pyproject.tomluv sync를 사용하여 의존성 충돌을 최소화했습니다.

### 🛠 Core Audio Slicing Logic

import os
from pydub import AudioSegment
from pydub.silence import split_on_silence

def slice_audio_for_rvc(source_path, output_dir):
    audio = AudioSegment.from_file(source_path)
    chunks = split_on_silence(
        audio,
        min_silence_len=500,    # 500ms 이상 무음 감지
        silence_thresh=-40      # -40dB 이하 기준
    )

    os.makedirs(output_dir, exist_ok=True)

    for i, chunk in enumerate(chunks):
        chunk.export(f"{output_dir}/slice_{i:03d}.wav", format="wav")
    print(f"[SUCCESS] {len(chunks)} Slices Generated.")

📊 이론과 현실의 간극 (Overfitting 방지 팁)

  • 교과서적 이론: Loss 값이 0에 수렴할 때까지 무제한 에포크를 돌려야 완벽한 휴먼 보이스가 나온다.

  • 프로덕션 현실: 10분 내외 데이터셋 기준, 300 에포크가 넘어가는 순간 모델이 데이터를 통째로 외우는 과적합이 발생하여 금속성 노이즈와 딱딱한 기계음이 섞입니다. 가장 자연스러운 인퍼런스 결과물은 140~160 에포크 구간에서 동적으로 결정됩니다.

🚀 오픈소스 및 구동 영상 참고

상세한 오디오 디코딩 원리와 시각적인 파이프라인 빌드 과정은 제 유튜브 콘텐츠를 참고해 주시기 바랍니다. 로컬 빌드가 번거로우신 분들을 위해 깃허브 레포지토리를 그대로 긁어와 구글 가상 컴퓨터에서 1초 만에 실행 가능한 Google Colab 링크도 함께 첨부합니다. 검증된 소스이니 안심하고 사용하셔도 됩니다. 도움이 되셨다면 깃허브 Star() 한 번씩 부탁드립니다.

댓글을 작성해보세요.

채널톡 아이콘