.glb avatar and an audio stream: a small model listens to the audio in the browser and drives the avatar’s mouth, with natural blinks and brows. No text, no phoneme timings, no TTS-provider visemes, no server and no API key.
Quickstart
Install the package and make your avatar talk.
Try the 3D demo
Sample voices in several languages, your own audio files, or your microphone.
Features
- Two inputs, one line each:
attachStream(mediaStream)for live audio,speak(url | ArrayBuffer | Blob)for clips. - Works with any voice source: OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia or any other TTS, WebRTC voice agents, or a microphone. The model only listens to the audio.
- Runs entirely in the browser. Audio never leaves the page. No API key, no server, no ML runtime.
- Small: 8 KB gzipped of code, plus a 1 MB model that’s downloaded once. About 2% of one CPU core while speaking.
- Anticipates sounds, like a real speaker. Streams are delayed slightly so the mouth moves into each sound on time; clips are analysed in full before they play.
- Any
.glbavatar with Oculus visemes, or map your own morph names. Framed as a face close-up (no arms or hands). - Natural blinks and brows that follow what the avatar is doing: speaking, listening or thinking.
- Framework-free core plus a React component. TypeScript types included.
What it is, and isn’t
Want a photorealistic person instead of a 3D model? That’s Realistic Avatars, a separate, hosted product.