wwbin2017 / bailing

百聆 是一个类似GPT-4o的语音对话机器人,通过ASR+LLM+TTS实现,时延低至800ms,低配置也可运行,支持打断
MIT License
5 stars 3 forks source link
ai asr chatgpt chattts deepseek funasr gpt-4o llm openai tts voice-assistant

百聆 (Bailing)

百聆 是一个开源的语音对话助手,旨在通过语音与用户进行自然的对话。该项目结合了语音识别 (ASR)、语音活动检测 (VAD)、大语言模型 (LLM) 和语音合成 (TTS) 技术,这是一个类似GPT-4o的语音对话机器人,通过ASR+LLM+TTS实现,提供高质量的语音对话体验,端到端时延800ms。百聆旨在无需GPU的情况下,实现类GPT-4o的对话效果,适用于各种边缘设备和低资源环境。

项目特点

项目简介

百聆通过以下技术组件实现语音对话功能:

框架说明

百聆流程图

其中Robot负责打断相关的能力,以及各模块的串联

播放器状态 是否说话 说明
播放中 未说话 正常
播放中 说话 打断场景
未播放 未说话 正常
未播放 说话 VAD判断,ASR识别

Demo

bailing audio dialogue

bailing audio dialogue

功能特性

项目优势

安装与运行

依赖环境

请确保你的开发环境中安装了以下工具和库:

安装步骤

  1. 克隆项目仓库:

    git clone https://github.com/wwbin2017/bailing.git
    cd bailing
  2. 安装所需依赖:

    pip install -r requirements.txt
  3. 配置环境变量:

    打开config/config.yaml 配置ASR TTS LLM等相关配置
  4. 运行项目:

    cd server
    python server.py # 启动后端服务,也可不执行这一步
    python main.py

使用说明

  1. 启动应用后,系统会等待语音输入。
  2. 通过 FunASR 将用户语音转为文本。
  3. silero-vad 进行语音活动检测,确保只处理有效语音。
  4. deepseek 处理文本输入,并生成智能回复。
  5. edge-tts, ChatTTS, MacOs say 将生成的文本转换为语音,并播放给用户。

Roadmap

支持的工具

函数名 描述 功能 示例
get_weather 获取某个地点的天气信息 提供地点名称后,返回该地点的天气情况 用户说:“杭州天气怎么样?” → zhejiang/hangzhou
ielts_speaking_practice IELTS(雅思)口语练习 生成雅思口语练习题目和对话,帮助用户进行雅思口语练习 -
get_day_of_week 获取当前的星期几或日期 当用户询问当前时间、日期或者星期几时,返回相应的信息 用户说:“今天星期几?” → 返回当前的星期几
schedule_task 创建一个定时任务 用户可以指定任务的执行时间和内容,定时提醒用户 用户说:“每天早上8点提醒我喝水。” → time: '08:00', content: '提醒我喝水'
open_application 在 Mac 电脑上打开指定的应用程序 用户可以指定应用程序的名称,脚本将在 Mac 上启动相应的应用 用户说:“打开Safari。” → application_name: 'Safari'
web_search 在网上搜索指定的关键词 根据用户提供的搜索内容,返回相应的搜索结果 用户说:“搜索最新的科技新闻。” → query: '最新的科技新闻'

贡献指南

欢迎任何形式的贡献!如果你对百聆项目有改进建议或发现问题,请通过 GitHub Issues 进行反馈或提交 Pull Request。

开源协议

该项目基于 MIT 许可证 开源。你可以自由地使用、修改和分发此项目,但需要保留原始许可证声明。

联系方式

如有任何疑问或建议,请联系:


免责声明

百聆 (Bailing) 是一个开源项目,旨在用于个人学习和研究目的。使用本项目时,请注意以下免责声明:

  1. 个人用途:本项目仅用于个人学习和研究,不适用于商业用途或生产环境。
  2. 风险和责任:使用百聆 (Bailing) 可能会导致数据丢失、系统故障或其他问题。我们对因使用本项目而导致的任何损失、损害或问题不承担任何责任。
  3. 支持:本项目不提供任何形式的技术支持或保证。用户应自行承担使用本项目的风险。

在使用本项目之前,请确保您已了解并接受这些免责声明。如果您不同意这些条款,请不要使用本项目。

感谢您的理解与支持!