mcpField

happy-audio-gen

github.com/iamzhihuix创意与媒体146 次安装
代码仓库

关于 happy-audio-gen

happy-audio-gen 是通过六种提供商将文本转换为语音的命令行技能,适用于制作旁白、配音和朗读音频,并支持长文本分段处理。

主要功能

  1. 01通过六种提供商进行文本转语音
  2. 02选择提供商和语音
  3. 03调节语速和语音指令
  4. 04自动拆分长文本
  5. 05输出 MP3、WAV、OGG 和 FLAC

适用场景

  1. 01将长篇脚本制作成旁白
  2. 02生成中文或英文语音
  3. 03使用指定语音制作配音

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/iamzhihuix/happy-claude-skills --skill happy-audio-gen

安装后在 Claude Code 中输入/happy-audio-gen确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

package.json
assets/
EXTEND.template.md
references/
error_codes.md
providers.md
voices.md
references/config/
extend-schema.md
first-time-setup.md
scripts/
main.ts
types.ts
scripts/providers/
bailian.ts
elevenlabs.ts
minimax.ts
openai.ts
playht.ts
siliconflow.ts
scripts/utils/
output.ts
text_chunk.ts

详细介绍

happy-audio-gen

通过一个 CLI 使用 6 家服务商将文本转换为语音。除 Bailian 的声音设计流程(仍受支持,但轮询窗口较长)外,所有服务商均为同步处理(TTS 速度很快,通常不到 10 秒)。

快速使用

# 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

何时调用此技能

  • 用户要求合成语音、使用 TTS、朗读、旁白、配音或制作画外音。
  • 用户要求将脚本、文本或文章转换为音频。
  • 用户指定了 TTS 语音或模型。

如果用户想要将音频转录为文本(这是 STT,属于不同领域),或编辑/混音音频文件(请使用专用音频编辑器),不要将请求路由到此处。

第 0 步:预检(阻塞)

  1. 查找 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

    如果均未找到,请运行 bun scripts/main.ts --setup,并引导用户完成 references/config/first-time-setup.md 中的设置。

  2. 确认至少一家服务商已配置凭据(环境变量或 1Password 引用)。

  3. 确认 Bun 可用。备用方案:npx -y bun。

第 1 步:选择服务商

优先顺序:

  1. --provider <id>
  2. EXTEND.md 中的 default_provider
  3. 自动检测环境变量:openai > elevenlabs > bailian > minimax > siliconflow > playht

根据语言/语音需求选择:

  • 英语,自然且快速 → openai(gpt-4o-mini-tts / tts-1)。
  • 多语言、语音克隆 → elevenlabs。
  • 中文、长文本 → bailian(qwen-tts 会自动将长脚本分块)或 minimax。
  • 中文方言/声音设计 → bailian(使用 qwen3-tts-vd 进行声音设计)或 siliconflow(CosyVoice2)。
  • 极其逼真、短文本 → playht(2.0)。

第 2 步:填写参数

  • --text 或 --textfiles:输入内容。始终加引号。
  • --out <path>:必填。扩展名决定格式(.mp3 / .wav / .ogg / .flac)。
  • --voice <id>:服务商专属。常用语音列表见 references/voices.md。
  • --rate 0.5..2.0:语速。
  • --instruction "...":语音指导(仅 openai 的 gpt-4o-mini-tts 和 siliconflow 支持此参数)。
  • --language <code>:en、zh、ja — 仅少数服务商明确支持此参数。

第 3 步:运行

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

JSON 模式:

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

第 4 步:处理长文本

  • happy-audio-gen 会自动拆分长输入,以适配单次调用长度受限的服务商(Bailian 每次最多处理 200 个汉字)。输出时会逐字节拼接各个片段。
  • 为了尽可能保证拼接后的 MP3 音质,建议之后使用 ffmpeg 拼接片段,而不要依赖字节拼接。

第 5 步:错误处理

  • [openai] OpenAI TTS 400 并提示 invalid voice → 该语音名称不受模型支持。请使用 alloy、ash、coral、echo、fable、onyx、nova、sage、shimmer 之一。
  • [minimax] ... 2049 invalid api key → 尝试设置 MINIMAX_BASE_URL=https://api.minimaxi.com/v1(不同区域)。
  • [bailian] ... 400 DataInspectionFailed → 阿里云内容过滤。请告知用户。
  • [elevenlabs] 401 → 密钥无效或订阅已过期。

参考资料

  • references/providers.md — 各服务商的环境变量、默认模型和语音列表。
  • references/voices.md — 各服务商精选语音。
  • references/error_codes.md — 常见错误及解决方法。
  • references/config/first-time-setup.md
  • references/config/extend-schema.md
  • assets/EXTEND.template.md

评论

支持 Markdown