agentleFS
matanhakimmatanhakim/local-speech-to-text/skill/SKILL.md

audio-transcription

Skill0 starsChanged 5 months agoMITView on GitHub

Transcribe audio or video files (Hebrew or any language) into timestamped Markdown using faster-whisper, with the ivrit-ai/whisper-large-v3-turbo-ct2 fine-tune as the default Hebrew model. Triggers whenever the user asks to transcribe, tafmel, תמלל, תמלול, or analyze a recording — phone calls, meetings, Google Meet recordings, voice memos, lectures, interviews. Saves transcripts to a project-local path (default: `transcripts/` or alongside the source) and Hebrew transcripts are auto-wrapped in `<div dir="rtl">` so they render correctly.

  • Installs packages

7 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions7 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 7

    1. OpenBMB/PilotDeck★ 5ksame name
    2. mitsuhiko/agent-commands★ 3.2ksame name
    3. mitsuhiko/agent-stuff★ 3.2ksame name
    4. patrick-fu/awesome-skills★ 69same name
    5. PostPlusAI/postplus-skills★ 27same name
    6. aryankumar06/claude-code-skills★ 16same name
    7. ucsb-dreamlab/skills★ 2same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 6 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When invoked inside a project, save the transcript under the project's working tree, not next to the source file in Downloads.

    line 111
  2. Very specific:

    If the recording is conference/event-related → conference/transcripts/

    line 115
  3. Very specific:

    If it's interview source material for a review → sources/transcripts/

    line 116
  4. Very specific:

    If you have an NVIDIA GPU, --device cuda --compute-type float16 is 5-20× faster than CPU.

    line 133
  5. Very specific:

    Consider --beam-size 8 and revisit segments with low semantic coherence.

    line 146

“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Audio Transcription

Reusable local audio transcription via faster-whisper. Hebrew-first (uses the ivrit-ai fine-tune by default), but works for any language. Point it at a recording, get a timestamped Markdown transcript. Nothing leaves the machine.

When to use

  • The user has a recording (phone call, Google Meet, voice memo, interview, lecture, podcast) and wants it transcribed.
  • The user asks to "תמלל", "תמלול", "transcribe", "convert speech to text".
  • A workflow needs to read what was said in audio/video before proceeding (e.g. drafting a document from a kickoff call, extracting decisions from a meeting).

When NOT to use

  • The recording is already transcribed (.txt / .srt / .vtt / .md beside it) — read that instead.
  • The user asks for diarization (who-said-what speaker labels). This skill does not do diarization out of the box (see "Future work" below). Acknowledge the limitation and offer either: timestamped transcript + context-based attribution, or a separate pyannote.audio setup.
  • The audio is on a remote service requiring API auth (YouTube link, Zoom cloud, etc.) — first get a local file.

Setup

pip install faster-whisper
# plus ffmpeg from your system package manager - see ../install-whisper/

Quickstart

# Hebrew (default model: ivrit-ai/whisper-large-v3-turbo-ct2)
python transcribe.py "<path-to-audio>" -l he -o transcripts\<name>.md

# English / auto-detect
python transcribe.py "<path-to-audio>" -o transcripts\<name>.md

The script is also invokable from bash:

python transcribe.py "<path-to-audio>" -l he -o transcripts/<name>.md

Defaults & flags

FlagDefaultNotes
-l/--languageauto-detectPass he for Hebrew to force the ivrit-ai model
-m/--modelivrit-ai/whisper-large-v3-turbo-ct2 for he, else large-v3Any HF CT2 model or built-in size (tiny/base/small/medium/large-v3)
-o/--output<audio>.transcript.mdPrefer an explicit path under <project>/transcripts/
--deviceautocuda if available, else cpu
--compute-typedefaultCPU: int8 is fastest. GPU: float16.
--beam-size5Raise to 8 for noisy phone audio; lower to 1 for speed
--no-vadoff (VAD on)Silero VAD pre-filter is on by default — helps phone calls with long silences
--initial-promptnoneBias the decoder toward proper nouns: --initial-prompt "Ada, Lin, ACME, roadmap"
--word-timestampsoffAdds word-level timing inside each segment (slower)

Output format

Markdown with one segment per paragraph:

# Transcript: <filename>

- Source: ...
- Model: ...
- Language: he (99%) (forced)
- Duration: 0:14:36
- VAD: Silero (on)
- Beam size: 5

---

<div dir="rtl">

`00:00:00` שלום, אז דיברנו על...

`00:00:08` כן, אני חושב שצריך לבדוק...

</div>

Hebrew transcripts are automatically wrapped in <div dir="rtl"> for correct RTL rendering on GitHub and in Markdown previewers.

Recipe: project-local placement

When invoked inside a project, save the transcript under the project's working tree, not next to the source file in Downloads. Pick the most specific subdirectory available:

  1. If the recording is conference/event-related → conference/transcripts/
  2. If it's interview source material for a review → sources/transcripts/
  3. Generic working call → transcripts/

Filename convention: <YYYY-MM-DD>-<short-slug>.md. Example: 2026-05-27-team-call.md.

Performance expectations

On CPU (no GPU), expect roughly:

  • large-v3 / ivrit-ai/...turbo-ct2: 0.3-1.4× realtime depending on CPU and how much silence the VAD skips
  • medium: 1-2× realtime
  • small: 4-6× realtime

The first run downloads the model (~1.5-3 GB) into the HuggingFace cache. Subsequent runs are warm and fully offline.

If you have an NVIDIA GPU, --device cuda --compute-type float16 is 5-20× faster than CPU.

Hebrew quality notes

  • ivrit-ai/whisper-large-v3-turbo-ct2 is the state-of-the-art Hebrew Whisper fine-tune. It significantly outperforms vanilla large-v3 on Hebrew WER, especially for spontaneous speech and accented Hebrew.
  • For mixed Hebrew/English calls, the ivrit-ai model handles code-switching well; English-only segments will transcribe correctly too.
  • Numbers/dates often come out as words; let the user polish if they need digits.
  • Phone-line audio (8 kHz) is noticeably worse than meeting-quality audio. Consider --beam-size 8 and revisit segments with low semantic coherence.

Future work (not implemented)

  • Speaker diarization (who-said-what): would require pyannote.audio + PyTorch + a HF-gated model accept. For two-speaker calls, an LLM can often re-attribute speakers post-hoc from context.
  • SRT/VTT output: easy to add — currently only Markdown is emitted.
  • Force-alignment / phrase-level confidence: faster-whisper exposes word_timestamps and per-segment probabilities; not surfaced in MD yet.

Privacy

The transcription is fully local — audio never leaves the machine. Models are downloaded once from HuggingFace; runtime is offline.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.