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", "出字幕".
npx skills add jianshuo/claude-skills --skill wjs-transcribing-audio --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# 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
- When to use
- When NOT to use
- Routing: which engine
- OpenAI Whisper API path (non-Chinese, and Chinese fallback)
- Why not responseformat=srt
- Calling the API
- Surprise: words[] has no punctuation, segments[] is inconsistent
- Cue assembly recipe
- Operational details
- Anti-patterns (do not do)
- Volcano (豆包) ASR path — preferred for Chinese
- Use the STREAMING WebSocket API — pushes bytes, needs NO public URL
- Local Whisper as last resort
- AI 润色 pass — fix obvious 错别字 (final step, always run for Chinese)
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
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.
