
transcribe
✓ Official★ 23,200by openai · part of openai/skills
Transcribe audio files to text with optional speaker diarization and known-speaker hints. Supports fast text transcription via gpt-4o-mini-transcribe and speaker-labeled diarization via gpt-4o-transcribe-diarize Accepts multiple audio formats and optional known-speaker references (up to 4 speakers) to improve diarization accuracy Outputs as plain text, JSON, or diarized JSON with configurable output directories to prevent overwrites Requires OPENAI_API_KEY environment variable; uses bundled...
Transcribe audio files to text with optional speaker diarization and known-speaker hints. Supports fast text transcription via gpt-4o-mini-transcribe and speaker-labeled diarization via gpt-4o-transcribe-diarize Accepts multiple audio formats and optional known-speaker references (up to 4 speakers) to improve diarization accuracy Outputs as plain text, JSON, or diarized JSON with configurable output directories to prevent overwrites Requires OPENAI_API_KEY environment variable; uses bundled...
Inspect the full instructions your agent will receiveExpandCollapse
This is the exact playbook injected into your agent when the skill activates — shown here so you can audit it before installing. You don't need to read it to use the skill.
name: "transcribe" description: "Transcribe audio files to text with optional diarization and known-speaker hints. Use when a user asks to transcribe speech from audio/video, extract text from recordings, or label speakers in interviews or meetings."
Audio Transcribe
Transcribe audio using OpenAI, with optional speaker diarization when requested. Prefer the bundled CLI for deterministic, repeatable runs.
Workflow
- Collect inputs: audio file path(s), desired response format (text/json/diarized_json), optional language hint, and any known speaker references.
- Verify
OPENAI_API_KEYis set. If missing, ask the user to set it locally (do not ask them to paste the key). - Run the bundled
transcribe_diarize.pyCLI with sensible defaults (fast text transcription). - Validate the output: transcription quality, speaker labels, and segment boundaries; iterate with a single targeted change if needed.
- Save outputs under
output/transcribe/when working in this repo.
Decision rules
- Default to
gpt-4o-mini-transcribewith--response-format textfor fast transcription. - If the user wants speaker labels or diarization, use
--model gpt-4o-transcribe-diarize --response-format diarized_json. - If audio is longer than ~30 seconds, keep
--chunking-strategy auto. - Prompting is not supported for
gpt-4o-transcribe-diarize.
Output conventions
- Use
output/transcribe/<job-id>/for evaluation runs. - Use
--out-dirfor multiple files to avoid overwriting.
Environment
OPENAI_API_KEYmust be set for live API calls.- If the key is missing, instruct the user to create one in the OpenAI platform UI and export it in their shell.
- Never ask the user to paste the full key in chat.
Skill path (set once)
export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
export TRANSCRIBE_CLI="$CODEX_HOME/skills/transcribe/scripts/transcribe_diarize.py"User-scoped skills install under $CODEX_HOME/skills (default: ~/.codex/skills).
Reference map
references/api.md: supported formats, limits, response formats, and known-speaker notes.
npx skills add https://github.com/openai/skills --skill transcribeRun this in your project — your agent picks the skill up automatically.
Dependencies (install if missing)
Prefer uv for dependency management.
uv pip install openaiIf uv is unavailable:
python3 -m pip install openaiCLI quick start
Single file (fast text default):
python3 "$TRANSCRIBE_CLI" \
path/to/audio.wav \
--out transcript.txtDiarization with known speakers (up to 4):
python3 "$TRANSCRIBE_CLI" \
meeting.m4a \
--model gpt-4o-transcribe-diarize \
--known-speaker "Alice=refs/alice.wav" \
--known-speaker "Bob=refs/bob.wav" \
--response-format diarized_json \
--out-dir output/transcribe/meetingPlain text output (explicit):
python3 "$TRANSCRIBE_CLI" \
interview.mp3 \
--response-format text \
--out interview.txtNo common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.