Fish Audio Drama3: Runtime Selection and First-Audio Checks
Fish Audio Drama3 is a text-to-speech model for multi-speaker and long-form generation. Before building a scene around it, choose the runtime that will serve the checkpoint. Fish Speech and SGLang Omni expose different request formats; a working example from one is not a drop-in request for the other. Start with a short, inspectable audio file before introducing reference voices or streaming.
AI-generated editorial illustration, not a product screenshot or generated speech result.
Documentation checked October 14, 2026. No Drama3 inference, voice cloning, hosted-account access check or latency measurement was performed. The companion audio checker is tested against synthetic files, including silence, not model-generated speech.
Choose the Fish Audio Drama3 runtime before copying a request
Use fishaudio/drama-3 as the checkpoint reference, then record which server loads it. The publisher's model card links both the Fish Speech implementation and the SGLang Omni cookbook. Their surrounding client protocols are not interchangeable.
| Local route | Documented first request | What selects the checkpoint |
|---|---|---|
| SGLang Omni | JSON to /v1/audio/speech, with input |
The server's --model-path |
| Fish Speech | Its client sends msgpack to /v1/tts |
The weights loaded at server startup |
The SGLang cookbook documents the first route. The Fish Speech inference guide documents the second and says there is no per-request model field. Do not add a guessed model: drama3 field to that client and assume the server has switched models.
Keep this distinction in a deployment record. Store the runtime version, checkpoint identifier and revision, request path, transport, output format and server startup options. A model name in an application menu is weaker evidence than the configuration of the process handling the request.
Check the deployment boundary before downloading weights
The current Fish Speech installation guide lists at least 48 GB GPU memory for Drama3 in FP8 and NVIDIA-only execution for that implementation. Its CPU, Apple MPS and AMD ROCm alternatives are not Drama3 support, and its compile option belongs to S2-Pro. This is a runtime-specific requirement, not a benchmark of every possible implementation.
A shared repository can therefore install successfully while the selected model remains unsupported. Check the actual model/runtime combination before renting a machine or pulling a large checkpoint. For a local service, prefer a loopback-bound endpoint during the first check; add authentication and an approved access boundary before allowing remote clients.
Open weights do not settle every usage question. Inspect the current checkpoint license file separately from runtime-code terms and hosted-service terms. This guide does not determine commercial eligibility. Recording permission for a person's voice is another decision, not something a successful model download proves.
Prepare one short request without a reference voice
The simplest useful probe asks for a short ordinary sentence. It reduces the number of things that can fail and does not upload anyone's voice. This proposed request JSON follows the SGLang Omni route:
{
"input": "Please leave the parcel at the side door."
}
After an approved local server is running, a reader could send it with:
curl --fail-with-body --max-time 90 \
http://127.0.0.1:8000/v1/audio/speech \
-H "Content-Type: application/json" \
--data-binary @request.json --output first-audio.wav
This command was not run here. It is not a hosted Fish Audio API example, an entitlement check or a promise that the response is valid WAV. Confirm the running server's route and format. Do not send this JSON body to the Fish Speech msgpack endpoint.
Retain the HTTP status, headers and file as separate evidence. A request error is not an audio result; a response saved with a .wav extension is not necessarily WAV. Stop on a protocol mismatch rather than adding retries to an unchanged request. A timeout also does not establish whether remote computation stopped.
Inspect the audio container, then listen for the spoken result
Run the local WAV container checker on a saved PCM WAV:
Download the offline check kit for the helper, tests and input records. The kit uses only Python standard-library checks; it does not run the reviewed model or contact a provider.
python3 wav_probe.py first-audio.wav
It reports sample rate, channels, sample width, frame count and duration, and rejects empty or truncated frame data. For common unsigned 8-bit and signed 16-, 24- and 32-bit PCM, it also flags digital silence. It makes no network requests, reads no API keys and does not identify speakers.
The checker cannot decide whether the sentence was spoken correctly. A non-silent file could contain noise or the wrong words. A valid container still needs an approved listening review for intelligibility, pronunciation, clipping and completion. Its output deliberately keeps speechAcceptanceVerified false.
Keep the original encoded result when investigating a failure. If it is MP3, Opus or raw PCM, a WAV-only parser rejecting it may indicate the wrong parser, not a failed model. Raw streaming PCM needs its sample format and rate from the transport contract; renaming it does not create a WAV header.
Add speaker tags only after the single-voice path is understood
The model card documents speaker tags from <|speaker:0|> through <|speaker:15|>. These assign roles within a generated scene; they are not proof of a person's identity. A proposed two-role script might begin:
<|speaker:0|>The parcel is beside the door.
<|speaker:1|>Thank you. I will collect it this afternoon.
Choose and review the role-to-reference mapping explicitly before cloning a voice. The script alone does not establish that two distinctive voices will be produced. Use the selected runtime's documented reference fields, retain transcripts and permission evidence, and avoid putting private clips in public request examples.
The first-audio review record is an editorial template, not an API payload. Measurements and listening decisions start as null. A reviewer fills them from the real attempt; the template cannot verify ownership or consent from a checkbox.
Change one thing between attempts. Keep the text fixed while reviewing a reference assignment, then assess a short scene before moving to long-form material. At scene boundaries, check for swapped roles, missing words and incomplete endings instead of treating the first playable chunk as completion.
Treat streaming and published speed figures as separate checks
A first chunk and a complete scene answer different questions. Inspect the terminal state and final saved audio, not just the first audible bytes. Define how a client detects an interrupted stream and how it preserves partial output for review.
The cookbook's performance table describes an H200 setup and its own workload. It does not predict your GPU, cold startup, network or concurrent clients. Measure those conditions separately when a deployment is authorized, and distinguish time to first audio from time to the last chunk. DataLLM Lab's evaluation methodology explains why a proposed check is not an executed model result.
FAQ
Is the Drama3 JSON example valid for every Fish Audio API?
No. The example targets the documented local SGLang Omni speech route. Fish Speech uses a different client transport, and a hosted API needs its own current model-selection and authentication documentation.
Can I run Drama3 on a Mac using the Fish Speech CPU path?
The reviewed Fish Speech guide does not document that path for Drama3. Check a specific alternative implementation before assuming its platform support transfers to this checkpoint.
Does the audio checker confirm voice quality or consent?
No. It inspects PCM WAV structure and digital silence. Spoken content, role consistency, permissions and usage rights require separate review. Synthetic checker tests do not demonstrate model quality.
Conclusion
Start a Fish Audio Drama3 integration by fixing the runtime, transport and checkpoint, then preserving one short audio result. Inspect the container before listening, and evaluate reference assignments before expanding a scene. Keep unknown results unfilled in the review record; an open checkpoint or playable file is not a substitute for that evidence.
DataLLM Lab