Built for voice agents that can't wait 600ms

Fish Audio: Fish Audio S1

fish/s1
active tts 1 provider
Playground

Previous-generation Fish Audio text-to-speech model with parenthesis-style emotion tags.

AuthorFish Audio
Languages1 languages
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

1 languages
English en

Voices

Features

Text to speech

Generates spoken audio from text input.

text_to_speech
Streaming

Supports streaming audio output (HTTP + WebSocket) with optional timestamps.

streaming
Synchronous

Synthesizes speech from fully-submitted text in a single synchronous request.

synchronous
Multilingual

Supports 13 languages.

multilingual
Voice cloning

Supports instant (reference audio) and persistent (reference_id) voice cloning.

voice_cloning
Emotion / expression control

S1 uses (parenthesis) emotion tags.

emotion_control

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/s1",
  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.
}