Integrate Fish Audio into the workflow. Turn text into natural, expressive speech with library voices or your own clones, tuned for phone calls with 8 kHz to 44.1 kHz WAV or PCM output and low-latency modes. Browse and manage voice models, create a voice clone from consented recordings, transcribe recordings with speaker turns, and check your API credit.
Generate speech with a Fish Audio library voice or your own voice clone, with control over model, format, sample rate, latency, speed, and volume
| Parameter | Type | Required | Description |
|---|
text | string | Yes | The text to convert to speech (e.g., "Hi, this is Maya from Acme. Is now a good time?") |
apiKey | string | Yes | Fish Audio API key |
referenceId | string | No | Voice model ID from the Fish Audio library or your own clones (e.g., "9a9cf47702da476aa4629e2506d4a857"). Omit to use the default voice |
model | string | No | TTS model: s2.1-pro (default), s2-pro, s2.1-pro-free, drama-3, or s1 (deprecated) |
format | string | No | Output format: mp3 (default), wav, pcm (16-bit mono), or opus |
sampleRate | number | No | Sample rate in Hz. wav/pcm: 8000, 16000, 24000, 32000, 44100; mp3: 32000, 44100; opus: 48000. Defaults to 44100 (48000 for opus) |
mp3Bitrate | number | No | MP3 bitrate in kbps: 64, 128 (default), or 192 |
latency | string | No | Latency-quality trade-off: normal (best quality, default), balanced, or low |
speed | number | No | Speaking rate multiplier from 0.5 to 2.0 (1.0 is normal) |
volume | number | No | Volume adjustment in decibels (0 is unchanged, negative is quieter) |
temperature | number | No | Expressiveness from 0 to 1 (default 0.7). Lower is more consistent |
topP | number | No | Nucleus sampling diversity from 0 to 1 (default 0.7) |
language | string | No | BCP-47 language tag of the text (e.g., "en", "es-MX"), used to spell out numbers and dates |
| Parameter | Type | Description |
|---|
audioUrl | string | URL to the generated audio file |
audioFile | file | Generated audio file (UserFile) |
characterCount | number | Number of characters processed |
format | string | Audio format |
provider | string | TTS provider used |
voices | array | Voice models on this page |
total | number | Total number of matching voices |
hasMore | boolean | Whether more pages are available |
id | string | Voice model ID, used as the TTS reference ID |
title | string | Voice name |
description | string | Voice description |
type | string | Model type |
state | string | Training state (created, training, trained, failed) |
trainMode | string | Training mode |
visibility | string | Visibility (public, unlist, private) |
tags | array | Voice tags |
languages | array | Languages the voice speaks |
coverImage | string | Cover image URL |
samples | array | Sample clips for previewing the voice |
licensed | boolean | Whether Fish Audio secured rights from the voice owner |
likeCount | number | Number of likes |
taskCount | number | Number of times the voice was used |
authorId | string | Author user ID |
authorName | string | Author nickname |
createdAt | string | Creation time (ISO 8601) |
updatedAt | string | Last update time (ISO 8601) |
voiceId | string | ID of the deleted voice model |
deleted | boolean | Whether the voice model was deleted |
text | string | Full transcript |
duration | number | Audio length in seconds |
segments | array | Word-level timestamps |
speakerTurns | array | Timed speaker turns |
languageCode | string | Detected ISO 639-1 language code |
language | string | Detected language name |
credit | string | Remaining API credit balance |
cumulativeTopUp | string | Total amount topped up |
hasFreeCredit | boolean | Whether the account has free credit |
List Fish Audio voice models: your own clones or the public voice library, filtered by name, tag, language, author, or licensing
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Fish Audio API key |
self | boolean | No | Return only voices owned by your workspace (default false, the public library) |
title | string | No | Filter voices by title (e.g., "narrator") |
tags | string | No | Comma-separated tags to filter by (e.g., "female,calm") |
language | string | No | Comma-separated language codes to filter by (e.g., "en,es") |
authorId | string | No | Only public voices by this author ID (ignored when self is true) |
licensed | boolean | No | Only voices Fish Audio licensed from the voice owner (ignored when self is true) |
sortBy | string | No | Sort order: score (default), task_count, or created_at |
pageSize | number | No | Voices per page, 1 to 100 (default 10) |
pageNumber | number | No | Page number, starting at 1 (default 1) |
| Parameter | Type | Description |
|---|
voices | array | Voice models on this page |
total | number | Total number of matching voices |
hasMore | boolean | Whether more pages are available |
Get a Fish Audio voice model: its name, training state, languages, tags, and sample clips
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Fish Audio API key |
voiceId | string | Yes | Voice model ID (e.g., "9a9cf47702da476aa4629e2506d4a857") |
| Parameter | Type | Description |
|---|
audioUrl | string | URL to the generated audio file |
audioFile | file | Generated audio file (UserFile) |
characterCount | number | Number of characters processed |
format | string | Audio format |
provider | string | TTS provider used |
voices | array | Voice models on this page |
total | number | Total number of matching voices |
hasMore | boolean | Whether more pages are available |
id | string | Voice model ID, used as the TTS reference ID |
title | string | Voice name |
description | string | Voice description |
type | string | Model type |
state | string | Training state (created, training, trained, failed) |
trainMode | string | Training mode |
visibility | string | Visibility (public, unlist, private) |
tags | array | Voice tags |
languages | array | Languages the voice speaks |
coverImage | string | Cover image URL |
samples | array | Sample clips for previewing the voice |
licensed | boolean | Whether Fish Audio secured rights from the voice owner |
likeCount | number | Number of likes |
taskCount | number | Number of times the voice was used |
authorId | string | Author user ID |
authorName | string | Author nickname |
createdAt | string | Creation time (ISO 8601) |
updatedAt | string | Last update time (ISO 8601) |
voiceId | string | ID of the deleted voice model |
deleted | boolean | Whether the voice model was deleted |
text | string | Full transcript |
duration | number | Audio length in seconds |
segments | array | Word-level timestamps |
speakerTurns | array | Timed speaker turns |
languageCode | string | Detected ISO 639-1 language code |
language | string | Detected language name |
credit | string | Remaining API credit balance |
cumulativeTopUp | string | Total amount topped up |
hasFreeCredit | boolean | Whether the account has free credit |
Create a Fish Audio voice clone from 1 to 20 audio samples (10 to 30 seconds of clear speech each works best). Only clone a voice with the consent of the person it belongs to: your own voice, or someone who gave written permission. The clone is ready to use as a TTS reference ID as soon as it is created
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Fish Audio API key |
title | string | Yes | Name for the voice clone (e.g., "Acme support voice") |
audioFiles | file[] | Yes | Audio samples of the voice (WAV, MP3, or FLAC), up to 20 files |
consentConfirmed | boolean | Yes | Confirms the person whose voice is in the samples consented to it being cloned. The clone is refused unless true |
transcripts | array | No | Exact transcript of each sample, in the same order. Omit to let Fish Audio transcribe them |
description | string | No | Description of the voice |
tags | array | No | Tags for the voice (e.g., ["brand", "support"]) |
visibility | string | No | private (default, only you) or unlist (anyone with the link) |
enhanceAudioQuality | boolean | No | Clean up the samples before cloning (default true) |
| Parameter | Type | Description |
|---|
audioUrl | string | URL to the generated audio file |
audioFile | file | Generated audio file (UserFile) |
characterCount | number | Number of characters processed |
format | string | Audio format |
provider | string | TTS provider used |
voices | array | Voice models on this page |
total | number | Total number of matching voices |
hasMore | boolean | Whether more pages are available |
id | string | Voice model ID, used as the TTS reference ID |
title | string | Voice name |
description | string | Voice description |
type | string | Model type |
state | string | Training state (created, training, trained, failed) |
trainMode | string | Training mode |
visibility | string | Visibility (public, unlist, private) |
tags | array | Voice tags |
languages | array | Languages the voice speaks |
coverImage | string | Cover image URL |
samples | array | Sample clips for previewing the voice |
licensed | boolean | Whether Fish Audio secured rights from the voice owner |
likeCount | number | Number of likes |
taskCount | number | Number of times the voice was used |
authorId | string | Author user ID |
authorName | string | Author nickname |
createdAt | string | Creation time (ISO 8601) |
updatedAt | string | Last update time (ISO 8601) |
voiceId | string | ID of the deleted voice model |
deleted | boolean | Whether the voice model was deleted |
text | string | Full transcript |
duration | number | Audio length in seconds |
segments | array | Word-level timestamps |
speakerTurns | array | Timed speaker turns |
languageCode | string | Detected ISO 639-1 language code |
language | string | Detected language name |
credit | string | Remaining API credit balance |
cumulativeTopUp | string | Total amount topped up |
hasFreeCredit | boolean | Whether the account has free credit |
Permanently delete a voice model you own from Fish Audio
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Fish Audio API key |
voiceId | string | Yes | ID of the voice model to delete (e.g., "9a9cf47702da476aa4629e2506d4a857") |
| Parameter | Type | Description |
|---|
voiceId | string | ID of the deleted voice model |
deleted | boolean | Whether the voice model was deleted |
Transcribe a recording of up to 60 minutes with Fish Audio, with optional word timestamps and speaker turns
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Fish Audio API key |
audioFile | file | Yes | Recording to transcribe (e.g., MP3, WAV, M4A) |
model | string | No | transcribe-1-pro (default; long and multi-speaker recordings) or transcribe-1 (short recordings) |
language | string | No | Optional lowercase ISO 639-1 language hint (e.g., "en", "ja") |
includeTimestamps | boolean | No | Return word timestamps and, with transcribe-1-pro, speaker turns (default false; adds processing time) |
numSpeakers | number | No | Expected number of speakers, a best-effort hint for transcribe-1-pro |
| Parameter | Type | Description |
|---|
text | string | Full transcript. With transcribe-1-pro it includes <|speaker:N|> markers and bracketed cues such as [laughter] |
duration | number | Audio length in seconds, including silence |
segments | array | Word-level timestamps (empty unless timestamps were requested) |
↳ text | string | Word text |
↳ start | number | Start time in seconds |
↳ end | number | End time in seconds |
speakerTurns | array | Timed speaker turns (transcribe-1-pro with timestamps only) |
↳ speaker | string | Speaker label, such as "speaker:0" |
↳ text | string | What the speaker said in this turn |
↳ start | number | Start time in seconds |
↳ end | number | End time in seconds |
languageCode | string | Detected ISO 639-1 language code |
language | string | Detected language name |
Get the remaining Fish Audio API credit balance for the account behind the API key
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | Fish Audio API key |
| Parameter | Type | Description |
|---|
credit | string | Remaining API credit balance, as a decimal string |
cumulativeTopUp | string | Total amount topped up, as a decimal string |
hasFreeCredit | boolean | Whether the account has free credit |
updatedAt | string | When the balance last changed (ISO 8601) |