met4citizen/TalkingHead
Talking Head (3D): A JavaScript class for real-time lip-sync using full-body 3D avatars.
TalkingHead (3D) – 功能简介
TalkingHead 是一个 JavaScript 库,可以将 3D 化身(带有 Mixamo 兼容骨骼的 GLB 模型)放入网页中,并使其能够实时说话、做手势和展示面部表情。化身可以根据语音进行对口型,将表情符号显示为面部姿态,并由各种 AI 服务(OpenAI、Google TTS、Whisper 等)驱动。它基于 Three.js 构建用于渲染,并完全在浏览器中运行——你可以通过 CDN 加载或通过 npm 安装。
核心功能
| 功能 | 说明 |
|---|---|
| 实时对口型 | 从文本转语音服务(默认为 Google Cloud TTS)或来自 HeadAudio 等音频驱动模块生成唇形(visemes)。开箱即用支持多种语言(en, fi, de, fr, lt),并可以通过自定义模块进行扩展。 |
| 全身化身 | 接受带有 Mixamo 骨骼、ARKit/Oculus blend-shape 定义以及用于头发和衣物的动态骨骼物理效果的 GLB 文件。 |
| 表情符号到表情映射 | 内置的表情符号字典可将标准表情符号转换为面部 blend-shape 值。 |
| 可插拔的 TTS 后端 | 支持 Google Cloud TTS、ElevenLabs、Azure Speech 或任何可以返回单词级时间戳或唇形 ID 的服务。 |
| LLM 驱动控制 | 示例演示展示了如何通过 OpenAI 函数调用(function calling)来驱动化身的手势和语音。 |
| 支持 WebRTC | 伴随项目 (HeadAudio) 提供用于 WebRTC 上语音对语音通信的低延迟音频工作线程(audio worklet)。 |
| 插件生态系统 | 伴随模块包括:HeadTTS(仅限浏览器的神经 TTS)、HeadAudio(音频驱动的唇形检测)以及 MotionEngine(具有 LLM 语义控制的高级手势库)。 |
| 可配置的渲染 | 通过庞大的配置对象公开了摄像机、灯光和化身级别的选项;你可以启用/禁用旋转、平移、缩放,更改情绪等。 |
典型用例 (如 README 所示)
- 人机小组对话 – 用于 DialogLab 工具包中的多人聊天模拟。
- 基于 WebRTC 的实时 AI 语音 –
HeadAudio演示实现了带对口型的语音对语音流传输。 - 视频会议化身 – 一个名为 Olivia 的化身演示,增加了转录和 AI 生成的回复功能。
- 全浏览器 AI 助手 – EdgeSpeaker 网站使用 WebGPU 在本地运行所有功能(LLM、TTS、对口型),无需外部 API 密钥。
- 交互式 3D 体验 – 回收顾问、Twitch 冒险世界、量子物理教学、AI 驱动的交友资料化身等。
入门指南 (快速开始)
- 引入库 – 通过 npm (
npm i @met4citizen/talkinghead) 或直接从 CDN 引入:<script type="importmap"> {"imports":{"talkinghead":"https://cdn.jsdelivr.net/gh/met4citizen/TalkingHead@1.7/modules/talkinghead.mjs"}} </script> - 创建
TalkingHead实例:import { TalkingHead } from "talkinghead"; const head = new TalkingHead(document.getElementById('avatar'), { ttsEndpoint: "/gtts/", // 指向 Google TTS 的代理 jwtGet: myJwtFetcher, // 可选的 SSO 令牌获取函数 lipsyncModules: ["en","fi"], }); - 加载化身 (带有正确骨骼的 GLB 文件):
await head.showAvatar({ url: "./avatars/avaturn.glb", body: "F", avatarMood: "neutral", ttsLang: "en-GB", lipsyncLang: "en", }); - 让它说话:
head.speakText("Hello, world!");
README 还提供了一个仅需 Google TTS API 密钥即可运行的最小化 HTML 示例。
扩展 / 定制
- 添加你自己的 TTS – 实现一个可以返回单词级时间戳或唇形 ID 的服务,并指向
ttsEndpoint(或使用ttsApikey快捷方式直接调用 Google)。 - 新语言 – 创建一个对口型语言模块并将其列入
lipsyncModules。 - 动态骨骼与物理效果 – 在化身选项中定义
modelDynamicBones(参见附录 E)。 - 手势库 – 接入
MotionEngine以实现语义化的 LLM 驱动手势。 - 仅化身模式 – 设置
avatarOnly: true以获取仅用于集成到现有 Three.js 场景的骨骼对象。
谁会使用它?
- 研究人员 – 构建具身智能体、对话式 UI 研究或多模态交互实验的人员。
- 开发者 – 创建虚拟主持人、AI 驱动的客户服务化身或游戏风格 NPC 的人员。
- 教育者 / 爱好者 – 希望在无需处理沉重后端基础设施的情况下,快速在 Web 演示中添加会说话的 3D 角色的人员。
许可证与可用性
该库以开源许可证发布(README 中包含 GitHub 发布版本和 npm 包的链接)。所有代码、演示视频和伴随模块均可公开访问。
总结: TalkingHead 是一个功能完备的、基于浏览器的 3D 化身框架,它连接了图形学、语音合成和 LLM 控制,是任何构建交互式 AI 驱动虚拟角色的人的实用工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目