YepAPI
AI Models

Fish Audio S2 Pro

Fish Audio's expressive narration and multi-speaker dialogue model.

POST/v1/media/queue
$0.0317/1K chars

Overview

S2 Pro is a multilingual text-to-speech model from Fish Audio, suited to expressive narration and multi-speaker dialogue. Speaking style and emotion are steered with natural-language controls rather than a fixed voice list.

PropertyValue
Model IDfish-audio/s2-pro
Aliasfish-s2-pro
Upstream Modelfish-audio/s2-pro
CategoryText to Speech
Languagesmultilingual
Outputmp3 (default) or pcm
Pricing$0.0317 per 1,000 characters

Usage

All media models use the async job queue. Submit a job, then poll for the result.

Step 1: Submit Job

const res = await fetch('https://api.yepapi.com/v1/media/queue', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'fish-audio/s2-pro',
    prompt: 'Your text to speak goes here.',
  }),
});
const { data } = await res.json();
// data.jobId — use this to poll for results
curl -X POST https://api.yepapi.com/v1/media/queue \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "fish-audio/s2-pro", "prompt": "Your text to speak goes here."}'

Step 2: Poll for Result

const status = await fetch(`https://api.yepapi.com/v1/media/status/${data.jobId}`, {
  headers: { 'x-api-key': 'YOUR_API_KEY' },
});
const { data: job } = await status.json();
// job.status — "pending" | "processing" | "completed" | "failed"
// job.result.audio — { mimeType, base64 } when completed
curl https://api.yepapi.com/v1/media/status/JOB_ID \
  -H "x-api-key: YOUR_API_KEY"

Write the audio to a file:

import { writeFileSync } from 'node:fs';

writeFileSync('speech.mp3', Buffer.from(job.result.audio.base64, 'base64'));

Request Body

ParameterTypeRequiredDescriptionDefault
modelstringYesfish-audio/s2-pro
promptstringYesThe text to speak (max 50,000 bytes)
options.voicestringNoVoice identifierprovider default
options.outputFormatstringNomp3 (default) or pcmmp3
options.speednumberNoPlayback speed multiplier. Honoured only by models that support it1.0

Voices

Fish Audio ships no fixed voice catalogue — omit options.voice and the provider selects its default, or steer the delivery through the input text itself.

Features

  • Expressive narration and multi-speaker dialogue
  • Natural-language control of style and emotion
  • Multilingual output
  • No voice ID required — the provider picks a default

Billing

Speech is billed on the length of the input text, in UTF-8 bytes — for English text one byte is one character. The cost is known before synthesis starts, so the balance check at submit time quotes the exact final charge. Jobs have a $0.01 minimum.

Under the Hood

Powered by OpenRouter's unified speech API.

On this page