Agent skill · Backend & API

wjs-transcribing-audio

Use when the user has audio or video and wants a timestamped transcript (SRT) in the source language. Routes by source language — Chinese defaults to Volcano (豆包) ASR; other languages (Spanish, English, Portuguese, French, Italian, Japanese, Korean, etc.) use OpenAI Whisper API with word-level timestamps and self-assembled cues. Outputs SRT with punctuation-bounded cues capped for on-screen reading. Triggers — "转写", "转成字幕", "做 SRT", "transcribe", "make subtitles", "speech to text", "出字幕".

jianshuogithub.com/jianshuoGitHub ↗
claude-codecodexships scriptsMIT
Install
npx skills add jianshuo/claude-skills --skill wjs-transcribing-audio --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 3
SKILL.md size: 17 KB
Bundled scripts: yes
Path: wjs-transcribing-audio/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 112
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# wjs-transcribing-audio Spoken audio in → timestamped SRT in the same language out. **This skill stops at the source-language SRT.** Translation to another language is the next skill (`/wjs-translating-subtitles`). ## When to use - User provides a video or audio file and wants a transcript / SRT in the source language. - User already has a translated SRT and the source SRT is missing. - User asks "做 SRT" / "make subtitles" / "出逐字稿" with no translation step requested yet. ## When NOT to use - Source-language SRT already exists → skip straight to `/wjs-translating-subtitles`. - User wants the transcript in a different language than spoken → run this skill first, then `/wjs-translating-subtitles`. - User wants only the dub or burn-in → if SRT exists, skip; otherwise run this first. ## Routing: which engine | Source language | Default engine | Why | |---|---|---| | Chinese (zh-CN, zh-HK, zh-TW) | **Volcano (豆包) ASR** | Materially better accuracy than Whisper for Chinese — user's standing preference | | Any other (es, en, pt, fr, it, ja, ko, …) | **OpenAI Whisper API** with word-level granularity | Whisper's multilingual is strong; word timestamps let us assemble cues ourselves | | Off

What's inside
Steps it walks through
  1. When to use
  2. When NOT to use
  3. Routing: which engine
  4. OpenAI Whisper API path (non-Chinese, and Chinese fallback)
  5. Why not responseformat=srt
  6. Calling the API
  7. Surprise: words[] has no punctuation, segments[] is inconsistent
  8. Cue assembly recipe
  9. Operational details
  10. Anti-patterns (do not do)
  11. Volcano (豆包) ASR path — preferred for Chinese
  12. Use the STREAMING WebSocket API — pushes bytes, needs NO public URL
  13. Local Whisper as last resort
  14. AI 润色 pass — fix obvious 错别字 (final step, always run for Chinese)
Ships with 2 files
  • scripts/build_srt_from_asr.py
  • scripts/volc_asr_stream.py
Commands it runs
OpenAI limit is 25MB per request; chunk into 10-min pieces
ffmpeg -hide_banner -loglevel error -y \
export VOLC_ASR_APPID=…  VOLC_ASR_ACCESS_TOKEN=…   # credentials live with the user
python3 scripts/volc_asr_stream.py <clip.mp4|wav|mp3|pcm> <out.asr.json>
python3 scripts/build_srt_from_asr.py <out.asr.json> <out.srt> [max_chars=18]
Segmentation knobs (optional):
ffmpeg -i input.mp4 -vn -ac 1 -ar 16000 -c:a pcm_s16le _audio.wav -y
uvx --from openai-whisper whisper _audio.wav \
rm _audio.wav
More from claude-skills
All skills →
About this skill
What does the wjs-transcribing-audio skill do?

Use when the user has audio or video and wants a timestamped transcript (SRT) in the source language. Routes by source language — Chinese defaults to Volcano (豆包) ASR; other languages (Spanish, English, Portuguese, French, Italian, Japanese, Korean, etc.) use OpenAI Whisper API with word-level timestamps and self-assembled cues. Outputs SRT with punctuation-bounded cues capped for on-screen reading. Triggers — "转写", "转成字幕", "做 SRT", "transcribe", "make subtitles", "speech to text", "出字幕".

How do I install it?

Run `npx skills add jianshuo/claude-skills --skill wjs-transcribing-audio --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From jianshuo/claude-skills, a repository with 112 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going