{"slug": "building-a-portuguese-pt-br-audio-video-transcription-pipeline-with-whisper-v3", "title": "Building a Portuguese (PT-BR) Audio & Video Transcription Pipeline with Whisper Large-v3, Pyannote Speaker Diarization, and MCP", "summary": "A developer built Transcreva, a browser-accessible PT-BR transcription and subtitle platform that pairs Whisper Large-v3 speech-to-text with Pyannote speaker diarization to produce speaker-labeled transcripts with word-level timestamps, plus SRT/VTT subtitle export. The workflow is also exposed to AI coding assistants such as Cursor, Claude Desktop and Windsurf through an open-source Model Context Protocol server, transcreva-mcp, installable via npx.", "body_md": "Transcribing multi-speaker audio and video in Brazilian Portuguese (PT-BR) comes with unique acoustic challenges: regional accents, colloquial expressions, overlapping speech in interviews, and low-bitrate voice notes (such as `.opus` / `.ogg` files from WhatsApp).\n\nIn this guide, we walk through how we architected **[Transcreva](https://transcreva.net/)** — a fast, browser-accessible AI transcription and subtitle generation platform with automatic speaker diarization — and how we exposed its workflow to AI coding agents using the **Model Context Protocol (MCP)**.\n\nWhen you run standard speech-to-text on a 45-minute podcast or academic interview, a wall of unsegmented text is hard to read. To produce dialogue-ready transcripts with `Speaker 1`, `Speaker 2` labels and word-level timestamps, we combine two stages:\n\n```\ninterface TranscriptSegment {\n  id: string;\n  speaker: string; // e.g., \"Speaker 1\"\n  startTime: number; // seconds\n  endTime: number;\n  text: string;\n}\n\nexport function formatSrtTimestamp(seconds: number): string {\n  const hrs = Math.floor(seconds / 3600);\n  const mins = Math.floor((seconds % 3600) / 60);\n  const secs = Math.floor(seconds % 60);\n  const ms = Math.round((seconds % 1) * 1000);\n  return `${String(hrs).padStart(2, \"0\")}:${String(mins).padStart(2, \"0\")}:${String(secs).padStart(2, \"0\")},${String(ms).padStart(3, \"0\")}`;\n}\n```\n\n`.opus` / `.ogg`) and Video Subtitles (`.srt` / `.vtt`)\nTwo of the most common real-world workflows for Brazilian journalists, researchers, and creators are:\n\n`transcreva-mcp`)\nTo bring transcription utilities directly into AI coding assistants (Cursor, Claude Desktop, Windsurf), we also built an open-source Model Context Protocol server: **[transcreva-mcp](https://github.com/arkyu2077/transcreva-mcp)**.\n\nYou can add it to your MCP configuration in seconds:\n\n```\n{\n  \"mcpServers\": {\n    \"transcreva\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"transcreva-mcp\"]\n    }\n  }\n}\n```\n\n", "url": "https://wpnews.pro/news/building-a-portuguese-pt-br-audio-video-transcription-pipeline-with-whisper-v3", "canonical_source": "https://dev.to/arkyu2077/building-a-portuguese-pt-br-audio-video-transcription-pipeline-with-whisper-large-v3-pyannote-5e50", "published_at": "2026-11-04 03:09:17+00:00", "updated_at": "2026-11-04 03:22:08.987751+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-tools", "agent-protocols", "natural-language-processing", "ai-agents"], "entities": ["Transcreva", "Whisper Large-v3", "Pyannote", "Model Context Protocol", "transcreva-mcp", "Cursor", "Claude Desktop", "Windsurf"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/building-a-portuguese-pt-br-audio-video-transcription-pipeline-with-whisper-v3", "markdown": "https://wpnews.pro/news/building-a-portuguese-pt-br-audio-video-transcription-pipeline-with-whisper-v3.md", "text": "https://wpnews.pro/news/building-a-portuguese-pt-br-audio-video-transcription-pipeline-with-whisper-v3.txt", "jsonld": "https://wpnews.pro/news/building-a-portuguese-pt-br-audio-video-transcription-pipeline-with-whisper-v3.jsonld"}}