Cross-platform transcription tool: audio files and entire folders are transcribed with faster-whisper, optionally cleaned up and translated by an LLM, refined in an editor with an audio timeline, exported as PDF, and made searchable through a local semantic search. Plus an OpenAI-compatible transcription API for external programs. Everything runs locally — no cloud required.
Feature set
- Transcription (faster-whisper, GPU with CPU fallback), live progress, fair queue for multiple users
- Editor with waveform, segment editing, speakers, range re-transcription and audio cutting
- AI processing (cleanup, translation into nearly any language) via a local LLM (managed llama.cpp server) or an OpenAI-compatible endpoint
- Transcript types with their own prompts (interview, song, role play, …) and type-aware PDF export (single or compiled)
- Semantic search across all transcripts (hybrid: full text + embeddings, timestamp jump marks, AI answers with sources)
- Public API:
POST /v1/audio/transcriptionsin the OpenAI wire format, API key management in the settings - Optional user management: off by default (local use), switched on with one administrator account. Roles admin/user, per-transcript visibility private/shared/public, and an upgrade path that keeps every existing transcript
- PWA (mobile first, de/en/ru, offline-capable interface), Material 3 design
| Transcript project | Semantic search |
|---|---|
![]() |
![]() |
Ready-made packages are on the releases page:
| Package | For | Installation |
|---|---|---|
Verba-Setup-<version>.exe |
Windows desktop | double-click → wizard → start menu entry |
Verba-<version>-x86_64.AppImage |
Linux desktop | make executable, double-click |
verba-server-<version>.zip |
Linux server (headless) | unpack, sudo ./deploy/install.sh |
On first start, the in-app first-run setup checks the system and installs missing components (ffmpeg, Whisper, PDF export, search) automatically with live progress. An existing ffmpeg installation is used; otherwise a static build is set up.
Prerequisite: Python 3.11+ (python.org or your package manager).
Windows: double-click start.bat — Linux/macOS:
./start.shThe first start automatically creates a virtual environment and installs the
core dependencies; the application then opens in the browser
(http://127.0.0.1:8710).
./start.sh --server --port 8710Binds to 0.0.0.0, opens no browser, and is reachable via IP, domain or reverse
proxy. Health check: GET /health. All URLs are relative — running behind
nginx/Caddy/Traefik works without special configuration; the WebSocket (/ws)
must be forwarded.
Ready-made templates live under deploy/: systemd unit,
nginx and Caddy example configuration (incl. WebSocket and upload limits) and
install.sh for the complete server setup. For running the public API on a
network, create a key in the settings under "API".
On a network, switch the user management on. Without it every visitor has full access to all transcripts and settings — which is the right default for a local desktop install and the wrong one for a server. Create the first administrator in the setup wizard (step "Access") or later under Settings → User management; existing transcripts stay untouched and are assigned to that account. It can be switched off again at any time, and back on without setting anybody up a second time.
Terminating TLS at the proxy is the normal setup and works as it should: Verba
takes the browser's scheme from X-Forwarded-Proto and marks the session
cookie Secure from it, so the connection to Verba itself may stay plain HTTP.
The header is trusted from 127.0.0.1 only — with the proxy on another host,
start Verba with FORWARDED_ALLOW_IPS=<proxy ip> or set
auth.cookie_secure to "always". Both example configurations under
deploy/ send the header already.
More options: python run.py --help (--host, --port, --no-browser, --data-dir).
| Path | Contents |
|---|---|
data/ |
settings (settings.json), database, logs (with rotation), models, tools |
workspaces/ |
one folder per transcript project (audio, transcripts, exports) |
Both paths are configurable. Installed desktop builds store data per user
(%LOCALAPPDATA%\Verba or ~/.local/share/verba).
python -m pip install -r requirements/core.txt -r requirements/dev.txt
python -m pytest tests/ -q
python -m ruff check backend/ tests/ run.pyDetails on architecture, packaging and the release pipeline: DEVELOPER_GUIDE.md. Guidelines
for code agents: CLAUDE.md and AGENTS.md. The
user guide (de/en/ru) is available in the app under Settings → Documentation
and lives under docs/user/.



