agentsclimarketplace

Fish audio

Skill aiskillstore/marketplace/skills/acedatacloud/fish-audio

Security-audited skills for Claude, Codex & Claude Code. One-click install, quality verified.

Install
npx -y skills add aiskillstore/marketplace --skill fish-audio

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

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.

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

3.8 KB, as published. Nobody here has run it

Fish Audio — Text-to-Speech

Generate narration / voiceover through AceDataCloud's Fish Audio API.

Setup: See authentication for token setup.

Quick Start

curl -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:

{"audio_url":"https://platform.r2.fish.audio/task/8a72ff9840234006a9f74cb2fa04f978.mp3"}

Endpoints

EndpointPurpose
POST /fish/ttsText-to-speech generation
GET /fish/modelBrowse/search public Fish reference voices
POST /fish/tasksPoll async TTS jobs when async: true

Workflows

1. Find a reference voice

curl "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.

2. Text-to-Speech

POST /fish/tts
Headers:
  model: s2-pro

{
  "text": "Your narration text.",
  "reference_id": "d7900c21663f485ab63ebdb7e5905036",
  "format": "mp3"
}

3. Async TTS

POST /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":"..."}.

Parameters — /fish/tts

Header

ParameterValuesDescription
model"s1", "s2-pro"Fish TTS engine selection

JSON body

ParameterType / ValuesDescription
textstringText to synthesize (required)
reference_idstringPublic/reference voice ID from GET /fish/model
format"mp3", "wav", "pcm", "opus"Output format
sample_rateintegerOptional output sample rate
mp3_bitrate64, 128, 192MP3 bitrate
opus_bitrateintegerOpus bitrate
latency"normal", "balanced"TTS latency mode
chunk_length / min_chunk_lengthintegerChunking controls
temperature, top_p, repetition_penaltynumberSampling controls
max_new_tokensintegerMaximum generated tokens
normalizebooleanNormalize generated audio
prosodyobjectProsody tuning
referencesarrayAdditional reference objects
callback_urlstringAsync callback URL
asyncbooleanRun asynchronously and poll /fish/tasks

Gotchas

  • The documented TTS endpoint is POST /fish/tts — not /fish/audios.
  • Choose the Fish engine with the model request header, not a JSON model field.
  • Use reference_id from GET /fish/model — not voice_id.
  • Synchronous requests return audio_url directly; async jobs should be polled via /fish/tasks.
  • The current OpenAPI spec documents voice browsing via GET /fish/model; it does not document a voice-cloning write endpoint.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.