whatisgithub

What is threejs-talking-avatar?

majidmanzarpour/threejs-talking-avatar — explained in plain English

Analysis updated 2026-05-18

12PythonAudience · developerComplexity · 4/5LicenseSetup · moderate

In one sentence

A browser-only talking 3D avatar that listens, thinks, speaks, and animates its face using entirely local AI models, no server required.

Mindmap

mindmap
  root((Talking Avatar))
    What it does
      Browser only avatar
      Local speech and reply
      Animated facial expression
    Tech stack
      Three.js
      WebGPU
      WebAssembly
    Use cases
      Local voice conversation
      Compare model combos
      Study expressive animation
    Audience
      Developers
      Graphics researchers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Talk to a 3D avatar in your browser using fully local speech recognition, language model, and voice synthesis.

USE CASE 2

Compare different combinations of local speech, language, and voice models for quality and download size.

USE CASE 3

Type a phrase and hear it spoken with optional real cloud voice quality using your own ElevenLabs key.

USE CASE 4

Study how a language model can be prompted to control facial expression and gesture timing in an animated character.

What is it built with?

Three.jsWebGPUWebAssemblyViteNode.js

How does it compare?

majidmanzarpour/threejs-talking-avataraim-uofa/reasonmatchairbone42/360-data-athlete
Stars121212
LanguagePythonPythonPython
Setup difficultymoderatehardhard
Complexity4/55/54/5
Audiencedeveloperresearchergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

First run downloads several gigabytes of local AI models and needs a Chromium browser with WebGPU support.

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.

So what is it?

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.

Copy-paste prompts

Prompt 1
Help me clone this repo and run the demo locally with npm install and npm run dev.
Prompt 2
Explain the tradeoffs between the different local lip timing modes: auto, native, waveform, and heuristic.
Prompt 3
What are the storage and download size implications of choosing Gemma versus Qwen as the local brain?
Prompt 4
Walk me through the security tradeoffs of entering an ElevenLabs API key directly into this browser demo.

Frequently asked questions

What is threejs-talking-avatar?

A browser-only talking 3D avatar that listens, thinks, speaks, and animates its face using entirely local AI models, no server required.

What language is threejs-talking-avatar written in?

Mainly Python. The stack also includes Three.js, WebGPU, WebAssembly.

What license does threejs-talking-avatar use?

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.

How hard is threejs-talking-avatar to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is threejs-talking-avatar for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.