一键导入
whisper-beat-finder
Transcribe an mp3 with Whisper and convert the word-timestamped transcript into beat boundaries by matching key phrases from the script.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Transcribe an mp3 with Whisper and convert the word-timestamped transcript into beat boundaries by matching key phrases from the script.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Render a written script to mp3 voiceover via the ElevenLabs API. Reads a PASTE-block convention from a script.md file, calls the API, saves a master and a runtime copy.
Conventions for building a narrated Remotion video where the audio drives the timeline. Covers timing.ts, beat-local time, gap-fill sequences, and the end-card pattern.
Best practices for Remotion - Video creation in React
| name | whisper-beat-finder |
| description | Transcribe an mp3 with Whisper and convert the word-timestamped transcript into beat boundaries by matching key phrases from the script. |
| metadata | {"tags":"whisper, transcription, audio, beat-timing, animation"} |
Use this skill in Stage 03, immediately after elevenlabs-narration produces an mp3. It outputs two things:
transcript.json -- Whisper's full output with word-level timestampsbeat-timings.md -- absolute timestamps for each beat boundary and key sub-calloutStage 04 reads beat-timings.md to populate timing.ts and re-time per-scene T constants.
openai-whisper installedNo GPU is required. The default configuration runs medium.en on CPU, which finishes ~1 minute per minute of audio on a modern laptop and is reliable across drivers.
Configured model: {{WHISPER_MODEL}}
We default to medium.en on CPU because large-v3 on GPU has been observed to segfault on some CUDA driver combinations (RTX 5080 + driver 591.86 was one). medium.en is accurate enough for beat extraction and never crashes. See rules/cpu-fallback.md.
If you have a stable GPU setup and need faster turnaround, switch to large-v3 with device="cuda". If anything segfaults, fall back to medium.en on CPU.
whisper.load_model("medium.en", device="cpu")word_timestamps=True, language="en", fp16=Falsetranscript.jsonbeat-timings.md with the structured table.See rules/phrase-matching.md for the matching contract.
scripts/transcribe.py -- transcribe an mp3, save transcript.jsonscripts/find-beats.py -- given transcript.json and a list of beat phrases, emit beat-timings.mdCopy both into the project root and edit the audio path / beat list at the top.
beat-timings.md contains a markdown table that Stage 04 reads directly:
| Beat | Name | Start (abs) | End (abs) | Sub-callouts |
|------|------|-------------|-----------|--------------|
| 1 | Open on the topic | 0.00 | 21.02 | nine years @ 9.16, keeps emailing @ 13.04 |
| 2 | The backlog | 21.02 | 46.04 | directors by hand @ 31.10, quitting @ 36.86 |
The last beat's end is the total audio length (from transcript.json's last word end). Plus a small tail if there is an end card.