综合介绍
百聆(Bailing)是一个开源的语音对话助手,旨在通过语音与用户进行自然的对话。该项目结合了语音识别(ASR)、语音活动检测(VAD)、大语言模型(LLM)和语音合成(TTS)技术,实现了类似GPT-4o的语音对话机器人。百聆的端到端时延低至800ms,适用于各种边缘设备和低资源环境。其高效开源模型和模块化设计使其无需GPU即可运行,提供高质量的语音对话体验。百聆还具备记忆功能、工具调用和任务管理等特色功能,能够记忆用户的偏好与历史对话,提供个性化的互动体验。
功能列表
- 语音输入:通过 FunASR 进行准确的语音识别。
- 语音活动检测:使用 silero-vad 过滤无效音频,提升识别效率。
- 智能对话生成:依靠 deepseek 提供的强大语言理解能力生成自然的文本回复。
- 语音输出:通过 edge-tts 将文本转为语音,为用户提供逼真的听觉反馈。
- 支持打断:灵活配置打断策略,能够识别关键字和语音打断,确保用户在对话中的即时反馈与控制。
- 支持记忆功能:具备持续学习能力,能够记忆用户的偏好与历史对话,提供个性化的互动体验。
- 支持工具调用:灵活集成外部工具,用户可通过语音直接请求信息或执行操作。
- 支持任务管理:高效管理用户任务,能够跟踪进度、设置提醒,并提供动态更新。
使用帮助
安装与运行
依赖环境
请确保你的开发环境中安装了以下工具和库:
- Python 3.8 或更高版本
- pip 包管理器
- FunASR、silero-vad、deepseek、edge-tts 所需的依赖库
安装步骤
- 克隆项目仓库:
git clone https://github.com/wwbin2017/bailing.git
cd bailing
- 安装所需依赖:
pip install -r requirements.txt
- 配置环境变量: 打开
config/config.yaml
配置 ASR、LLM 等相关配置。 下载 SenseVoiceSmall 到目录models/SenseVoiceSmall
。 获取 deepseek 的 API key 并配置,当然也可以配置 openai、qwen、gemini、01yi 等其他模型。 - 运行项目:
cd server
python server.py # 启动后端服务,也可不执行这一步
python main.py
使用说明
启动应用后,系统会等待语音输入。以下是详细的操作流程:
- 通过 FunASR 将用户语音转为文本。
- 使用 silero-vad 进行语音活动检测,确保只处理有效语音。
- deepseek 处理文本输入,并生成智能回复。
- edge-tts、ChatTTS、MacOS say 将生成的文本转换为语音,并播放给用户。
功能操作流程
- 语音输入:用户通过麦克风输入语音,系统自动进行语音识别。
- 语音活动检测:系统自动过滤无效音频,确保识别效率。
- 智能对话生成:系统根据用户输入生成自然的文本回复。
- 语音输出:系统将文本回复转换为语音,并播放给用户。
- 支持打断:用户可以通过语音打断当前对话,系统会即时响应。
- 记忆功能:系统会记忆用户的偏好与历史对话,提供个性化的互动体验。
- 工具调用:用户可以通过语音请求信息或执行操作,系统会灵活集成外部工具。
- 任务管理:用户可以设置任务提醒,系统会高效管理任务进度并提供动态更新。
示例操作
- 获取天气信息: 用户说:“杭州天气怎么样?” 系统会返回杭州的天气情况。
- 创建定时任务: 用户说:“每天早上8点提醒我喝水。” 系统会设置定时提醒。
通过以上详细的使用帮助,用户可以轻松上手使用百聆,享受高效的语音对话体验。