met4citizen/TalkingHead

Talking Head (3D): A JavaScript class for real-time lip-sync using full-body 3D avatars.

TalkingHead (3D)

一个浏览器端的 JavaScript 类,为实时 3D 头像提供语音和口型同步功能。它在浏览器中运行,使用 Three.js/WebGL 渲染,并内置物理引擎以支持头发等动态特性。它还将表情符号映射到面部表情,并支持全身头像(GLB 格式)和 Mixamo 风格动画(FBX)。

它实际做什么

  • 说话和口型同步:将文本转换为语音音频(默认通过 Google Cloud TTS),并使用单词级时间戳同步移动头像的嘴巴。内置的口型同步语言模块涵盖英语、德语、法语、巴西葡萄牙语、芬兰语和立陶宛语——可以通过编写模块或使用直接提供 viseme ID 的外部 TTS(例如 Microsoft Azure Speech SDK)来添加更多语言。
  • 增加生动性:保持空闲头部运动、眼神接触行为和情绪状态(中性、快乐、愤怒、悲伤等)。
  • 处理音频播放:包括 speakText 方法用于文本转语音,以及 speakAudio 方法用于播放音频文件并自动检测 viseme。

运行所需条件

  1. 一个头像:具有 Mixamo 兼容骨骼和 ARKit/Oculus viseme 混合形状的 GLB 3D 模型(README 中的附录 A 解释了如何创建)。
  2. 文本转语音后端:可以是 Google Cloud TTS(使用代理 + JWT 或 API 密钥),或任何返回单词级时间戳的外部 TTS。
  3. TalkingHead 模块:可通过发布页面、NPM(@met4citizen/talkinghead)或 CDN 导入获取。

可自定义的内容

README 记录了数十种选项,包括:

  • 语音和说话:语言、语速、音调、音量。
  • 相机和视图:全身、半身、上身、头部——以及旋转/平移/缩放权限。
  • 光照和渲染:环境光、方向光、聚光灯的颜色和强度。
  • 头像行为:眼神接触频率、头部运动、初始情绪。
  • 静音/活动检测:在头像聆听时触发事件。

为什么重要

README 列出了其他人的实际应用,包括研究项目(人机群体对话、数字约会孪生、临床试验招募支持)、Twitch 直播游戏、视频会议和回收顾问应用——所有这些都基于 TalkingHead 构建。


README 中的关键警告:内置的 Google TTS 路径建议使用单点登录(SSO)和代理,而不是在客户端代码中暴露 API 密钥(它明确警告在生产环境中不要这样做)。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • Dispatch