{"data":{"slug":"met4citizen-talkinghead","name":"TalkingHead","tagline":"Talking Head (3D): A JavaScript class for real-time lip-sync using full-body 3D avatars.","github_url":"https://github.com/met4citizen/TalkingHead","owner":"met4citizen","repo":"TalkingHead","owner_avatar_url":"https://avatars.githubusercontent.com/u/76654952?v=4","primary_language":"JavaScript","stars":1397,"forks":319,"topics":["3d-avatar","lip-sync","talking-avatar","talking-head","text-to-speech"],"archived":false,"github_pushed_at":"2026-06-02T09:01:20+00:00","maintenance_label":"Steady","url":"https://www.graphcanon.com/tools/met4citizen-talkinghead","markdown_url":"https://www.graphcanon.com/tools/met4citizen-talkinghead.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/met4citizen-talkinghead","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=met4citizen-talkinghead","description":"Talking Head (3D): A JavaScript class for real-time lip-sync using full-body 3D avatars.","homepage_url":null,"license":"MIT","open_issues":7,"watchers":25,"ai_summary":null,"readme_excerpt":"# Talking Head (3D)\n\n\n### Demo Videos\n\n*All the demo videos are real-time screen captures from a Chrome browser running\nthe TalkingHead test web app without any post-processing.*\n\nVideo | Description\n---|---\n[<img src=\"images/dynamicbones.jpg\" width=\"200\"/>](https://youtu.be/YUbDIWkskuw)<br>[<img src=\"images/dynamicbones2.jpg\" width=\"200\"/>](https://youtu.be/4Y9NFnENH5s) | Having a good hair day! – A two-part introduction to the TalkingHead's dynamic bones feature 🦴🦴 and built-in physics engine. Using custom models with rigged hair and two different hairstyles. See Appendix E for more details.\n[<img src=\"images/screenshot4.jpg\" width=\"200\"/>](https://youtu.be/OA6LBZjkzJI) | I chat with Jenny and Harri. The close-up view allows you to evaluate the accuracy of lip-sync in both English and Finnish. Using GPT-3.5 and Microsoft text-to-speech.\n[<img src=\"images/screenshot5.jpg\" width=\"200\"/>](https://youtu.be/fJrYGaGCAGo) | A short demo of how AI can control the avatar's movements. Using OpenAI's function calling and Google TTS with the TalkingHead's built-in viseme generation.\n[<img src=\"images/screenshot6.jpg\" width=\"200\"/>](https://youtu.be/6XRxALY1Iwg) | Michael lip-syncs to two MP3 audio tracks using OpenAI's Whisper and TalkingHead's `speakAudio` method. He kicks things off with some casual talk, but then goes all out by trying to tackle an old Meat Loaf classic. 🤘 Keep rockin', Michael! 🎤😂\n[<img src=\"images/screenshot3.jpg\" width=\"200\"/>](https://youtu.be/SfnqRnWKT40) $$\\color{transparent}{\\rule{200px}{0px}}$$ | Julia and I showcase some of the features of the TalkingHead class and the test app including the settings, some poses and animations.\n\n---\n\n### Use Case Examples\n\n*Some featured videos, apps, and projects using the TalkingHead class:*\n\nVideo/App | Use Case\n---|---\n[<img src=\"images/dialoglab.jpg\" width=\"200\"/>](https://www.youtube.com/watch?v=U2Ag_Ktobzw) | **Human-AI group conversations**. Researchers from UVA, Google, Northeastern, Google DeepMind, and Google Research developed [DialogLab](https://github.com/ecruhue/DialogLab), a toolkit to author, simulate and test human-AI group conversations. 🤖🤖🤖\n[<img src=\"images/openai.jpg\" width=\"200\"/>](https://met4citizen.github.io/HeadAudio/openai.html) | **Low-latency AI speech over WebRTC**. Speech-to-speech in realtime over WebRTC using OpenAI Realtime API. Learn more about the audio-driven lip-sync module at [HeadAudio](https://github.com/met4citizen/HeadAudio).<br>**Note**: Realtime speech-to-speech usage is much more expensive than standard AI text tokens, so please check OpenAI pricing for `gpt-realtime-mini` before use.\n[<img src=\"images/olivia.jpg\" width=\"200\"/>](https://youtu.be/9GeXwjuslnQ) | **Video conferencing**. A video conferencing solution with real-time transcription, contextual AI responses, and voice lip-sync. The app and demo, featuring Olivia, by [namnm](https://github.com/namnm) 👍\n[<img src=\"images/edgespeaker.png\" width=\"200\"/>](https://www.edgespeaker.com/) | **Fully in-browser AI you can talk to**. Uses TalkingHead, [HeadTTS (with Kokoro)](https://github.com/met4citizen/HeadTTS), [whisper-web](https://github.com/xenova/whisper-web), and [WebLLM (with Llama 3.2)](https://github.com/mlc-ai/web-llm). No APIs, no accounts. For best performance and WebGPU support, use a desktop version of Chrome or Edge: 👉 [EdgeSpeaker.com](https://www.edgespeaker.com/)\n[<img src=\"images/geminicompetition.jpg\" width=\"200\"/>](https://www.youtube.com/watch?v=Dl2o9kRvbLQ) | **Recycling Advisor 3D**. Snap a photo and get local recycling advice from a talking avatar. My entry for the [Gemini API Developer Competition 2024](https://ai.google.dev/competition/projects/recycling-advisor-3d).\n[<img src=\"images/evertrail.jpg\" width=\"200\"/>](https://www.youtube.com/watch?v=OG1vwOit_Yk) | **Live Twitch adventure**. [Evertrail](https://evertrail.app) is an infinite, real-time generated world where all of your choices shape the outcome. Video clip and the app by [JPhilipp]","github_created_at":"2023-08-14T10:59:50+00:00","created_at":"2026-07-11T12:11:42.138766+00:00","updated_at":"2026-07-11T12:11:55.427868+00:00","categories":[{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"},{"slug":"speech-audio","name":"Speech & Audio","url":"https://www.graphcanon.com/categories/speech-audio","markdown_url":"https://www.graphcanon.com/categories/speech-audio.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/speech-audio"},{"slug":"computer-vision","name":"Computer Vision","url":"https://www.graphcanon.com/categories/computer-vision","markdown_url":"https://www.graphcanon.com/categories/computer-vision.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/computer-vision"}],"tags":[{"slug":"lip-sync","name":"lip-sync"},{"slug":"3d-avatar","name":"3d-avatar"},{"slug":"talking-head","name":"talking-head"},{"slug":"text-to-speech","name":"text-to-speech"},{"slug":"javascript","name":"javascript"},{"slug":"talking-avatar","name":"talking-avatar"}],"trust":{"provenance":{"is_fork":false,"github_id":678351974,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-11T12:11:42.885Z","maintenance":{"label":"Steady","score":60,"methodology":"github_public_v1","releases_90d":0,"days_since_push":39,"last_release_at":"2025-12-08T09:27:25Z"},"security_summary":{"status":"ok","scanner":"osv@v1","low_count":0,"high_count":0,"last_scan_at":"2026-07-11T12:11:43.665Z","medium_count":0,"scan_profile":"deps","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-07-11T12:11:43.406Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-07-11T12:11:43.406Z"},"languages":{"value":["javascript"],"source":"github.language+package.json","observed_at":"2026-07-11T12:11:43.406Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-07-11T12:11:43.406Z"}}}}