mcpbeat Sign in

Happy Audio Gen Skill for Claude

Universal AI voice / text-to-speech skill supporting OpenAI TTS (gpt-4o-mini-tts, tts-1), ElevenLabs multilingual TTS with voice cloning, Bailian Qwen TTS (qwen-tts / qwen3-tts-vd with voice-design custom voices, long-text chunking built in), MiniMax speech-02-hd, SiliconFlow CosyVoice / SenseVoice, and PlayHT 2.0. Use this skill whenever the user asks to read text aloud, synthesize speech, generate narration, create voice-over, dub a script, or turn any text into audio (mp3 / wav / ogg / flac). Typical phrases include "read this aloud", "generate voice for ...", "create a narration of ...", "tts this", "把这段念出来", "做个配音", "合成语音", or mentions of voices / TTS model names like Alloy, Ash, Cherry, Rachel, CosyVoice, PlayHT. Always use this skill even if the user does not specify a provider — pick one from EXTEND.md defaults or available env keys.

1.3k tokens
context cost
SKILL.md, read when the skill is used
18
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
303
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/iamzhihuix/happy-claude-skills --skill happy-audio-gen

The instruction itself

10 sections, as written by the author

happy-audio-gen

Turns text into speech across 6 providers through one CLI. All providers are synchronous (TTS is fast — typically under 10 seconds) except Bailian's voice-design flow (which is still covered but uses a longer poll window).

Quick usage

# Shortest path — OpenAI default voice
bun scripts/main.ts --text "Hello, world" --out ./hello.mp3

# Chinese, MiniMax
bun scripts/main.ts --provider minimax --text "大家好" --voice male-qn-qingse --out ./hello.mp3

# Long-form, Bailian (auto-splits by sentence)
bun scripts/main.ts --provider bailian --textfiles ./script.md --out ./narration.mp3

When to invoke this skill

  • User asks to synthesize speech / TTS / read aloud / narrate / dub / make a voice-over.
  • User asks to convert script / text / article into audio.
  • User names a TTS voice or model.

Do not route here when the user wants to transcribe audio → text (that's STT, different domain), or edit / mix audio files (use a dedicated audio editor).

Step 0: Preflight (BLOCKING)

  • Locate EXTEND.md:
  • ./.happy-skills/happy-audio-gen/EXTEND.md
  • $XDG_CONFIG_HOME/happy-skills/happy-audio-gen/EXTEND.md
  • ~/.happy-skills/happy-audio-gen/EXTEND.md

If none found, run bun scripts/main.ts --setup and walk the user through references/config/first-time-setup.md.

  • Verify at least one provider has credentials (env var or 1Password reference).
  • Verify Bun is available. Fallback: npx -y bun.

Step 1: Choose provider

Preference order:

  • --provider <id>
  • EXTEND.md default_provider
  • Auto-detect env vars: openai > elevenlabs > bailian > minimax > siliconflow > playht

Pick by language / voice intent:

  • English, natural + fast → openai (gpt-4o-mini-tts / tts-1).
  • Multilingual, voice cloning → elevenlabs.
  • Chinese, long-form → bailian (qwen-tts auto-chunks long scripts) or minimax.
  • Chinese dialect / voice design → bailian (voice-design with qwen3-tts-vd) or siliconflow (CosyVoice2).
  • Ultra-realistic, short-form → playht (2.0).

Step 2: Fill parameters

  • --text or --textfiles: input. Always quote.
  • --out <path>: REQUIRED. Extension determines format (.mp3 / .wav / .ogg / .flac).
  • --voice <id>: provider-specific. See references/voices.md for the short list of well-known voices.
  • --rate 0.5..2.0: speaking rate.
  • --instruction "...": voice direction (only openai gpt-4o-mini-tts and siliconflow honor this).
  • --language <code>: en, zh, ja — only a few providers honor this explicitly.

Step 3: Run

bun scripts/main.ts \
  --provider openai \
  --model gpt-4o-mini-tts \
  --voice alloy \
  --text "..." \
  --out ./out.mp3

JSON mode:

{ "success": true, "provider": "openai", "model": "gpt-4o-mini-tts", "voice": "alloy", "output": "/abs/out.mp3", "size_bytes": 76032, "format": "mp3" }

Step 4: Long text handling

  • happy-audio-gen automatically splits long input for providers that cap per-call length (Bailian ≤ 200 Chinese chars per call). Chunks are concatenated byte-for-byte on output.
  • For best fidelity with concatenated MP3s, stitch the segments with ffmpeg afterward rather than relying on byte concat.

Step 5: Errors

  • [openai] OpenAI TTS 400 with invalid voice → the voice name is not supported by the model. Use one of alloy, ash, coral, echo, fable, onyx, nova, sage, shimmer.
  • [minimax] ... 2049 invalid api key → try MINIMAX_BASE_URL=https://api.minimaxi.com/v1 (different region).
  • [bailian] ... 400 DataInspectionFailed → Aliyun content filter. Surface to the user.
  • [elevenlabs] 401 → key invalid or subscription expired.

References

  • references/providers.md — per-provider env vars, default models, voice lists.
  • references/voices.md — curated voices for each provider.
  • references/error_codes.md — common errors and fixes.
  • references/config/first-time-setup.md
  • references/config/extend-schema.md
  • assets/EXTEND.template.md

Other skills for the same job

different authors, same section of the catalogue
Canvas Design
by anthropics
vendor ×16

Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.

3k tokens
Algorithmic Art
by anthropics
vendor ×14

Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.

4.9k tokens scripts
Image Enhancer
by frostant
×6

Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.

635 tokens
JSON Canvas
by ZhanlinCui
×4

Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.

3.5k tokens
X Article Publisher
by ZhanlinCui
×4

Publish Markdown articles to X (Twitter) Articles editor with proper formatting. Use when user wants to publish a Markdown file/URL to X Articles, or mentions "publish to X", "post article to Twitter", "X article", or wants help with X Premium article publishing. Handles cover image upload and converts Markdown to rich text automatically.

3.1k tokens scripts zh
Video Downloader
by CommandCodeAI
×4

Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.

671 tokens
High End Visual Design
by lornshrimp
×3

Teaches the AI to design like a high-end agency. Defines the exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks all the common defaults that make AI designs look cheap or generic.

2.6k tokens
Histolab
by christophacham
×3

Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.

5.2k tokens

How to use it

Copy the folder

Take iamzhihuix/happy-audio-gen from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npx. Without those the skill loads but fails at the first command.