
fish-audio-tts
Generate expressive, multilingual narration with fish.audio (S1 / S2-generation models) and reuse cloned voices via referenceid. Use when the user prefers fish.audio/Fish Audio TTS, wants a specific playground voice model, or needs high-emotion voice-clone narration.
- Installs
- 611
- Last 24h
- +12
- Trending rank
- #7973
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/calesthio/openmontage --skill fish-audio-tts- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads fish-audio-tts automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
fish.audio TTS
Requires FISH_AUDIO_API_KEY in .env (create one at https://fish.audio/go-api/api-keys/).
Create voice models in the fish.audio playground and pass their id as reference_id to reuse a cloned voice.
Current API
Single synchronous call returning raw audio bytes:
POST https://api.fish.audio/v1/tts
Authorization: Bearer ${FISH_AUDIO_API_KEY}
Content-Type: application/json
model: <backend model> # HTTP header selects the backend, e.g. s1
The backend model is chosen with the model HTTP header, not a body field. In OpenMontage this maps to the tool's model input.
Backend models
model is required — there is no default. Pass one of:
s2.1-pro— latest generation. Best quality: inline emotion tags, 80+ languages, multi-speaker. Hero narration.s2.1-pro-free— promotional free access to s2.1-pro. Drafts, samples, and validation runs at $0 during the promo window only. Per the fish.audio announcement: free through August 31, 2026, subject to Fair Use, no SLA/latency guarantee, requests may be retained, and commercial use is restricted. Never route production or client narration through it.s2-pro— first S2 generation. Stable high quality with emotion-tag support.s1— previous flagship. Kept for compatibility with existing integrations.
Billing is per UTF-8 byte of input text (not per character). CJK text and emoji cost 3-4x an ASCII character of the same visible length. Current list pricing: s1 / s2-pro / s2.1-pro = $15 per 1M bytes, s2.1-pro-free = $0 during the promo window only (the tool's estimate_cost() switches to the paid s2.1-pro rate after August 31, 2026). Verify current pricing at https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits before large batches.
Inline emotion tags (S2 models only)
s2-pro / s2.1-pro / s2.1-pro-free interpret inline emotion tags embedded in the text:
- Tags like
[laugh],[whispers]change the delivery mid-sentence. - Example:
"That's hilarious [laugh] but let me explain seriously." s1does not interpret emotion tags — they may be read out as plain text, so strip them when targeting s1.
Voice selection (reference_id)
- Build or pick a voice in the fish.audio playground, then copy its model id.
- Pass it as
reference_id. The selector's genericvoice_idis accepted as an alias whenreference_idis absent. - Without a
reference_id, fish.audio uses its default voice for the chosen model.
Inline on-the-fly cloning (uploading reference audio + text per request) is not supported by this tool — create a voice model in the playground first.
OpenMontage Usage
Generate with the TTS selector:
from tools.audio.tts_selector import TTSSelector
result = TTSSelector().execute({
"preferred_provider": "fish_audio",
"text": "Here's why compound interest quietly beats every get-rich-quick scheme.",
"model": "s1",
"reference_id": "<playground voice model id>",
"output_path": "projects/my-video/assets/audio/narration.mp3",
})
Or call the provider directly:
from tools.audio.fish_audio_tts import FishAudioTTS
result = FishAudioTTS().execute({
"text": "Short sample line for approval.",
"model": "s1",
"reference_id": "<playground voice model id>",
"output_path": "projects/my-video/assets/audio/fish_sample.mp3",
})
The provider writes the audio to output_path and returns data.output plus the resolved model and reference_id.
Quality & latency tuning
latency:normal(default, best quality),balanced(a little faster), orlow(fastest, slight quality cost).normalize: defaulttrue; keep it on so numbers, dates, and currency read naturally.prosody: optional{ "speed": 1.0, "volume": 0 }to nudge pace/loudness.mp3_bitrate:128is a good default; raise to192for music-bed-heavy mixes.temperature: default0.7. Raise toward0.9for more expressive reads (recommended when leaning on emotion tags); lower for a steadier, more predictable delivery.top_p/repetition_penalty: usually leave at the defaults (0.7/1.2).
Recommended Workflow
- Generate a 10-15 second sample with the chosen
model+reference_idbefore a full paid narration. - Ask the user to approve voice naturalness, emotion, and pace.
- Generate the full narration only after approval.
- For batch/localization variants where cost matters, prototype on
s2.1-pro-free(promo-window $0; non-commercial drafts only) and upgrade the final tos2.1-pro.
Troubleshooting
401 Unauthorized: wrong or missingFISH_AUDIO_API_KEY.402/ payment errors: account credit exhausted.404/ bad voice: thereference_idis wrong or not owned by this account.- Empty/short audio: check that
textis non-empty andnormalizeis not stripping the whole input.
Safety
Never print or write the API key to logs, metadata, patches, or project artifacts. .env.example should contain only empty variable names.
FAQ
What does the fish-audio-tts skill do?
Generate expressive, multilingual narration with fish.audio (S1 / S2-generation models) and reuse cloned voices via referenceid. Use when the user prefers fish.audio/Fish Audio TTS, wants a specific playground voice model, or needs high-emotion voice-clone narration.
How do I install fish-audio-tts?
Run npx skills add https://github.com/calesthio/openmontage --skill fish-audio-tts in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/fish-audio-tts/ (personal) or .claude/skills/fish-audio-tts/ (project).
Which AI agents can use fish-audio-tts?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is fish-audio-tts safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains fish-audio-tts?
It is published by calesthio in calesthio/openmontage. It has 611 recorded installs.
More from calesthio/openmontage
video-edit
calesthio/openmontage
Edit videos locally using ffmpeg. Trim, concat, resize, speed, overlay, extract audio, compress, and convert. Use when: (1) Trimming or cutting video segments, (2) Concatenating multiple clips, (3) Resizing video for social platforms, (4) Extracting or replacing audio, (5) Compressing video, (6) Converting video formats, (7) Getting video info.
video-understand
calesthio/openmontage
Understand video content locally using ffmpeg frame extraction and Whisper transcription. No API keys needed. Use when: (1) Understanding what a video contains, (2) Transcribing video audio locally, (3) Extracting key frames for visual analysis, (4) Getting video content without API keys.
svg-character-animation
calesthio/openmontage
Animate SVG character rigs with GSAP, CSS transforms, Remotion frame control, and HyperFrames-compatible browser previews.
ai-video-gen
calesthio/openmontage
Generate AI videos from text prompts using multiple provider gateways. Use when: (1) Generating videos from text descriptions, (2) Creating AI-generated video clips for content production, (3) Image-to-video generation with a reference image, (4) Choosing between video generation providers (VEO, Kling, Sora, Runway, Seedance, MiniMax, Gemini Omni). Supports gateways: HeyGen API, fal.ai API, Kling official direct API, and the Gemini API (Gemini Omni Flash).
video-download
calesthio/openmontage
Download video and audio from YouTube and 1000+ sites using yt-dlp. No API keys needed. Use when: (1) Downloading a video from YouTube or other sites, (2) Extracting audio from a video URL, (3) Downloading subtitles/captions from a video, (4) Getting video metadata without downloading.
remotion
calesthio/openmontage
Toolkit-specific Remotion patterns — custom transitions, shared components, and project conventions. For core Remotion framework knowledge (hooks, animations, rendering, etc.), see the remotion-official skill.
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image