项目简介
百聆 是一个开源的语音对话助手,旨在通过语音与用户进行自然的对话。该项目结合了语音识别 (ASR)、语音活动检测 (VAD)、大语言模型 (LLM) 和语音合成 (TTS) 技术,这是一个类似GPT-4o的语音对话机器人,通过ASR+LLM+TTS实现,提供高质量的语音对话体验,端到端时延800ms。百聆旨在无需GPU的情况下,实现类GPT-4o的对话效果,适用于各种边缘设备和低资源环境。
项目特点
-
高效开源模型:百聆使用了多个开源模型,确保高效、可靠的语音对话体验。
-
无需GPU:通过优化,可本地部署,仍能提供类GPT-4的性能表现。
-
模块化设计:ASR、VAD、LLM和TTS模块相互独立,可以根据需求进行替换和升级。
-
支持记忆功能: 具备持续学习能力,能够记忆用户的偏好与历史对话,提供个性化的互动体验。
-
支持工具调用: 灵活集成外部工具,用户可通过语音直接请求信息或执行操作,提升助手的实用性。
-
支持任务管理: 高效管理用户任务,能够跟踪进度、设置提醒,并提供动态更新,确保用户不错过任何重要事项。
百聆通过以下技术组件实现语音对话功能:
-
ASR: 使用 FunASR 进行自动语音识别,将用户的语音转换为文本。
-
VAD: 使用 silero-vad 进行语音活动检测,以确保只处理有效的语音片段。
-
LLM: 使用 deepseek 作为大语言模型来处理用户输入并生成响应,极具性价比。
-
TTS: 使用 edge-tts ChatTTS MacOS say进行文本到语音的转换,将生成的文本响应转换为自然流畅的语音。
框架说明
Robot 负责高效的任务管理与记忆管理,能够智能地处理用户的打断请求,同时实现各个模块之间的无缝协调与连接,以确保流畅的交互体验。
播放器状态 | 是否说话 | 说明 |
---|---|---|
播放中 | 未说话 | 正常 |
播放中 | 说话 | 打断场景 |
未播放 | 未说话 | 正常 |
未播放 | 说话 | VAD判断,ASR识别 |
功能特性
-
语音输入:通过 FunASR 进行准确的语音识别。
-
语音活动检测:使用 silero-vad 过滤无效音频,提升识别效率。
-
智能对话生成:依靠 deepseek 提供的强大语言理解能力生成自然的文本回复,极具性价比。
-
语音输出:通过 edge-tts 将文本转为语音,为用户提供逼真的听觉反馈。
-
支持打断:灵活配置打断策略,能够识别关键字和语音打断,确保用户在对话中的即时反馈与控制,提高交互流畅度。
-
支持记忆功能: 具备持续学习能力,能够记忆用户的偏好与历史对话,提供个性化的互动体验。
-
支持工具调用: 灵活集成外部工具,用户可通过语音直接请求信息或执行操作,提升助手的实用性。
-
支持任务管理: 高效管理用户任务,能够跟踪进度、设置提醒,并提供动态更新,确保用户不错过任何重要事项。
项目优势
-
高质量语音对话:整合了优秀的ASR、LLM和TTS技术,确保语音对话的流畅性和准确性。
-
轻量化设计:无需高性能硬件即可运行,适用于资源受限的环境。
-
完全开源:百聆完全开源,鼓励社区贡献与二次开发。
安装与运行
依赖环境
请确保你的开发环境中安装了以下工具和库:
-
Python 3.8 或更高版本
-
pip
包管理器 -
FunASR、silero-vad、deepseek、edge-tts 所需的依赖库
安装步骤
-
克隆项目仓库:
git clone https://github.com/wwbin2017/bailing.git
cd bailing
2. 安装所需依赖:
pip install -r requirements.txt
3. 配置环境变量:
-
打开config/config.yaml 配置ASR LLM等相关配置
-
下载SenseVoiceSmall到目录models/SenseVoiceSmall SenseVoiceSmall下载地址
-
去deepseek官网,获取配置api_key,deepseek获取api_key,当然也可以配置openai、qwen、gemini、01yi等其他模型
4. 运行项目:
cd server
python server.py # 启动后端服务,也可不执行这一步
python main.py
使用说明
-
启动应用后,系统会等待语音输入。
-
通过 FunASR 将用户语音转为文本。
-
silero-vad 进行语音活动检测,确保只处理有效语音。
-
deepseek 处理文本输入,并生成智能回复。
-
edge-tts, ChatTTS, MacOs say 将生成的文本转换为语音,并播放给用户。
项目链接
https://github.com/wwbin2017/bailing
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)