jonesckevin/live-translate

By jonesckevin

Updated 17 days ago

An offline audio translator using the LibreTranslate via browser. Comes with LLM Options.

Image
Integration & delivery
Message queues
Web servers
0

1.0K

jonesckevin/live-translate repository overview

Live Translate

A self-hosted real-time translation web application with speech-to-text, virtual keyboards, and dual-panel conversation mode. Supports LibreTranslate (offline) and 10+ LLM providers as long as you bring your own Key (BYOK). The key can be set at the user or server level.

Live Translate Screenshot

Features

  • Text Translation – Default uses LibreTranslate Framework to Translate between 37+ languages with auto-detection
  • Dual Engine – LibreTranslate (Argos, self-hosted, offline) + Optional LLM providers (OpenAI, Anthropic, Gemini, Ollama, LM Studio, DeepSeek, Cohere, Groq, Grok, Mistral, Perplexity)
  • Live Conversation Mode – Dual-panel real-time translation with per-panel language and microphone selection
  • Speech-to-Text – Web Speech API (browser-native) + optional Whisper (server-side via faster-whisper) + optional AI provider STT (for supported providers/models)
  • Custom Glossaries – Create term glossaries for consistent translations
  • Session Management – Auto-save conversation history with export
  • Docker Deployment – Single docker compose up

Quick Start

Portainer
  1. Link to Github repository: github.com/4n6post/live-translate
  2. Load .env file into Portainer stack environment variables
  3. Modify Any Variable you want to change (optional)
  4. Deploy the stack and open http://localhost:9015 in your browser.
Local Build with Docker Compose
git clone https://github.com/4n6post/live-translate.git
cd live-translate

# Start the application with automatic image building
docker compose up -d --build

During image build, Whisper models tiny, base, small, medium, and large-v3 are pre-downloaded into an internal seed cache, then copied into /data/whisper-model on first container start. This avoids runtime re-downloads and persists models across restarts/rebuilds.

Embedded LibreTranslate language package downloads are also persisted by mounting ./data/cache/libretranslate-local to /root/.local, so Argos language models are reused across container rebuilds/restarts.

Open http://localhost:9015 in your browser.

Quick Start

DockerHub Run
docker run --name live-translate --restart unless-stopped -p 9015:5000 -v ./data:/data \
	-e ALLOW_AUTH=true \
	-e REQUIRE_AUTH=true \
	-e SOCKETIO_CORS_CREDENTIALS=true \
	-e ALLOW_USER_REGISTRATION=true \
	-e ALLOW_GUEST_LOGIN=true \
	-e WHISPER_ENABLED=true \
	-e WHISPER_MODEL=tiny \
	-e ENABLE_SERVER_ANALYTICS=false \
	-e SECRET_KEY='$(openssl rand -hex 32)' \
	-e SECRETS='$(openssl rand -hex 32)' \
	-e REQUIRE_SECRETS=true \
	-e LOGS_ACCESS_TOKEN= \
	-e ALLOW_CLIENT_API_KEYS=true jonesckevin/live-translate:latest
Build
git clone https://github.com/jonesckevin/live-translate.git
cd live-translate

# Copy the example environment file and configure your settings
cp .env.example .env

# Start the application
docker compose up -d --build

The Dockerfile accepts PYTHON_BASE (default python:3.11-slim).

During image build, Whisper models tiny, base, small, medium, and large-v3 are pre-downloaded into an internal seed cache, then copied into /data/whisper-model on first container start. This avoids runtime re-downloads and persists models across restarts/rebuilds via ./data/whisper-model.

Embedded LibreTranslate language package downloads are also persisted by mounting ./data/cache/libretranslate-local to /root/.local, so Argos language models are reused across container rebuilds/restarts.

Open http://localhost:9015 in your browser.

Environment Variables

All environment variables are configured in the .env file. Copy .env.example to .env and configure as needed.

VariableDefaultDescription
LIBRETRANSLATE_LOCAL_ENABLEDtrueRun embedded LibreTranslate inside live-translate container
LIBRETRANSLATE_LOCAL_URLhttp://127.0.0.1:5001Local LibreTranslate endpoint used when local mode is enabled
LIBRETRANSLATE_SERVER_URLhttp://libretranslate:5000External/sidecar LibreTranslate endpoint used when local mode is disabled
WHISPER_ENABLEDfalseEnable server-side Whisper STT
WHISPER_MODELbaseWhisper model size (tiny/base/small/medium/large)
WHISPER_USE_GPUfalseEnable GPU acceleration for Whisper (requires CUDA)
WHISPER_MODEL_DIR/data/whisper-modelWhisper model download/cache directory (mounted to ./data/whisper-model)
STARTUP_FAIL_ON_CHECKSfalseExit container startup if critical pre-flight checks fail
ALLOW_CLIENT_API_KEYStrueAllow browser-stored API keys
LOG_DIR/data/logsLog file directory
SESSION_ICON_DIR/tmp/session-iconsDirectory for uploaded session icons
OPENAI_API_KEYOpenAI API key
ANTHROPIC_API_KEYAnthropic API key
GEMINI_API_KEYGemini API key
DEEPSEEK_API_KEYDeepSeek API key
COHERE_API_KEYCohere API key
GROQ_API_KEYGroq API key
GROK_API_KEYGrok (X.AI) API key
MISTRAL_API_KEYMistral AI API key
PERPLEXITY_API_KEYPerplexity API key
OLLAMA_HOSThttp://host.docker.internal:11434Ollama server URL
LMSTUDIO_HOSThttp://host.docker.internal:1234LM Studio server URL

Tag summary

Content type

Image

Digest

sha256:d4fd57c76

Size

489 MB

Last updated

17 days ago

docker pull jonesckevin/live-translate