Skip to content

debpalash/OmniVoice-Studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

945 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
OmniVoice Logo

OmniVoice Studio

The open-source ElevenLabs alternative.

Real-time dictation, zero-shot voice cloning, and cinematic video dubbing — all on your desktop.
No accounts. No API keys. No cloud. Everything runs on your machine. Open-source, 646 languages.

Quickstart · Features · Why OVS · Engines · API · Donate · Contributing · Discord · 简体中文

Stars Total downloads Release License Issues Discord Ko-fi PayPal

Download the latest release

debpalash%2FOmniVoice-Studio | Trendshift


OmniVoice Studio — Launchpad

Your voice is the most personal data you have. So why rent it back from a cloud? Every mainstream voice tool ships your audio to someone else's server and bills you monthly for the privilege. OmniVoice Studio flips that: clone, design, dub, and dictate on your own hardware — 646 languages, no meter running, nothing leaving your machine.

Warning

Active beta. Things may break between releases — for the newest fixes, run from source. Bug reports and PRs are very welcome: open an issue or join Discord.

📸 See it in action

Studio
Studio
Generate & clone in one workspace — a 3-second clip mirrors any voice, 646 languages, zero-shot.
Voice Design
Voice Design
Build new voices from scratch — gender, age, accent, pitch, emotion, dialect.
Voice Gallery
Voice Gallery
Browse ready-made archetype voices with language filters — or build your own library.
Video Dubbing
Video Dubbing
A real dub, end to end: 37 segments transcribed, translated to Bengali, re-voiced, and timed — ready to export as MP4.
Settings — Engines
Settings → Engines
The engine compatibility matrix — 14 TTS engines with per-engine GPU preflight, no silent CPU fallback.
Settings — Models
Settings → Models
One-click model store — auto-detects your platform (CUDA / MPS / CPU) and recommends the right models.

✨ Features

The eight headliners — and twelve more waiting under the fold.

🎙️ Voice Cloning

3-second clip → mirror any voice.
646 languages, zero-shot.

🎨 Voice Design

Gender, age, accent, pitch, speed,
emotion, dialect — dial it in.

🎬 Video Dubbing

YouTube URL or file → transcribe →
translate → re-voice → MP4.

📖 Audiobook Editor

Import text, EPUB, or PDF. Auto-chapter,
loudnorm, metadata. Export .m4b.

🎭 Stories

Multi-voice editor. Assign voices
per-line, preview, export full cast.

⌨️ Dictation Widget

++Space from any app.
Transcribes, auto-pastes, disappears.

🔐 100% Local

No keys, no cloud, no accounts.
Your machine only.

🤖 MCP Server

Use OmniVoice from Claude,
Cursor, or any MCP client.

…and 12 more — isolation, diarization, batch, watermarking, diagnostics, and friends
  • 🔊 Vocal Isolation — Demucs-powered: splits speech from music and keeps the background bed.
  • 👥 Speaker Diarization — Pyannote + WhisperX auto-identify who said what.
  • 📦 Batch Queue — drop 50 videos, walk away; per-job progress bars.
  • 🛡️ AI Watermark — AudioSeal (Meta): invisible, survives compression.
  • 🔬 Diagnostics — self-check suite, error journal, scrubbed diagnostic bundles.
  • GPU Auto-Detect — CUDA · MPS · ROCm (Linux, opt-in) · CPU; ≤8 GB VRAM auto-offloads.
  • 🧭 Engine routing — preflight GPU check per engine; no silent CPU fallback.
  • 🧩 Extensible — subclass TTSBackend, add any engine in ~50 lines.
  • 🎒 Portable personas — export voices as .ovsvoice bundles: identity + watermark.
  • ♾️ Unlimited TTS — sentence-chunked generation, no length cap, streaming via WebSocket.
  • 🌐 Remote backend — point the UI at a remote server; Tailscale-friendly, bearer auth.
  • 🧠 Dictation + LLM — local-LLM cleanup of transcripts, optional echo cancellation.

