Aratako/Irodori-TTS
A Flow Matching-based Text-to-Speech Model with Emoji-driven Style Control
Irodori‑TTS – 흐름 매칭 음성 합성
무엇인가요 – Rectified Flow Diffusion Transformer라는 흐름 매칭 확산 모델을 사용하여 DACVAE 코덱이 생성한 연속 잠재 표현 위에서 일본어 음성을 텍스트에서 생성하는 연구 수준의 TTS 시스템입니다. Echo‑TTS의 설계를 따릅니다.
주요 기능
- 제로샷 음성 클론 – 짧은 참조 녹음 파일을 제공하면 모델이 해당 화자의 음성을 모방합니다.
- 다중 모달 "VoiceDesign" – 일반 텍스트, 참조 음성, 그리고 선택적 캡션 (원하는 음성 스타일에 대한 짧은 설명)을 결합하여 화자 정체성, 감정, 말하기 스타일을 제어합니다. 캡션은 일반 텍스트 또는 이모지 기반의 신호로 사용할 수 있습니다.
- 자동 지속 시간 예측 – 모델이 출력의 길이를 추정하므로 보통 길이를 명시할 필요가 없습니다.
- PEFT LoRA 미세 조정 – 배포된 체크포인트 위에 가벼운 어댑터를 훈련하여 전체 재훈련 없이 새로운 데이터에 모델을 적응시킬 수 있습니다.
- 화자 역전 (Speaker-inversion) – 추론 시 교체 가능한 화자 임베딩 파일을 미리 훈련할 수 있으며, 각 호출마다 참조 오디오를 업로드할 필요가 없습니다.
- MeanFlow 정제된 변형 – 최소 4단계의 확산으로 합성할 수 있는 정제된 체크포인트(v4‑Small‑MF)로, 생성 속도를 크게 향상시킵니다.
- 양자화된 체크포인트 – int8/int4/float8 무게 전용 변형을 제공하여 저메모리 추론에 적합합니다.
사용 방법
- 설치 – 리포지토리 클론 후
uv sync --extra cu128(또는rocm,xpu,cpu)로 적절한 PyTorch 확장 설치. - 추론 실행 – 단일 명령어(
infer.py)로 Hugging Face 체크포인트, 입력 텍스트, 선택적 참조 wav(또는 임베딩), 출력 경로를 지정 가능. - 웹 UI – 두 가지 Gradio 앱이 포함되어 있습니다:
gradio_app.py– 기본 클론/화자 역전용.gradio_app_voicedesign.py– 캡션 + 참조 "VoiceDesign" 모드용.
- 훈련 / 미세 조정 – 스크립트(
train.py,prepare_manifest.py)는 전체 모델 미세 조정, LoRA 어댑터, 화자 역전 훈련을 지원합니다. 멀티 GPU DDP는torchrun을 통해 활성화 가능. - 변환 – 훈련 후 체크포인트를 순수 추론 전용
.safetensors파일로 변환 가능.
모델 아키텍처 (v4.1‑Small)
- 공유 ModernBERT 인코더 – 주 텍스트와 캡션 모두를 처리.
- 참조 잠재 인코더 – 최대 120초의 참조 오디오에서 DACVAE 잠재 표현을 인코딩.
- 조건 프로젝터 – 텍스트 및 캡션 임베딩을 확산 모델의 조건 공간으로 매핑.
- 확산 트랜스포머 (DiT) – Low‑Rank AdaLN, 반 RoPE, SwiGLU MLP를 갖춘 공동 주의 블록.
- 지속 시간 예측기 – 조건 입력에서 출력 길이를 추정하는 내장 모듈.
모델 다운로드 – 사전 훈련된 체크포인트와 오디오 샘플은 Hugging Face에 호스팅되어 있습니다 (예: Aratako/Irodori‑TTS‑v4.1‑Small). 데모 스페이스에서 모델의 작동을 확인할 수 있습니다.
일반적인 사용 사례
- 가상 어시스턴트, 오디오북, 게임 캐릭터용 자연스러운 일본어 음성 생성.
- 제로샷 클론을 통해 새로운 화자 음성의 빠른 프로토타이핑.
- 텍스트 캡션(예: "평온한 여성 목소리" 또는 이모지 시퀀스)을 제공하여 스타일 제어된 내레이션.
- 엣지 GPU에서 가벼우면서도 양자화된 TTS 서비스 배포.
관련 프로젝트 – 리포지토리는 OpenAI 호환 서버(Irodori‑TTS‑Server)를 언급하며 API 노출을 용이하게 하며, Echo‑TTS 및 Facebook의 DACVAE 코덱을 기반으로 합니다.
모든 세부 정보는 리포지토리의 README에서 직접 가져왔으며, 추가 기능은 추측하지 않습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트