# Stepfun Tts

Generates Chinese/Japanese speech with StepFun's Contextual TTS, default...

- Repository: https://github.com/daymade/claude-code-skills (1509 stars)
- Category: Media
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add daymade/claude-code-skills --skill stepfun-tts -g -a claude-code -y`
Codex: `npx skills add daymade/claude-code-skills --skill stepfun-tts -g -a codex -y`
Cursor: `npx skills add daymade/claude-code-skills --skill stepfun-tts -g -a cursor -y`
Gemini CLI: `npx skills add daymade/claude-code-skills --skill stepfun-tts -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add daymade/claude-code-skills`

## Description

Generates Chinese/Japanese speech with StepFun's Contextual TTS, default stepaudio-2.5-tts, stepaudio-3-tts for whisper/inline-() prosody. Replaces step-tts-2's voice_label with natural-language instruction. Use for emotional/prosody-controlled synthesis, batch voice lines, migrating from step-tts-2, or cloned voices (2.5/step-tts-2, not v3). Triggers on 阶跃 TTS, 语音合成, 配音. Not for transcription (use stepfun-asr).

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# StepFun Contextual TTS (default stepaudio-2.5-tts)

Generate Chinese / Japanese speech with StepFun's Contextual TTS, emotion and prosody go through natural-language description, not fixed labels. **Default model is `stepaudio-2.5-tts`** (what the bundled script uses): in a 2026-09-16 blind A/B on our own cases, 2.5 won the neutral / jiao / lively-girl pairs 3:2. **Pick `stepaudio-3-tts` when the line is whisper or heavy inline-`()` prosody**, v3 won exactly those two pairs; v3 also raises the `instruction` cap to 500 chars (2.5 is 200). ⚠️ **Never synthesize cloned voices with v3**, v3 speech 接受复刻音色 ID 不报错但静默回退默认女声, , 根因 = 阶跃复刻链路整体停在 2.5 家族（复刻创建 API 只收 2.5/step-tts-2/step-tts-mini，v3 不在列；v3 合成侧复刻未发布）。两代创建的克隆在 v3 上全丢：step-tts-2 克隆 SIM 0.272、2.5 创建的新克隆 SIM 0.195（锚 0.773），2.5 同 ID 0.743/0.678。

> Companion: for transcription with `stepaudio-3-asr-max` (the sibling model), use the `stepfun-asr` skill, they share an API key but live on different endpoints with different body shapes.

**Why this skill exists**, two non-obvious pitfalls that cost hours if you don't know them:

1. `stepaudio-3-tts` **rejects** `voice_label` (the step-tts-2 way), verified on v3 2026-09-16: HTTP 400 `voice_label is not supported for this model`. Emotion/prosody goes through `instruction` (natural-language description, ≤500 chars on v3, 200 was the 2.5 limit) and inline `()` parentheses inside the text itself.
2. Censorship behavior is model-version-specific, the 2.5-era trigger list (死 / 消失 / sensitive political terms → `censorship_block`) did **not** fire on v3 in a 2026-09-16 single-sample probe; treat censorship as present but re-verify per trigger before building rewrite maps. The 2.5-era options are in `references/migration_from_v2.md`.

## Config and auth

API key lives in `$STEPFUN_API_KEY` (preferred) or `${CLAUDE_PLUGIN_DATA}/config.json` (fallback for cross-session persistence). All bundled scripts try env first, then config.

First-time setup (one-liner):

The rest: https://github.com/daymade/claude-code-skills/blob/HEAD/daymade-audio/stepfun-tts/SKILL.md
