xTranscript
A Mac app that turns recordings, calls and online video into text split by speaker, then into a summary.
- 50-minute recording, on an M5
- 50 sec
- Speech languages
- 25
Why I built it
Three reasons.
Calls
They happen in Google Meet, Zoom, Teams and other apps, and often there's no way to record them. A voice recorder means exporting the file and hunting for a transcription service. Those services cost money and limit length, often to 30 minutes.
Online video
A two-hour video may hold ten useful minutes, scattered across the timeline. I wanted to paste a link, get the key points and decide if it's worth watching.
Curiosity
I wanted to understand how speech recognition and speaker separation actually work.
How it works
- Drop in a file, paste a link or record a call.
- The app recognises speech on your Mac and splits it by speaker.
- Read the text, click a timecode to jump to that moment, and rename the speakers.
- Pick a summary template or write your own prompt.
Screenshots
Features
Input
- Files: mp4, mov, mkv, webm, mp3, m4a, aac, wav.
- Links from YouTube, Vimeo, TikTok, Instagram, Zoom, Loom, Google Drive and about 20 more sites.
- Batch queue: drop several files or a whole folder.
- Speech in 25 European languages.
Call recording
- Records your microphone and the other side from any call app, as two tracks.
- Pause: paused audio isn't recorded and is cut from the file.
- Notices a call when another app takes the mic and offers to record.
Transcript
- Built-in player: click a timecode to jump there, the current paragraph is highlighted.
- Rename and merge speakers.
- Edit text, find and replace, undo edits.
Summary
- Works through your Claude or ChatGPT subscription, with no extra payment.
- If one subscription is unavailable, the other takes over.
- Summaries in Russian, English or Polish.
- Templates and your own prompts.
Library and export
- History with folders.
- Export to PDF, Markdown, plain text or the clipboard.
- A command-line version with the same features.
Key decisions
- Summary quality over full privacy. I started with a local model, Qwen3-8B, so nothing would leave the Mac, but it lost the middle of long conversations. So I moved summaries to Claude and ChatGPT through subscriptions I already pay for. Speech recognition still runs on the Mac, and only the text goes out for the summary. Each service backs up the other.
- Speed over language range. The first version took about 22 minutes on a 50-minute recording. I measured each stage and tested replacements for the two slowest on real recordings. The new models cover 25 languages instead of 99, but I needed three. The run dropped to under a minute, and speaker accuracy rose from 87.5% to 94% on a sample I checked by hand.
What's next
Getting it ready for other people: a Mac download from this site and a donate button. The donate button will also show if people value it enough to pay. The main barrier is setup, because summaries need Claude Code or Codex installed, so I'll make that easier first.
Tech
- Interface
- SwiftUI
- Speech
- FluidAudio, Parakeet TDT v3 on CoreML
- Speakers
- pyannote and WeSpeaker on CoreML
- Summary
- Claude Code or Codex CLI
- Links
- yt-dlp
- Audio
- Own FFmpeg build
- Call recording
- Core Audio process tap
- Player
- AVFoundation
- System
- macOS 14 and later, Apple Silicon