新闻详情

新闻详情

首页 / 资讯中心 / 详情

AIRI 实时语音聊天实现原理:VAD + STT + LLM + TTS 流式管线深度解析

发布时间:2026/9/25 1:49:31来源:尧图网络
AIRI 实时语音聊天实现原理:VAD + STT + LLM + TTS 流式管线深度解析
AIRI 实时语音聊天实现原理VAD STT LLM TTS 流式管线深度解析【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址: https://gitcode.com/moeru-ai/airiAIRIMoeru AI / airi是一款自托管的 Grok 风格 AI 伴侣支持实时语音聊天、Minecraft 与 Factorio 游玩可运行在 Web、macOS 和 Windows 上。它的实时语音聊天并不是简单的录音—识别—回答—播放四步走而是一条 VAD语音活动检测→ STT语音转文字→ LLM大模型流式推理→ TTS文字转语音的流式管线每一环都不等上一环全部完成而是边听、边想、边说。这篇文章用尽量少的代码带你完整拆解这条语音管线的实现原理。一、先建立全局语音管线长什么样把一次对 AI 说话 → AI 开口回应的过程画成链路大致是这样麦克风 → VAD 切分语音段 → STT 转成文字 → LLM 流式生成回复 → TTS 分块合成 → 按时间线播放AIRI 把这条链路拆在了几个独立的模块里职责清晰环节作用核心代码位置VAD判断你在说话 / 你停下来了自动切分语音段vad.ts录音与分段麦克风采集、自动/音量兜底分段voice-input-session.tsSTT语音转文字支持流式识别hearing.ts管线编排文本分块、优先级打断、并发 TTS、播放调度speech-pipeline.tsTTS 分块把 LLM 流式 token 流切成适合合成的短句tts-chunker.ts这种每段一个独立模块 中央管线调度的结构是它能做到低延迟、可打断、可并发的关键。二、VADAI 是怎么知道你开始说话了实时语音聊天的第一道关卡是VADVoice Activity Detection语音活动检测。它解决两个问题什么时候开始录音——用户开口AI 就开始收集音频什么时候结束录音——用户停顿足够久就把这段音频送去识别。AIRI 的 VAD 基于轻量级神经网络模型silero-vad通过 Web 端 AI 运行时在浏览器本地推理音频数据不用上传服务器这也是自托管项目在意隐私的体现。核心实现见 libs/audio/vad.ts推理跑在独立 Worker 里process.worklet.ts不阻塞 UI 线程。它的工作方式是逐帧512 采样点打分每一帧音频都得到一个这是人声吗的概率再配合一组精心设计的参数做状态机判断speechThreshold: 0.3概率超过 0.3 判定为正在说话exitThreshold: 0.1概率低于 0.1 判定停止说话双阈值防抖动避免在阈值附近反复横跳minSilenceDurationMs: 400安静满 400ms 才算真正说完了防止正常断句被切开speechPadMs: 80往前多保留 80ms 音频避免句首被切掉。更妙的是双保险设计如果 VAD 模型加载失败或表现不佳系统会退化为音量包络触发——直接计算音频波形能量voice-input-session.ts 中的calculateTimeDomainVolumeLevel音量连续高于阈值就开始录音、持续低于阈值就结束。神经网络 能量检测双通道保证了各种设备上的鲁棒性。三、STT语音怎么变成文字VAD 切出的一段语音会由录音模块编码成标准格式WAV编解码工具在 packages/audio/src/encoding然后交给 STT 层。AIRI 的听觉状态中心是 hearing.ts它支持多种识别提供方本地 / 离线模型通过xsai的generateTranscription统一接口调用 Whisper 类模型云服务内置阿里云流式识别streamAliyunTranscription适合低延迟场景浏览器原生Web Speech APIstreamWebSpeechAPITranscription零配置即用。这里有一个值得新手注意的细节流式识别与记录后识别是两种策略。边说边转延迟更低但需要提供方支持增量返回录完整句再转更稳。AIRI 在 voice-input-session.ts 中把两种路径统一封装上层业务无需感知差异。识别结果不是直接甩给 LLM 的而是先经过转录缓冲——transcript-buffer.ts。流式识别会不断吐出一小段一小段的文字碎片缓冲器用滑动时间窗默认约 1200ms 静默后冲刷把碎句聚合成一个完整的说话回合再交给下游。这一层看似简单却避免了每蹦出一个字就触发一次 LLM的灾难。四、LLM流式生成 优先级打断用户的一句话送入大模型后回复是逐 token 流式返回的。AIRI 没有等整段回答生成完才开口而是让下游 TTS 立刻开始啃这个 token 流——这是低延迟的核心。真正体现工程功力的是 speech-pipeline.ts 中的意图Intent模型。每一轮 AI 开口都被建模为一个 Intent带三个关键属性优先级由 priority.ts 的优先级解析器决定比如用户正在插话永远高于AI 自言自语行为queue排队、interrupt打断当前、replace替换——你说等一下新指令就能立刻打断旧播报生命周期控制每个 Intent 持有独立的AbortController打断 中止未播完的音频自动丢弃。这意味着 AIRI 的语音对话支持自然的打断barge-inAI 说到一半你插话它会让出麦克风旧音频流优雅退场新意图接管播放。这正是像真人聊天而非念稿机器的体感来源。五、TTS文字流怎么边想边说TTS 环节要解决一个经典矛盾LLM 逐 token 吐字但 TTS 模型吃的是句子。AIRI 的答案是TTS 分块器tts-chunker.ts从 token 流中持续积攒文字遇到标点。等或达到长度上限时切出一个可合成段段落进入 TTS 合成队列最多 4 个段落并发合成ttsMaxConcurrent。合成出的音频块交给播放管理器playback-manager.ts按时间线精确排程每一块音频都带起止时间戳前一块播完无缝衔接下一块形成AI 一口气在说话的连贯听感。整个调度由 timeline.ts 维护全局时间轴任何 Intent 被取消时时间线上属于它的未播块会被级联清除。并发合成 时间线排程的组合让首字延迟LLM 出第一个标点到你听到第一个音节之间只剩一段 TTS 合成的毫秒级等待。六、串起来看一句话的完整旅程把前面的环节串成时序你对 AIRI 说一句今天天气怎么样VADWorker 中本地推理检测到开口 → 录音段开始停顿 400ms 后 VAD 判定说完 → 音频段 80ms 前缀补齐 → 编码为 WAVSTT流式识别 → 转录缓冲聚合成完整句子 → 送入会话LLM开始流式输出 token →TTS 分块器在第一个句号处切出首句首句TTS 合成与后续句子并发→ 播放管理器按时间线排程你在 AI 说话中途插话 → 新 Intent 以高优先级interrupt旧 Intent → 旧音频中止新一轮循环从第 1 步开始。全程没有任何一个环节在傻等上一个环节彻底结束这就是流式管线四个字的分量。七、想深入源码按这份地图走VAD 推理核心vad.ts麦克风录音与分段voice-input-session.ts听觉总控STT 提供方编排hearing.ts语音管线总调度Intent / 优先级 / 打断speech-pipeline.tsTTS 句子分块tts-chunker.ts播放排程playback-manager.ts包设计说明packages/pipelines-audio/README.md总结AIRI 的实时语音聊天 本地 VAD 切段 可插拔 STT 流式 LLM 分块并发 TTS 时间线播放再用Intent 优先级打断把所有环节缝成一个可以自然插话的对话体验。对想学习实时语音系统的同学来说它是一个非常完整的开源范本每一个环节都独立可替换换模型、换厂商、换端侧/云侧而 speech-pipeline.ts 的调度模型则展示了让多路异步流有序协作的通用解法。【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址: https://gitcode.com/moeru-ai/airi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

