Fay是集成了语言模型和数字字符的开源数字人类框架,为不同的应用程序提供零售、助手和代理版本,比如虚拟购物指南、广播、助手、服务员、教师和基于语音或文本的移动助手。
开发人员可以利用Fay就能构建各种类型的数字人或数字助理。Fay各模块之间耦合度非常低,包括声音来源、语音识别、情绪分析、NLP处理、情绪语音合成、语音输出和表情动作输出等模块。
模型适配层:向上兼容各类数字人模型(如三维真人驱动、Live2D二次元角色),向下支持主流大语言模型(含DeepSeek等thinking llm)
功能组件层:集成ASR语音识别、TTS语音合成、自然语言处理、表情控制等模块,各组件支持独立替换
终端适配层:提供标准化接口,可快速接入单片机、APP、网站、大屏等多个领域终端设备
• 离线运行,支持在没有网络的环境部署
• 全时流式交互,能实现低延迟语音对话
• 支持多用户并发操作,能满足不同的高负载场景
• 自定义知识库(qa.csv文件管理)
• 可配置唤醒词和交互逻辑
• 支持MCP协议的Agent自主决策系统
• 文字/语音交互接口
• 数字人驱动控制接口
• 自动播报任务接口
• 真人照片驱动(xuniren方案)
• Live2D二次元角色
• UE5/Unity三维模型集成
开源协议友好:遵循MIT协议,可用于商用环境
环境依赖简单:基于Python 3.12开发,提供requirements.txt依赖清单
启动方式灵活:
• 源码启动:通过main.py控制器管理
• 镜像启动:支持GPU加速的Docker镜像
远程通讯支持:集成Ngrok实现跨设备通信,适配手机/PC/智能穿戴设备
目录/文件 | 功能描述 |
---|---|
核心模块 | |
ai_module | 人工智能算法模块,包含大语言模型集成逻辑 |
core | 框架核心引擎,处理交互流程与状态管理 |
genagents | 智能体管理模块,支持React Agent决策逻辑 |
simulation_engine | 模拟引擎,用于数字人动作与表情驱动 |
功能组件 | |
asr | 语音识别模块 |
tts | 语音合成模块,支持Azure晓晓等声音选择 |
gui | 图形化配置界面,支持人设信息管理(如姓名/职业/唤醒词等) |
工具与配置 | |
utils | 工具函数集,包含配置文件解析(config_util.py) |
config.json | 核心配置文件,管理模型路径与接口参数 |
system.conf.bak | 系统配置备份文件 |
部署相关 | |
requirements.txt | Python依赖包清单,包含PyAudio等关键组件 |
fay_booter.py | 启动脚本,支持后台静默启动模式 |
main.py | 主控制器入口,负责初始化各模块 |
1、下载Python 3.12安装包
访问 https://www.python.org/downloads/release/python-3120/
选择对应系统版本
2、安装Visual Studio Build Tools
• 下载地址:https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/release-notes
• 安装时需勾选“使用C++的桌面开发”工作负载,确保包含MSVC编译器
1、克隆代码仓库
git clone https://github.com/xszyou/Fay.git
cd Fay
2、安装依赖组件
pip install -r requirements.txt
Ubuntu系统需先安装编译工具:sudo apt install build-essential portaudio19-dev
3、配置系统参数
• 复制system.conf.bak
为system.conf
• 修改以下关键配置:
"llm_model_path": "本地大语言模型路径", // 如使用离线模型需指定路径
"asr_provider": "本地ASR服务地址", // 可替换为阿里云/腾讯云等第三方服务
"tts_voice": "晓晓" // 支持Azure语音库中的其他声音
4、启动框架服务
python main.py // 启动主控制器
如需后台运行:nohup python main.py &
(Linux/macOS)
1、三维真人驱动
使用 https://github.com/xszyou/fay-ue5
集成UE5引擎,通过真人照片生成写实数字人模型
2、二次元角色交互
基于Live2D技术加载二次元模型,配合面部捕捉实现表情驱动,具体集成指南见 https://qqk9ntwbcit.feishu.cn/wiki/Se9xw04hUiss00kb2Lmci1BVnM9
通过Ngrok实现远程访问:
1、注册Ngrok账号并获取Auth Token
2、启动穿透服务:
ngrok http 6000 // 将本地6000端口映射到公网
3、在移动端APP或智能设备中使用Ngrok生成的公网地址连接框架
在GUI界面中完成以下设置:
基础信息:姓名(如“菲菲”)、职业(助理)、性别(女)
交互逻辑:
• 唤醒词:“你好”(前置词唤醒模式)
• 敏感度设置:控制对话响应的主动程度
多媒体配置:
• 声音选择:Azure语音库“晓晓”
• 自动播报地址:http://127.0.0.1:6000
(本地测试地址)
通过以上步骤,开发者可快速搭建出一个具备语音交互、自动播报、多终端适配能力的数字人系统,能用于智能客服、虚拟教学、品牌营销等不同的场景。