# Stepfun Asr

Transcribes Chinese/English audio with StepFun's stepaudio-3-asr-max via its SSE...

- 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-asr -g -a claude-code -y`
Codex: `npx skills add daymade/claude-code-skills --skill stepfun-asr -g -a codex -y`
Cursor: `npx skills add daymade/claude-code-skills --skill stepfun-asr -g -a cursor -y`
Gemini CLI: `npx skills add daymade/claude-code-skills --skill stepfun-asr -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add daymade/claude-code-skills`

## Description

Transcribes Chinese/English audio with StepFun's stepaudio-3-asr-max via its SSE endpoint (not /v1/audio/transcriptions), one call handles long-form audio with no chunking. Use when migrating from step-asr/stepaudio-2.5-asr, or hitting the misleading "model not supported" error (actually wrong endpoint). Triggers on 阶跃 ASR, 语音识别. Not for TTS with the sibling model (use stepfun-tts).

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

# StepFun stepaudio-3-asr-max

Transcribe audio with StepFun's `stepaudio-3-asr-max` (StepAudio 3, released 2026-09-15, verified 2026-09-16; supersedes `stepaudio-2.5-asr` on the same endpoint). Long audio in one call, no chunking, but **only** if the request hits the right endpoint with the right body shape. The wrong endpoint returns an error that looks identical to "model doesn't exist", which is the #1 reason this skill exists.

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

## Why this skill exists, three traps that cost hours

1. **Wrong endpoint, wrong error**. `stepaudio-3-asr-max` does **not** live on `/v1/audio/transcriptions` (that endpoint serves the older `step-asr` family). It lives on `/v1/audio/asr/sse`, SSE streaming, JSON body, base64 audio. Sending it to the wrong endpoint returns `{"error":{"message":"model stepaudio-3-asr-max not supported"}}`, which is **identical in structure** to a genuinely nonexistent model name. People waste hours filing whitelist tickets.

2. **Plan key vs Normal key, silent failure**. StepFun's "Plan" subscription keys (cheap, text-only) cannot call audio endpoints, but the failure manifests as a 4xx with no auth-shaped error message. If your account has a Plan subscription, you need a separate "Normal" key from the same console.

3. **SSE error events are real**. Censorship can fire on the ASR side too (rarely). Don't assume only `transcript.text.delta` and `transcript.text.done` events arrive, handle `type: error` events in the stream or you'll silently drop them.

## Config and auth

API key resolves in this order (fail-fast, no defaults):

1. `$STEPFUN_API_KEY` environment variable
2. `${CLAUDE_PLUGIN_DATA}/config.json` with `{"api_key": "..."}` (cross-session persistence)

First-time setup:

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