asanchezyali/talking-avatar-with-ai
This project is a digital human that can talk and listen to you. It uses OpenAI's GPT to generate responses, OpenAI's Whisper to transcript the audio, Eleven Labs to generate voice and Rhubarb Lip Sync to generate the lip sync.
带 AI 的会说话的虚拟形象
是什么 – 一个小型开源演示,可让您与一个 3D「数字人类」(名为 Jack)对话。该虚拟形象通过 Whisper 听取(语音输入),通过 OpenAI 的 GPT-3/ChatGPT 思考(逻辑处理),通过 Eleven Labs TTS 说话(语音输出),并通过 Rhubarb Lip-Sync 和预定义的动画片段实现嘴唇和面部表情的运动(口型同步)。整个系统通过 TypeScript/React 前端和 Node/Yarn 单体仓库后端连接在一起。
核心组件
- LLM 大脑 –
@langchain/openai构建一个提示,强制模型返回包含text、facialExpression和animation的 JSON 数组。响应通过zod解析,以确保结构正确。 - 语音转文字 – OpenAI Whisper 将用户语音输入转换为文本。
- 文字转语音 – Eleven Labs 根据 LLM 的回复生成高质量音频。
- 音素生成 – Rhubarb Lip-Sync 将音频转换为嘴型提示元数据,使 3D 面部能够实现口型同步。
- 前端 – 使用 Tailwind CSS 和 React-Three-Fiber 的 React 应用程序渲染虚拟形象,应用所选的动画/表情,并播放音频。
工作流程(高层次)
- 用户输入 – 无论是输入的文本还是音频录音。
- 语音转文字(仅音频输入)– Whisper → 纯文本。
- LLM 调用 – 文本通过自定义提示发送至 OpenAI 的 GPT 模型,要求返回包含
text、facialExpression和animation的 JSON 数据。 - TTS –
text字段发送至 Eleven Labs,返回音频文件。 - 口型同步 – 音频文件输入 Rhubarb,输出嘴型时间戳(
mouthCues)。 - 渲染 – 前端读取 JSON,切换虚拟形象的面部表情和动画,播放音频,并使用嘴型数据驱动口型同步。
快速上手
- 前置条件 – OpenAI、Eleven Labs 和 Rhubarb 账户(推荐付费套餐)、
ffmpeg,以及最新版 Node/Yarn 环境。 - 克隆与安装
git clone git@github.com:asanchezyali/talking-avatar-with-ai.git cd digital-human yarn # 安装单体仓库包 - 配置 – 在
/apps/backend/.env中填写您的 OpenAI 和 Eleven Labs 的密钥和 ID。 - 运行 – 执行
yarn dev,打开http://localhost:5173/。
您将看到 – 一个网页显示一个 3D 虚拟形象,能根据您的语音或输入文本做出适当的面部表情(微笑、悲伤、愤怒、惊讶、搞笑脸、默认)和身体动画(Idle、TalkingOne、TalkingThree 等)。虚拟形象的声音来自 Eleven Labs,其嘴唇运动通过 Rhubarb 实现同步。
限制 / 注意事项
- 本演示依赖外部付费 API;免费套餐可能触发速率限制,导致虚拟形象卡顿。
- 仅支持固定的表情和动画集;扩展需修改提示并添加新的动画资源。
- 该仓库仅为概念验证,非生产就绪框架——错误处理、可扩展性和 UI 精细度均较弱。
有用链接
- 详细教程:https://monadical.com/posts/build-a-digital-human-with-large-language-models.html
- Discord 支持频道:https://discord.gg/gJ3vCgSWeh
- Rhubarb Lip-Sync 仓库:https://github.com/DanielSWolf/rhubarb-lip-sync
以上所有信息均直接取自仓库的 README,未假设任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目