⚡ Quickstart

Download macOS DMG Download Windows MSI Download Linux AppImage
macOS: first launch needs a one-time approval — right-click → Open (or System Settings → Privacy & Security → "Open Anyway" on macOS 15). No Terminal needed. Why? · Intel Macs: local backend unsupported (#889) — details.

Pick your OS and follow the guide end-to-end:

Feels slow? docs/performance.md covers where generation time actually goes, the tuning knobs, and the three classic causes of "it got slow".

Want breaths, laughter, pauses, whispering, or emotion in the output? docs/expressive-speech.md covers exactly what each engine can do today — and what's spec'd but not shipped yet.

Coming from CorentinJ/Real-Time-Voice-Cloning (now archived)? There's a dedicated migration guide: docs/migration/real-time-voice-cloning.md.

🧰 Stuck? Self-checks, tokens & restricted networks

Run the built-in self-check first — Settings → About → "Run self-check" in the app, or uv run python backend/main.py --diagnose from a checkout (--deep also test-loads the active engine). Then see docs/install/troubleshooting.md for the top 10 install errors. The in-app error UI deeplinks to those entries when something breaks at runtime, and Settings → About → "Save diagnostic bundle" packages scrubbed logs + the self-check report for bug reports.

For Hugging Face token setup, see docs/setup/huggingface-token.md. For diarization-specific gating, see docs/features/diarization.md. For download speed, the ⚡ fast-download (Xet) status, and restricted-network / mirror options, see docs/downloading-models.md.


💡 Why OmniVoice?

ElevenLabs charges $5–$330/mo and processes your audio on their servers. OmniVoice Studio runs on your hardware, with no usage limits.

ElevenLabs OmniVoice Studio
Pricing $5–$330/mo, per-character billing Free & open-source (AGPL-3.0) · Commercial license for proprietary use
Voice Cloning ✅ 3s clip ✅ 3s clip, zero-shot
Voice Design ✅ Gender, age ✅ Gender, age, accent, pitch, style, dialect
Audiobook / Stories ✅ Full audiobook editor + multi-voice stories (EPUB/PDF import, .m4b export)
Languages 32 646
Video Dubbing ✅ Cloud-only ✅ Fully local
Data Privacy Audio sent to cloud Nothing leaves your machine
API Keys Required Not needed
GPU Support N/A (cloud) CUDA · Apple Silicon · ROCm (Linux) · CPU
Desktop App ✅ macOS · Windows · Linux
TTS Engines 1 14full matrix
ASR Engines 1 10full lineup
MCP Server ✅ Use from Claude, Cursor, any MCP client
Self-check ✅ Diagnostics suite, error journal, scrubbed debug bundles
Customizable ❌ Closed ✅ Fork it, extend it, ship it

Professional-grade voice AI, minus the subscription and the cloud.


Convinced? Come build with us.
Join Discord


🖥️ System Requirements

Minimum Recommended
OS Windows 10, macOS 12+ (Apple Silicon), Ubuntu 24.04+ (glibc 2.39+) Any modern 64-bit OS
RAM 8 GB 16 GB+
VRAM (GPU) 4 GB (auto-offloads TTS to CPU) 8 GB+ (NVIDIA RTX 3060+)
Disk 10 GB free (models + cache) 20 GB+ SSD
Python 3.10+ (managed by uv) 3.11–3.12
GPU Optional — CPU works NVIDIA CUDA · Apple Silicon MPS · AMD ROCm (Linux only)

Tip

On GPUs with ≤8 GB VRAM, OmniVoice automatically offloads TTS to CPU during transcription — no config needed. A dedicated GPU is not required; the entire pipeline runs on CPU (just slower).

Note

AMD GPUs: ROCm acceleration is Linux-only and opt-in — pick "AMD GPU (ROCm)" on the first-run setup screen or set OMNIVOICE_TORCH_VARIANT=rocm (docs/install/linux.md). In Docker/Podman, pull the dedicated ROCm image instead: ghcr.io/debpalash/omnivoice-studio:rocm (docs/install/docker.md). On Windows, AMD GPUs (incl. Ryzen AI iGPUs) run CPU-only: PyTorch has no Windows ROCm wheels, so Windows GPU acceleration is NVIDIA/CUDA-only (docs/install/windows.md).

Important

macOS Intel (x86_64) is unsupported for the local backend: the app UI installs, but the Python backend cannot run because PyTorch no longer ships Intel-Mac wheels (#889). Intel-Mac users can still point the UI at a remote backend on another machine — see docs/install/macos.md.

🗣️ TTS Engines

14 engines, one picker. OmniVoice (default, 600+ languages) is always available; seven more are opt-in and auto-detected (CosyVoice 3, GPT-SoVITS, VoxCPM2, MOSS-TTS-Nano, KittenTTS, MLX-Audio, Sherpa-ONNX), plus six lazy-installed heavyweights (IndexTTS 2, OmniVoice GGUF, Supertonic 3, MOSS-TTS-v1.5, dots.tts, Confucius4-TTS). Switch in Settings → TTS Engine; the choice applies everywhere synthesis happens.

📊 The full matrix — 14 engines × platform × clone/instruct × license
Engine Languages Clone Instruct Linux macOS ARM Windows License
OmniVoice (default) 600+ ✅ CUDA/CPU ✅ MPS ✅ CUDA/CPU Built-in
CosyVoice 3 9 + 18 dialects ✅ CUDA/CPU ✅ MPS ✅ CUDA/CPU Apache-2.0
GPT-SoVITS 5 ✅ CUDA/CPU ✅ CUDA/CPU MIT
VoxCPM2 30 ✅ CUDA/CPU ✅ MPS ✅ CUDA/CPU Apache-2.0
MOSS-TTS-Nano 20 ✅ CUDA/CPU ✅ CPU ✅ CUDA/CPU Apache-2.0
KittenTTS English ✅ CPU ✅ CPU ✅ CPU MIT
MLX-Audio (Kokoro, Qwen3-TTS, CSM, Dia, …) Multi Varies Varies ✅ Native Varies
Sherpa-ONNX 20+ ✅ CUDA/CPU ✅ CPU ✅ CUDA/CPU Apache-2.0
IndexTTS 2 Multi ✅ CUDA ✅ CUDA Apache-2.0
OmniVoice GGUF 600+ ✅ CPU ✅ CPU ✅ CPU Built-in
Supertonic 3 31 ✅ CPU ✅ CPU ✅ CPU OpenRAIL-M
MOSS-TTS-v1.5 ⚡ (8B) 31 ✅ CUDA/CPU ✅ CPU ✅ CUDA/CPU Apache-2.0
dots.tts ⚡ (2B) 24 ✅ CUDA/CPU ✅ CPU Apache-2.0
Confucius4-TTS 14 ✅ CUDA/CPU ✅ CPU ✅ CUDA/CPU Apache-2.0

CUDA = GPU-accelerated · MPS = Apple Silicon Metal · CPU = runs everywhere, slower for large models · KittenTTS and MOSS-TTS-Nano run realtime on CPU · MLX-Audio is Apple Silicon only · ⚡ = lazy-registered (installed on first use)

Clone matters beyond single-clip generation: Video Dubbing (and any Batch job with a pinned voice) needs reference-audio cloning to preserve speaker identity, so picking a Clone-less engine (KittenTTS, Sherpa-ONNX, Supertonic 3) as the active engine fails those jobs up front with an actionable message instead of silently falling back to OmniVoice.

MOSS-TTS-v1.5 (8B, ~16 GB), dots.tts (2B, ~9 GB), and Confucius4-TTS are heavyweight opt-ins that run in their own isolated venv from a local clone. None claims Apple-Silicon MPS (CPU on Macs); dots.tts has no Windows path; Confucius4 wants CUDA (CPU works, ~17× realtime). Details: MOSS-TTS-v1.5 · dots.tts · Confucius4-TTS.

🎧 ASR Engines

11 engines — they power dictation, video dubbing, and subtitles. WhisperX is the cross-platform default (~100 languages, word-level timing); the rest are opt-in and auto-detected. Switch in Settings → Engines. Ten run fully on-device; the eleventh (OpenAI-compatible) is an optional remote client for Qwen3-ASR or any compatible server.

📊 The full lineup — 11 engines, what each is best at, and compute-type notes
Engine OMNIVOICE_ASR_BACKEND Languages Best for
WhisperX (default) whisperx ~100 Dubbing & subtitles — word-level timing via wav2vec2 forced alignment
Faster-Whisper faster-whisper ~100 Fast transcription on Linux / macOS / Windows (CTranslate2)
Faster-Whisper (isolated) faster-whisper-isolated ~100 Same as Faster-Whisper but crash-isolated in a subprocess — an ASR crash won't take down the app
MLX Whisper mlx-whisper ~100 Native Apple Silicon speed (Apple MLX / Metal)
PyTorch Whisper pytorch-whisper ~100 CUDA / CPU fallback via 🤗 Transformers (no cuDNN 8 needed)
Parakeet TDT nemo-parakeet English + 25 EU SOTA accuracy at ~10× realtime even on CPU, auto language detection (NVIDIA NeMo, CUDA/CPU)
Parakeet TDT v3 (MLX) parakeet-mlx 25 EU The Parakeet tier for Apple Silicon — TDT word timestamps, ~2 GB unified memory, dictation-grade speed on the GPU via MLX. Install the model from Settings → Models and dictation prefers it automatically when your system language is one of its 25 (European) languages; other languages (CJK, Arabic, …) keep the multilingual Whisper engine so dictation coverage never regresses.
Moonshine moonshine English Edge / low-latency, ONNX
FunASR funasr 50+ All-in-one multilingual — built-in VAD + inline speaker diarization (SenseVoice)
sherpa-onnx (live dictation) sherpa-onnx-asr 25 EU + 90+ Live, faster-than-real-time dictation — small streaming/offline ONNX models (Parakeet TDT v3/v2, streaming Zipformer & Paraformer, Whisper Tiny), CPU, identical on macOS / Windows / Linux. Picked per-model in Settings → Voice.
OpenAI-compatible ⚠️ remote openai-compat-asr Server-dependent A path to Qwen3-ASR today (self-hosted server, no transformers wait), any OpenAI-compatible transcription endpoint, or OpenAI's own API — no install, configure + test the connection in Settings → Engines (ASR tab). Audio leaves your machine to whatever server you point it at; see docs/engines/openai-compatible-asr.md.

Whisper-family engines cover ~100 languages; FunASR / SenseVoice adds an all-in-one multilingual path with built-in voice-activity detection and inline speaker diarization. sherpa-onnx powers the live dictation model picker — you talk and text appears as you speak. Every engine runs on-device — no API keys, no cloud.

GPU without efficient float16? On older NVIDIA GPUs (Maxwell/Pascal, GTX 16xx) or after a CTranslate2/cuDNN mismatch, the CTranslate2 ASR engines (WhisperX, Faster-Whisper) can't run float16 and OmniVoice automatically retries on int8 — no config needed. If transcription still fails, pin the compute type with the ASR_COMPUTE_TYPE env var (escape hatch): ASR_COMPUTE_TYPE=int8 (or float32 for CPU). Set it to int8 and restart the backend.


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│                    Frontend (React)                          │
│  DubTab · VoiceConsole · Stories · Audiobook · Gallery     │
│  Dictation · BatchQueue · Diagnostics · MCP Client          │
├─────────────────────────────────────────────────────────────┤
│                  Backend (FastAPI)                           │
│  100+ API endpoints · SSE+WSS streaming · SQLite            │
├──────────┬──────────┬──────────┬──────────┬────────────────┤
│ WhisperX │  Demucs  │OmniVoice │ Pyannote │ Engine Routing  │
│  (+7 ASR │  Source  │  (+10    │ Diariz-  │ ↳ GPU preflight │
│ engines) │  Sep.    │  TTS)    │ ation    │ ↳ No silent CPU │
└──────────┴──────────┴──────────┴──────────┴────────────────┘
         CUDA / MPS / ROCm / CPU (auto-detected + routed)

🔌 OpenAI-compatible API

Already have a script, agent, or tool that speaks OpenAI's audio API? Point it at http://localhost:3900/v1 — no key needed, no code changes. The backend ships a drop-in surface for the audio endpoints, wired to whichever TTS/ASR engine you have active (and yes, voice accepts your cloned voice-profile IDs).

Endpoint What it does
POST /v1/audio/speech TTS — text in; mp3 / wav / flac / opus / pcm out. tts-1 / tts-1-hd map to your active engine; OpenAI voice names (alloy, …) are accepted.
POST /v1/audio/transcriptions STT — audio file in; json, text, verbose_json, srt, or vtt out. whisper-1 maps to your active ASR engine.
GET /v1/audio/voices OmniVoice extension — lists every voice profile and engine, so clients can discover your clones.
curl http://localhost:3900/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model": "tts-1", "voice": "alloy", "input": "Generated on my own hardware.", "response_format": "wav"}' \
  --output speech.wav
from openai import OpenAI
client = OpenAI(base_url="http://localhost:3900/v1", api_key="none")  # any string works — nothing checks it

result = client.audio.transcriptions.create(model="whisper-1", file=open("clip.wav", "rb"))
print(result.text)

Want the whole surface (100+ endpoints)? The full REST API reference is embedded in the app — Settings → OpenAPI Reference (Scalar-powered), or the {} button in the footer.

📓 Run on Google Colab

Open In Colab

No local GPU? The official notebook (notebooks/OmniVoice_Studio_Colab.ipynb) boots the full app — web UI included — on a free Colab T4: it builds the frontend in-notebook, installs the backend with uv (reusing Colab's preinstalled CUDA PyTorch), and opens the UI through Colab's built-in port proxy. No third-party tunnels, no API keys. It then walks the whole feature surface as a guided API tour with inline playback: multilingual TTS, voice cloning and design, saved voice profiles, transcription, AI-watermark detection, the OpenAI-compatible API, a multi-voice story, a chaptered m4b audiobook, and a miniature video dub with vocal-isolation stems.

🤝 Agent Skills

Teach your AI agent (Claude Code, Cursor, Codex, …) to use OmniVoice with one command:

npx skills add debpalash/omnivoice-studio

Ships two skills: omnivoice — speak and transcribe through your local install (including your cloned voices) from any agent, free and offline; and oss-maintainer — the maintainer methodology this project is run with, for anyone running their own OSS project with an agent.


🗺️ Roadmap

🔜 Up Next

  • 🎬 Lip-sync v2 — visual speech timing with wav2lip
  • 🌐 Hosted Demo — try OmniVoice without installing anything
  • 🔌 Plugin Marketplace — community-contributed TTS engines and effects
  • 🎵 Real-time Voice Changer — live microphone transformation during calls
✅ Everything shipped so far — the receipts, by category
Category Features
Longform Audiobook editor (text/EPUB/PDF → chaptered .m4b), Stories multi-voice editor, two-pass loudnorm mastering, crash-resume for interrupted renders, pronunciation control + SSML-lite prosody
Dubbing Full pipeline (transcribe→translate→synthesize→mux), scene-aware splitting, lip-sync scoring, streaming TTS, per-speaker voice assignment, Smart Fit timing + second-pass QC, dedicated Dub home
Voice Zero-shot cloning, voice design, A/B comparison, voice preview widget, gallery with favorites/tags, portable persona bundles (.ovsvoice), voice console workspace
Audio Demucs vocal isolation, per-segment gain, selective track export, stem/SRT/VTT/MP3 export, unlimited-length TTS via sentence-chunked generation
Multi-Lang Multi-language batch picker, batch dubbing queue with sequential GPU execution
Diarization Pyannote ML diarization, auto speaker clone extraction, per-speaker voice assignment
ASR 10 engines (WhisperX, Faster-Whisper, isolated Faster-Whisper, MLX Whisper, PyTorch Whisper, Parakeet TDT, Parakeet TDT v3 MLX, Moonshine, FunASR/SenseVoice, sherpa-onnx live dictation), crash-isolated subprocess backend
TTS 14 engines (OmniVoice, CosyVoice 3, GPT-SoVITS, VoxCPM2, MOSS-TTS-Nano, KittenTTS, MLX-Audio, Sherpa-ONNX, + lazy: IndexTTS 2, OmniVoice GGUF, Supertonic 3, MOSS-TTS-v1.5, dots.tts, Confucius4-TTS), engine routing with GPU preflight
Infra Docker deployment, CUDA/MPS/ROCm auto-detect, cuDNN 8 compat, VRAM-aware model offloading, engine routing (no silent CPU fallback), diagnostics suite & error journal, restricted-network mirror support
AI Provenance AudioSeal invisible watermarking (SynthID-like), video logo overlay, watermark detection API
UX Undo/redo, keyboard shortcuts, drag-and-drop, session persistence, glassmorphism design system, UI scale fix for Linux/WebKitGTK
Real-time Events WebSocket event bus — instant sidebar refresh on data mutations, exponential backoff reconnect
State Management Zustand store migration — uiSlice, pillSlice, dubSlice, generateSlice, prefsSlice, glossarySlice
Desktop Cross-platform Tauri installers (macOS DMG — Apple Silicon; Intel unsupported for the local backend, #889 — Windows MSI, Linux deb/AppImage), auto-update infrastructure, single-instance enforcement, close-to-tray, macOS Gatekeeper fix
Dictation Global system-wide hotkey (⌘+⇧+Space), frameless floating widget, streaming ASR via WebSocket, auto-paste, customizable hotkey, local-LLM transcript refinement
Batch Pipeline Full batch TTS: extract → transcribe → translate → generate → mix → export, with live progress tracking
MCP Server OmniVoice as a local TTS/STT provider for Claude, Cursor, and any MCP client
Remote Backend Point the desktop UI at a remote backend URL with bearer auth (Tailscale-documented)
Reliability Stall watchdog on bootstrap splash, per-engine GPU compatibility matrix, actionable errors for non-executable engine binaries, setuptools auto-repair

💜 Sponsor / Donate

OmniVoice Studio is built by one developer using Claude Code and AI agents — and the agent bills are real (thousands of dollars over the last three months). If OmniVoice has created value for you, covering a slice of those bills keeps development full-time.

This month's agent bill fund

$10 / $200 raised



Ko-fi    PayPal


Every dollar goes directly to agent bills — keeping OmniVoice development continuous.



More apps from the creator of OmniVoice Studio — same local-first philosophy: Opal 💠 (play everything — the media player for the AI era) · memxt 🧠 (local memory for Claude Code & coding agents). A ⭐ on those helps too → details below.

🌟 Sponsors

OmniVoice is free and AGPL-3.0 — no paid tier, no SaaS revenue. Sponsors keep development going, and in return get a logo slot here, in the app, and (for top tiers) on the project website. It's a thank-you, never a paywall. See tiers & become a sponsor →

Your logo herebecome a sponsor

💡 GitHub also shows a Sponsor button at the top of this repo, wired to the same links via .github/FUNDING.yml.


💬 Community

Join Discord
We respond to setup questions within hours, not days.
What happens in there
Channel What happens there
#announcements Release news and the big moments — new versions land here first
#releases + #changelog Every build and exactly what's inside it
#issues Bug reports as forum posts — triaged straight into GitHub issues
#ideas Feature requests, discussed and voted on
#discuss-ideas Design talk before things get built
#general Setup help, GPU troubleshooting, and showing off your dubs

🤝 Contributing

Yes please — bug fixes, new TTS engine adapters, UI improvements, docs, translations. All of it.


❓ FAQ

Is this really as good as ElevenLabs?
Honest answer: it depends on what you're doing.

Where OmniVoice is genuinely competitive: voice cloning from a clean reference clip (state-of-the-art open diffusion TTS), language coverage (646 languages vs. their 32), and everything structural — no per-character billing, no usage caps, no audio leaving your machine, full pipeline customizability (14 TTS engines, 11 ASR engines, your choice of translation).

Where ElevenLabs still wins: out-of-the-box consistency and polish, especially for English TTS. Their one model is heavily tuned; our quality depends on which engine you pick, your hardware, and — for cloning — the reference audio (a dry, close-mic clip clones dramatically better than a noisy or echoey one).

For dubbing specifically: a dub is a chain — transcription → translation → cloning → synthesis — only as good as its weakest link on your source material. If parts come out incoherent, check the segment table's original text first: when the transcription is already wrong, switch the ASR engine or use cleaner source audio — that's usually the fix, not the voice.

Try it on your real material — it's free and takes one download. Many users replace ElevenLabs outright; some keep both. Both outcomes are fine with us.

Why doesn't a longer reference clip sound more like me?
Because OmniVoice's cloning is zero-shot: your clip is a prompt the model conditions on at generation time — it is never trained on. Feeding it 2 hours doesn't teach it your voice; past a short window the extra audio is simply not used. The dubbing pipeline's reference builder targets ~8 s and hard-caps at 15 s (backend/services/speaker_clone.py), and engines cap the prompt themselves (VoxCPM2 trims references to 30 s). This is different from ElevenLabs Professional Voice Cloning, which fine-tunes a model on hours of your audio — that's a training job, not a bigger prompt.

What actually moves clone quality is the clip, not its length. Zero-shot cloning mirrors the acoustics and delivery of the prompt, so: record 5–15 seconds (~8 s is the sweet spot) of continuous natural speech, close to the mic, in a quiet room with no reverb or music — an echoey clip clones echoey. One speaker only, and read in the tone and pace you want the output to have, because the clone copies your delivery, not just your timbre. Recording a few candidate clips and comparing results beats any amount of extra footage.

Want audiobook-grade, trained-on-your-voice fidelity? That path exists, but it's offline fine-tuning, not an in-app button: prepare a dataset of your recordings (docs/data_preparation.md) and fine-tune the bundled checkpoint via init_from_checkpoint (docs/training.md). Fair warning — it's a technical, command-line workflow that needs a capable GPU and hours of transcribed audio. In-app fine-tuning / long-reference "professional" cloning is on the roadmap as research only; no promised date.

Does it work on Apple Silicon (M1/M2/M3/M4)?
Yes. MPS acceleration is auto-detected. MLX-optimized Whisper models are available for faster transcription on Apple hardware. Intel Macs are not supported: the app UI installs, but the local Python backend cannot run because PyTorch no longer ships Intel-Mac wheels (#889) — an Intel Mac can only be used with a remote backend.
How much VRAM do I need?
4 GB minimum. With ≤8 GB, the TTS model is automatically offloaded to CPU during transcription. With 8+ GB, everything runs on GPU simultaneously. No GPU at all? CPU mode works — just slower (~3× for TTS).
Can I use this commercially?
Yes — commercial use is free under the AGPL-3.0: run it, sell the audio you make, dub client videos, deploy it across your team. One obligation: if you modify OmniVoice and offer the modified version to others over a network, you must share that modified source under the same terms. Embedding it in a closed-source product instead? A commercial license is available — see License.
What languages are supported?
646 languages for TTS via the OmniVoice model. Transcription (WhisperX) supports 99 languages. Translation coverage depends on the target language pair.
Can I add my own TTS engine?
Yes. Subclass TTSBackend in backend/services/tts_backend.py and add it to the _REGISTRY dictionary — ~50 lines. The fourteen built-in engines all work this way; see TTS Engines.
Does OmniVoice collect any data about me?
Not unless you explicitly say yes. On first run the app asks — one screen, two equal-weight buttons, no pre-ticked box — and until you answer yes, OmniVoice sends nothing: no analytics, no telemetry, no accounts, no phone-home. Skipping the question means no. Your text, audio, voices, and projects never leave your machine either way.

If you do opt in (also togglable anytime under Settings → Privacy → "Help improve OmniVoice"), what's sent is anonymous, content-free usage stats: generations (engine, language, generation time, character count, error type), plus app lifecycle — an install ping, updates (version-to-version), crashes (error class and a bucketed uptime, never logs), error types (capped, deduplicated), and a single uninstall ping if you remove it. Never your text, audio, file names, or anything identifying — enforced in code by a property allowlist (backend/core/analytics.py), not just a promise. Source builds have no analytics destination at all, so they never even ask. Your own numbers live in Settings → Usage, computed locally, sent nowhere.

How do I uninstall it / remove all its data?
OmniVoice is fully local — uninstalling is just deleting the app plus the folders it wrote (model cache, Python env, your voices/projects, config). Run scripts/uninstall.sh (macOS/Linux) or scripts\uninstall.ps1 (Windows) — it prints every folder with its size as a dry-run first, then deletes on --yes. The full per-platform path list and app-removal steps are in docs/install/uninstall.md.

📜 License

OmniVoice Studio is free and open-source software under the GNU Affero General Public License v3.0 (AGPL-3.0).

Free for any use — including commercial and internal business use. Run it, sell the audio you produce with it, dub your own or clients' videos, roll it out across your team — all free, no license needed. As a network copyleft license, AGPL adds one obligation: if you modify OmniVoice Studio and offer that modified version to others over a network, you must make the complete corresponding source of your modified version available to them under the same AGPL-3.0 terms.

A commercial license is available for organizations that want to embed OmniVoice Studio in a closed-source or proprietary product or service without the AGPL-3.0 copyleft obligations. Pricing tiers coming soon. Inquiries: OmniVoice@palash.dev.

The bundled omnivoice/ TTS model by Han Zhu remains Apache-2.0 upstream. See LICENSE for the full, binding terms, and LICENSE-NOTICE.md for the plain-language summary and scope.


🙏 Acknowledgments

OmniVoice Studio is built on the shoulders of exceptional open-source work:

Project Role
OmniVoice (k2-fsa) Zero-shot diffusion TTS engine — the core voice synthesis model
WhisperX Word-level speech recognition and alignment
Demucs (Meta) Music source separation for vocal isolation
Pyannote Speaker diarization — who said what
CTranslate2 Optimized Transformer inference on CPU and GPU
AudioSeal (Meta) Invisible neural audio watermarking for AI provenance
Tauri Native desktop app framework
Supertone / Supertonic 3 ONNX TTS engine — 31 languages, CPU-efficient
Sherpa-ONNX WASM-ready universal TTS/ASR runtime
GPT-SoVITS Zero-shot TTS engine — 5 languages, RTF 0.014

🧰 More local open-source from the maker

Like the local-first philosophy? It runs in the family — same maker, same rule: your data stays on your machine.


Opal logo

Play everything. The media player for the AI era.

Video, anime, comics, torrents, Jellyfin & Plex — one player for all of it, with local AI memory and context built in. Written in Zig, runs on macOS & Windows.

Opal stars Opal website


memxt logo

The fastest benchmarked open-source AI memory system.

Local long-term memory for Claude Code and coding agents — an MCP server on SQLite + embeddings, 100% on your machine. Your agent finally remembers yesterday.

memxt stars memxt docs



If you read this far, you're our kind of person.
⭐ Star this repo so others can find it too.
💬 Join the Discord to share what you build.
❤️ Support development — fund the AI agent bills that keep OmniVoice shipping.


Star History