Built for voice agents that can't wait 600ms

Fish Audio: Fish Audio Drama 3 (Preview)

fish/drama-3-preview
active tts 1 provider
Playground

Fish Audio's Drama 3 text-to-speech model (preview): a new TTS model exposed on the same /v1/tts, streaming and WebSocket endpoints as the S2 family, with single-speaker synthesis and multi-speaker dialogue via <|speaker:N|> tags. Preview status: Fish states its behavior and availability may change.

AuthorFish Audio
Languagesnot specified
VoicesLoading...
Response formatsMP3 · WAV · PCM · Opus
Statusactive

Providers

Different providers can host the same model. Choose one provider when you need a fixed backend, or let routing select among them.

ProviderSlugPer 1k charactersLatencyiFor TTS, latency is measured as time to first byte of audio. For STT, latency is measured as time to first token.ModesUptime
Fish Audio 19 params
fish
$0.015
—
Synchronous · Streaming

Supported languages

No reviewed language list for this model yet.

Voices

Features

Text to speech

Generates spoken audio from text input.

text_to_speech
Streaming

Listed in the model enum of the streaming HTTP (/v1/tts/stream/with-timestamp) and WebSocket (/v1/tts/live/with-timestamp) endpoints in the OpenAPI document; the AsyncAPI document for /v1/tts/live still omits it (doc inconsistency, unprobed).

streaming
Synchronous

Synthesizes speech from fully-submitted text in a single POST /v1/tts request.

synchronous
Voice cloning

Accepts reference_id (persistent voice models) and references (zero-shot reference audio) like every Fish TTS model; the endpoint schema is model-agnostic.

voice_cloning
Multi-speaker dialogue

Multi-speaker dialogue synthesis (reference_id array + <|speaker:N|> tags) is available with the S2 family and drama-3-preview, not s1.

multi_speaker

Code

Client
Mode
Language

ElevenLabs SDK streaming TTS

Routes the ElevenLabs SDK through allmodels and streams the audio response.

import { ElevenLabsClient } from "elevenlabs";

const client = new ElevenLabsClient({
  apiKey: process.env.ALLMODELS_API_KEY,
  baseUrl: "https://api.allmodels.io/el"
});

const stream = await client.textToSpeech.stream("voice_id", {
  text: "I'm sorry, Dave. I'm afraid I can't do that.",
  modelId: "fish/drama-3-preview",
  outputFormat: "mp3_44100_128"
}, {
  queryParams: {
    provider: {
      "only": [
        "fish"
      ]
    }
  }
});

const reader = stream.getReader();
for (;;) {
  const { done, value } = await reader.read();
  if (done) break;
  // Write value to your response, file, or audio playback pipeline.
}