Local-first macOS 26+ (Tahoe) speech transcription app & command-line tool (CLI). Uses SpeechAnalyzer and SpeechTranscriber to load appropriate models and transcribe without an internet connection.
Why use this? It runs locally, costs nothing, and can be easily integrated into another app or script.
A simple drag-and-drop macOS application for transcribing audio files using Apple's SpeechAnalyzer API.
- ๐ฏ Drag and Drop: Simply drag audio files onto the app
- ๐ Queue Management: Process multiple files sequentially
- ๐ Progress Tracking: Visual feedback for each transcription
- ๐ SRT or TXT: Generates SubRip (.srt) subtitle or plaintext (.txt) files
- ๐ต Audio Support: MP3, M4A, WAV, AIFF formats
- macOS 26.0+ (macOS Tahoe)
- Xcode with Swift 6.0+
swift build -c releaseAfter building:
# Copy to Applications folder
cp -r build/Transcriber.app /Applications/
# Or run directly
open build/Transcriber.app- Launch the app - Double-click
Transcriber.app - Drag audio files onto the drop zone
- Wait for processing - Files are transcribed sequentially
- Find transcripts - SRT files are created next to the original audio files
If you drop podcast-episode.mp3, the app will create podcast-episode.srt in the same directory.
This happens because the app isn't code-signed. To fix:
# Remove quarantine attribute
xattr -cr /Applications/Transcriber.appThe CLI must be bundled in the app's Resources folder. Rebuild using build_app.sh.
Check that:
- You have macOS 26+ (Tahoe)
- The audio files are in a supported format (MP3, M4A, WAV, AIFF)
- You have disk space for the SRT files
This CLI tool runs SpeechAnalyzer locally to generate TXT or SRT transcriptions of an audio or video file. If built locally, the tool will be located in .build/release/TranscriberCLI. Displays a progress bar with how far along transcription is.
TranscriberCLI --input-path ./ABC123.mp3 \
--output-file ./ABC123.srt \
--format srt \
--locale en_USThere are four parameters:
--input-path(required): path to an audio or video file--output-path(required): path to where the transcript should be written--format(optional): defaults totxt. Valuessrtortxtonly--locale(optional): defaults to your system locale viaLocale.current.identifier
Licensed under the Apache 2.0 license. Developed by Tom Barrasso.

