Files
Fay/README.md

138 lines
3.5 KiB
Markdown
Raw Normal View History

2022-06-20 11:05:10 +08:00
<div align="center">
<br>
<img src="readme/icon.png" alt="Fay">
<h1>FAY</h1>
<h3>Fay数字人框架</h3>
</div>
重要通知我们已经把Fay的三个版本合并成1个并致力提供更稳定更全面的功能。
我们致力于思考面向终端的数字人落地应用并通过完整代码把思考结果呈现给大家。Fay数字人框架向上适配各种数字人模型技术向下接入各式大语言模型并且便于更换诸如TTS、ASR等模型为单片机、app、网站提供全面的数字人应用接口。
2024-10-31 00:01:40 +08:00
更新日志https://qqk9ntwbcit.feishu.cn/wiki/UlbZwfAXgiKSquk52AkcibhHngg
文档https://qqk9ntwbcit.feishu.cn/wiki/JzMJw7AghiO8eHktMwlcxznenIg
## **功能特点**
- 完全开源,商用免责
- 支持全离线使用
- 全时流式的支持
- 自由匹配数字人模型、大语言模型openai 兼容接口、ASR、TTS模型
- 支持数字人自动播报模式(虚拟教师、虚拟主播、新闻播报)
- 支持任意终端使用单片机、app、网站、大屏、三方业务系统接入等
- 支持多用户多路并发
- 提供文字交互接口、语音交互接口、数字人驱动接口、管理控制接口、自动播报接口、意图接口
- 支持语音指令灵活配置执行qa.csv
- 支持自定义知识库、自定义问答对、自定义人设信息
- 支持唤醒及打断对话
- 支持服务器及单机模式
- 支持机器人表情输出
- 支持agent自主决策工具调用
- 基于日程式数字人主动对话
2024-12-11 21:39:57 +08:00
- 支持后台静默启动
- 支持deepseek等thinking llm
- 自我认知提高
- 仿生记忆
- 支持MCP工具管理sse、studio
- 提供配置管理中心
自然进化 - 重构会话管理逻辑支持以下链路基于llm输出、mcp执行、qa问答对匹配时,文字或音频输出的单向或双向打断: - 1、flask_server.api_send()(gui窗口文字发送) <--> flask_server.api_send_v1_chat_completions()(fay对外的openai兼容接口) - 2、flask_server.api_send(gui窗口文字发送) <-- flask_server.transparent_pass(消息透传接口) - 3、flask_server.api_send(gui窗口文字发送) <-- flask_server.to_stop_talking(打断接口) - 4、flask_server.api_send(gui窗口文字发送) <--> 远程音频 - 5、flask_server.api_send(gui窗口文字发送) <-- 唤醒(普通唤醒、前置词唤醒) - 6、flask_server.api_send(gui窗口文字发送) <-->日程执行 - 7、flask_server.api_send_v1_chat_completions(fay对外的openai兼容接口) <--> flask_server.transparent_pass(消息透传接口) - 8、flask_server.api_send_v1_chat_completions(fay对外的openai兼容接口) <-- flask_server.to_stop_talking(打断接口) - 9、flask_server.api_send_v1_chat_completions(fay对外的openai兼容接口) <--> 远程音频 - 10、flask_server.api_send_v1_chat_completions(fay对外的openai兼容接口) <-- 唤醒(普通唤醒、前置词唤醒) - 11、flask_server.api_send_v1_chat_completions(fay对外的openai兼容接口) <-->日程执行 - 12、flask_server.transparent_pass(消息透传接口) <-- flask_server.to_stop_talking(打断接口) - 13、flask_server.transparent_pass(消息透传接口) <--> 远程音频 - 14、flask_server.transparent_pass(消息透传接口) <-- 唤醒(普通唤醒、前置词唤醒) - 15、flask_server.transparent_pass(消息透传接口) <-->日程执行 - 16、远程音频 <-- 唤醒(普通唤醒、前置词唤醒) - 17、远程音频 <-->日程执行
2025-09-17 15:53:54 +08:00
- 全链路交互互通
###
## **Fay数字人框架**
![](readme/chat.png)
![](readme/controller.png)
2022-06-20 11:05:10 +08:00
![](readme/mcp.png)
## **源码启动**
2024-02-21 16:12:00 +08:00
### **环境**
- Python 3.12
- Windows、macos、ubuntu
-ubuntu需要先安装gcc及portaudio
- ````bash
sudo apt update
sudo apt install build-essential
sudo apt install portaudio19-dev
````
年翻更新 🌟Fay-助理版 1、 优化文字沟通接口的流式输出逻辑 -- fay的文字沟通接口,按标点符号切割并通过http stream返回,这样做语音合成时,能够完整处理每个断句的语音情绪。 2、 去掉内置ngrok.cc内网穿透代码 -- ngrok内网穿透可以让普通pc当作服务器使用,让移动端或者智能设备随时与fay通讯。如需继续使用可以外部启动ngrok或者其他穿透客户端,效果是一样的。 3、优化ASR处理速度 -- VAD(语音活动检测)时间由700ms减小到200ms,可以降低fay识别到我们已经说完一句话的时间,从而让fay更快作出响应 4、优化TTS速度 -- azure不使用ssml明显加速,使用azure tts平均时间可以减小700ms以上 -- 修复本地播放完声音再发送音频给数字人的bug,可以让面板播放音频更快让数字人作出响应(虽然不太可能本地播放和数字人播放同时使用) -- 语音合成之前替换掉“*”,这是大语言模型经常作出的返回,非常影响语音合成的用户体验 5、优化Q&A文件的应用逻辑 -- 文件格式由excel更换成csv,可以更好兼容linux环境 -- 配置上Q&A文件之后会自动缓存大语言模型回复,相同对话的回复时间可以降到1ms以下 -- csv的第3列可以配置执行脚本,可以实现RPA操作或对智能硬件的控制 6、完善是否做语音合成的逻辑 -- 只有在需要发送远程音频或者发送给数字人或者面板播放时才合成音频,避免资源的浪费 7、修正多用户同时与fay聊天时qa日志有可能混乱的问题 8、 修复fay_core.py上的变量(usernmae)错识导致的远程音频传输出错 9、修复pygame init时无扬声器导致出错 10、去掉面板出现了"完成!"、“远程音频设备连接上”、“远程音频输入输出设备已经断开”、“服务已关闭!”等不必要的日志信息 🌟Fay-UE5: - 5.4工程,与fay的对接方式更新为流式对接 --会从fay小段文字接收然后做tts处理,这样可以更快速作出响应。
2024-10-09 17:52:15 +08:00
### **安装依赖**
```shell
pip install -r requirements.txt
```
2026-01-15 22:43:53 +08:00
### **快速启动**
本地
```shell
2026-01-15 22:43:53 +08:00
python main.py start -config_center d19f7b0a-2b8a-4503-8c0d-1a587b90eb69
```
2026-01-15 22:43:53 +08:00
镜像
2026-01-15 22:44:43 +08:00
```shell
2025-06-03 10:42:02 +08:00
https://www.compshare.cn/images/compshareImage-1cft3sk9gvta?ytag=GPU_fay
2026-01-15 22:44:43 +08:00
```
2024-10-16 20:49:17 +08:00
2026-01-15 22:43:53 +08:00
### **个性化配置**
+ 根目录system.conf.bak 重命名为system.conf并配置里面的内容
### **管理页面**
2026-01-15 22:44:43 +08:00
+ 浏览器访问 http://127.0.0.1:5000
2026-01-15 22:43:53 +08:00
2024-10-26 11:42:52 +08:00
## **高级玩法**
2024-10-16 20:49:17 +08:00
2024-10-26 11:42:52 +08:00
![](readme/interface.png)
2024-09-04 18:24:46 +08:00
2024-08-29 10:14:32 +08:00
年翻更新 🌟Fay-助理版 1、 优化文字沟通接口的流式输出逻辑 -- fay的文字沟通接口,按标点符号切割并通过http stream返回,这样做语音合成时,能够完整处理每个断句的语音情绪。 2、 去掉内置ngrok.cc内网穿透代码 -- ngrok内网穿透可以让普通pc当作服务器使用,让移动端或者智能设备随时与fay通讯。如需继续使用可以外部启动ngrok或者其他穿透客户端,效果是一样的。 3、优化ASR处理速度 -- VAD(语音活动检测)时间由700ms减小到200ms,可以降低fay识别到我们已经说完一句话的时间,从而让fay更快作出响应 4、优化TTS速度 -- azure不使用ssml明显加速,使用azure tts平均时间可以减小700ms以上 -- 修复本地播放完声音再发送音频给数字人的bug,可以让面板播放音频更快让数字人作出响应(虽然不太可能本地播放和数字人播放同时使用) -- 语音合成之前替换掉“*”,这是大语言模型经常作出的返回,非常影响语音合成的用户体验 5、优化Q&A文件的应用逻辑 -- 文件格式由excel更换成csv,可以更好兼容linux环境 -- 配置上Q&A文件之后会自动缓存大语言模型回复,相同对话的回复时间可以降到1ms以下 -- csv的第3列可以配置执行脚本,可以实现RPA操作或对智能硬件的控制 6、完善是否做语音合成的逻辑 -- 只有在需要发送远程音频或者发送给数字人或者面板播放时才合成音频,避免资源的浪费 7、修正多用户同时与fay聊天时qa日志有可能混乱的问题 8、 修复fay_core.py上的变量(usernmae)错识导致的远程音频传输出错 9、修复pygame init时无扬声器导致出错 10、去掉面板出现了"完成!"、“远程音频设备连接上”、“远程音频输入输出设备已经断开”、“服务已关闭!”等不必要的日志信息 🌟Fay-UE5: - 5.4工程,与fay的对接方式更新为流式对接 --会从fay小段文字接收然后做tts处理,这样可以更快速作出响应。
2024-10-09 17:52:15 +08:00
### ***使用数字人(非必须)***
2024-08-29 10:14:32 +08:00
ue: https://github.com/xszyou/fay-ue5
2024-01-08 18:32:23 +08:00
unityhttps://qqk9ntwbcit.feishu.cn/wiki/Se9xw04hUiss00kb2Lmci1BVnM9
metahuman-stream2dhttps://qqk9ntwbcit.feishu.cn/wiki/Ik1kwO9X5iilnGkFwRhcnmtvn3e
duixandroid)https://qqk9ntwbcit.feishu.cn/wiki/Ik1kwO9X5iilnGkFwRhcnmtvn3e()
2025-06-03 10:42:02 +08:00
aibote(windows cpu克隆人)https://qqk9ntwbcit.feishu.cn/wiki/ULaywzVRti0HXWkhCzacoSPAnIg
### ***集成到自家产品(非必须)***
接口https://qqk9ntwbcit.feishu.cn/wiki/Mcw3wbA3RiNZzwkexz6cnKCsnhh
### **联系**
**交流群及资料教程**关注公众号 **fay数字人****请先star本仓库**
![](readme/gzh.jpg)
## **致谢**
感谢以下开源项目为 Fay 提供的技术支持:
- [BionicMemory](https://github.com/caoyc/BionicMemory) - 提供仿生记忆能力
- [OpenAI Codex](https://github.com/openai/codex) - 提供稳定的工具调用能力
- [FunASR](https://github.com/modelscope/FunASR) - 提供语音识别ASR能力