-
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 등의 연구 및 코드 기반 활용