拆解SRWE的3700行代码:MainForm、Window与Settings如何协作构建运行时窗口编辑器 2026/9/25 3:11:00

拆解SRWE的3700行代码:MainForm、Window与Settings如何协作构建运行时窗口编辑器

拆解SRWE的3700行代码:MainForm、Window与Settings如何协作构建运行时窗口编辑器 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE SRWE(Simple Runtime Window Editor,简单运行…

阅读更多 →
VoltAgent 接入 NanoGPT:通过模型路由使用 OpenAI 兼容多模型网关 2026/9/25 3:10:54

VoltAgent 接入 NanoGPT:通过模型路由使用 OpenAI 兼容多模型网关

人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆 【免费下载链接】voltagent AI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework 项目地址: https://gitcode.com/gh_mirrors/vo/voltagent 点击查看 免费下载 Na…

阅读更多 →
Excel三维建模与折纸艺术的技术融合 2026/9/25 3:10:54

Excel三维建模与折纸艺术的技术融合

1. 当Excel遇上折纸艺术:解析2025世界冠军赛的跨界挑战去年在拉斯维加斯举办的Excel世界锦标赛上,当裁判组公布"折纸建模"作为压轴赛题时,现场选手们的表情堪称经典——有人皱眉咬笔,有人突然开始疯狂搜索折纸教程&…

阅读更多 →
DeepSeek V4.1 Flash接入实战:tool calling契约与高确定性工程实践 2026/9/25 3:10:48

DeepSeek V4.1 Flash接入实战:tool calling契约与高确定性工程实践

1. 这不是“又一个大模型API教程”,而是V4.1 Flash上线后我踩了72小时的真实现场记录DeepSeek V4.1 Flash发布当天,我同步在3个生产环境做了接入测试——不是跑通hello world,而是直接把API塞进正在跑订单风控的实时流水线里。结果第一小时就…

阅读更多 →
用“范围表面“为 Agent 划定边界:learn-harness-engineering 课程 07 的任务分解实战指南 2026/9/25 3:10:48

用“范围表面“为 Agent 划定边界:learn-harness-engineering 课程 07 的任务分解实战指南

【免费下载链接】learn-harness-engineering Harness engineering beginner tutorial, from 0 to 1 项目地址: https://gitcode.com/gh_mirrors/le/learn-harness-engineering 点击查看 免费下载 导读:本文以 learn-harness-engineering 仓库课程 07 配…

阅读更多 →
Claude Code Router 401错误修复:Windows下API密钥与环境变量配置指南 2026/9/25 3:10:48

Claude Code Router 401错误修复:Windows下API密钥与环境变量配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