honwee / mynah
git clone https://github.com/honwee/mynah.git
v0.1.0 · 9d ago
Mynah — self-hosted realtime digital human. One GPU, full admin console, Apache-2.0. 自己服务器上的实时数字人系统
—
stars, 24h
—
stars, 7 days
+201
stars, 30 days · #1,273
201
★ total
78
forks · 1 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageGo
LicenseApache-2.0
Created2026-10-07 (13d ago)
Last push5d ago
Watchers0
OwnerUser
GitHub topics
Links
- GitHub: github.com/honwee/mynah
- Homepage: https://honwee.github.io/mynah/
- Releases · Issues · Hacker News mentions
README excerpt
**Open-source digital humans, ready to deploy.** Realtime voice conversation on a published channel: ask, it answers with lip-synced video; interrupt it any time. FlashHead with the built-in Luna half-body preset: one portrait, the whole head is rendered by the engine and pasted back onto a head-to-waist canvas; idle breathing and gesture clips (shy, laugh, shake, wink) are baked from the same canvas, and the instinct layer picks a gesture while the brain is still composing. Ships as a built-in preset; publish it as a channel from the console. A self-hosted digital human you can actually hand to a customer: realtime voice conversation, admin console, knowledge base, channel publishing — all open source. One GPU, or none. Stream a talking avatar over WebRTC — voice in, lip-synced video out — with swappable avatar / TTS / ASR / LLM engines, avatar training from a video, voice cloning, and a one-command setup wizard. -green) · Quickstart · Architecture · Integration API · Licensing · Commercial support > **Hardware, up front:** the default FlashHead avatar engine needs an > **NVIDIA GPU (4090-class)**; the lighter wav2lipLS profile runs on more > modest GPUs. **One avatar worker serves one live session at a time** — see > Capacity & scaling before planning a deployment. > No GPU at all? Every component can be a remote endpoint. --- ## What it is Mynah is a Go realtime core (**`cored`**) that streams synchronized video + audio from a Python avatar worker to a browser over **WebRTC**. It receives a WebRTC offer, opens a bidirectional gRPC session to the avatar engine, feeds it **TTS audio** (from text, or from an **LLM** chat turn), and paces the encoded VP8/H.264 + Opus frames back to the browser. Optional **voice input** (ASR worker) and **semantic turn-taking** (a turn-detector worker that decides when the user has actually finished speaking) make it a full voice-to-voice loop. An optional control plane (`--db`) adds an admin API, config hot-apply, a knowledge base (RAG), and publishable visitor "channels". It is engine-agnostic by design: avatar, TTS, ASR, LLM and turn-detection are **pluggable** behind small contracts (a gRPC streaming contract for workers, an OpenAI-compatible HTTP surface for TTS/LLM). The default engines are chosen to be **commercially usable** out of the box. ## Highlights - **Realtime, not rendered video** — the cloud brain answers within ~0.2 s of the user's last word and lip-synced video starts under a second; barge-in stops it mid-sentence. A bundled audio end-of-turn model (Smart Turn v3.2, BSD-2) decides when the user has actually finished speaking. Numbers in Performance. - **One portrait, a half-body presenter** — FlashHead renders the whole head and pastes it onto a 720×1280 head-to-waist canvas; idle breathing and gesture clips (shy, laugh, shake, wink) are baked from the same canvas. **Luna** and **Nova** ship as built-in presets; your own portrait takes one prepare step. - **Instinct, not ju