Sopro TTS: CPU에서 실행되는 제로샷 음성 복제 지원 1억6900만 파라미터 TTS 모델

1 month ago 10

  • Sopro TTS는 영어 기반의 경량 텍스트-음성 변환 모델로, 제로샷 음성 복제와 스트리밍 생성을 지원
  • 1억6900만 개 파라미터를 가지며, CPU에서 0.25 RTF 속도로 30초 오디오를 약 7.5초에 생성
  • 3~12초 길이의 참조 음성만으로 화자의 목소리를 복제할 수 있으며, WaveNet 스타일의 dilated conv와 경량 cross-attention 구조 사용
  • 단일 L40S GPU로 훈련된 저예산 프로젝트로, 데이터 품질 개선 시 성능 향상 여지 존재
  • 스트리밍 및 비스트리밍 모드, CLI·Python API·웹 데모를 모두 지원해 개발자 실험과 통합 활용성이 높음

Sopro TTS 개요

  • Sopro는 포르투갈어로 ‘숨결’을 뜻하며, 경량 영어 TTS 모델로 개발
    • Transformer 대신 dilated convolution과 cross-attention을 결합한 구조
    • 단일 L40S GPU로 훈련된 개인 프로젝트 형태
  • 주요 특징
    • 169M 파라미터, 스트리밍 지원, 제로샷 음성 복제
    • CPU 기준 0.25 RTF로 30초 오디오를 7.5초에 생성
    • 3~12초 길이의 참조 오디오로 음성 복제 가능

설치 및 실행

  • 최소 의존성 버전만 지정되어 별도 환경 생성 없이 설치 가능
    • 예시: torch==2.6.0 버전이 M3 CPU에서 약 3배 성능 향상
  • 설치 방법
    • PyPI: pip install sopro
    • GitHub 저장소: git clone 후 pip install -e .

사용 예시

  • CLI 실행 예시
    • 텍스트, 참조 오디오, 출력 파일 지정 가능
    • --style_strength, --no_stop_head, --stop_threshold, --stop_patience 등 세부 제어 파라미터 제공
  • Python API 예시
    • SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")로 모델 로드
    • 비스트리밍스트리밍 두 방식 모두 지원
    • 스트리밍 모드에서는 생성된 오디오 청크를 순차적으로 결합 가능

인터랙티브 스트리밍 데모

  • 설치 후 uvicorn demo.server:app 명령으로 로컬 서버 실행
  • 또는 Docker로 빌드 및 실행 가능
    • docker build -t sopro-demo .
    • docker run --rm -p 8000:8000 sopro-demo
  • 브라우저에서 http://localhost:8000 접속으로 데모 확인 가능

주의사항 및 한계

  • 출력 일관성 부족 가능성 있으며, 파라미터 조정 필요
  • 음성 복제 품질은 마이크 품질과 주변 소음에 크게 의존
  • 비스트리밍 버전이 더 높은 음질 제공
  • 생성 길이 약 32초(400프레임) 로 제한, 초과 시 환각적 출력 발생
  • torchaudio 사용 시 ffmpeg 필요, soundfile 사용 권장
  • 훈련 데이터는 사전 토크나이즈된 형태로, 원본 오디오는 저장 공간 문제로 폐기됨
  • 향후 훈련 코드 공개 및 다국어 지원 확대 계획 언급

훈련 데이터

  • Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22, MLS 데이터셋 사용

참고 및 기반 기술

  • Mimi Codec (Kyutai) , WaveNet, Attentive Stats Pooling, AudioLM, CSM 등의 연구 및 코드 기반 활용

Read Entire Article