百聆 Bailing:把 ASR、LLM、TTS 串成一条可打断的语音链路
百聆 是一个类似GPT-4o的语音对话机器人,通过ASR+LLM+TTS实现,集成DeepSeek R1等优秀大模型,接入openClaw,真正的个人语音助手,时延低至800ms,Mac等低配置也可运行,支持打断
秒懂
- 它是什么?
- 百聆用 FunASR、silero-vad、DeepSeek 和多种 TTS 拼出一个端到端约 800ms 的语音对话闭环,主打无 GPU 也能跑。它的价值在于模块可替换,风险也在于这条链路上每一环都要你自己配。
- 适合谁用?
- 百聆适合愿意自己动手配模型和 API key 的个人开发者,尤其是想在 Mac 或低配机器上做语音助手原型、并且需要中文识别效果的人。它不适合想开箱即用、或者要拿去做生产环境语音客服的团队,README 的免责声明明确写了仅用于个人学习和研究,不适用于商业用途或生产环境。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 163 天前。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
百聆解决的是链路问题,不是模型问题
语音对话的难点从来不在单个模型。ASR 有 FunASR,TTS 有 ChatTTS 和 Kokoro-82M,LLM 有 DeepSeek,这些都是现成的。难的是把它们接成一条不会互相等待的流水线:麦克风在收音的时候,VAD 要判断用户是不是在说话;LLM 在生成的时候,TTS 要能提前开始合成第一句;用户中途插话的时候,正在播放的音频要立刻停掉。百聆做的事情就是这条链路的编排。README 把 Robot 描述为负责任务管理与记忆管理、处理打断请求、协调各模块连接的组件,这句话指向的就是编排层,而不是模型层。目标用户因此很明确:手里已经有 API key、愿意读配置文件、想省掉从零搭管道的功夫的个人开发者。
一条从麦克风到扬声器的数据流
按 README 的描述,链路是这样走的:用户语音先进 FunASR 转成文本,silero-vad 在这之前或并行做语音活动检测,确保只把有效语音片段送进识别;文本交给 DeepSeek 生成回复;回复文本再由 edge-tts、Kokoro-82M、ChatTTS 或 macOS say 合成音频播放。README 里有一张播放器状态与说话状态的对照表,把四种组合列了出来:播放中且用户未说话是正常状态,播放中且用户说话就是打断场景,未播放且未说话是正常状态,未播放且用户说话则由 VAD 判断后交给 ASR 识别。这张表是理解百聆打断逻辑的关键,它说明打断不是靠一个单独的按键事件,而是靠播放器状态和 VAD 输出的组合判断。README 提到支持关键字打断和语音打断两种策略,具体阈值和关键字列表需要看 config 目录下的配置,文档没有展开。
装起来要过的四道配置关
安装命令本身不复杂。先克隆仓库并进入目录,然后依次执行 pip install -r requirements.txt 和 pip install -r third_party/OpenManus/requirements.txt,注意第二条是第三方目录下的独立依赖文件,容易漏掉。真正花时间的是配置。第一关是 config/config.yaml,ASR 和 LLM 的相关配置都在这里。第二关是模型文件,需要把 SenseVoiceSmall 下载到 models/SenseVoiceSmall 目录,README 给了 Hugging Face 上 FunAudioLLM/SenseVoiceSmall 的地址。第三关是 LLM 的凭据,去 DeepSeek 官网拿 api_key,README 也说明可以换成 openai、qwen、gemini、01yi 等其他模型。第四关是 OpenClaw 的权限,需要改 config/.env 配置对应的 Auth。如果要用通用 AIGC 能力,README 特别标注这是测试中的功能,不可用时可以切回 v0.0.1 或 v0.0.2 的 tag 分支,这条提示本身就说明 v0.0.3 新增的 AIGC 部分稳定性还没保证。运行方式有两种:本地跑 python main.py,或者在 server 目录下先跑 python server.py 再跑 main.py。README 推荐服务器方式,用 openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes 生成自签名证书后启动 server.py,浏览器打开 http://localhost:8000 点开始按钮对话。
无需 GPU 是设计取舍,不是免费午餐
README 反复强调无需 GPU、低配置可运行,甚至说能在 Mac 上跑。这个承诺能成立,前提是把重活外包出去:LLM 走 DeepSeek 的云端 API,TTS 用 edge-tts 这种在线服务,本地只留 FunASR 的 SenseVoiceSmall 和 silero-vad。SenseVoiceSmall 属于小模型,silero-vad 本身也很轻,两者叠加对内存和算力的要求远低于本地跑一个 7B 语言模型。代价是网络。一旦 API 不可达或者响应变慢,整条链路的时延就会从 README 声称的 800ms 往上走,而这个 800ms 是在什么硬件、什么网络、用哪套 TTS 下测出来的,README 没有交代。另外,如果为了完全离线而把 LLM 也换成本地模型,无 GPU 这个卖点基本就不成立了。所以百聆的轻量是有条件的轻量,条件写在配置文件里。
工具调用和记忆:README 描述得比代码容易
README 列了一张工具表,包含 get_weather、ielts_speaking_practice、get_day_of_week、schedule_task、open_application、web_search 和 aigc 七个函数,每个都配了触发示例,比如用户说「打开Safari」会映射到 application_name: 'Safari',说「每天早上8点提醒我喝水」会映射到 time 和 content 两个参数。表格里还提到 open_application 依赖 macOS 的脚本调用,这意味着这个工具在 Linux 或 Windows 上不可用。记忆功能被描述为具备持续学习能力、能记住用户偏好和历史对话,但 README 没有说明记忆存在哪里、用什么格式、上下文窗口怎么截断、多轮之后会不会退化。工具调用和记忆这两块是这类项目最容易出现文档比实现乐观的地方,建议在依赖它们之前先读源码确认存储与检索方式。
OpenClaw 被放在执行层,但边界没写清
百聆把 OpenClaw 定位成核心工具调用引擎之一,用来处理复杂任务、外部工具编排和高阶 Agent 能力。README 的说法是通过 OpenClaw 把自然语言请求转成可执行任务、在对话中调用外部工具完成搜索和分析、处理多步骤任务。落到配置上,你需要改 config/.env 填 OpenClaw 的 Auth 权限,另外 third_party/OpenManus/config/config.toml 里要配 model、base_url 和 api_key 三项。这里有个信息缺口:README 把 OpenManus 和 OpenClaw 两个名字都提到了,前者是依赖文件所在的第三方目录,后者被描述成工具执行层,两者是同一个东西的不同部分还是两套独立组件,文档没有讲清楚。aigc 这个工具被描述为「可以做任何事情通用型ai,接入openclaw」,示例是「分析特定股票的市场趋势」,这种表述范围太宽,实际上能做什么取决于 OpenClaw 侧接了什么能力,而这一侧不在百聆仓库的文档范围内。
什么时候不该用百聆
最直接的排除条件是商用。README 的免责声明写明本项目仅用于个人学习和研究,不适用于商业用途或生产环境,并且不提供任何形式的技术支持或保证,还提示可能导致数据丢失或系统故障。这不是客套话,是项目方主动划的边界。第二个排除条件是团队需要开箱即用的语音方案。百聆要求你自己准备 SenseVoiceSmall 模型文件、自己申请 LLM 的 api_key、自己在多个 TTS 之间选一个,任何一个环节没配通都跑不起来。第三个排除条件是目标平台不是 Mac 或 Linux:open_application 工具依赖 macOS,服务器运行路径用的是 openssl 生成证书,Windows 用户会遇到额外的适配工作。第四个条件是对延迟有硬性要求且网络不可控的场景,因为 LLM 和部分 TTS 依赖外部服务。反过来说,如果你只是想在自己的 Mac 上做一个能打断、能调工具的中文语音助手,百聆把 FunASR 和 silero-vad 这两块中文场景下比较合适的组合已经接好了,省下的是管道代码而不是模型选型。
版本节奏与许可的实际含义
从发布记录看,v0.0.1 在 2024 年 10 月,v0.0.2 在 2025 年 3 月,v0.0.3 在 2025 年 5 月并标注新增 aigc 能力,仓库最后一次推送在 2026 年 4 月。版本号还在 0.0.x,README 自己也把 AIGC 标注为测试中,这说明接口和配置格式仍可能变动,升级时要留意 config/config.yaml 和 config/.env 的结构是否跟着改。升级成本主要落在两处:一是第三方依赖,requirements.txt 和 third_party/OpenManus/requirements.txt 两个文件都要重新装;二是模型文件,如果 FunASR 侧换了模型,models/ 目录下的内容需要重新下载。许可证是 MIT,允许使用、修改和分发,前提是保留原始许可证声明。需要注意的是,MIT 只覆盖百聆本身的代码,它调用的 FunASR、silero-vad、ChatTTS、Kokoro-82M 以及 DeepSeek 的 API 服务各自有自己的许可条款和使用限制,这些不在百聆的 MIT 范围内,商用前需要单独核对。以上是许可条款的客观描述,不构成法律意见。
编辑结论
百聆适合愿意自己动手配模型和 API key 的个人开发者,尤其是想在 Mac 或低配机器上做语音助手原型、并且需要中文识别效果的人。它不适合想开箱即用、或者要拿去做生产环境语音客服的团队,README 的免责声明明确写了仅用于个人学习和研究,不适用于商业用途或生产环境。上手前先确认三件事:config/config.yaml 里 ASR 和 LLM 两段配置能否填通,SenseVoiceSmall 是否已完整下载到 models/SenseVoiceSmall,以及你打算用哪种 TTS,因为 edge-tts、Kokoro-82M、ChatTTS、macOS say 四条路径的依赖和延迟完全不同。如果只跑本地对话,python main.py 就够;要手机接入再走 server.py 加自签名证书那条路。
社区笔记