openai-transcribe
Transcribe audio with OpenAI speech-to-text models (gpt-4o-transcribe, gpt-4o-mini-transcribe, whisper-1) using prompt-guided terminology, segment-level…
Skill by SwapnilPopat
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/swapnilpopat-openai-transcribe
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/openai-transcribe
What's inside
- Skill name
openai-transcribe- Description
- Transcribe audio with OpenAI speech-to-text models (gpt-4o-transcribe, gpt-4o-mini-transcribe, whisper-1) using prompt-guided terminology, segment-level timestamps, optional diarization via post-processing, and reliable artifact delivery. Use when converting interviews, calls, podcasts, or meeting recordings into reviewable text. Requires OPENAI_API_KEY.
- License
- MIT
- Instructions
- 119 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# OpenAI Transcribe
Produce trustworthy, reviewable transcripts from audio using OpenAI's speech-to-text APIs with deliberate model selection, terminology priming, chunking for long media, and explicit confidence reporting.
## Stack Baseline (2026)
| Concern | Choice | Notes |
|---|---|---|
| Default model | `gpt-4o-transcribe` | Highest accuracy; multilingual; lower WER than whisper-1 |
| Cost-tier model | `gpt-4o-mini-transcribe` | Use for bulk/low-stakes work |
| Legacy fallback | `whisper-1` | Only when needing `verbose_json` segment timestamps natively |
| Endpoint | `POST /v1/audio/transcriptions` | Multipart upload |
| Streaming | `stream=true` (Realtime/SSE) | Live captions, voice agents |
| Max file size | 25 MB per request | Chunk longer files (≤10 min slices recommended) |
| Supported formats | mp3, mp4, m4a, wav, webm, flac, ogg, mpga, mpeg | Re-encode unusual codecs to wav 16kHz mono first |
| Diarization | Not native | Use `pyannote.audio` 3.x or AssemblyAI for speaker labels, then align |
| Timestamps | `timestamp_granularities=["segment","word"]` (whisper-1) or response includes segments (gpt-4o-transcribe) | |
| SDK | `openai` Python ≥1.50, Node `openai` ≥4.70 | |
## When to Use
- Interview, podcast, lecture, or meeting transcription.
- Compliance recordings requiring searchable text.
- Generating subtitle/caption tracks (SRT/VTT).
- Building a voice-input feature where latency tolerates batch.
## Prerequisites
- `OPENAI_API_KEY` exported in environment (never hard-coded).
- Audio file path and duration known; file readable and within format support.
- Decision on output: plain text, timestamped, speaker-labeled, SRT/VTT, or summary derivatives.
- For long audio: `ffmpeg` available for re-encoding/chunking.
## Instructions
1. **Inspect input.** Check duration, container, sample rate, channels, and noise floor:
```bash
ffprobe -v error -show_entries format=duration,bit_rate,format_name \
-show_entries stream=codec_name,sample_rate,channels file.m4a
```
2. **Normalize if needed.** Convert to 16 kHz mono WAV for best accuracy and smallest size:
```bash
ffmpeg -i input.m4a -ac 1 -ar 16000 -c:a pcm_s16le normalized.wav
```
3. **Chunk if >25 MB or >25 min.** Split on silence to avoid mid-word cuts:
```bash
ffmpeg -i normalized.wav -f segment -segment_time 600 \
-c copy chunks/part_%03d.wav
```
4. **Prime terminology with the `prompt` parameter** (≤244 tokens) — list proper nouns, product names, jargon. The model treats it as prior context, not literal text:
```python
from openai import OpenAI
client = OpenAI()
prompt_terms = (
"Speakers: Dr. Acharya, Mei-Lin Park. "
"Project: Helios. Acronyms: SLO, RTO, FAPI."
)
with open("normalized.wav", "rb") as f:
result = client.audio.transcriptions.create(
model="gpt-4o-transcribe",
file=f,
language="en", # ISO-639-1 hint
prompt=prompt_terms,
response_format="json", # "text" | "json" | "srt" | "vtt" | "verbose_json"
temperature=0, # deterministic
)
transcript = result.text
```
5. **For per-segment timestamps**, use `whisper-1` with `verbose_json`:
```python
v = client.audio.transcriptions.create(
model="whisper-1",
file=open("normalized.wav", "rb"),
response_format="verbose_json",
timestamp_granularities=["segment", "word"],
)
for seg in v.segments:
print(f"[{seg.start:.2f}-{seg.end:.2f}] {seg.text}")
```
6. **Reassemble chunks** by adding cumulative offsets to each chunk's segment timestamps before merging.
7. **Diarize (optional).** Run `pyannote/speaker-diarization-3.1` separately, then assign each transcript segment to the speaker whose RTTM span overlaps most. Never fabricate speaker labels without a diarization step.
8. **Clean for human review.** Fix punctuation/casing only; preserve numbers, names, product terms verbatim. Mark unclear regions with `[unclear]` rather than guessing.
9. **Emit artifacts**: raw response JSON, cleaned `.txt`, optional `.srt`/`.vtt`, and a `confidence_notes.md` listing low-quality regions (high WER risk: overlapping speech, music bleed, clipping).
10. **Cost & latency check.** gpt-4o-transcribe is billed per minute of audio; log duration × rate before bulk runs.
## Common Pitfalls
| Pitfall | Impact | Fix |
|---|---|---|
| Sending raw 48 kHz stereo m4a | Higher cost, no accuracy gain | Downmix to 16 kHz mono WAV first |
| Treating `prompt` as a transcript prefix | Model hallucinates the prompt into output | Use only as terminology hint; verify output start |
| Splitting on fixed time without silence detection | Words cut mid-syllable, segment loss | Use `silencedetect` filter or `pydub.split_on_silence` |
| Hardcoding `OPENAI_API_KEY` in scripts | Credential leak in repo/CI logs | Read from env / secret manager only |
| Trusting transcripts of low-SNR audio | Confident-sounding hallucinations | Compute audio RMS; flag segments below threshold |
| Assuming diarization from speaker-like punctuation | Wrong speaker attribution | Run a real diarizer; align by overlap |
| Retrying on 429 without backoff | Rate-limit spiral | Exponential backoff + `Retry-After` header |
| Logging full transcript to stdout in CI | PII leak in build logs | Write to file only; redact in summaries |
## Output Format
Deliver to the caller:
1. `transcript.raw.json` — provider response, untouched.
2. `transcript.clean.txt` — punctuation/casing normalized; verbatim content.
3. `transcript.srt` or `.vtt` — when timestamps requested.
4. `confidence_notes.md` — list of `[start–end]` ranges flagged low-confidence with reason (noise, overlap, accent).
5. Optional derivatives (only if requested): `summary.md`, `action_items.md`, `decisions.md`.
## Authoritative References
- OpenAI Speech-to-text guide: https://platform.openai.com/docs/guides/speech-to-text
- Audio transcriptions API: https://platform.openai.com/docs/api-reference/audio/createTranscription
- OpenAI prompting for Whisper/transcribe: https://platform.openai.com/docs/guides/speech-to-text/prompting
- pyannote.audio (diarization): https://github.com/pyannote/pyannote-audio
- ffmpeg silencedetect: https://ffmpeg.org/ffmpeg-filters.html#silencedetectFrom SwapnilPopat/ai-assistant-skills, MIT.
More from SwapnilPopat/ai-assistant-skills
- 0.497score
fitness-function-design
SwapnilPopat
Design executable architectural fitness functions per quality attribute.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
cloudflare-deploy
SwapnilPopat
Deploy Cloudflare Workers, Pages, and Workers-with-static-assets safely using Wrangler 4.x with versioned uploads, gradual deployments, preview/production…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
netlify-deploy
SwapnilPopat
Deploy static sites, framework apps (Next.js, Astro, Remix, SvelteKit, Nuxt), Edge Functions, and serverless Functions to Netlify with deploy previews, branch…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
render-deploy
SwapnilPopat
Deploy Web Services, Private Services, Background Workers, Cron Jobs, Static Sites, PostgreSQL, and Key-Value (Redis-compatible) on Render via Blueprints…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
sentry-observability
SwapnilPopat
Operate Sentry end-to-end — error monitoring, performance tracing, session replay, profiling, release health, source-map upload, ownership routing, alert…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
architect-review
SwapnilPopat
Conduct a rigorous architecture review covering scope, drivers, quality attributes, risks, decisions, and action items.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
architecture-anti-patterns
SwapnilPopat
Detect and remediate architecture anti-patterns - Big Ball of Mud, Distributed Monolith, Golden Hammer, Vendor Lock-in, Premature Microservices, Lava Flow…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
dependency-governance
SwapnilPopat
Govern third-party and OSS dependencies via SBOM, SLSA, OpenSSF Scorecard, and license policy.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
anthropic-claude
SwapnilPopat
Build production integrations with Anthropic Claude (Claude 4.5 Sonnet, Claude Opus 4, Claude Haiku 4) via the Messages API — system prompts, multi-turn…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
architecture-patterns-catalog
SwapnilPopat
Select the right macro-architecture pattern by mapping drivers (scale, change rate, team topology, NFRs) to a curated 2026 catalog covering layered…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
architecture-review-facilitation
SwapnilPopat
Facilitate effective architecture reviews using ATAM-lite, structured agendas, decision logs, and clear action items.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
interview-prep
SwapnilPopat
Prepare for system-design interviews using a repeatable framework - requirements clarification, capacity estimation, API and data design, deep dives, and…
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- May 1, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from SwapnilPopat
- 0.497score
cloudflare-deploy
SwapnilPopat
Deploy Cloudflare Workers, Pages, and Workers-with-static-assets safely using Wrangler 4.x with versioned uploads, gradual deployments, preview/production…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
netlify-deploy
SwapnilPopat
Deploy static sites, framework apps (Next.js, Astro, Remix, SvelteKit, Nuxt), Edge Functions, and serverless Functions to Netlify with deploy previews, branch…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
render-deploy
SwapnilPopat
Deploy Web Services, Private Services, Background Workers, Cron Jobs, Static Sites, PostgreSQL, and Key-Value (Redis-compatible) on Render via Blueprints…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
sentry-observability
SwapnilPopat
Operate Sentry end-to-end — error monitoring, performance tracing, session replay, profiling, release health, source-map upload, ownership routing, alert…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
architect-review
SwapnilPopat
Conduct a rigorous architecture review covering scope, drivers, quality attributes, risks, decisions, and action items.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
anthropic-claude
SwapnilPopat
Build production integrations with Anthropic Claude (Claude 4.5 Sonnet, Claude Opus 4, Claude Haiku 4) via the Messages API — system prompts, multi-turn…
SkillCFreshness: C★ 1Claude Code +9
Cite this page
openai-transcribe skill. Agent Mart. https://agentmart.dev/skills/swapnilpopat-openai-transcribe (last updated 2026-10-24)