Repository navigation
Keys Ghost Machine v0.2.0 — Kokoro Lite voice + fixes, powered by TensorFold 1.1.4
Superseded by v0.2.1 (fixes fresh DGX Spark installs).
Keys Ghost Machine v0.2.0: Kokoro Lite voice and stability fixes, powered by TensorFold 1.1.4
Kokoro Lite, a second voice for smaller machines. Kokoro-82M
(hexgrad, Apache-2.0) can now speak for Boo instead of Drama 3, or beside it with a switch in the page. It is for
memory-constrained hardware: a DGX Spark that shares its memory with other work, or a Mac at the low end of the
requirements. Everything else (Bolt, Cosmos3-Edge, Parakeet, Eyes of Kai, Hermes) stays the same.
- Install Lite, DGX Spark (about 48 GB free memory):
curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash -s -- --voice lite - Install Lite, Mac (Apple silicon, macOS 26+; 96 GB comfortable, 64 GB tight): the same command,
curl -fsSL https://raw.githubusercontent.com/drowzeys/keys-ghost-machine-audio-visual-agent/main/install.sh | bash -s -- --voice lite - Docker, Lite (DGX Spark, no Drama 3 mount needed):
docker run --gpus all --rm -p 8095:8095 -e VOICE_ENGINE=lite -e KAI=1 \ -v ~/keys-ghost-machine/models/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB:/models/bolt \ -v ~/keys-ghost-machine/models/cosmos3-tf:/models/cosmos3 -v ~/models/hf-cache:/models/hf-cache \ ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0
- Both, with a Full/Lite toggle: install with
--voice both(or-e VOICE_ENGINE=bothin Docker, with the
Drama 3 mount) and the page shows a Full / Lite switch per conversation; the voice list follows the engine.
On an existing install,kgm voice full|lite|bothswitches. Pick a Kokoro voice in the page's Voice list
(bf_emmaby default,af_heartis Kokoro's best rated) or setKOKORO_VOICE=af_heartin Docker. - Trade-off: on a DGX Spark Lite answers in about 0.33–0.40 s voice to voice (Full 0.55–0.77 s) and uses about
40 GB less memory. On a Mac it is about as fast as Full and saves about 9 GB. Lite speaks English only in Boo and
has no voice cloning, emotion control or the 14 Drama 3 voices.
Kokoro Lite vs Drama 3 (4-bit)
| Kokoro Lite | Drama 3 4-bit (NVFP4) | |
|---|---|---|
| Model | 82M parameters, ~330 MB | Billions of parameters, 4-bit NVFP4 |
| Voice-engine memory: DGX Spark | ~3.5 GB | ~42 GB |
| Voice-engine memory: Mac | ~0.8 GB | ~10 GB |
| Voice starts: Spark | 33–40 ms | 112–121 ms |
| Voice starts: Mac | 51–54 ms | ~60 ms |
| Voice to voice: Spark | 0.33–0.40 s | 0.55–0.77 s |
| Voice to voice: Mac | 0.49–0.64 s | 0.43–0.61 s |
| Naturalness (UTMOS) | 4.35 (bf_emma) – 4.52 (af_heart) | 4.53 (Vesper) |
| Voices | 54 built in | 14 custom, incl. Vesper |
| Voice cloning | No | Yes |
| Emotion/style control | No | Yes |
| Long-line stalls | None | Occasional; fixed by the silence guard + resume in v0.2.0 |
| Streaming | Whole sentence (<0.13 s) | Streams within a sentence |
| Languages | EN, ES, FR, IT, PT, HI, JA, ZH | Wider, incl. German |
| Licence | Apache-2.0 | Fish Audio Community License (hosted commercial use needs a Fish licence) |
Spark: Lite is twice as fast and frees ~40 GB. Mac: same speed, so run both and keep Vesper with a Lite toggle.
Choose Drama for a signature voice, cloning, emotion or German; choose Kokoro for small or shared hardware, an Apache
licence or the lowest delay.
Fixes
- Drama 3 long-line stalls: a long reply that went quiet after its first sentence (on about 1 in 5 paragraph-length
lines) is now caught. The DGX Spark's Drama 3 build gains TensorFold 1.1.4's silence guard (new in the v0.2.0
Linux archive and the Docker image), the Mac build already had it, and Boo itself drops a stalled take's quiet tail
and asks for the unspoken rest. - Never deaf after a fast short reply: a quick reply such as "I'm on it." could leave Boo marked as still
speaking, and the session stopped listening. Fixed (64 of 64 turns heard in testing). - Drama 3 "speech output capacity is full" (503): the keep-warm loop no longer outlives its page or a stopped
microphone (it stops on disconnect, after 2 s without audio and after 60 s), warms with one "Mm." at a time and never
while anything is being said; a refused line is asked again for up toretry_s(6 s) instead of being lost; a
stopped turn frees its speech slot at once. - DGX Spark installs: the page could not connect after Parakeet warmed up. NeMo's CUDA-graph decoder wrote a NUL
into Python's sharedb" "object (an empty NVRTC log read intob" " * 1), which broke uvicorn's status lines and
websockets' parser and left damaged.pycfiles. Boo now gives NVRTC its own buffer (the Docker image was not
affected). - Bolt repetition loops: a reply that starts repeating a sentence it already said ends there, unsaid.
- Interrupted replies stopped before their first word no longer leave "(interrupted)" in the history for the
brain to copy. - The reference Mac now runs
voice_engine: both, with the Full/Lite toggle tested live.
Assets
| File | Platform | Contents |
|---|---|---|
keys-boo-tensorfold-1.1.4-macos-arm64.tar.gz |
Apple silicon, macOS 26+ | Unchanged from v0.1.0: one tensorfold-native for Bolt (with libbolt.dylib), Drama 3 NVFP4 with named voices, the voice-prefix cache and 1.1.4's silence guard, and Cosmos3-Edge on Metal |
keys-boo-tensorfold-1.1.4-linux-aarch64.tar.gz |
DGX Spark (GB10), CUDA 13 | Updated: tensorfold-drama3-nvfp4 now has TensorFold 1.1.4's silence guard flags (drowzeys/TensorFold drama3-cuda-voices-guard, 240ab0fb; good takes byte-identical, first audio unchanged); tensorfold-cosmos3 unchanged. Bolt uses the stock TensorFold 1.1.4 release |
Each archive has README.md, CHANGES.md, LICENSE, NOTICE, THIRD_PARTY_NOTICES.md, LICENSES/ and SHA256SUMS; check it against its .sha256 file. These are unofficial community builds of TensorFold (Ash Hart, Apache-2.0), not official releases. Model weights are not included. The one-shot installer now fetches v0.2.0 and, on a re-run, replaces a v0.1.0 build.
Docker (DGX Spark)
docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0
docker run --gpus all --rm -p 8095:8095 \
-v ~/models/bolt:/models/bolt -v ~/models/drama:/models/drama -v ~/models/cosmos3:/models/cosmos3 \
-v ~/models/hf-cache:/models/hf-cache -e KAI=1 \
ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0-e VOICE_ENGINE=lite (no Drama mount) or -e VOICE_ENGINE=both (Full/Lite switch); KOKORO_VOICE picks the Kokoro voice. :latest now points at 0.2.0. See docker/README.md.
Upgrading
- One-shot install: run the installer again (it takes the code from
main, which also has the DGX Spark connection fix made right after tagging; add--voice liteor--voice bothto change the voice); it updates the code and the DGX Spark build, and keeps your models. - Docker:
docker pull ghcr.io/drowzeys/keys-ghost-machine-audio-visual-agent:0.2.0.
Verified
- Docker 0.2.0 on a DGX Spark in all three modes:
full(Drama 3 with the silence guard on, Vesper first audio ≈ 135 ms),lite(Kokoro-82M, a sentence in ≈ 45 ms),both(a spoken turn in each engine, switched over the page's Full/Lite message);/healthreports the engines. - The DGX Spark Drama 3 build with the guard: byte-identical audio to v0.1.0's on a 15-line stall set when no take stalls, same first audio.
Credits
Kokoro-82M, kokoro and misaki by hexgrad (Apache-2.0); mlx-audio by Prince Canuma (MIT); spaCy and en_core_web_sm by Explosion (MIT); espeak-ng (GPL-3.0); StyleTTS 2 (Yinghao Aaron Li et al., MIT); TensorFold (Ash Hart, Apache-2.0); the NVFP4 Drama 3 engine and checkpoint by plotarmordev; Nemotron 3.5 Bolt, Cosmos3-Edge and Parakeet v3 by NVIDIA; Drama 3 by Fish Audio (Fish Audio's licence applies to Drama 3 and its outputs); Eyes of Kai by tonyd2wild; Hermes by Nous Research. Full list in CREDITS.md.
Questions and bug reports: GitHub Issues.