Record meetings, remove silence, transcribe locally with Whisper - 100% offline and private.
A desktop application (Windows/macOS/Linux) that:
- Records meetings - Capture system audio (Teams, Zoom, etc.) + microphone
- Detects speech segments - Automatically removes silence using FFmpeg
- Transcribes locally - Uses Whisper (OpenAI) running 100% offline on your machine
- 100% Offline - Your audio never leaves your computer
- Smart Chunking - Detects speech and removes silence automatically
- Local Transcription - Whisper models downloaded once, run forever
- Export Ready - WAV files (16kHz mono) ready for any STT engine
- Multi-language - French & English transcription models
# Clone
git clone https://github.com/zkorp/voxscribe.git
cd voxscribe
# Install
npm install
# Run
npm run dev- Record a meeting (or load an existing audio/video file)
- Analyze - The app detects speech segments and removes silence
- Transcribe - Enable Whisper transcription (auto-downloads ~1.5GB model on first use)
- Export - Download WAV chunks or copy transcription
- Node.js 18+
- Windows recommended for system audio capture
- macOS/Linux: UI works, but system audio capture is limited
Note: No system FFmpeg installation required. The app bundles
@ffmpeg-installer/ffmpegand@ffprobe-installer/ffprobewhich auto-detect your platform.
System audio capture (Teams, Zoom, etc.) requires native Windows.
git clone https://github.com/zkorp/voxscribe.git
cd voxscribe
npm install
npm run devImportant: The app is not signed with an Apple Developer certificate. macOS will show "is damaged and can't be opened".
To fix this, open Terminal and run:
xattr -cr "/Applications/VoxScribe.app"Then open the app normally.
npm install
npm run devNote: On WSL, the UI works but Windows system audio capture is not available.
npm run build # Build all (main/preload/renderer)
npm run build:win # Windows (.exe)
npm run build:mac # macOS (.dmg)
npm run build:linux # Linux (.AppImage, .deb)Executables are generated in the release/ folder.
| Script | Description |
|---|---|
npm run dev |
Start Electron in development mode |
npm run build |
Build for production |
npm run build:win |
Package for Windows |
npm run build:mac |
Package for macOS |
npm run build:linux |
Package for Linux |
npm run lint |
Run ESLint |
npm run test |
Run Vitest tests |
- Click "Start recording"
- Select the audio source (screen or window of your meeting)
- Check "Include microphone" to capture your voice
- Click "Start recording"
- Stop when done - the file is saved as
.webm - Click "Use for analysis" to proceed to chunking
- Select a media file (audio/video or previous recording)
- Configure silence detection: threshold (dB), minimum duration, padding, etc.
- Analyze - FFmpeg detects silences, keeps only speech segments
- Results:
- Table of segments with timestamps
- Audio players: "Before cleanup" and "After silence removal"
- WAV files (mono 16kHz) ready for STT in
*-chunks/ - "Download all chunks" button to generate a ZIP archive
src/
├── main/ # Electron main process (window, IPC, FFmpeg chunking)
├── preload/ # Secure bridge exposing IPC to renderer
└── renderer/ # React UI
├── components/ # Reusable UI components
├── hooks/ # Custom React hooks
├── types/ # TypeScript type definitions
└── utils/ # Utility functions
Files are stored in appData/voxscribe/:
recordings/- Meeting recordings (.webm)media-previews/- Analyzed files- Full MP3 (original + cleaned)
*-chunks/folder with mono 16kHz WAV files
- Run analysis to generate WAV files per segment
- Each file is mono, 16kHz - ready for Whisper or similar
- Example:
whisper "chunk-001.wav" --model base - Aggregate transcriptions with
startMs/endMsmetadata
See CONTRIBUTING.md for guidelines.
See SECURITY.md for reporting vulnerabilities.
MIT - see LICENSE