majidmanzarpour/threejs-talking-avatar — explained in plain English
Analysis updated 2026-05-18
Talk to a 3D avatar in your browser using fully local speech recognition, language model, and voice synthesis.
Compare different combinations of local speech, language, and voice models for quality and download size.
Type a phrase and hear it spoken with optional real cloud voice quality using your own ElevenLabs key.
Study how a language model can be prompted to control facial expression and gesture timing in an animated character.
| majidmanzarpour/threejs-talking-avatar | aim-uofa/reasonmatch | airbone42/360-data-athlete | |
|---|---|---|---|
| Stars | 12 | 12 | 12 |
| Language | Python | Python | Python |
| Setup difficulty | moderate | hard | hard |
| Complexity | 4/5 | 5/5 | 4/5 |
| Audience | developer | researcher | general |
Figures from each repo's GitHub metadata at analysis time.
First run downloads several gigabytes of local AI models and needs a Chromium browser with WebGPU support.
This project is a talking avatar that runs entirely inside a web browser, with no server doing the heavy lifting behind it. It combines a 3D face model from Google's GNM project with the Three.js graphics library, and everything from listening to your voice, generating a reply, converting that reply to speech, and animating the face happens on your own device. You can either type a phrase or talk to it out loud. When speaking, it uses local speech recognition models, then generates a response using a local language model such as Gemma or Qwen, then turns that response into speech using a local text to speech voice, and finally animates the avatar's jaw, lips, tongue, eyes, and expressions to match, all running through your browser's WebGPU and WebAssembly support rather than calling out to a cloud service. There is also an optional path where you can supply your own ElevenLabs API key directly in the browser to use their voice service instead, though the README is upfront that a key typed into a webpage this way cannot be kept fully secret from someone else using the same browser or site. Because everything downloads and runs locally, the first time you use it can involve downloading a few gigabytes of model files depending on which combination of recognizer, language model, and voice you pick, and the tool shows you the expected download size before you commit to it. A model manager lets you preview, download, and switch between different combinations to compare quality and speed. Beyond just moving the mouth in time with the audio, the language model itself decides on brow, gaze, head movement, and general expression, choosing an emotional performance for each reply and then handing it off to a deterministic animation system that turns that choice into rendered motion. To run it yourself, you need Node.js 20 or newer and a Chromium based browser with support for WebGL, Web Audio, WebAssembly, and WebGPU. The project's own code is released under the Apache License 2.0, though the underlying model weights and audio have their own separate license terms.
A browser-only talking 3D avatar that listens, thinks, speaks, and animates its face using entirely local AI models, no server required.
Mainly Python. The stack also includes Three.js, WebGPU, WebAssembly.
The project's own code is free to use for any purpose, including commercial use, as long as you keep the copyright notice, the underlying model weights and audio have separate license terms.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.