Local CLI for diarized transcription on macOS, built on FluidAudio. Upload an audio file and get a speaker-labeled transcript plus an interactive HTML viewer.
- Diarized transcription — identifies speakers and assigns words to each speaker
- Plain-text output —
<filename>.txtwith timestamps and speaker labels - Interactive HTML —
<filename>.htmlwith:- Color-coded speaker segments
- Word-level highlighting synced to playback
- Click any word or segment to seek in the audio
- Rename speakers
- Built-in audio player (with playback speed selection)
- macOS 14+
- Swift 6.0+
- Apple Silicon recommended (uses CoreML / ANE via FluidAudio)
- Network access on first run (models download from Hugging Face)
git clone https://github.com/HeyMeco/MecoScribe.git
cd MecoScribe
swift build -c releaseThe binary is at .build/release/mecoscribe.
Downloaded FluidAudio models are stored in ./models by default (relative to your current working directory). Subsequent runs reuse the cache instead of re-downloading.
Override with --models-dir /path/to/models or the MECOSCRIBE_MODELS_DIR environment variable.
# Basic — writes meeting.txt and meeting.html next to the audio file
swift run mecoscribe meeting.wav
# Specify output directory
swift run mecoscribe interview.mp3 --output-dir ./transcripts
# Offline diarization (default) — multilingual ASR is used automatically
swift run mecoscribe call.m4a --output-dir ./transcripts
# English-only ASR (optional)
swift run mecoscribe english.wav --model-version v2
# Preset speaker names
swift run mecoscribe panel.wav --speakers "Alice,Bob,Carol"| Flag | Description |
|---|---|
-o, --output-dir <dir> |
Output directory (default: same folder as audio) |
--models-dir <dir> |
Model cache directory (default: ./models) |
--mode streaming|offline |
Diarization mode (default: offline) |
--threshold <float> |
Speaker clustering threshold (default: 0.6) |
--model-version v2|v3 |
ASR model — default v3 (multilingual); use v2 for English-only |
--model-dir <path> |
Use local ASR models instead of downloading |
--speakers <n1,n2,...> |
Initial speaker display names |
-h, --help |
Show help |
Given meeting.wav, MecoScribe produces:
-
meeting.txt— readable transcript:[00:12] Speaker 1: Welcome everyone to today's meeting. [00:18] Speaker 2: Thanks for having me. -
meeting.html— open in any browser. The HTML references the original audio file via a relative path, so keep both files together (or open the HTML from the same directory).
- Diarization — FluidAudio identifies who spoke when (
offlineVBx pipeline by default) - Transcription — Parakeet ASR with word-level timestamps
- Alignment — words are mapped to speakers by timestamp overlap
- Export — plain text and self-contained HTML are written
MecoScribe is licensed under the MIT License.
FluidAudio models and runtime are subject to their respective licenses (MIT / Apache 2.0). See the FluidAudio repository for details.
