3D 数字人的成长养成记:从一张 VRM 模型,到愿意认真听你说话的「晚晴」
晚晴
你有没有想过,数字人不只是"会说话"
很多数字人项目的第一句话是:"你好,我可以为你提供帮助。"
但真正让人愿意留下来的,往往不是这句标准答案,而是另一种感觉:
你说"今天有点累",她没有急着讲道理;
你说"我好像搞砸了",她先安静听完;
你只是打开页面发了一会儿呆,她也不会催你赶紧开始。
这就是我们正在做的 「数伴」:一个运行在浏览器里的 3D 数字陪伴原型。
她叫 晚晴。
晚晴不是一个被固定在页面上的头像。她会在房间里呼吸、眨眼、看向四周;听你说话时有真实的口型变化;回应你时,会根据语气和内容切换表情与动作。她可以挥手、点头、轻笑、思考、拥抱,也可以在你需要的时候,什么都不急着做。
我们是怎样把"她"一点点养成的
第一步:先让她拥有一个可以待着的地方
我们用 Three.js 搭起三维场景,用 VRM 模型承载角色,再放进一个低多边形房间。
这不是为了堆砌炫技,而是想让每次打开页面都有"来到了某个地方"的感觉。镜头、灯光、雾效和渲染预算都经过控制,让角色在桌面端和普通设备上保持稳定的陪伴感。
第二步:让她不说话时也像"活着"
数字人的自然感,常常藏在台词之外。
晚晴有呼吸、眨眼、重心变化、环顾和放松等 idle 动画。她不会一直僵直地站着,也不会每次都重复同一个动作。动画调度器会在待机、对话和互动之间切换,让她更像一个正在房间里等你的人。
第三步:让声音和表情对得上
当晚晴开始说话,系统会同步处理音频活动、口型和动作。
轻声安慰时,她会放慢动作、露出放松的表情;听到好消息时,她会笑着庆祝;遇到疑惑时,她会思考、歪头或轻轻耸肩。语音表现控制器会根据对话片段选择合适的表达,让"说什么"和"怎么说"尽量保持一致。
第四步:把主动权交还给你
你可以直接打开互动工具,让晚晴挥手、跳舞、鞠躬、敬礼,或者切换开心、放松、惊讶等表情。
也可以选择文字输入,等她回应;准备好后,再主动打开麦克风。默认静音、主动授权、云端实时处理和原型阶段不保存原始录音的设计,让每一次开口都由你决定。
现在打开「数伴」,你会看到什么
- 一个有房间、有灯光、有呼吸感的 3D 晚晴。
- 一段可以打字或实时语音进行的对话。
- 与语义相关的口型、表情和身体动作。
- 一组可以直接触发的动作与表情互动。
- 连接不稳定时的重试、字幕和麦克风设置。
它还不是一个完成形态的"万能 AI",也不会假装自己已经拥有无限记忆。但它已经足够让你看见一件事:
数字人的成长,不只是模型参数变大,而是从"能回答"走向"会陪伴"。
这一次,养成的不是一个"功能",而是一段关系
我们希望晚晴以后能记住更多重要的事,理解更长的上下文,拥有更丰富的动作和更细腻的情绪反馈。
但在那之前,她先要学会一件最重要的事:当你来到这里时,认真听你说话。
如果你对 3D 数字人、AI 陪伴或实时语音交互感兴趣,欢迎来看看「数伴」的代码,亲手和晚晴见一面。