Minimal, local audio transcription desktop app. Electron UI + a Python
faster-whisper backend. Audio
never leaves your machine — transcription runs fully offline after the model is
downloaded once.
Prebuilt installers for macOS (.dmg), Windows (.exe), and Linux
(.AppImage) are attached to each release.
They bundle the Python backend — no Python install required.
The builds are not signed or notarized (that requires a paid Apple Developer account). Because the app bundles a Python backend, macOS Gatekeeper may quarantine it and — on recent macOS versions — even move it to the Bin, reporting it as malware. This is a false positive from the unsigned bundle, not actual malware.
To run it, strip the quarantine flag before first launch:
# 1. Open the .dmg and drag FastScribe to Applications, then:
xattr -cr /Applications/FastScribe.app
# 2. Open it normally.If macOS already moved it to the Bin, restore it to Applications first, then run the command above. Alternatively, after a blocked launch, allow it under System Settings → Privacy & Security → Open Anyway.
Prefer to build it yourself and avoid this entirely? See Setup — locally built apps are not quarantined.
- Drag-and-drop or file-picker for
.mp3,.wav,.m4a,.opus - Language selector (auto-detect or force a specific language)
- Voice-activity filtering to suppress silence hallucinations
- In-memory list of transcriptions with filename, timestamp, detected language
- Dark, minimal UI
- Python backend auto-spawned and cleanly terminated by Electron
fastcribe/
├── main.js Electron main: spawns/kills backend, opens window
├── preload.js contextBridge — exposes backend URL only
├── renderer/ UI (dark theme, dropzone, language selector)
│ ├── index.html
│ ├── styles.css
│ └── renderer.js
├── python_backend/
│ ├── main.py FastAPI + faster-whisper (WhisperModel "small")
│ └── requirements.txt
└── package.json
- Backend: FastAPI on
http://127.0.0.1:8000,POST /transcribe(multipart file + optionallanguage) →{ filename, transcript, language }. - Lifecycle:
main.jsspawns the backend on launch (preferring the project virtualenv interpreter) and kills it on quit.
- Node.js 18+
- Python 3.9+
- macOS / Windows / Linux
cd python_backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
deactivateThe first transcription downloads the Whisper small model (~460 MB) and caches
it; subsequent runs are fast.
npm install
npm startnpm start auto-spawns the backend and opens the window once it's healthy.
- Pick a language (or leave Auto-detect).
- Drop an audio file onto the dropzone, or click Choose file.
- The transcription appears at the top of the list.
- Model size — edit
WhisperModel("small")inpython_backend/main.py. Larger models (medium,large-v3) are more accurate but slower. - Port — backend runs on
127.0.0.1:8000(seemain.pyandpreload.js).
MIT