Agent skill

Stepfun Asr

by daymade in daymade/claude-code-skills

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.

MITAuto-check passedMedia & Creative

Install Stepfun Asr

skills CLI
$ npx skills add daymade/claude-code-skills --skill stepfun-asr -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install daymade/claude-code-skills stepfun-asr --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/daymade/claude-code-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/daymade-audio/stepfun-asr .claude/skills/stepfun-asr && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
stepfun-asr
GitHub stars
1.4k
Token cost
~3k tokens
SKILL.md length
1,349 words
Files
6 (incl. scripts, references)
Skills in repo
103
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 3 steps: Wrong endpoint, wrong error.… → Plan key vs Normal key, silent failure.… → SSE error events are real. Censorship…
  • Migrating from step-asr/stepaudio-2.5-asr
  • SKILL.md covers Why this skill exists — three…, Config and auth, Quick start — single file and Decision table, plus 9 more sections
  • Runs Python scripts from its folder; calls python3; needs STEPFUN_API_KEY

What it does

Stepfun Asr is an agent skill from daymade/claude-code-skills. 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).

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/api_reference.md`, `references/known_issues.md` and `scripts/asr_file.py`).

It sits in Media & Creative, covering Speech recognition and synthesis, Transcription and Text to speech and voice. The repository describes itself as: Professional Claude Code skills marketplace featuring production-ready skills for enhanced development workflows. The licence is MIT.

When your agent uses it

  • Migrating from step-asr/stepaudio-2.5-asr
  • Hitting the misleading model not supported error (actually wrong endpoint)

Example prompts

  • “model not supported”
  • “Use the stepfun-asr skill to transcribe Chinese/English audio with StepFun's stepaudio-3-asr-max via its SSE endpoint (not /v1/audio/transcriptions)…”
  • “/stepfun-asr”

Requirements

  • Python 3
  • A credential in STEPFUN_API_KEY

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Wrong endpoint, wrong error. stepaudio-3-asr-max does not live on /v1/audio/transcriptions (that endpoint serves the older step-asr…
  2. Plan key vs Normal key, silent failure. StepFun's "Plan" subscription keys (cheap, text-only) cannot call audio endpoints, but the failure…
  3. SSE error events are real. Censorship can fire on the ASR side too (rarely). Don't assume only transcript.text.delta and…

What it can do on your machine

Read from SKILL.md and the folder at commit 91bed2b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • platform.stepfun.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • STEPFUN_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Stepfun Asr loads about 3k tokens when it runs, and up to ~7.8k if it reads all its reference files. Until then it costs about 100 tokens; SKILL.md has 1,349 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~100
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from daymade/claude-code-skills at commit 91bed2b, republished under its MIT licence (© daymade). 1,349 words, ~2,985 tokens.

Download SKILL.mdSave it as .claude/skills/stepfun-asr/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
stepfun-asr
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).
disable-model-invocation
true

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:

bash
mkdir -p "${CLAUDE_PLUGIN_DATA}" && cat > "${CLAUDE_PLUGIN_DATA}/config.json" <<EOF
{"api_key": "<paste Normal key here>"}
EOF

If the user has not set a key, ask them to paste it — do not guess or use a placeholder. Get keys at https://platform.stepfun.com/ → API Keys. Use a Normal key, not a Plan key.

Quick start — single file

bash
python3 scripts/asr_transcribe.py /path/to/audio.mp3

Output: plain text transcription on stdout.

For machine-readable output with usage / timing:

bash
python3 scripts/asr_transcribe.py /path/to/audio.mp3 --json

For non-Chinese audio:

bash
python3 scripts/asr_transcribe.py /path/to/audio.mp3 --language en

Per-word timestamps need no flag — --json always carries segments:

json
"segments": [{"text": "Understand ", "start_ms": 228, "end_ms": 1108}, ...]

One entry per word, monotonic. A few words share their predecessor's timestamp (the server flushes in blocks), which is fine for locating a moment but not for forced alignment.

To use an older model:

bash
python3 scripts/asr_transcribe.py /path/to/audio.mp3 --model stepaudio-2.5-asr

The script handles base64 encoding, the nested {audio: {data, input: {transcription, format}}} body, SSE parsing, and the misleading-endpoint pitfall. Prefer it over hand-rolled HTTP calls unless integrating into a larger pipeline.

Decision table

ScenarioAction
Short clip (< 5 min), Chinese or English, mp3/wav/ogg/opuspython3 scripts/asr_transcribe.py audio.mp3
Long audio (5-30 min)Same script — 32K context handles it in a single call, no chunking needed
Audio > 30 minSplit with ffmpeg before sending; the API rejects oversized payloads
Need usage/billing dataAdd --json to capture usage.input_tokens / usage.total_tokens from transcript.text.done
Need to know when each word was said--json, read segments. On by default
Need speaker labels (who said what)python3 scripts/asr_file.py <public-url> — a different, async endpoint. Takes a URL, not a local file: base64 and StepFun's own file store are both rejected, so hosting the audio somewhere fetchable is a decision for whoever runs it
--model stepaudio-2-asr-pro returns internal errorThat model is not usable on /v1/audio/asr/sse (measured 2026-09-18); use the default or stepaudio-2.5-asr
Highly repetitive content (same phrase 5+ times, > 90s)Cross-validate with step-asr-1.1 — see repetition hallucination in references/known_issues.md (2.5-era issue, unverified on v3)
Hit model stepaudio-3-asr-max not supportedWrong endpoint. Switch from /v1/audio/transcriptions to /v1/audio/asr/sse
Hit silent 4xx auth failureVerify your key is "Normal" not "Plan" — Plan keys cannot call audio endpoints
Need to write raw HTTP (no Python)Read references/api_reference.md for exact JSON body and SSE event shapes

Speaker labels — scripts/asr_file.py

stepaudio-3-asr-max on /v1/audio/asr/sse has no speaker capability at all (14 candidate request fields measured inert). Diarization lives on the async file endpoint:

bash
python3 scripts/asr_file.py https://example.com/talk.mp3
# [   6.61-   8.43] speaker_0: Hello. Hello. Oh,
# [   8.21-  10.11] speaker_1: hello! I didn't know you were there.

Verified end-to-end 2026-09-18 on a two-speaker sample: correct turn boundaries, per-word timestamps inside each utterance, up to 10 speakers per task. Uses stepaudio-2.5-asr — v3 is not served on this endpoint.

The hard constraint: it fetches a URL and nothing else. Base64 is rejected and so is StepFun's own stepfile:// file store, so there is no way to feed it a local file without first putting that file somewhere publicly fetchable. Treat that as the caller's decision. references/known_issues.md has the three dead ends and the retry/redirect behaviour.

Parameters are free — never omit one silently

Sending more request parameters costs nothing: billing is per audio-hour. So the default is send everything useful, and every field we do not send has to carry a written reason in REQUEST_PARAMS at the top of scripts/asr_transcribe.py.

bash
python3 scripts/check_params.py            # diff official field table vs REQUEST_PARAMS
python3 scripts/check_params.py --selftest # calibrate the check before trusting it

Two guards, one per direction:

  • Request side — check_params.py fetches the official field table and fails if it lists a field REQUEST_PARAMS does not mention. --selftest calibrates both ways: the real manifest must pass (no false alarms), and a manifest with enable_timestamp removed must be caught (the actual historical gap — per-word timestamps were missing for months because only the response field table was ever read).
  • Response side — the parser reports unhandled_response_fields for anything the server sends that it does not consume, because that is what the timestamp gap looked like from this side: start_time/end_time arrived on every delta and were thrown away.
Show full SKILL.md (509 more words)Show less

Supported audio formats

The script auto-detects from extension; pass --format to override:

ExtensionFormat flagNotes
.mp3mp3Most common, default
.wavwavLossless
.oggoggOGG container
.opusoggOpus codec in OGG container — pass through unchanged
.pcmpcmRaw PCM — also pass --rate, --bits, --channel (and --codec)

For mp4/m4a/webm/etc., transcode to one of the above first via ffmpeg. Production pipelines often pre-transcode everything to OGG/Opus 16kHz mono to minimize base64 payload size.

Capacity and performance

v3 spot measurements (verified 2026-09-16): 10s clip → 1.1s, 53s real-world clip → 2.6s (~20× RTF). v2.5-era baseline for reference (2026-04-23, same endpoint): 32K context window, ~85-101× RTF on 17.4 min audio, single-call ceiling ≈ 30 min — treat 30 min as the working ceiling for v3 until re-probed, and re-measure before quoting long-audio numbers.

Common error patterns

Error responseActual causeFix
"model stepaudio-3-asr-max not supported" on /v1/audio/transcriptionsWrong endpointSwitch to /v1/audio/asr/sse (script does this)
Silent 4xx with no auth messageUsing a "Plan" key on audio endpointGet a "Normal" key from the StepFun console
ASR returns 3-4× expected character countRepetition hallucination on highly-repetitive audioCross-validate with step-asr-1.1; see references/known_issues.md
data: {"type":"error","message":"content blocked..."} mid-streamCensorship fired on user-uploaded contentHandle SSE error event explicitly; don't assume only delta/done arrive

More edge cases in references/known_issues.md.

Design invariants (do not break)

  1. Always pass through SSE — don't try to buffer the response with a non-streaming client. The model emits transcript.text.delta for long audio; transcript.text.done carries the authoritative full text and usage. Reject the SSE format entirely and you'll get nothing.
  2. Take final text from transcript.text.done.text — concatenated deltas can drift on edge cases. Deltas are for progressive UI; the done event is the source of truth.
  3. Handle error events in the stream — don't treat the SSE stream as if only success events arrive. A blocked-content event mid-stream returns type: error with no done event. transcribe()'s return dict always carries an errors list of the raw error-event payloads (empty if none fired), even when ok is True, so a caller wanting the old strict semantics (any error event ⇒ failure) must check errors itself.
  4. Fail-fast on missing API key — never default to a placeholder or empty string. The script does this; preserve the behavior in any wrapper.

When to read references

  • references/api_reference.md — exact JSON request body, all fields, all SSE event types, response examples. Read when writing raw HTTP calls instead of using the bundled script.
  • references/known_issues.md — repetition hallucination details, the wrong-endpoint diagnostic trail, Plan-vs-Normal key gotcha, ASR-side censorship handling, pricing opacity. Read when debugging anomalous output or evaluating whether to migrate from step-asr-1.1.

Pricing (verified 2026-09-16, volatile)

stepaudio-3-asr-max: 2.8 元/小时 (official model page, 2026-09-16). The older stepaudio-2.5-asr remains served on the same endpoint as a fallback. Re-verify at https://platform.stepfun.com/docs/zh/guides/pricing/details before quoting to stakeholders.

Next Step

ASR transcripts almost always benefit from one of two downstream steps. After producing the transcript, suggest the natural next skill:

Transcription complete. The output is raw text from the model — common next steps:

Options:
A) transcript-fixer — clean up ASR errors (homophones, segmentation, filler words). Recommended if the recording is a real-world conversation, podcast, or interview rather than read-aloud text
B) meeting-minutes-taker — turn the transcript into structured minutes with decisions, action items, and speaker attribution. Recommended if the recording is a meeting
C) No thanks — the raw transcript is what I needed

Skip the suggestion when the user has already specified the downstream tool, or when the transcription was clearly a one-off lookup (e.g., "what does this 15-second clip say?").

© daymade, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts, references) in daymade-audio/stepfun-asr of daymade/claude-code-skills.

  • SKILL.md
  • references/api_reference.md
  • references/known_issues.md
  • scripts/asr_file.py
  • scripts/asr_transcribe.py
  • scripts/check_params.py

Open the folder on GitHubat commit 91bed2b

Compare with similar skills

Stepfun Asr next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Stepfun Asr compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Stepfun Asr this skilldaymade/claude-code-skills1.4k—~3kAutomated safety check: PassMIT
Groq Core Workflow Bjeremylongshore/tons-of-skills-marketplace2.8k—~1.4kAutomated safety check: PassMIT
Local AI Useamd/skills398—~5kAutomated safety check: NotesMIT
Local AI App Integrationamd/skills398—~6kAutomated safety check: PassMIT
Azure AImicrosoft/GitHub-Copilot-for-Azure2552 repos~852Automated safety check: PassMIT
Speech Buildcnemri/google-genai-skills127—~430Automated safety check: PassMIT

Similar skills

  • Groq Core Workflow B

    jeremylongshore/tons-of-skills-marketplace

    A skill your agent uses when you need Groq's non-chat endpoints — transcribing or translating audio with Whisper, understanding images with Llama 4 vision, generating speech (TTS), or benchmarking…

    2.8k GitHub stars~1.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Local AI Use

    amd/skills

    Makes this agent generate images, transcribe audio, and synthesize speech on the user's own machine through a local Lemonade Server instead of a paid cloud API.

    398 GitHub stars~5k tokensUpdated today
    Media & CreativeAuto-check: notes
  • Integrates local AI capabilities into applications using Embeddable Lemonade.

    398 GitHub stars~6k tokensUpdated today
    Media & CreativeAuto-check passed
  • Azure AI

    microsoft/GitHub-Copilot-for-Azure

    Official

    A skill your agent uses for Azure AI: Search, Speech, OpenAI, Document Intelligence.

    255 GitHub starsUsed in 2 repos~852 tokens
    Media & CreativeAuto-check passed
  • Speech Build

    cnemri/google-genai-skills

    Generate and transcribe speech using Google's Gemini-TTS and Chirp 3 models.

    127 GitHub stars~430 tokensUpdated 8 mo ago
    Media & CreativeAuto-check passed
  • Voice AI Engine Development

    aiskillstore/marketplace

    Build real-time conversational AI voice engines using async worker pipelines, streaming transcription, LLM agents, and TTS synthesis with interrupt handling and multi-provider support

    430 GitHub starsUsed in 6 repos~5.7k tokens
    Media & CreativeAuto-check passed

More from daymade/claude-code-skills

All 103 skills in this repo
  • Video Comparer

    daymade/claude-code-skills

    This skill should be used when comparing two videos to analyze compression results or quality differences.

    1.4k GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check: notes
  • CLI Demo Generator

    daymade/claude-code-skills

    Generates professional animated CLI demos as GIFs using VHS terminal recordings.

    1.4k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Doc To Markdown

    daymade/claude-code-skills

    Converts DOCX/PDF/PPTX and saved HTML/HTM to high-quality Markdown with automatic post-processing.

    1.4k GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Interaction Design Board

    daymade/claude-code-skills

    Generates several distinct, clickable HTML interaction prototypes for one product surface into a Design Board and collects selection/remix feedback before implementation.

    1.4k GitHub stars~2.7k tokensUpdated today
    Auto-check passed
  • Auto Repo Setup

    daymade/claude-code-skills

    Diagnoses and repairs repository setup and guarded Git workflows for Claude Code or Codex — environment repair, startup sync, hook auditing, collaborator handoff.

    1.4k GitHub stars~2.6k tokensUpdated today
    Auto-check: notes
  • Bigdata Skill

    daymade/claude-code-skills

    Pulls Bigdata.com (RavenPack) financial and news data via the official bigdata-client SDK and /v1/ REST endpoints — structured financials, prices, analyst estimates, entity-sentiment series…

    1.4k GitHub stars~3.7k tokensUpdated today
    Auto-check passed

Questions about Stepfun Asr

What does Stepfun Asr do?

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. Stepfun Asr is an agent skill from daymade/claude-code-skills. 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.

When should I use Stepfun Asr?

Stepfun Asr fits situations like: migrating from step-asr/stepaudio-2.5-asr; hitting the misleading model not supported error (actually wrong endpoint).

How do I install Stepfun Asr in Claude Code?

Run `npx skills add daymade/claude-code-skills --skill stepfun-asr -a claude-code`. Or copy the skill folder (daymade-audio/stepfun-asr in daymade/claude-code-skills) into .claude/skills/stepfun-asr in your project. Claude Code loads it when a task matches its description.

How do I install Stepfun Asr in Codex?

Run `npx skills add daymade/claude-code-skills --skill stepfun-asr -a codex`. Or copy the skill folder (daymade-audio/stepfun-asr in daymade/claude-code-skills) into .agents/skills/stepfun-asr in your project. Codex loads it when a task matches its description.

Can I use Stepfun Asr in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add daymade/claude-code-skills --skill stepfun-asr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/stepfun-asr, .gemini/skills/stepfun-asr, .github/skills/stepfun-asr and .opencode/skills/stepfun-asr in your project.

What does Stepfun Asr need to run?

Going by SKILL.md and its folder, Stepfun Asr needs Python for the scripts in its folder, the command-line tools its instructions call (python3) and credentials named STEPFUN_API_KEY. Our summary lists: Python 3; A credential in STEPFUN_API_KEY.

Does Stepfun Asr access the network?

SKILL.md names 1 domain. As links in the text: platform.stepfun.com. This is read from the text; nothing was executed.

Is Stepfun Asr safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Stepfun Asr use?

Stepfun Asr is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Stepfun Asr use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.8k tokens, read only when the agent opens those files.

What are the alternatives to Stepfun Asr?

Skills that share tags, products or a category with Stepfun Asr: Groq Core Workflow B (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Local AI Use (amd/skills, 398 stars), Local AI App Integration (amd/skills, 398 stars) and Azure AI (microsoft/GitHub-Copilot-for-Azure, 255 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Stepfun Asr?

daymade (a GitHub user) maintains it in daymade/claude-code-skills, which has 1,444 GitHub stars. The repository holds 103 skills in this directory. The repository was last updated on October 8, 2026.

Source: daymade/claude-code-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.