Fish Audio Drama 3

Fish Audio Drama 3 is Fish Audio's new-generation text-to-speech model, built for multi-character scenes and long-form content. It supports multi-speaker generation, voice cloning and natural-language control.

  • 35B parameters, 3B active per token: MoE text backbone with hybrid (full + linear) attention
  • Codebook-MTP audio decoder: 10 codebooks decoded causally over the whole sequence
  • FP8 MoE experts with the remaining weights in bf16
  • Speaker tags <|speaker:0|> … <|speaker:15|> — one text can carry up to 16 characters
  • Long text is chunked automatically and can be streamed per chunk

Launch with SGLang Omni

Drama 3 runs on SGLang-Omni from launch day. For installation, deployment, and streaming API examples, see the 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 8000

Example Usage

The reference clip the samples below clone, unmodified:

The reference, en0 — a 3.9 s clip, the same common_voice_en_10119832.wav the cloning example above uses, with the transcript We asked over twenty different people, and they all said it was his.:

Point tags

A plain /v1/tts request: one reference (en0), no history, and the tags written into the text at the position where the event should land.

{
  "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."}]
}

Editing as continuation

Just send the previous VQ tokens and sent it as normal language models do.

{
  "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."]
}

A second edit chained onto the result of the first:

K5 chains a second edit: by noon becomes by five, with both earlier takes in the context.

{
  "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."
  ]
}

Production Serving

All numbers below were measured on NVIDIA H200 GPUs with streaming requests on Seed-TTS English prompts. Each request clones a voice from one pre-encoded reference (vq_codes with its transcript) and uses temperature 1.0, top_p 0.9, top_k 30 and max_new_tokens 500. Throughput counts generated acoustic frames per second. TTFA is the time to first audio. RTF is the time from sending a request to its last audio chunk, divided by the duration of the returned audio.

Concurrency Throughput (frames/s) TTFA p50 TTFA p95 RTF (mean)
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

Table 1. Drama 3 streaming performance on one H200. Each cell is the mean of four runs.

A single stream gets its first audio in under 100 ms. At concurrency 16, audio is still generated about 2.7× faster than it plays back, and at concurrency 64 mean RTF stays at 0.80. In SGLang-Omni, how the pipeline stages are grouped into processes and placed on GPUs is deployment-time configuration rather than per-model code. Table 2 uses this to compare two vocoder placements at higher concurrency, with the vocoder's default GPU share, 1,088 requests per concurrency level, and the average of six server starts. Its throughput also counts the end-of-speech frame that ends each stream.

Vocoder placement Concurrency Throughput (frames/s) TTFA p50 TTFA p95
Engine's GPU 128 2,177 685 ms 1,412 ms
Engine's GPU 256 2,422 3,403 ms 4,255 ms
Second GPU 128 3,692 401 ms 995 ms
Second GPU 256 4,160 2,146 ms 2,469 ms

Table 2. Drama 3 streaming performance by vocoder placement. Each cell is the mean of six server starts.

With the vocoder on the engine's GPU, at 256 streams the vocoder is fully loaded and each new stream's first audio waits in its queue. Moving it to a second GPU, as described under Deployment, gave about 72% more throughput and a 37% lower median TTFA at 256 streams. Use this layout when you need many concurrent streams and a short time to first audio together.

Links

License

This model is licensed under the Fish Audio Community License. Please refer to the license file for more information.

Downloads last month
23
Safetensors
Model size
36B params
Tensor type
BF16
·
F8_E4M3
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for fishaudio/drama-3

Quantizations
3 models

Spaces using fishaudio/drama-3 5