ITQAN LAB

MIT · verified 2026-08-11

catalog / Media / skill

audio-transcribe

Turn speech in any audio or video into text, on this machine, free. Arabic (including Egyptian dialect), English, or detected automatically. Takes a local file, a direct media link, or a YouTube or other site link. Outputs plain text, SRT, VTT or JSON with timings. Runs Whisper locally: no API key, no account, nothing leaves the machine.

version
1.0.0
updated
2026-10-13
works in
every conformant agent
needs
ffmpeg · yt-dlp
cost
free · no account
license
MIT

Say this you do not type commands, you ask

  • “transcribe this”
  • “what does this voice note say”
  • “read this recording”
  • “transcript of this meeting”
  • “make subtitles for this video”
  • “what is said in this clip”
  • “transcribe this YouTube video”

Once it is installed, that is the whole interface. Your agent picks the skill up on its own and runs whatever it needs to. The commands further down are there for anyone who would rather drive it themselves.

Install pick your agent

Examples copy and go

Changelog what changed, newest first

1.0.0

Added

  • Transcribe a local audio or video file, a direct media link, or a YouTube or other site link, fully on this machine.
  • Arabic (including Egyptian dialect), English, or automatic language detection.
  • Plain text, SRT and VTT subtitles, or JSON with timings.
  • Uses the fastest local Whisper engine installed: mlx-whisper on Apple Silicon, whisper-ctranslate2 or openai-whisper elsewhere.
  • A model is never downloaded without first saying how big it is.
  • Warns when the audio is near-silent, because Whisper invents text over silence.
  • Retries once with the large model when the output falls into a repetition loop.
  • A dependency check that shows the install commands and asks before running them, on macOS, Linux and Windows.

An agent that has this installed reads CHANGELOG.md in the skill folder. The same history is at changelog.json, and every tool's releases are at /updates.json.

Just ask

Once the skill is installed, say what you want in your own words:

"transcribe this voice note" "what does this recording say? it's in Arabic" "make English subtitles for this video" "transcribe this YouTube talk"

The agent runs it and gives you the text. Nothing is uploaded anywhere: Whisper runs on your computer, so it is safe for private recordings.

Requirements

  • ffmpeg, to read any audio or video.
  • A local Whisper engine: mlx-whisper on an Apple Silicon Mac, whisper-ctranslate2 or openai-whisper elsewhere. All free and open source.
  • yt-dlp, only for links to YouTube and other sites.
  • bash. On Windows, Git Bash or WSL.

The skill checks for these and offers to install what is missing:

sh scripts/setup-deps.sh --check    # what is there?
sh scripts/setup-deps.sh            # show the install commands, ask, then run them
.\scripts\setup-deps.ps1 -Check     # Windows

The first time a model is used it is downloaded once: about 1.6 GB for the default turbo, 3.1 GB for large. The script says the size and stops until you allow it with --allow-download.

Command line

bash scripts/transcribe.sh <source> [options]
Option Values Default
--lang ar, en, auto, or any Whisper language code auto
--model turbo, large, medium, small, base turbo
--format txt, srt, vtt, json txt
--out DIR also write <source name>.<format> into DIR none
--prompt "..." names and terms to spell right none
--engine mlx, ctranslate2, openai the fastest one installed
--allow-download allow the first download of a model off

<source> can be a local file, a direct media link, or a site link:

bash scripts/transcribe.sh meeting.m4a --lang en
bash scripts/transcribe.sh clip.mp4 --format srt --out captions
bash scripts/transcribe.sh https://example.com/episode.mp3
bash scripts/transcribe.sh "https://www.youtube.com/watch?v=..." --lang ar

For scripts that call it

  • The transcript is printed to stdout. Notes and warnings go to stderr.
  • On failure, the last stdout line is __TRANSCRIBE_FAILED__, a reason is printed to stderr after TRANSCRIBE_UNAVAILABLE:, and the exit code is 1. Bad options exit 2.
  • With --out, the file is named after the source (meeting.srt), not out.<format>.

Accuracy

Whisper invents text over silence, can loop on one phrase, and misspells names. The script warns on near-silent audio and retries a loop once with the large model. Pass names with --prompt. Check any number, date or amount against the audio before acting on it.

Source on GitHub ↗

Itqan Lab

Built at Itqan Lab, a design and technology studio.

إتقان — itqan, the Arabic word for mastery: doing a thing precisely, and completely.

Open source under MIT · agent paths re-verified 2026-08-11 · this site is generated from the repository on every push.