Skip to content
eisenjimmyPublic

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

Murmur AI

Murmur AI live translation banner

Live speech translation as a desktop subtitle overlay. Murmur AI listens to a microphone or computer audio, sends audio to your speech-to-text endpoint, translates sentence-by-sentence through an OpenAI-compatible LLM endpoint, renders clean subtitles, and can speak the translation aloud.

License: MIT Electron Platform PRs Welcome

AI handoff for Claude Code / Codex

This repository is open-source oriented. Do not commit personal .env files, local absolute paths, private runtime folders, API keys, or machine-specific model paths. Keep release defaults generic. Voice output is packaged through the built-in native TTS fallback and optional voice-runtime/ resources. The translation LLM is intentionally not bundled; recommend Gemma 4 E4B Instruct and let users connect it through Ollama, llama.cpp, LM Studio, or another OpenAI-compatible endpoint.

What It Does

Murmur AI feature overview

  • Live subtitles. Speech is segmented into low-latency chunks and rendered as a transparent subtitle overlay.
  • OBS browser overlay. Add http://127.0.0.1:49152/overlay.html as an OBS Browser Source for stream captions.
  • Packaged voice output. Release builds include a built-in native TTS fallback. You can also use Kokoro or another OpenAI-compatible speech endpoint.
  • Bring-your-own AI. STT, translation, and optional higher-quality TTS are endpoint-driven.
  • Noise gate. Adjustable gate in settings reduces false captures from background noise.
  • Computer audio. Windows supports native loopback. macOS requires a loopback device such as BlackHole for system audio.

Recommended Local Setup

Murmur AI first-time setup graphic

For a good local experience, use:

  • Machine: Mac mini M4 with 16GB RAM or better.
  • Speech-to-text: whisper.cpp with a fast Whisper model.
  • Translation: Gemma 4 E4B Instruct through Ollama (gemma4:e4b), llama.cpp, LM Studio, or another OpenAI-compatible server.
  • Voice: built-in native TTS for zero setup, or Kokoro for higher-quality local AI speech.

Murmur AI does not ship Gemma 4 E4B, Whisper models, or other LLM weights. Download and run those separately according to their licenses. Google documents Gemma 4 E4B as part of the Gemma 4 family, and Hugging Face hosts it as google/gemma-4-E4B.

How It Works

Murmur AI pipeline diagram

microphone / computer audio
   -> AudioWorklet capture + adjustable noise gate
   -> VAD utterance segmentation
   -> PCM16 WAV -> STT endpoint
   -> sentence splitting
   -> translation worker pool
   -> app subtitles + OBS Server-Sent Events overlay
   -> ordered TTS playback

The Electron main process starts a local HTTP service on 127.0.0.1. The renderer owns audio capture and subtitle UI. The service owns STT routing, translation workers, TTS routing, settings, and the OBS event stream.

Install From Release

Download the latest GitHub release:

  • macOS Apple Silicon: Murmur.AI-0.2.1-mac-arm64.dmg
  • Windows x64: Murmur.AI-0.2.1-win-x64.exe

Open the app once. It creates its config folder automatically:

  • macOS: ~/Library/Application Support/Murmur AI/.env
  • Windows: %APPDATA%\Murmur AI\.env

Most users can configure endpoints from the in-app settings panel instead of editing .env manually.

First-Time Setup

See the full step-by-step guide: docs/first-time-setup.md.

Minimal local path:

  1. Install Murmur AI.
  2. Start a Whisper-compatible STT endpoint.
  3. Open settings -> Local AI Setup.
  4. Use Ollama Gemma 4 E4B to pull gemma4:e4b, or use llama.cpp Gemma 4 E4B to install llama.cpp and start the recommended GGUF.
  5. Confirm the displayed download sizes before starting model downloads.
  6. Click use or start so Murmur AI fills the Translation LLM endpoint and model automatically.
  7. Leave voice off until captions work.
  8. Click Start.

Example .env:

MURMUR_AI_STT_ENGINE=http
MURMUR_AI_STT_ENDPOINT=http://127.0.0.1:8081/inference
MURMUR_AI_STT_MODEL=

MURMUR_AI_LLM_ENDPOINT=http://127.0.0.1:11434/v1/chat/completions
MURMUR_AI_LLM_MODEL=gemma4:e4b
MURMUR_AI_LLM_API_KEY=

MURMUR_AI_TTS_ENGINE=auto
MURMUR_AI_NOISE_GATE=45

Voice Output

Murmur AI voice output graphic

Murmur AI ships with a native TTS engine:

  • macOS: uses the system speech synthesizer and returns WAV audio to the app.
  • Windows: uses installed SAPI voices through PowerShell and returns WAV audio.
  • Linux: attempts espeak-ng when available.

For higher quality local AI speech, run Kokoro or another OpenAI-compatible /v1/audio/speech server and set:

MURMUR_AI_TTS_ENGINE=http
MURMUR_AI_TTS_ENDPOINT=http://127.0.0.1:8880/v1/audio/speech
MURMUR_AI_TTS_MODEL=kokoro

Voice settings include language, voice picker, preview sentence, and a Preview button.

