persona
实时语音驱动VRM虚拟形象,Electron桌面应用让AI对话拥有可视化表情
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
实时语音驱动VRM虚拟形象,Electron桌面应用让AI对话拥有可视化表情
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

想象这样一个画面:你对着一段 AI 生成的语音回答发出指令,桌面上一个二次元风格的虚拟形象同步做出「聆听」或「说话」的动作——眨眼、点头、口型变化——仿佛有一个真实存在的小伙伴陪在你身边工作。这不是科幻,而是 Persona 正在做的事情。

Persona 由独立开发者 xikhar 创建,定位是跨平台桌面虚拟形象工具。它的核心使命很简单:为任何本地运行的语音输出,配备一个实时响应的可视化形象。这个形象的学名叫 VRM(Virtual Reality Model)——一种专为实时渲染设计的 3D 模型格式,常见于 VTuber 领域。
这个项目诞生的背景,是 AI 助手和 Copilot 类工具的语音交互能力正在快速普及。用户不再只满足于「听到」AI 的声音,还希望看到 AI 的「存在感」。Persona 填补的正是这个空白:它不生成语音、不运行大模型,只负责把别人产生的语音信号,翻译成虚拟形象的动作。
Persona 的技术架构围绕一个核心问题展开:如何把系统音频播放流变成形象动画的触发信号?
这部分的复杂度远超想象。每个主流操作系统对音频流的管理方式截然不同:
pw-dump 获取播放设备信息,用 pw-record 截取特定进程的音频流Persona 不访问麦克风,不保存任何音频,不做任何网络传输——纯本地截流。
前端使用 React 19 + Three.js 生态,通过 @pixiv/three-vrm 加载 .vrm 模型文件。这套组合在 VTuber 工具圈非常成熟,能精确控制角色的骨骼、表情、口型BlendShape。渲染窗口采用 Electron 的无边框透明窗口,实现「桌面宠物」效果。
鼠标交互:滚轮缩放、左键旋转、右键平移。Linux Hyprland 特殊处理了窗口置顶、全屏透明、去除阴影等特性。
这是 Persona 最具想象力的设计。它实现了一个 本地 MCP(Model Context Protocol)服务器,监听 http://127.0.0.1:47831/mcp。外部 AI 客户端(如 OpenAI Codex)可以通过标准 MCP 协议与 Persona 通信:
这样做到了真正的解耦:Persona 只负责「演」,不负责「想」。
Persona 的角色库通过 library.json + manifest.json 管理。每个 .vrm 模型和 .vrma 动画文件都必须在这两个文件中声明。分发版本需要完整填写 License 和 Source 信息,并设置 distributionAllowed: true。开发版默认关闭分发,刻意防止测试资源被意外发布。
本地运行需要 Node.js 24+(要求相当激进),以及带硬件加速的图形环境。安装依赖后,一行 npm run demo 即可体验。但由于默认角色库为空,首次启动需要用户手动导入 .vrm 文件——这对于非 VTuber 圈的用户来说,找到合适的模型文件本身就是一个障碍。
打包好的发行版(AppImage/DEB/NSIS/DMG)体验流畅很多,安装即用,不需要手动编译。
局限性:
安全考量:
SECURITY.md 安全策略文档Persona 代表了一个正在兴起的产品方向:AI 的视觉具象化。从 ChatGPT 的语音模式,到 Claude 的桌面扩展,再到各种 AI 数字人产品,用户越来越期待 AI 不只是声音,而是有「形象」的存在。Persona 的架构选择——不造模型、不做 AI、解耦设计——反而让它成为一个可以接入任何本地 AI 工具的通用层。
截至目前 Stars 740,且处于活跃 Beta 阶段(v0.1.0-beta.0),值得持续关注。