Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .mintlify/skills/fish-audio-sdk/references/text-to-speech.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ save(audio, "out.mp3")
# Use a specific voice model by id
audio = client.tts.convert(
text="Using a saved voice.",
reference_id="802e3bc2b27e49c2995d23ef70e6ac89",
reference_id="9a9cf47702da476aa4629e2506d4a857",
)

# Pick a model and adjust speed
Expand Down Expand Up @@ -95,7 +95,7 @@ await play(audio);
const audio2 = await client.textToSpeech.convert(
{
text: "Using a saved voice.",
reference_id: "802e3bc2b27e49c2995d23ef70e6ac89",
reference_id: "9a9cf47702da476aa4629e2506d4a857",
},
"s1" // <-- positional backend, not { backend: "s1" }
);
Expand Down
4 changes: 2 additions & 2 deletions api-reference/asyncapi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ components:
text: ""
format: mp3
chunk_length: 300
reference_id: "802e3bc2b27e49c2995d23ef70e6ac89"
reference_id: "9a9cf47702da476aa4629e2506d4a857"
latency: normal
- name: Full Configuration with All Options
payload:
Expand All @@ -165,7 +165,7 @@ components:
mp3_bitrate: 128
opus_bitrate: -1000
references: []
reference_id: "802e3bc2b27e49c2995d23ef70e6ac89"
reference_id: "9a9cf47702da476aa4629e2506d4a857"
latency: normal
prosody:
speed: 1.2
Expand Down
2 changes: 1 addition & 1 deletion api-reference/sdk/python/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[![PyPI version](https://img.shields.io/pypi/v/fish-audio-sdk.svg)](https://badge.fury.io/py/fish-audio-sdk)
[![Python Version](https://img.shields.io/badge/python-3.9+-blue)](https://pypi.org/project/fish-audio-sdk/)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/fish-audio-sdk)](https://pypi.org/project/fish-audio-sdk/)
[![codecov](https://img.shields.io/codecov/c/github/fishaudio/fish-audio-python)](https://codecov.io/gh/fishaudio/fish-audio-python)

Check warning on line 14 in api-reference/sdk/python/overview.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/overview.mdx#L14

Did you really mean 'codecov'?
[![License](https://img.shields.io/github/license/fishaudio/fish-audio-python)](https://github.com/fishaudio/fish-audio-python/blob/main/LICENSE)

The official Python library for the Fish Audio API
Expand Down Expand Up @@ -97,7 +97,7 @@
# Use a specific voice by ID
audio = client.tts.convert(
text="Custom voice",
reference_id="802e3bc2b27e49c2995d23ef70e6ac89"
reference_id="9a9cf47702da476aa4629e2506d4a857"
)
```

Expand Down
2 changes: 1 addition & 1 deletion api-reference/sdk/python/types.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@

**Attributes**:

- `id` - Unique voice model identifier (use as reference_id in TTS)

Check warning on line 54 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L54

Did you really mean 'reference_id'?
- `type` - Model type. Options: "svc" (singing voice conversion), "tts" (text-to-speech)

Check warning on line 55 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L55

Did you really mean 'svc'?

Check warning on line 55 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L55

Did you really mean 'tts'?
- `title` - Voice model title/name
- `description` - Detailed description of the voice model
- `cover_image` - URL to the voice model's cover image
Expand All @@ -62,8 +62,8 @@
- `samples` - List of audio samples demonstrating the voice
- `created_at` - Timestamp when the model was created
- `updated_at` - Timestamp when the model was last updated
- `languages` - List of supported language codes (e.g., ["en", "zh"])

Check warning on line 65 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L65

Did you really mean 'zh'?
- `visibility` - Model visibility. Options: "public", "private", "unlist"

Check warning on line 66 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L66

Did you really mean 'unlist'?
- `lock_visibility` - Whether visibility setting is locked
- `like_count` - Number of likes the model has received
- `mark_count` - Number of bookmarks/favorites
Expand Down Expand Up @@ -165,7 +165,7 @@

```python
@classmethod
def from_speed_override(cls,

Check warning on line 168 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L168

Did you really mean 'from_speed_override'?
speed: float,
base: Optional["Prosody"] = None) -> "Prosody"
```
Expand All @@ -184,7 +184,7 @@

<a id="fishaudio.types.tts.TTSConfig"></a>

## TTSConfig Objects

Check warning on line 187 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L187

Did you really mean 'TTSConfig'?

```python
class TTSConfig(BaseModel)
Expand All @@ -197,15 +197,15 @@

**Attributes**:

- `format` - Audio output format. Options: "mp3", "wav", "pcm", "opus". Default: "mp3"

Check warning on line 200 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L200

Did you really mean 'wav'?

Check warning on line 200 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L200

Did you really mean 'pcm'?
- `sample_rate` - Audio sample rate in Hz. If None, uses format-specific default.
- `mp3_bitrate` - MP3 bitrate in kbps. Options: 64, 128, 192. Default: 128

Check warning on line 202 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L202

Did you really mean 'bitrate'?

Check warning on line 202 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L202

Did you really mean 'kbps'?
- `opus_bitrate` - Opus bitrate in kbps. Options: -1000, 24, 32, 48, 64. Default: 32

Check warning on line 203 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L203

Did you really mean 'bitrate'?

Check warning on line 203 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L203

Did you really mean 'kbps'?
- `normalize` - Whether to normalize/clean the input text. Default: True
- `chunk_length` - Characters per generation chunk. Range: 100-300. Default: 200.
Lower values = faster initial response, higher values = better quality
- `latency` - Generation mode. Options: "normal" (higher quality), "balanced" (faster). Default: "balanced"
- `reference_id` - Voice model ID from fish.audio (e.g., "802e3bc2b27e49c2995d23ef70e6ac89").
- `reference_id` - Voice model ID from fish.audio (e.g., "9a9cf47702da476aa4629e2506d4a857").
Find IDs in voice URLs or via voices.list()
- `references` - List of reference audio samples for instant voice cloning. Default: []
- `prosody` - Speech speed and volume settings. Default: None (uses natural prosody)
Expand All @@ -220,7 +220,7 @@

<a id="fishaudio.types.tts.TTSRequest"></a>

## TTSRequest Objects

Check warning on line 223 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L223

Did you really mean 'TTSRequest'?

```python
class TTSRequest(BaseModel)
Expand All @@ -235,10 +235,10 @@

- `text` - Text to synthesize into speech
- `chunk_length` - Characters per generation chunk. Range: 100-300. Default: 200
- `format` - Audio output format. Options: "mp3", "wav", "pcm", "opus". Default: "mp3"

Check warning on line 238 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L238

Did you really mean 'wav'?

Check warning on line 238 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L238

Did you really mean 'pcm'?
- `sample_rate` - Audio sample rate in Hz. If None, uses format-specific default
- `mp3_bitrate` - MP3 bitrate in kbps. Options: 64, 128, 192. Default: 128

Check warning on line 240 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L240

Did you really mean 'bitrate'?

Check warning on line 240 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L240

Did you really mean 'kbps'?
- `opus_bitrate` - Opus bitrate in kbps. Options: -1000, 24, 32, 48, 64. Default: 32

Check warning on line 241 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L241

Did you really mean 'bitrate'?

Check warning on line 241 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L241

Did you really mean 'kbps'?
- `references` - List of reference audio samples for voice cloning. Default: []
- `reference_id` - Voice model ID for using a specific voice. Default: None
- `normalize` - Whether to normalize/clean the input text. Default: True
Expand Down Expand Up @@ -338,7 +338,7 @@
#### warn\_if\_deprecated\_model

```python
def warn_if_deprecated_model(model: str) -> None

Check warning on line 341 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L341

Did you really mean 'warn_if_deprecated_model'?
```

Emit a deprecation warning if a legacy model is used.
Expand All @@ -351,7 +351,7 @@

<a id="fishaudio.types.asr.ASRSegment"></a>

## ASRSegment Objects

Check warning on line 354 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L354

Did you really mean 'ASRSegment'?

```python
class ASRSegment(BaseModel)
Expand All @@ -367,7 +367,7 @@

<a id="fishaudio.types.asr.ASRResponse"></a>

## ASRResponse Objects

Check warning on line 370 in api-reference/sdk/python/types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

api-reference/sdk/python/types.mdx#L370

Did you really mean 'ASRResponse'?

```python
class ASRResponse(BaseModel)
Expand Down
4 changes: 2 additions & 2 deletions archive/python-sdk-legacy/text-to-speech.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@

The `reference_id` is the model ID from the URL when viewing a model on Fish Audio:

- Model URL: `https://fish.audio/m/802e3bc2b27e49c2995d23ef70e6ac89`
- Reference ID: `802e3bc2b27e49c2995d23ef70e6ac89`
- Model URL: `https://fish.audio/m/9a9cf47702da476aa4629e2506d4a857`
- Reference ID: `9a9cf47702da476aa4629e2506d4a857`

You can also get model IDs programmatically:

Expand Down Expand Up @@ -89,7 +89,7 @@

Common emotions: `(happy)`, `(sad)`, `(angry)`, `(excited)`, `(calm)`, `(surprised)`, `(whispering)`, `(shouting)`, `(laughing)`, `(sighing)`

For more advanced control over speech generation, including phoneme-level control and additional paralanguage features, see [Fine-grained Control](/developer-guide/core-features/fine-grained-control).

Check warning on line 92 in archive/python-sdk-legacy/text-to-speech.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

archive/python-sdk-legacy/text-to-speech.mdx#L92

Did you really mean 'paralanguage'?

## Audio Formats

Expand Down Expand Up @@ -209,7 +209,7 @@

## Next Steps

- [Fine-grained control](/developer-guide/core-features/fine-grained-control) for phoneme-level control and paralanguage

Check warning on line 212 in archive/python-sdk-legacy/text-to-speech.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

archive/python-sdk-legacy/text-to-speech.mdx#L212

Did you really mean 'paralanguage'?
- [Voice cloning](/features/voice-cloning) for custom voices
- [WebSocket streaming](/features/realtime-streaming) for real-time apps
- [Guide and Best Practices](/features/text-to-speech) for production use
Expand Down
4 changes: 2 additions & 2 deletions developer-guide/getting-started/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,10 @@ Choose a voice to try:
</Tab>

<Tab title="Energetic Male">
From: https://fish.audio/m/802e3bc2b27e49c2995d23ef70e6ac89
From: https://fish.audio/m/9a9cf47702da476aa4629e2506d4a857

```bash
export REFERENCE_ID="802e3bc2b27e49c2995d23ef70e6ac89"
export REFERENCE_ID="9a9cf47702da476aa4629e2506d4a857"
```
</Tab>
</Tabs>
Expand Down
4 changes: 2 additions & 2 deletions features/text-to-speech.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

<CardGroup cols={2}>
<Card title="Voiceovers & narration" icon="film">
Audiobooks, explainers, ads, and video narration.

Check warning on line 26 in features/text-to-speech.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

features/text-to-speech.mdx#L26

Did you really mean 'explainers'?
</Card>
<Card title="Conversational AI" icon="comments">
Speak an assistant's replies — pair with [streaming](/features/realtime-streaming) for low latency.
Expand All @@ -42,7 +42,7 @@

<CodeGroup>
```python Python
from fishaudio import FishAudio

Check warning on line 45 in features/text-to-speech.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

features/text-to-speech.mdx#L45

Did you really mean 'fishaudio'?
from fishaudio.utils import save

client = FishAudio() # reads FISH_API_KEY
Expand Down Expand Up @@ -85,7 +85,7 @@
```python Python
audio = client.tts.convert(
text="This uses a specific voice.",
reference_id="802e3bc2b27e49c2995d23ef70e6ac89",
reference_id="9a9cf47702da476aa4629e2506d4a857",
)
```

Expand All @@ -96,7 +96,7 @@
--header "model: s2-pro" \
--data '{
"text": "This uses a specific voice.",
"reference_id": "802e3bc2b27e49c2995d23ef70e6ac89",
"reference_id": "9a9cf47702da476aa4629e2506d4a857",
"format": "mp3"
}' \
--output out.mp3
Expand Down Expand Up @@ -193,16 +193,16 @@

To reuse a voice across many requests, [clone it once](/features/voice-cloning) and pass the resulting `reference_id` instead.

### Format & bitrate

Check warning on line 196 in features/text-to-speech.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

features/text-to-speech.mdx#L196

Did you really mean 'bitrate'?

Pick a format for your delivery channel, and tune bitrate to trade size against quality:

Check warning on line 198 in features/text-to-speech.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

features/text-to-speech.mdx#L198

Did you really mean 'bitrate'?

| Format | Notes |
|---|---|
| `mp3` (default) | good size/quality balance; set `mp3_bitrate` to `64`, `128`, or `192` |
| `wav` | uncompressed, highest quality; set `sample_rate` (e.g. `44100`) |
| `pcm` | raw samples, no container — for low-latency playback and telephony pipelines |
| `opus` | efficient for streaming; bitrate is automatic (`opus_bitrate=-1000`) |

Check warning on line 205 in features/text-to-speech.mdx

View check run for this annotation

Mintlify / Mintlify Validation (hanabiaiinc) - vale-spellcheck

features/text-to-speech.mdx#L205

Did you really mean 'bitrate'?

```python
from fishaudio.types import TTSConfig
Expand Down
2 changes: 1 addition & 1 deletion snippets/audio-transcript.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export const AudioTranscript = ({ voices, page }) => {
const baseUrl = 'https://pub-b995142090474379a930b856ab79b4d4.r2.dev/audio';
const pageVoices = [
{ id: 'ca3007f96ae7499ab87d27ea3599956a', name: 'E-girl' },
{ id: '802e3bc2b27e49c2995d23ef70e6ac89', name: 'Energetic Male' },
{ id: '9a9cf47702da476aa4629e2506d4a857', name: 'Energetic Male' },
{ id: '933563129e564b19a115bedd57b7406a', name: 'Sarah' },
{ id: 'bf322df2096a46f18c579d0baa36f41d', name: 'Adrian' },
{ id: 'b347db033a6549378b48d00acb0d06cd', name: 'Selene' },
Expand Down
2 changes: 1 addition & 1 deletion speaker-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# Voice Configuration (map of voice ID -> display name)
voices:
ca3007f96ae7499ab87d27ea3599956a: E-girl
802e3bc2b27e49c2995d23ef70e6ac89: Energetic Male
9a9cf47702da476aa4629e2506d4a857: Energetic Male
933563129e564b19a115bedd57b7406a: Sarah
bf322df2096a46f18c579d0baa36f41d: Adrian
b347db033a6549378b48d00acb0d06cd: Selene
Expand Down
2 changes: 1 addition & 1 deletion tests/cookbooks/harness.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

BASE_URL = "https://api.fish.audio"
# Validated public voice ("Energetic Male"), used to fill <voice-id> placeholders.
PUBLIC_VOICE = "802e3bc2b27e49c2995d23ef70e6ac89"
PUBLIC_VOICE = "9a9cf47702da476aa4629e2506d4a857"
_WORKSPACE_ENV = "/Users/shawnlai/project/fish-audio/.env"
_LOCAL_KEYFILE = "/tmp/claude/fishdoctest/fishkey"

Expand Down
2 changes: 1 addition & 1 deletion tests/js/run.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { SPECS } from "./specs.mjs";
const HERE = dirname(fileURLToPath(import.meta.url));
const FISH = resolve(HERE, "../..");
const WS = resolve(FISH, "..");
const PUBLIC_VOICE = "802e3bc2b27e49c2995d23ef70e6ac89";
const PUBLIC_VOICE = "9a9cf47702da476aa4629e2506d4a857";

function resolveKey() {
if (process.env.FISH_API_KEY) return process.env.FISH_API_KEY.trim();
Expand Down
Loading