Configuration

Configuration can be edited in the app from settings or in .env. See .env.example for a fully annotated template.

Variable Default Purpose
MURMUR_AI_HOST 127.0.0.1 Local service bind address
MURMUR_AI_PORT 49152 Local service port
MURMUR_AI_WORKERS 2 Concurrent translation workers
MURMUR_AI_NOISE_GATE 45 Voice gate strength, 0 to 100
MURMUR_AI_STT_ENGINE http http, whisperkit, or auto
MURMUR_AI_STT_ENDPOINT http://127.0.0.1:8081/inference Speech-to-text endpoint
MURMUR_AI_LLM_ENDPOINT local OpenAI-compatible URL Translation endpoint
MURMUR_AI_LLM_MODEL gemma4:e4b Recommended local translation model
MURMUR_AI_LOCAL_AI_PROVIDER empty ollama or llama.cpp when configured from the app
MURMUR_AI_LLAMA_CPP_SERVER_PATH empty App-managed or user-selected llama-server path
MURMUR_AI_LLAMA_CPP_HF_MODEL ggml-org/gemma-4-E4B-it-GGUF:Q4_K_M Recommended llama.cpp Gemma GGUF reference
MURMUR_AI_TTS_ENGINE auto auto, native, managed, or http
MURMUR_AI_TTS_ENDPOINT http://127.0.0.1:8880/v1/audio/speech Optional higher-quality TTS endpoint
MURMUR_AI_TTS_MODEL kokoro Speech model name for HTTP TTS
MURMUR_AI_TTS_VOICE_XX per-language Optional voice id for language XX
MURMUR_AI_VOICE_RUNTIME_ROOT empty Optional packaged managed voice runtime folder

OBS Setup

Start Murmur AI, then add an OBS Browser Source:

http://127.0.0.1:49152/overlay.html

Useful URL parameters:

Parameter Default Meaning
source=0 shown Hide the original-language line
scale=1.3 1 Font size multiplier
hold=7000 6000 Subtitle hold time in milliseconds
offset=120 48 Distance from the bottom edge

Platform Notes

macOS. Microphone permission is requested on first use. For computer audio, install a loopback device such as BlackHole, route system audio into it, then select that device as the input.

Windows. Computer audio uses native system loopback. Microphone capture uses standard OS permissions.

Linux. Not formally released yet. Core capture and HTTP endpoint plumbing are portable, but packaging is not tested.

Korean Quick Start

Murmur AI Korean quick-start graphic

한국어 사용자용 빠른 설정

Murmur AI는 한국어 음성을 영어로, 또는 영어 음성을 한국어로 실시간 번역하는 자막 오버레이입니다.

  1. whisper.cpp 또는 호환 STT 서버를 실행합니다.
  2. Gemma 4 E4B Instruct 모델을 Ollama, llama.cpp, LM Studio 같은 OpenAI 호환 서버로 실행합니다.
  3. 앱의 settings에서 STT endpoint, LLM endpoint, model name을 입력합니다.
  4. 자막이 먼저 정상 작동하는지 확인한 뒤 voice를 켭니다.
  5. macOS에서 컴퓨터 소리를 번역하려면 BlackHole 같은 loopback 장치가 필요합니다. 마이크 입력만 사용할 때는 필요하지 않습니다.

권장 장비는 Mac mini M4 16GB 이상입니다. Gemma 4 E4B 모델은 앱에 포함되어 있지 않으며 사용자가 직접 내려받아 실행해야 합니다.

Development

git clone https://github.com/eisenjimmy/LiveAITranslate.git
cd LiveAITranslate
npm install
npm start

Useful commands:

npm run check
npm run build:mac
npm run build:win

Repository layout:

src/main.js                    Electron shell, permissions, window controls
src/service.js                 Local HTTP service, STT/TTS engines, translation workers
src/translation-worker.js      Context-aware LLM translation worker
src/preload.cjs                Renderer bridge
src/renderer/index.html        App UI and subtitle layer
src/renderer/app.js            Capture, VAD, chunking, playback
src/renderer/overlay.html      OBS overlay
assets/readme/                 README banner graphics
voice-runtime/                 Optional managed voice runtime resources

Privacy

Murmur AI has no account system, telemetry, analytics, or database. If you run local STT, LLM, and TTS endpoints, audio and text stay on your machine. If you configure hosted endpoints, the relevant audio/text is sent to those endpoints.

Troubleshooting

STT endpoint unreachable means your STT server is not running at the configured URL. Start the server or update MURMUR_AI_STT_ENDPOINT.

No translation usually means the LLM endpoint or model name is wrong. Use settings -> detect, or check curl http://127.0.0.1:49152/api/status.

No voice output can be tested from settings -> Voice Output -> Preview. Use native for built-in speech or configure a reachable HTTP TTS endpoint.

macOS computer audio is silent because macOS does not expose system audio directly. Use BlackHole or another loopback device.

Contributing

Issues and pull requests are welcome. Keep changes scoped, avoid heavy frameworks, and run npm run check before submitting. See CONTRIBUTING.md.

License

MIT

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages