154
stars
33
commits
4
repos using this model
7
linked in READMEs
Jul 30, 2026
updated
Pronounced "vooey" (rhymes with Louie) · by fluxions.ai
👉 Full code, install, docs, and the streaming voice assistant: github.com/fluxions-ai/vui
📖 Launch blog post — design notes, demos, and what's next.
Vui is a real-time voice assistant: speak into your mic, the model transcribes, runs a local LLM, and streams a TTS reply back — all from a single Python server. Built around Vui Nano, a 300M speech transformer based on the Qwen3 TTS. Trained on conversational speech with breaths, laughter, hesitations, and multi-speaker dialogue.
ws://…/v1/realtime for clients written against OpenAI's spec (docs/realtime-api.md)POST /v1/voice-note runs the whole ASR → LLM → TTS pipeline in a single HTTP call (audio in, JSON out)demo.py Gradio playground for the model on its ownmaeve, abraham, rhian, harry)openai realtime provider at Vui for a fully-local voice front-endcurl -fsSL https://install.fluxions.ai | bash
Clones into ~/vui, auto-detects Docker vs. native, installs deps (uv, Ollama, ffmpeg, Claude Code CLI), pulls the model from this repo, and launches the stack on http://localhost:8080.
Full Docker compose / native install, mobile setup, configuration, ASR options, and the Claude task server — all in the GitHub README.
git clone https://github.com/fluxions-ai/vui
cd vui
uv sync
python demo.py # Gradio UI — upload your own voice prompt
python demo.py --render --prompt prompts/abraham.wav # CLI render with a preset voice
The Vui checkpoint and Qwen codec download automatically from this repo on first run.
| Voice | Description |
|---|---|
maeve | Recommended Default — Female Irish accent, beautiful but may be hard for non-UK listeners |
abraham | British, well-spoken, exciting energy and personality — conscientious, good at emotionally difficult subjects |
rhian | More traditional British accent, slightly hesitant speaking style |
harry | British male accent, mumbly |
More personalities coming soon! Got a voice or character you'd like to hear? Open an issue or let us know on Discord.
from vui.engine import Engine, GenConfig
engine = Engine.from_checkpoint("vui-nano.safetensors")
with engine.new_row() as row:
audio = row.render(
"So [breath] the thing about this is, it's not what you'd expect, right?",
GenConfig(temperature=0.7),
)
Tip: try turning repetition penalty off. GenConfig defaults rep_penalty=1.1 to break long silence/filler loops, but it can flatten prosody and distort natural repetition. Setting it to 0 (anything <= 1.0 disables the penalty path) often gives more natural-sounding output — worth trying if generations sound stilted or over-corrected.
For long voice prompts (>15s) you need proper multi-segment chunking — vui.prompt_utils.build_prompt_segments does ASR + forced alignment + sentence-boundary splits at ~10s targets so the model keeps its speaker conditioning across the full reference. Full Python guide covering chunked prompts, streaming, continuous batching, codes-only decode, and the MLX path: docs/python-api.md.
A 300M autoregressive LM over the Qwen3-TTS speech codec — the first in the Vui model family. The codec and speaker encoder are reused from Alibaba's Qwen3-TTS-12Hz-0.6B-Base;
src/vui/qwen_codec.pyQwen3-TTS-12Hz-0.6B-Base (8.9M params, 1024-dim) — used at training time to embed reference speakersThe model can clone arbitrary voices — upload a sample in the demo UI (or drop a .wav into prompts/) and it will follow that speaker. Cloned voices won't sound as good as the four fine-tuned voices (maeve, abraham, rhian, harry) shipped in prompts/ — the released checkpoint has been fine-tuned on those four, so they're the highest-quality output the model can produce. Arbitrary clones work but expect lower naturalness, more drift, and some bias toward the fine-tuned speakers' prosody.
For best results: voice-prompt transcript must match the audio word-for-word, aim for 30 seconds or more of clean source audio (6-minute context window), and remember garbage in = garbage out. Full guide on voice prompts, supported tags ([breath], [laugh], [sigh] …), punctuation rules, and phonetic spelling for numbers/dates/units: docs/prompting.md.
If you need a checkpoint tuned to a specific voice for a legitimate use case (audiobooks, accessibility, game characters, dubbing of consenting performers, internal tooling), get in touch via fluxions.ai — we can train, license, or host one for you.
Streaming server and demo.py both run on either:
moonshine.* (CPU) ASR backend. CUDA 12.x, flash-attn installed.Full breakdown — measured per-component VRAM, ASR latency/VRAM per backend, KV-cache math, and tuning levers — is in docs/memory-budget.md.
Tip: drop n_codebooks for faster TTS on smaller GPUs. The RQ-Transformer head decodes 16 RVQ codebook levels per audio frame by default. Dropping the Codebooks slider in the UI (or n_codebooks in DEFAULT_SETTINGS) to ~10 gives noticeably faster decode and lower VRAM at the cost of some stability — occasional artefacts, more sensitivity to hard prompts. Below 8 quality drops sharply. 0 means "use all 16".
Vui generates speech that can sound convincingly human. By using this model — directly, through the streaming server, or through the realtime API — you agree to the following:
We explicitly prohibit:
You are responsible for what you generate. The released checkpoint is fine-tuned to a curated voice set in part to make these misuses harder, but it is not a substitute for your own judgment. If you build a product on top of Vui, build in consent flows, content provenance (e.g. C2PA), and abuse reporting.
We are not responsible for misuse, and we strongly condemn unethical applications of this technology.
Apache 2.0 — applies to the code in the GitHub repo and the released model weights. The Qwen3-TTS-Tokenizer-12Hz codec and Qwen3-TTS-12Hz-0.6B-Base speaker encoder are © Alibaba and licensed under the terms in their respective Hugging Face repos.
@software{vui_2026,
author = {Coultas Blum, Harry},
title = {Vui: Streaming Conversational Text-to-Speech},
url = {https://github.com/fluxions-ai/vui},
version = {1.0.0},
year = {2026}
}
32 commits
1 commits
154
stars
33
commits
4
repos using this model
7
linked in READMEs
Jul 30, 2026
updated
Pronounced "vooey" (rhymes with Louie) · by fluxions.ai
👉 Full code, install, docs, and the streaming voice assistant: github.com/fluxions-ai/vui
📖 Launch blog post — design notes, demos, and what's next.
Vui is a real-time voice assistant: speak into your mic, the model transcribes, runs a local LLM, and streams a TTS reply back — all from a single Python server. Built around Vui Nano, a 300M speech transformer based on the Qwen3 TTS. Trained on conversational speech with breaths, laughter, hesitations, and multi-speaker dialogue.
ws://…/v1/realtime for clients written against OpenAI's spec (docs/realtime-api.md)POST /v1/voice-note runs the whole ASR → LLM → TTS pipeline in a single HTTP call (audio in, JSON out)demo.py Gradio playground for the model on its ownmaeve, abraham, rhian, harry)openai realtime provider at Vui for a fully-local voice front-endcurl -fsSL https://install.fluxions.ai | bash
Clones into ~/vui, auto-detects Docker vs. native, installs deps (uv, Ollama, ffmpeg, Claude Code CLI), pulls the model from this repo, and launches the stack on http://localhost:8080.
Full Docker compose / native install, mobile setup, configuration, ASR options, and the Claude task server — all in the GitHub README.
git clone https://github.com/fluxions-ai/vui
cd vui
uv sync
python demo.py # Gradio UI — upload your own voice prompt
python demo.py --render --prompt prompts/abraham.wav # CLI render with a preset voice
The Vui checkpoint and Qwen codec download automatically from this repo on first run.
| Voice | Description |
|---|---|
maeve | Recommended Default — Female Irish accent, beautiful but may be hard for non-UK listeners |
abraham | British, well-spoken, exciting energy and personality — conscientious, good at emotionally difficult subjects |
rhian | More traditional British accent, slightly hesitant speaking style |
harry | British male accent, mumbly |
More personalities coming soon! Got a voice or character you'd like to hear? Open an issue or let us know on Discord.
from vui.engine import Engine, GenConfig
engine = Engine.from_checkpoint("vui-nano.safetensors")
with engine.new_row() as row:
audio = row.render(
"So [breath] the thing about this is, it's not what you'd expect, right?",
GenConfig(temperature=0.7),
)
Tip: try turning repetition penalty off. GenConfig defaults rep_penalty=1.1 to break long silence/filler loops, but it can flatten prosody and distort natural repetition. Setting it to 0 (anything <= 1.0 disables the penalty path) often gives more natural-sounding output — worth trying if generations sound stilted or over-corrected.
For long voice prompts (>15s) you need proper multi-segment chunking — vui.prompt_utils.build_prompt_segments does ASR + forced alignment + sentence-boundary splits at ~10s targets so the model keeps its speaker conditioning across the full reference. Full Python guide covering chunked prompts, streaming, continuous batching, codes-only decode, and the MLX path: docs/python-api.md.
A 300M autoregressive LM over the Qwen3-TTS speech codec — the first in the Vui model family. The codec and speaker encoder are reused from Alibaba's Qwen3-TTS-12Hz-0.6B-Base;
src/vui/qwen_codec.pyQwen3-TTS-12Hz-0.6B-Base (8.9M params, 1024-dim) — used at training time to embed reference speakersThe model can clone arbitrary voices — upload a sample in the demo UI (or drop a .wav into prompts/) and it will follow that speaker. Cloned voices won't sound as good as the four fine-tuned voices (maeve, abraham, rhian, harry) shipped in prompts/ — the released checkpoint has been fine-tuned on those four, so they're the highest-quality output the model can produce. Arbitrary clones work but expect lower naturalness, more drift, and some bias toward the fine-tuned speakers' prosody.
For best results: voice-prompt transcript must match the audio word-for-word, aim for 30 seconds or more of clean source audio (6-minute context window), and remember garbage in = garbage out. Full guide on voice prompts, supported tags ([breath], [laugh], [sigh] …), punctuation rules, and phonetic spelling for numbers/dates/units: docs/prompting.md.
If you need a checkpoint tuned to a specific voice for a legitimate use case (audiobooks, accessibility, game characters, dubbing of consenting performers, internal tooling), get in touch via fluxions.ai — we can train, license, or host one for you.
Streaming server and demo.py both run on either:
moonshine.* (CPU) ASR backend. CUDA 12.x, flash-attn installed.Full breakdown — measured per-component VRAM, ASR latency/VRAM per backend, KV-cache math, and tuning levers — is in docs/memory-budget.md.
Tip: drop n_codebooks for faster TTS on smaller GPUs. The RQ-Transformer head decodes 16 RVQ codebook levels per audio frame by default. Dropping the Codebooks slider in the UI (or n_codebooks in DEFAULT_SETTINGS) to ~10 gives noticeably faster decode and lower VRAM at the cost of some stability — occasional artefacts, more sensitivity to hard prompts. Below 8 quality drops sharply. 0 means "use all 16".
Vui generates speech that can sound convincingly human. By using this model — directly, through the streaming server, or through the realtime API — you agree to the following:
We explicitly prohibit:
You are responsible for what you generate. The released checkpoint is fine-tuned to a curated voice set in part to make these misuses harder, but it is not a substitute for your own judgment. If you build a product on top of Vui, build in consent flows, content provenance (e.g. C2PA), and abuse reporting.
We are not responsible for misuse, and we strongly condemn unethical applications of this technology.
Apache 2.0 — applies to the code in the GitHub repo and the released model weights. The Qwen3-TTS-Tokenizer-12Hz codec and Qwen3-TTS-12Hz-0.6B-Base speaker encoder are © Alibaba and licensed under the terms in their respective Hugging Face repos.
@software{vui_2026,
author = {Coultas Blum, Harry},
title = {Vui: Streaming Conversational Text-to-Speech},
url = {https://github.com/fluxions-ai/vui},
version = {1.0.0},
year = {2026}
}
32 commits
1 commits