Real-time audio transcription and translation app. Captures audio from microphone, system audio, or both. Supports two transcription modes: Soniox (cloud, built-in translation) and Local Whisper (fully offline).
Runs as a web app (browser) or desktop app (Electron). Supports macOS, Windows, and Linux.
Speaker 1, Speaker 2, ...)npm install
npm run start # web app — open http://localhost:3000
For Electron:
npm run electron:dev
See DEV-BUILD.md for build instructions and troubleshooting.
Only relevant for Local Whisper mode. Soniox only needs an internet connection.
| Config | RAM | Usable features |
|---|---|---|
| Minimum | 8 GB | Whisper tiny/base + Ollama gemma3:1b, no diarization |
| Recommended | Apple Silicon 16 GB | Whisper medium/large-v3-turbo + Ollama gemma3:4b + diarization |
| Optimal | Apple Silicon 32 GB | All features with large models, very smooth |
Apple Silicon recommended (M1+): unified memory allows CPU and GPU to share RAM — Whisper (Metal), Ollama (Metal), and diarization (MPS) are all hardware-accelerated, 4–6× faster than Intel at the same model size.
| Config | RAM | GPU | Usable features |
|---|---|---|---|
| Minimum | 16 GB | None | Whisper tiny/base + small Ollama (slow), no diarization |
| Recommended | 16 GB | NVIDIA 8 GB VRAM (RTX 3060+) | Whisper medium + Ollama gemma3:4b + diarization |
| Optimal | 32 GB | NVIDIA 12 GB+ VRAM (RTX 4070 Ti+) | All features comfortably |
AMD GPUs are not supported. Without an NVIDIA GPU, diarization cannot run in real-time. Install CUDA Toolkit for GPU acceleration.
| Config | RAM | GPU | Usable features |
|---|---|---|---|
| Minimum | 16 GB | None | Whisper tiny/base + small Ollama (slow), no diarization |
| Recommended | 16 GB | NVIDIA 8 GB VRAM (RTX 3060+) | Whisper medium + Ollama gemma3:4b + diarization |
| Optimal | 32 GB | NVIDIA 12 GB+ VRAM (RTX 4070 Ti+) | All features comfortably |
Requires PulseAudio or PipeWire (with PulseAudio compatibility) for audio device management. Most modern distros (Ubuntu 22.04+, Fedora, etc.) include one of these by default. Install ffmpeg via your package manager (sudo apt install ffmpeg).
| Component | Size |
|---|---|
| Whisper base model | ~150 MB |
| Whisper large-v3-turbo model | ~1.6 GB |
| Ollama + gemma3:4b model | ~3.5 GB |
| Python venv for diarization (torch) | ~4–6 GB |
| pyannote diarization model | ~1 GB |
| Total (full setup) | ~10–12 GB |
Requires a free API key from soniox.com.
Configure in Settings → Engine → Soniox API Key, or via .env:
SONIOX_API_KEY=your_api_key_here
Soniox handles transcription, translation, and speaker diarization out of the box — no additional setup needed.
No API key required. All processing happens on-device.
1. Build whisper.cpp (one-time):
npm run setup:whisper
2. Download a model:
cd node_modules/nodejs-whisper/cpp/whisper.cpp
bash models/download-ggml-model.sh base # or: tiny, small, medium, large-v3-turbo
3. Select in app: Settings → Engine → Local Whisper → choose your model.
4. Translation (optional): configure Ollama or LibreTranslate in Settings → Engine.
| Model | Size | RAM | Speed | Quality |
|---|---|---|---|---|
tiny | ~75 MB | ~1 GB | Very fast | Low |
base | ~150 MB | ~1 GB | Fast | Medium |
small | ~500 MB | ~2 GB | Medium | Good |
medium | ~1.5 GB | ~5 GB | Slow | High |
large-v3-turbo | ~1.6 GB | ~4 GB | Medium | Very high |
large | ~3 GB | ~8 GB | Slowest | Best |
Recommended: large-v3-turbo on Apple Silicon, base on low-end hardware.
Identifies individual speakers using pyannote-audio. Requires Python 3.10–3.12 and a free HuggingFace token.
1. Install Python dependencies:
npm run setup:diarize
Or via the UI: Settings → Engine → Setup Diarization.
2. Create a HuggingFace READ token at huggingface.co/settings/tokens, then accept terms for:
3. Enter the token in Settings → Engine → HuggingFace Token.
On first use, the app downloads ~1 GB of models. Subsequent starts are ready in ~10–15 seconds.
System audio capture (from Zoom, Meet, YouTube, etc.) works natively — no virtual audio drivers needed. Pre-built binaries are included in the repo.
macOS: ScreenCaptureKit (requires Screen Recording permission, macOS 13+)
Windows: WASAPI loopback (no special permissions needed)
Linux: PulseAudio / PipeWire monitor sources (via ffmpeg)
To rebuild from source:
npm run setup:audiocap(requires Swift on macOS, .NET 8 SDK for Windows cross-compile)
| File | Contents |
|---|---|
| DEV-BUILD.md | Development setup, build commands, troubleshooting |
| ARCHITECTURE.md | System architecture, data flow, component overview |
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS v4, Socket.IO Client |
| Backend | Node.js, Express 5, Socket.IO |
| Desktop | Electron |
| Audio capture (mic) | ffmpeg (avfoundation / dshow / pulse) |
| Audio capture (sys) | audiocap (macOS / Windows), ffmpeg+pulse (Linux) |
| STT (cloud) | Soniox API |
| STT (local) | nodejs-whisper (whisper.cpp) |
| Speaker diarization | pyannote-audio 3.1 (Python) |
| Translation (local) | Ollama / LibreTranslate |
| Database | SQLite (better-sqlite3) |
JavaScript
82.5%
Python
6.8%
CSS
4.4%
Swift
3.5%
C#
1.5%
HTML
1.3%
Real-time audio transcription and translation app. Captures audio from microphone, system audio, or both. Supports two transcription modes: Soniox (cloud, built-in translation) and Local Whisper (fully offline).
Runs as a web app (browser) or desktop app (Electron). Supports macOS, Windows, and Linux.
Speaker 1, Speaker 2, ...)npm install
npm run start # web app — open http://localhost:3000
For Electron:
npm run electron:dev
See DEV-BUILD.md for build instructions and troubleshooting.
Only relevant for Local Whisper mode. Soniox only needs an internet connection.
| Config | RAM | Usable features |
|---|---|---|
| Minimum | 8 GB | Whisper tiny/base + Ollama gemma3:1b, no diarization |
| Recommended | Apple Silicon 16 GB | Whisper medium/large-v3-turbo + Ollama gemma3:4b + diarization |
| Optimal | Apple Silicon 32 GB | All features with large models, very smooth |
Apple Silicon recommended (M1+): unified memory allows CPU and GPU to share RAM — Whisper (Metal), Ollama (Metal), and diarization (MPS) are all hardware-accelerated, 4–6× faster than Intel at the same model size.
| Config | RAM | GPU | Usable features |
|---|---|---|---|
| Minimum | 16 GB | None | Whisper tiny/base + small Ollama (slow), no diarization |
| Recommended | 16 GB | NVIDIA 8 GB VRAM (RTX 3060+) | Whisper medium + Ollama gemma3:4b + diarization |
| Optimal | 32 GB | NVIDIA 12 GB+ VRAM (RTX 4070 Ti+) | All features comfortably |
AMD GPUs are not supported. Without an NVIDIA GPU, diarization cannot run in real-time. Install CUDA Toolkit for GPU acceleration.
| Config | RAM | GPU | Usable features |
|---|---|---|---|
| Minimum | 16 GB | None | Whisper tiny/base + small Ollama (slow), no diarization |
| Recommended | 16 GB | NVIDIA 8 GB VRAM (RTX 3060+) | Whisper medium + Ollama gemma3:4b + diarization |
| Optimal | 32 GB | NVIDIA 12 GB+ VRAM (RTX 4070 Ti+) | All features comfortably |
Requires PulseAudio or PipeWire (with PulseAudio compatibility) for audio device management. Most modern distros (Ubuntu 22.04+, Fedora, etc.) include one of these by default. Install ffmpeg via your package manager (sudo apt install ffmpeg).
| Component | Size |
|---|---|
| Whisper base model | ~150 MB |
| Whisper large-v3-turbo model | ~1.6 GB |
| Ollama + gemma3:4b model | ~3.5 GB |
| Python venv for diarization (torch) | ~4–6 GB |
| pyannote diarization model | ~1 GB |
| Total (full setup) | ~10–12 GB |
Requires a free API key from soniox.com.
Configure in Settings → Engine → Soniox API Key, or via .env:
SONIOX_API_KEY=your_api_key_here
Soniox handles transcription, translation, and speaker diarization out of the box — no additional setup needed.
No API key required. All processing happens on-device.
1. Build whisper.cpp (one-time):
npm run setup:whisper
2. Download a model:
cd node_modules/nodejs-whisper/cpp/whisper.cpp
bash models/download-ggml-model.sh base # or: tiny, small, medium, large-v3-turbo
3. Select in app: Settings → Engine → Local Whisper → choose your model.
4. Translation (optional): configure Ollama or LibreTranslate in Settings → Engine.
| Model | Size | RAM | Speed | Quality |
|---|---|---|---|---|
tiny | ~75 MB | ~1 GB | Very fast | Low |
base | ~150 MB | ~1 GB | Fast | Medium |
small | ~500 MB | ~2 GB | Medium | Good |
medium | ~1.5 GB | ~5 GB | Slow | High |
large-v3-turbo | ~1.6 GB | ~4 GB | Medium | Very high |
large | ~3 GB | ~8 GB | Slowest | Best |
Recommended: large-v3-turbo on Apple Silicon, base on low-end hardware.
Identifies individual speakers using pyannote-audio. Requires Python 3.10–3.12 and a free HuggingFace token.
1. Install Python dependencies:
npm run setup:diarize
Or via the UI: Settings → Engine → Setup Diarization.
2. Create a HuggingFace READ token at huggingface.co/settings/tokens, then accept terms for:
3. Enter the token in Settings → Engine → HuggingFace Token.
On first use, the app downloads ~1 GB of models. Subsequent starts are ready in ~10–15 seconds.
System audio capture (from Zoom, Meet, YouTube, etc.) works natively — no virtual audio drivers needed. Pre-built binaries are included in the repo.
macOS: ScreenCaptureKit (requires Screen Recording permission, macOS 13+)
Windows: WASAPI loopback (no special permissions needed)
Linux: PulseAudio / PipeWire monitor sources (via ffmpeg)
To rebuild from source:
npm run setup:audiocap(requires Swift on macOS, .NET 8 SDK for Windows cross-compile)
| File | Contents |
|---|---|
| DEV-BUILD.md | Development setup, build commands, troubleshooting |
| ARCHITECTURE.md | System architecture, data flow, component overview |
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS v4, Socket.IO Client |
| Backend | Node.js, Express 5, Socket.IO |
| Desktop | Electron |
| Audio capture (mic) | ffmpeg (avfoundation / dshow / pulse) |
| Audio capture (sys) | audiocap (macOS / Windows), ffmpeg+pulse (Linux) |
| STT (cloud) | Soniox API |
| STT (local) | nodejs-whisper (whisper.cpp) |
| Speaker diarization | pyannote-audio 3.1 (Python) |
| Translation (local) | Ollama / LibreTranslate |
| Database | SQLite (better-sqlite3) |
JavaScript
82.5%
Python
6.8%
CSS
4.4%
Swift
3.5%
C#
1.5%
HTML
1.3%