Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate AI text-to-speech audio with Fish Audio and browse public reference voices via AceDataCloud API. Use when creating voiceover/narration audio (TTS), synthesizing multilingual speech, or selecting a Fish reference voice from the model catalog.
.claude/skills/aiskillstore-fish-audio/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 8% | 0% |
Generate narration / voiceover through AceDataCloud's Fish Audio API.
> Setup: See authentication for token setup.
bashcurl -X POST https://api.acedata.cloud/fish/tts \ -H "Authorization: ******ACEDATACLOUD_API_TOKEN" \ -H "Content-Type: application/json" \ -H "model: s2-pro" \ -d '{"text":"你好,欢迎使用 AceData Cloud。","reference_id":"d7900c21663f485ab63ebdb7e5905036","format":"mp3"}'
Synchronous responses return a direct audio URL:
json{"audio_url":"https://platform.r2.fish.audio/task/8a72ff9840234006a9f74cb2fa04f978.mp3"}
| Endpoint | Purpose | |----------|---------| | POST /fish/tts | Text-to-speech generation | | GET /fish/model | Browse/search public Fish reference voices | | POST /fish/tasks | Poll async TTS jobs when async: true |
bashcurl "https://api.acedata.cloud/fish/model?page_size=10&page_number=1&title=Marcus" \ -H "Authorization: ******ACEDATACLOUD_API_TOKEN"
The response includes items[] with public voice metadata such as _id, title, languages, tags, visibility, and state. Use an item _id as reference_id in TTS requests.
jsonPOST /fish/tts Headers: model: s2-pro { "text": "Your narration text.", "reference_id": "d7900c21663f485ab63ebdb7e5905036", "format": "mp3" }
jsonPOST /fish/tts Headers: model: s1 { "text": "Longer narration for background processing.", "async": true, "callback_url": "https://api.acedata.cloud/health" }
> Async: See async task polling. Poll via POST /fish/tasks with {"id":"..."}.
/fish/tts| Parameter | Values | Description | |-----------|--------|-------------| | model | "s1", "s2-pro" | Fish TTS engine selection |
| Parameter | Type / Values | Description | |-----------|---------------|-------------| | text | string | Text to synthesize (required) | | reference_id | string | Public/reference voice ID from GET /fish/model | | format | "mp3", "wav", "pcm", "opus" | Output format | | sample_rate | integer | Optional output sample rate | | mp3_bitrate | 64, 128, 192 | MP3 bitrate | | opus_bitrate | integer | Opus bitrate | | latency | "normal", "balanced" | TTS latency mode | | chunk_length / min_chunk_length | integer | Chunking controls | | temperature, top_p, repetition_penalty | number | Sampling controls | | max_new_tokens | integer | Maximum generated tokens | | normalize | boolean | Normalize generated audio | | prosody | object | Prosody tuning | | references | array | Additional reference objects | | callback_url | string | Async callback URL | | async | boolean | Run asynchronously and poll /fish/tasks |
POST /fish/tts — not /fish/audios.model request header, not a JSON model field.reference_id from GET /fish/model — not voice_id.audio_url directly; async jobs should be polled via /fish/tasks.GET /fish/model; it does not document a voice-cloning write endpoint.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-12 | pass→pass | 5,302 | 1,246 | -76% | 1 | 1 | 0% | 899 | 1,262 | +40% | 0 | 0 | — |
case-01 | fail→pass | 5,934 | 4,086 | -31% | 1 | 1 | 0% | 1,255 | 2,034 | +62% | 0 | 0 | — |
case-13 | fail→pass | 6,218 | 2,335 | -62% | 1 | 1 | 0% | 1,170 | 1,496 | +28% | 0 | 0 | — |
case-02 | fail→pass | 4,595 | 3,303 | -28% | 1 | 1 | 0% | 892 | 1,730 | +94% | 0 | 0 | — |
case-03 | fail→pass | 12,134 | 6,413 | -47% | 1 | 1 | 0% | 2,362 | 2,461 | +4% | 0 | 0 | — |
case-04 | fail→pass | 7,729 | 2,047 | -74% | 1 | 1 | 0% | 1,424 | 1,538 | +8% | 0 | 0 | — |
case-05 | fail→pass | 4,354 | 1,977 | -55% | 1 | 1 | 0% | 789 | 1,458 | +85% | 0 | 0 | — |
case-06 | fail→pass | 5,118 | 2,803 | -45% | 1 | 1 | 0% | 912 | 1,626 | +78% | 0 | 0 | — |
case-07 | fail→pass | 5,941 | 2,782 | -53% | 1 | 1 | 0% | 1,152 | 1,606 | +39% | 0 | 0 | — |
case-08 | pass→pass | 6,084 | 1,730 | -72% | 1 | 1 | 0% | 1,078 | 1,399 | +30% | 0 | 0 | — |
case-09 | fail→pass | 5,266 | 1,789 | -66% | 1 | 1 | 0% | 828 | 1,345 | +62% | 0 | 0 | — |
case-10 | pass→pass | 6,267 | 2,038 | -67% | 1 | 1 | 0% | 1,135 | 1,463 | +29% | 0 | 0 | — |
case-11 | pass→pass | 5,211 | 1,984 | -62% | 1 | 1 | 0% | 999 | 1,456 | +46% | 0 | 0 | — |
case-14 | pass→pass | 7,747 | 2,068 | -73% | 1 | 1 | 0% | 1,453 | 1,443 | -1% | 0 | 0 | — |
case-15 | pass→pass | 8,816 | 2,760 | -69% | 1 | 1 | 0% | 1,668 | 1,617 | -3% | 0 | 0 | — |
case-16 | pass→pass | 12,102 | 5,057 | -58% | 1 | 1 | 0% | 2,195 | 2,008 | -9% | 0 | 0 | — |
case-17 | pass→pass | 7,044 | 2,082 | -70% | 1 | 1 | 0% | 1,298 | 1,441 | +11% | 0 | 0 | — |
case-18 | pass→pass | 7,336 | 1,019 | -86% | 1 | 1 | 0% | 1,237 | 1,224 | -1% | 0 | 0 | — |
case-19 | fail→pass | 8,859 | 2,466 | -72% | 1 | 1 | 0% | 1,522 | 1,504 | -1% | 0 | 0 | — |
case-20 | fail→pass | 6,402 | 4,379 | -32% | 1 | 1 | 0% | 1,293 | 1,968 | +52% | 0 | 0 | — |
case-21 | fail→pass | 9,452 | 3,565 | -62% | 1 | 1 | 0% | 1,737 | 1,734 | -0% | 0 | 0 | — |
case-22 | fail→pass | 13,494 | 7,328 | -46% | 1 | 1 | 0% | 2,367 | 2,520 | +6% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +59 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.