Fish Audio Drama 3 TTS 모델 소개
Fish Audio Drama 3 다중 화자 TTS 모델
Fish Audio Drama 3
Fish Audio Drama 3는 Fish Audio의 차세대 텍스트-음성 변환 모델로, 다중 캐릭터 장면과 장문 콘텐츠를 위해 만들어졌습니다. 다중 화자 생성, 음성 복제, 자연어 제어를 지원합니다.
- 35B parameters, 3B active per token: 하이브리드(전체 + 선형) 어텐션을 갖춘 MoE 텍스트 백본
- Codebook-MTP audio decoder: 전체 시퀀스를 따라 10개의 코드북을 인과적으로 디코딩
- FP8 MoE experts와 나머지 가중치는 bf16
- Speaker tags
<|speaker:0|>…<|speaker:15|>— 하나의 텍스트에 최대 16명의 캐릭터를 담을 수 있음 - Long text는 자동으로 청크로 분할되며 청크별로 스트리밍 가능
SGLang Omni로 실행
Drama 3는 출시일부터 SGLang-Omni에서 실행됩니다. 설치, 배포 및 스트리밍 API 예시는 Drama 3 Cookbook을 참고하세요.
git clone https://github.com/sgl-project/sglang-omni.git && cd sglang-omni
uv pip install --prerelease=allow -v -e ".[fishaudio]"sgl-omni serve --model-path fishaudio/drama-3 --port 8000vLLM-Omni로 실행
Drama 3는 vLLM-Omni에서 지원됩니다. 설치, 배포 및 API 예시는 Drama 3 vLLM-Omni Recipe를 참고하세요.
git clone https://github.com/vllm-project/vllm-omni.git && cd vllm-omni
uv pip install -e .vllm serve fishaudio/drama-3 --omni --port 8091사용 예시
아래 샘플이 복제하는 참조 클립은 수정되지 않은 원본입니다:
참조 en0 — 3.9초 길이의 클립으로, 위의 복제 예시에서 사용한 것과 같은 common_voice_en_10119832.wav이며, 전사문은 We asked over twenty different people, and they all said it was his.입니다:
포인트 태그
일반적인 /v1/tts 요청: 참조 1개(en0), 히스토리 없음, 그리고 이벤트가 도착해야 하는 위치에 태그를 텍스트 안에 써 넣는 방식입니다.
{
"text": "[sighs] Fine. If we miss it, it's on you. [laughs] Well, maybe that's fair.",
"references": [{"audio_path": "https://huggingface.co/datasets/zhaochenyang20/seed-tts-eval-mini/resolve/main/en/prompt-wavs/common_voice_en_10119832.wav", "text": "We asked over twenty different people, and they all said it was his."}]
}이어서 편집하기
이전 VQ 토큰만 보내고 일반적인 언어 모델처럼 전달하면 됩니다.
{
"text": "The quarterly report is due on Thursday, so please finish it by noon.",
"references": [{"audio_path": "https://huggingface.co/datasets/zhaochenyang20/seed-tts-eval-mini/resolve/main/en/prompt-wavs/common_voice_en_10119832.wav", "text": "We asked over twenty different people, and they all said it was his."}],
"previous_takes": ["The quarterly report is due on Wednesday, so please finish it by noon."]
}첫 번째 결과에 이어 연결한 두 번째 편집:
K5는 두 번째 편집을 이어 붙입니다: by noon이 by five로 바뀌며, 앞선 두 테이크가 모두 컨텍스트에 포함됩니다.
{
"text": "The quarterly report is due on Thursday, so please finish it by five.",
"references": [{"audio_path": "https://huggingface.co/datasets/zhaochenyang20/seed-tts-eval-mini/resolve/main/en/prompt-wavs/common_voice_en_10119832.wav", "text": "We asked over twenty different people, and they all said it was his."}],
"previous_takes": [
"The quarterly report is due on Wednesday, so please finish it by noon.",
"The quarterly report is due on Thursday, so please finish it by noon."
]
}프로덕션 서빙
아래의 모든 수치는 NVIDIA H200 GPU에서 Seed-TTS 영어 프롬프트로 스트리밍 요청을 수행해 측정했습니다. 각 요청은 하나의 사전 인코딩된 참조(vq_codes와 그 전사문)에서 음성을 복제하며, temperature 1.0, top_p 0.9, top_k 30, max_new_tokens 500을 사용합니다. 처리량은 초당 생성된 음향 프레임 수를 의미합니다. TTFA는 첫 오디오까지 걸리는 시간입니다. RTF는 요청을 보낸 시점부터 마지막 오디오 청크를 받을 때까지의 시간을 반환된 오디오 길이로 나눈 값입니다.
| 동시성 | 처리량 (frames/s) | TTFA p50 | TTFA p95 | RTF (평균) |
|---|---|---|---|---|
| 1 | 166.7 | 88.9 ms | 90.8 ms | 0.131 |
| 2 | 287.0 | 96.2 ms | 130.1 ms | 0.152 |
| 4 | 467.6 | 108.2 ms | 156.4 ms | 0.186 |
| 8 | 678.1 | 153.2 ms | 210.9 ms | 0.256 |
| 16 | 927.6 | 210.1 ms | 287.2 ms | 0.373 |
| 32 | 1,244.7 | 304.6 ms | 396.1 ms | 0.551 |
| 64 | 1,687.3 | 450.9 ms | 1,020.1 ms | 0.801 |
표 1. 한 대의 H200에서 측정한 Drama 3 스트리밍 성능. 각 셀은 4회 실행의 평균입니다.
단일 스트림은 첫 오디오를 100ms 이내에 받습니다. 동시성 16에서는 오디오가 여전히 재생 속도보다 약 2.7배 빠르게 생성되며, 동시성 64에서도 평균 RTF는 0.80을 유지합니다. SGLang-Omni에서는 파이프라인 단계들을 어떤 프로세스에 묶고 GPU에 어떻게 배치할지는 배포 시 설정 사항이며, 모델별 코드에 포함되지 않습니다. 표 2는 이를 사용해 더 높은 동시성에서 두 가지 보코더 배치를 비교합니다. 이 비교는 보코더의 기본 GPU 점유율, 동시성 수준당 1,088개의 요청, 그리고 서버 시작 6회의 평균을 사용합니다. 처리량에는 각 스트림을 끝내는 발화 종료 프레임도 포함됩니다.
| 보코더 배치 | 동시성 | 처리량(frames/s) | TTFA p50 | TTFA p95 |
|---|---|---|---|---|
| Engine의 GPU | 128 | 2,177 | 685 ms | 1,412 ms |
| Engine의 GPU | 256 | 2,422 | 3,403 ms | 4,255 ms |
| 두 번째 GPU | 128 | 3,692 | 401 ms | 995 ms |
| 두 번째 GPU | 256 | 4,160 | 2,146 ms | 2,469 ms |
표 2. 보코더 배치별 Drama 3 스트리밍 성능. 각 셀은 6회 서버 시작의 평균입니다.
보코더가 엔진의 GPU에 있을 때, 256개 스트림에서는 보코더가 완전히 점유되어 새 스트림의 첫 오디오는 대기열에서 기다립니다. Deployment에 설명된 대로 이를 두 번째 GPU로 옮기면, 256개 스트림에서 처리량은 약 72% 증가하고 TTFA 중앙값은 37% 낮아졌습니다. 동시 스트림이 많이 필요하면서 첫 오디오까지의 시간도 짧아야 할 때는 이 구성을 사용하세요.
링크
- Fish Audio Playground
- Fish Speech GitHub
- Technical Report
- Fish Audio Drama 3 SGLang Omni Cookbook
- SGLang Omni
- Fish Audio Drama 3 vLLM-Omni Recipe
라이선스
이 모델은 Fish Audio Community License 하에 라이선스가 부여됩니다. 자세한 내용은 라이선스 파일을 참조하세요.
출처
- 원문: https://huggingface.co/fishaudio/drama-3 (2026-10-25 · huggingface.co)