https://github.com/mjmammoth/murmur
Real-time speech transcription. Privacy-first.
https://github.com/mjmammoth/murmur
asr faster-whisper global-hotkey opentui privacy speech-recognition speech-to-text transcription tui whisper whisper-cpp
Last synced: about 8 hours ago
JSON representation
Real-time speech transcription. Privacy-first.
- Host: GitHub
- URL: https://github.com/mjmammoth/murmur
- Owner: mjmammoth
- License: apache-2.0
- Created: 2026-02-11T17:49:41.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-06T07:09:52.000Z (2 days ago)
- Last Synced: 2026-04-06T09:29:56.716Z (2 days ago)
- Topics: asr, faster-whisper, global-hotkey, opentui, privacy, speech-recognition, speech-to-text, transcription, tui, whisper, whisper-cpp
- Language: Python
- Homepage:
- Size: 2.11 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
Press a key. Speak. Text appears.
Private by default. Fully local. Works anywhere you can type.

---
### How it works
1. **Onboard in the TUI** — download a Whisper model, configure settings
2. **Hit the hotkey** (F3 by default) from any anywhere — system-wide, no focus switching
2. **Speak** — audio is captured, transcribed locally by Whisper
3. **Text appears** — transcription auto-pastes into your active app, or copies to clipboard
### Features
- **100% local & private** — no cloud, no telemetry, no network calls
- **Global hotkey** (push-to-talk or toggle) — works system-wide from any app
- **Auto-copy** — transcription goes straight to clipboard
- **Auto-paste** — transcribed text pastes directly into your active application
- **Auto-revert clipboard** — after auto-paste, previous clipboard content is restored by default
- **Terminal UI** built with OpenTUI + SolidJS — configure settings, transcript history
- **Pluggable runtimes** — faster-whisper (CPU/CUDA) or whisper.cpp (CPU/Metal GPU on macOS)
- **Model management** — download, remove, and select OpenAI Whisper models from tiny to large-v3-turbo
- **menu bar indicator** — status dot shows recording / transcribing / idle state
- Optional **Noise suppression** (RNNoise) and **voice activity detection** (VAD)
- **File transcription** — drag-and-drop or paste audio file paths
### Installation
#### macOS / Linux
```bash
curl -fsSL https://raw.githubusercontent.com/mjmammoth/murmur/main/install | bash
```
Alternative Installation Methods
```bash
brew install mjmammoth/tap/murmur
```
Windows
Download the latest `murmur-tui-{version}-windows-x64.tar.gz` from [Releases](https://github.com/mjmammoth/murmur/releases/latest), extract, and run.
### Quick Start
```bash
murmur tui # guided onboarding, starts background service and opens terminal UI - useful for first-time configuration
murmur start # start background service only
```
#### Upgrade
```bash
murmur upgrade # upgrade to latest version
```
### Troubleshooting
#### macOS permissions
Global hotkeys require **Input Monitoring** and auto-paste requires **Accessibility** permission for your terminal. Grant both in `System Settings` → `Privacy & Security`, then restart murmur.
#### Common issues
- **Hotkey does nothing** — grant Input Monitoring permission (see above)
- **Auto-paste fails** — grant Accessibility permission (see above)
- **No model selected** — run `murmur models pull small && murmur models select small`
- **PortAudio / input device errors** — check microphone selection and macOS microphone permissions
- **Wayland** — global key swallow isn't guaranteed; bind `murmur trigger toggle` to a desktop shortcut instead
- **Need a full local reset** — run `./scripts/reset-local.sh` to clear murmur state/config/runtime/model cache and force first-run behavior
> [!IMPORTANT]
> The code in this repo has mostly been created by AI-assisted workflows