YepAPI
AI Models

Fish Audio Drama 3

Fish Audio's model for directed voice performances, steered with plain-language cues in square brackets.

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

Overview

Drama 3 is a text-to-speech model from Fish Audio built for directed voice performances. Write the direction in plain language in square brackets before a line — for example [nervous] I checked the lock twice. — and the delivery follows it.

PropertyValue
Model IDfish-audio/drama-3
Aliasfish-drama
Upstream Modelfish-audio/drama-3
CategoryText to Speech
Outputmp3 (default) or pcm
Pricing$0.0042 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/drama-3',
    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/drama-3", "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/drama-3—
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, and direct the performance with square-bracket cues in the input text.

Features

  • Built for directed voice performances
  • Plain-language direction in square brackets before a line
  • Per-line control of delivery
  • 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