Skip to main content
Glama

transcribe_audio

Transcribe audio and video files directly on Windows, converting formats automatically and returning timestamped text. Supports background jobs for long recordings.

Instructions

Transcribe a single audio or video file using whisper.cpp on Windows. Natively supports mp3 and wav. Automatically converts mp4, mkv, avi, mov, webm, m4a, flac, ogg etc. via FFmpeg — no manual conversion needed. Output defaults to timestamps format (with time codes). For files that may take more than 4 minutes, set background=true to run as a detached job and use check_progress to monitor it. ⚠️ Privacy: transcript text returned by this tool is processed by Claude's API. Pass privacy_mode=true to this tool to enable metadata-only responses per call — no transcript text will be transmitted. Set WHISPER_PRIVACY_MODE=true in env to enable globally. When privacy mode is active, a confirmation is required before every operation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelNoOverride model path. Leave blank to use active model.
promptNoPrior context string injected before transcription. Improves accuracy for domain-specific vocabulary or speaker names. Example: 'Names: Keemstar, DramaAlert.'
best_ofNoNumber of candidate sequences to evaluate. Default 5.
diarizeNoStereo speaker diarization — requires stereo audio with speakers on separate channels.
threadsNoCPU threads. Defaults to 4 of 8.
durationNoProcess only this many milliseconds of audio from offset_t.
languageNoLanguage code (e.g. en, ja, es, fr) or 'auto' to detect automatically. Defaults to en.en
offset_tNoStart transcription at this offset in milliseconds.
beam_sizeNoBeam search width. Higher = more accurate but slower. Default 5.
file_pathYesAbsolute Windows path, e.g. C:\Users\You\Downloads\recording.mp4
vad_modelNoAbsolute path to a Silero VAD model .bin file. Strips silence before transcription.
backgroundNoRun as a detached background job. Returns a job ID immediately. Use check_progress to monitor. Recommended for files over 10 minutes.
gpu_deviceNoGPU/Vulkan device index for multi-GPU systems. Overrides the WHISPER_GPU_DEVICE env default. Check whisper-cli's startup log for the index that lists your target card.
processorsNoNumber of parallel processors. Default 1.
temperatureNoSampling temperature 0.0–1.0. Default 0.0 (deterministic).
tinydiarizeNoMono speaker-turn detection (TinyDiarize). Marks '[SPEAKER_TURN]' at speaker changes on single-channel audio. Requires a tdrz model (small.en-tdrz) — download it with download_model and activate with switch_model first.
privacy_modeNoOverride privacy mode for this call. true = metadata only, no transcript text transmitted to API. false = return text (even if WHISPER_PRIVACY_MODE=true globally). Omit to use global WHISPER_PRIVACY_MODE setting. When active, requires confirmation before each operation.
save_to_fileNoSave transcript as .txt next to the source file.
output_formatNotimestamps = with time codes (default), text = plain, json = structured, srt = SRT subtitle file, vtt = WebVTT subtitle file, lrc = LRC lyrics/karaoke, csv = CSV with timestamps.timestamps
split_on_wordNoSplit segments at word boundaries.
no_speech_tholdNoConfidence threshold below which segments are treated as silence. Default 0.6.
word_timestampsNoOutput one word per timestamped segment. Useful for clip alignment.
max_segment_lengthNoMaximum segment length in characters.
condition_on_prev_textNoRe-enable conditioning each segment on its own prior output. Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.5.1
    • changedInput schema / properties / threads / description
      Previous value: -"CPU threads. Defaults to 2 of 2."New value: +"CPU threads. Defaults to 4 of 8."
    • addedInput schema / properties / tinydiarize
      Added value: +{
      +  "default": false,
      +  "description": "Mono speaker-turn detection (TinyDiarize). Marks '[SPEAKER_TURN]' at speaker changes on single-channel audio. Requires a tdrz model (small.en-tdrz) — download it with download_model and activate with switch_model first.",
      +  "type": "boolean"
      +}
  2. Changed18 schema fields changedv2.4.0
    • changedInput schema / properties / condition_on_prev_text / description
      Previous value: -"Re-enable conditioning each segment on its own prior output (removes --max-context 0 flag). Default false (off). Only enable for highly structured audio where context continuity helps."New value: +"Re-enable conditioning each segment on its own prior output. Default false."
    • changedInput schema / properties / diarize / description
      Previous value: -"Stereo speaker diarization — labels left/right channel speakers in transcript. Requires stereo audio with speakers on separate channels."New value: +"Stereo speaker diarization — requires stereo audio with speakers on separate channels."
    • changedInput schema / properties / duration / description
      Previous value: -"Process only this many milliseconds of audio starting from offset_t (or the beginning). Use with offset_t to target a specific time window."New value: +"Process only this many milliseconds of audio from offset_t."
    • changedInput schema / properties / gpu_device / description
      Previous value: -"GPU device index for multi-GPU systems. Use check_system to see available GPUs. Default 0."New value: +"GPU/Vulkan device index for multi-GPU systems. Overrides the WHISPER_GPU_DEVICE env default. Check whisper-cli's startup log for the index that lists your target card."
    • changedInput schema / properties / max_segment_length / description
      Previous value: -"Maximum segment length in characters. Controls line break frequency in output. Ignored when word_timestamps=true."New value: +"Maximum segment length in characters."
    • changedInput schema / properties / no_speech_thold / description
      Previous value: -"Confidence threshold below which segments are treated as silence rather than transcribed. Default 0.6."New value: +"Confidence threshold below which segments are treated as silence. Default 0.6."
    • changedInput schema / properties / offset_t / description
      Previous value: -"Start transcription at this offset in milliseconds. Use to process a specific section of a file."New value: +"Start transcription at this offset in milliseconds."
    • changedInput schema / properties / output_format / default
      Previous value: -"text"New value: +"timestamps"
    • changedInput schema / properties / output_format / description
      Previous value: -"text = plain (default), timestamps = with time codes, json = structured, srt = subtitle file saved next to source."New value: +"timestamps = with time codes (default), text = plain, json = structured, srt = SRT subtitle file, vtt = WebVTT subtitle file, lrc = LRC lyrics/karaoke, csv = CSV with timestamps."
    • changedInput schema / properties / output_format / enum
      Previous value: -[
      -  "text",
      -  "timestamps",
      -  "json",
      -  "srt"
      -]New value: +[
      +  "timestamps",
      +  "text",
      +  "json",
      +  "srt",
      +  "vtt",
      +  "lrc",
      +  "csv"
      +]
    • addedInput schema / properties / privacy_mode
      Added value: +{
      +  "description": "Override privacy mode for this call. true = metadata only, no transcript text transmitted to API. false = return text (even if WHISPER_PRIVACY_MODE=true globally). Omit to use global WHISPER_PRIVACY_MODE setting. When active, requires confirmation before each operation.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / processors / description
      Previous value: -"Number of parallel processors for chunk processing. Default 1."New value: +"Number of parallel processors. Default 1."
    • changedInput schema / properties / prompt / description
      Previous value: -"Prior context string injected before transcription. Improves accuracy for domain-specific vocabulary, speaker names, or technical terms. Example: 'Names: Keemstar, DramaAlert.'"New value: +"Prior context string injected before transcription. Improves accuracy for domain-specific vocabulary or speaker names. Example: 'Names: Keemstar, DramaAlert.'"
    • changedInput schema / properties / save_to_file / default
      Previous value: -falseNew value: +true
    • changedInput schema / properties / split_on_word / description
      Previous value: -"Split segments at word boundaries rather than mid-word. Defaults to false."New value: +"Split segments at word boundaries."
    • changedInput schema / properties / temperature / description
      Previous value: -"Sampling temperature 0.0–1.0. Default 0.0 (deterministic). Higher values reduce hallucination on noisy audio at the cost of consistency."New value: +"Sampling temperature 0.0–1.0. Default 0.0 (deterministic)."
    • changedInput schema / properties / vad_model / description
      Previous value: -"Absolute path to a Silero VAD model .bin file. When provided, voice activity detection strips silence before transcription — reduces hallucinations and speeds up processing. Download via download_model."New value: +"Absolute path to a Silero VAD model .bin file. Strips silence before transcription."
    • changedInput schema / properties / word_timestamps / description
      Previous value: -"Output one word per timestamped segment (sets --max-len 1 --split-on-word). Useful for clip alignment and precise timecode search."New value: +"Output one word per timestamped segment. Useful for clip alignment."
  3. First observedv2.2.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses key behaviors: automatic FFmpeg conversion, output default to timestamps, background job behavior, and privacy/confirmation requirements. It also warns that transcript text is processed by Claude's API. These go beyond the schema and provide meaningful operational context, though it stops short of detailing error handling or return structures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but every sentence carries useful information: file support, conversion, output format, background jobs, and privacy. It is front-loaded with the core purpose and uses a clear warning for privacy. Slightly dense but well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (24 parameters, no output schema), the description covers key contextual aspects: file compatibility, background execution, and privacy. It does not describe the return format beyond the timestamps default, but with the schema's output_format enum, that is partially covered. Overall, it provides enough context for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value for background and privacy_mode by explaining their purpose and global env override, but it does not systematically enhance understanding of the 24 parameters. Most parameter semantics come from the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool transcribes a single audio or video file using whisper.cpp on Windows. The verb 'transcribe' and the resource 'single audio or video file' are specific, and it distinguishes itself from siblings like transcribe_batch by noting it handles a single file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance for long files (background=true and check_progress), privacy mode usage, and notes automatic FFmpeg conversion, implying no manual pre-processing. It does not explicitly mention alternatives like transcribe_batch, but the 'single file' wording conveys when to use this tool over the batch variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.