diff --git a/docs/content/concepts/engines.md b/docs/content/concepts/engines.md index 925a721..16d06af 100644 --- a/docs/content/concepts/engines.md +++ b/docs/content/concepts/engines.md @@ -19,23 +19,25 @@ ### 架构设计 -管线式引擎将语音交互拆分为三个独立阶段: +管线式引擎包含 **声音活动检测(VAD)**、**语音识别(ASR)**、**回合检测(TD)**、**大语言模型(LLM)**、**语音合成(TTS)**,各环节可对接**外部服务**(OpenAI、SiliconFlow、DashScope、本地模型)。LLM 可连接**工具**(Webhook、客户端工具、内建工具)。 ```mermaid flowchart LR subgraph Input["输入处理"] - Audio[用户音频] --> VAD[VAD 检测] - VAD --> ASR[语音识别] + Audio[用户音频] --> VAD[声音活动检测 VAD] + VAD --> ASR[语音识别 ASR] ASR --> Text[转写文本] + Text --> TD[回合检测 TD] end subgraph Process["语义处理"] - Text --> LLM[大语言模型] + TD --> LLM[大语言模型 LLM] LLM --> Response[回复文本] + LLM --> Tools[工具] end subgraph Output["输出生成"] - Response --> TTS[语音合成] + Response --> TTS[语音合成 TTS] TTS --> OutputAudio[助手音频] end ``` @@ -55,7 +57,7 @@ sequenceDiagram Note over E: VAD 检测语音活动 E->>E: 累积音频缓冲 - Note over E: 检测到语音结束 (EOU) + Note over E: 回合检测 (TD) 确定可送 LLM 的输入 E->>ASR: 发送音频 ASR-->>E: 转写文本 (流式) E-->>U: transcript.delta @@ -111,9 +113,21 @@ gantt --- -## 多模态引擎 (Multimodal) +## 实时交互引擎与多模态 -### 架构设计 +### 实时交互引擎连接 + +实时交互引擎可连接**实时交互引擎**后端,包括: + +| 后端 | 说明 | +|------|------| +| **OpenAI Realtime** | OpenAI 实时语音模型 | +| **Gemini Live** | Google 实时多模态 | +| **Doubao 实时交互引擎** | 豆包实时交互 | + +实时交互引擎与管线式引擎中的 LLM 一样,均可连接**工具**:Webhook、客户端工具、内建工具。 + +### 多模态引擎架构 多模态引擎使用端到端模型,直接处理音频输入输出: @@ -127,12 +141,13 @@ flowchart LR subgraph Engine["引擎"] AudioIn --> RT[Realtime Model] RT --> AudioOut + RT --> Tools[工具] end - subgraph Model["多模态模型"] - RT --> GPT4o[GPT-4o Realtime] + subgraph Model["实时交互引擎"] + RT --> GPT4o[OpenAI Realtime] RT --> Gemini[Gemini Live] - RT --> Step[Step Audio] + RT --> Doubao[Doubao 实时] end ``` @@ -155,13 +170,24 @@ sequenceDiagram Note over U,RT: 支持全双工
用户可随时打断 ``` -### 支持的模型 +### 外部服务(管线式) + +管线式引擎各环节可选用以下**外部服务**: + +| 服务 | 说明 | +|------|------| +| **OpenAI** | LLM / ASR / TTS 等 | +| **SiliconFlow** | 国内 API 服务 | +| **DashScope** | 阿里云灵积 | +| **本地模型** | 私有化部署模型 | + +### 支持的实时交互模型 | 模型 | 供应商 | 特点 | |------|--------|------| -| **GPT-4o Realtime** | OpenAI | 最自然的语音,延迟极低 | +| **OpenAI Realtime** | OpenAI | 最自然的语音,延迟极低 | | **Gemini Live** | Google | 多模态能力强 | -| **Step Audio** | 阶跃星辰 | 国内可用,中文优化 | +| **Doubao 实时交互** | 字节跳动 | 国内可用,中文优化 | ### 延迟对比 diff --git a/docs/content/concepts/index.md b/docs/content/concepts/index.md index 63d257d..aab0fda 100644 --- a/docs/content/concepts/index.md +++ b/docs/content/concepts/index.md @@ -102,16 +102,16 @@ RAS 支持两种引擎架构,适用于不同场景。 ### 管线式引擎 (Pipeline) -将语音交互拆分为三个独立环节: +将语音交互拆分为多个环节,包含 **VAD(声音活动检测)**、**ASR(语音识别)**、**TD(回合检测)**、**LLM(大语言模型)**、**TTS(语音合成)**。外部服务可选 **OpenAI**、**SiliconFlow**、**DashScope**、**本地模型**。LLM 与实时交互引擎均可连接**工具**(Webhook、客户端工具、内建工具)。 ``` -用户语音 → [ASR] → 文本 → [LLM] → 回复 → [TTS] → 助手语音 +用户语音 → [VAD] → [ASR] → [TD] → 文本 → [LLM] → 回复 → [TTS] → 助手语音 ``` **优点:** -- 灵活选择各环节供应商 -- 可独立优化每个环节 +- 灵活选择各环节供应商(OpenAI、SiliconFlow、DashScope、本地模型) +- 可独立优化 VAD、ASR、TD、LLM、TTS 每个环节 - 成本可控 **缺点:** @@ -119,9 +119,9 @@ RAS 支持两种引擎架构,适用于不同场景。 - 延迟较高(累加延迟) - 需要协调多个服务 -### 多模态引擎 (Multimodal) +### 实时交互引擎与多模态 (Realtime / Multimodal) -使用端到端模型直接处理: +实时交互引擎可连接 **OpenAI Realtime**、**Gemini Live**、**Doubao 实时交互引擎** 等,同样可连接工具。使用端到端模型直接处理: ``` 用户语音 → [Realtime Model] → 助手语音 @@ -191,11 +191,13 @@ sequenceDiagram ### 工具类型 +管线式引擎中的 LLM 与实时交互引擎均可连接**工具**,包括: + | 类型 | 说明 | 示例 | |------|------|------| | **Webhook** | 调用外部 HTTP API | 查询订单、预约日程 | -| **客户端** | 由客户端执行的操作 | 打开页面、显示表单 | -| **内置** | 平台提供的工具 | 代码执行、计算器 | +| **客户端工具** | 由客户端执行的操作 | 打开页面、显示表单 | +| **内建工具** | 平台提供的工具 | 代码执行、计算器 | ### 工具调用流程 diff --git a/docs/content/index.md b/docs/content/index.md index 2445f85..b5f6ccc 100644 --- a/docs/content/index.md +++ b/docs/content/index.md @@ -38,7 +38,7 @@ Realtime Agent Studio (RAS) 是一款以大语言模型为核心,构建实时 --- - 管线式全双工架构,ASR/LLM/TTS 流水线处理,支持智能打断,端到端延迟 < 500ms + 管线式全双工架构,VAD/ASR/TD/LLM/TTS 流水线处理,支持智能打断,端到端延迟 < 500ms - :brain: **多模态模型支持** @@ -76,38 +76,152 @@ Realtime Agent Studio (RAS) 是一款以大语言模型为核心,构建实时 ## 系统架构 +平台架构层级: + +```mermaid +flowchart TB + +%% ================= ACCESS ================= +subgraph Access["Access Layer"] +direction TB +API[API] +SDK[SDK] +Browser[Browser UI] +Embed[Web Embed] +end + + +%% ================= REALTIME ENGINE ================= +subgraph Runtime["Realtime Interaction Engine"] + +direction LR + +%% -------- Duplex Engine -------- +subgraph Duplex["Duplex Interaction Engine"] +direction LR + +subgraph Pipeline["Pipeline Engine"] +direction LR +VAD[VAD] +ASR[ASR] +TD[Turn Detection] +LLM[LLM] +TTS[TTS] +end + +subgraph Multi["Realtime Engine"] +MM[Realtime Model] +end + +end + + +%% -------- Capabilities -------- +subgraph Capability["Agent Capabilities"] + +subgraph Tools["Tool System"] +Webhook[Webhook] +ClientTool[Client Tools] +Builtin[Builtin Tools] +end + +subgraph KB["Knowledge System"] +Docs[Documents] +Vector[(Vector Index)] +Retrieval[Retrieval] +end + +end + +end + + +%% ================= PLATFORM ================= +subgraph Platform["Platform Services"] +direction TB +Backend[Backend Service] +Frontend[Frontend Console] +DB[(Database)] +end + + +%% ================= CONNECTIONS ================= + +Access --> Runtime + +Runtime <--> Backend +Backend <--> DB +Backend <--> Frontend + +LLM --> Tools +MM --> Tools + +LLM <--> KB +MM <--> KB +``` + +管线式引擎交互引擎对话流程图: + ```mermaid flowchart LR - subgraph Client["客户端"] - Web[Web 浏览器] - App[移动应用] - SDK[SDK] - end - subgraph RAS["Realtime Agent Studio"] - Engine[实时交互引擎] - API[API 服务] - DB[(数据库)] - end +User((User Speech)) +Audio[Audio Stream] - subgraph Pipeline["管线式引擎"] - ASR[语音识别] - LLM[大语言模型] - TTS[语音合成] - end +VAD[VAD\nVoice Activity Detection] +ASR[ASR\nSpeech Recognition] - subgraph External["外部服务"] - OpenAI[OpenAI] - Azure[Azure] - Local[本地模型] - end +TD[Turn Detection] - Client -->|WebSocket| Engine - Client -->|REST| API - Engine --> Pipeline - Engine <--> API - API <--> DB - Pipeline --> External +LLM[LLM\nReasoning] + +Tools[Tools / APIs] + +TTS[TTS\nSpeech Synthesis] + +AudioOut[Audio Stream Out] + +User --> Audio +Audio --> VAD +VAD --> ASR +ASR --> TD +TD --> LLM + +LLM --> Tools +Tools --> LLM + +LLM --> TTS +TTS --> AudioOut +AudioOut --> User +``` + +基于实时交互模型的对话流程图: + +```mermaid +flowchart LR + +User((User)) + +Input[Audio / Video / Text] + +MM[Multimodal Model] + +Tools[Tools / APIs] +KB[Knowledge Base] + +Output[Audio / Video / Text] + +User --> Input +Input --> MM + +MM --> Tools +Tools --> MM + +MM --> KB +KB --> MM + +MM --> Output +Output --> User ``` --- @@ -119,9 +233,9 @@ flowchart LR | **前端** | React 18, TypeScript, Tailwind CSS, Zustand | | **后端** | FastAPI (Python 3.10+) | | **引擎** | Python, WebSocket, asyncio | -| **数据库** | SQLite / PostgreSQL | +| **数据库** | SQLite | | **知识库** | chroma | -| **部署** | Docker, Nginx | +| **部署** | Docker | --- @@ -204,16 +318,6 @@ ws.onopen = () => { --- -## 参与贡献 - -我们欢迎社区贡献!查看 [贡献指南](https://github.com/your-org/AI-VideoAssistant/blob/main/CONTRIBUTING.md) 了解如何参与。 - -- :star: Star 项目支持我们 -- :bug: 提交 Issue 报告问题 -- :hammer: 提交 PR 贡献代码 - ---- - ## 许可证 本项目基于 [MIT 许可证](https://github.com/your-org/AI-VideoAssistant/blob/main/LICENSE) 开源。 diff --git a/docs/content/javascripts/mermaid.mjs b/docs/content/javascripts/mermaid.mjs new file mode 100644 index 0000000..32f04e1 --- /dev/null +++ b/docs/content/javascripts/mermaid.mjs @@ -0,0 +1,18 @@ +/** + * Global Mermaid config for consistent diagram sizing across all docs. + * Exposed as window.mermaid so Material for MkDocs uses this instance. + */ +import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs"; + +mermaid.initialize({ + startOnLoad: false, + securityLevel: "loose", + theme: "base", + useMaxWidth: false, + themeVariables: { + fontSize: "14px", + fontFamily: "Inter, sans-serif", + }, +}); + +window.mermaid = mermaid; diff --git a/docs/content/overview/architecture.md b/docs/content/overview/architecture.md index df86af5..bfa830b 100644 --- a/docs/content/overview/architecture.md +++ b/docs/content/overview/architecture.md @@ -31,9 +31,16 @@ flowchart TB end subgraph External["外部服务"] - LLM[LLM 服务] - ASR[ASR 服务] - TTS[TTS 服务] + OpenAI[OpenAI] + SiliconFlow[SiliconFlow] + DashScope[DashScope] + LocalModel[本地模型] + end + + subgraph Tools["工具"] + Webhook[Webhook] + ClientTool[客户端工具] + Builtin[内建工具] end Browser --> WebApp @@ -44,9 +51,8 @@ flowchart TB API <--> DB API <--> FileStore Engine <--> API - Engine --> LLM - Engine --> ASR - Engine --> TTS + Engine --> External + Engine --> Tools ``` --- @@ -60,7 +66,7 @@ flowchart TB | 功能模块 | 说明 | |---------|------| | 助手管理 | 创建、配置、测试智能助手 | -| 资源库 | LLM/ASR/TTS 模型管理 | +| 资源库 | LLM/ASR/TTS/VAD 等模型管理 | | 知识库 | RAG 文档上传与管理 | | 历史记录 | 会话日志查询与回放 | | 仪表盘 | 实时数据统计 | @@ -103,45 +109,74 @@ flowchart TB SM[会话管理器] subgraph Pipeline["管线式引擎"] - VAD[VAD 检测] - ASR[语音识别] - LLM[大语言模型] - TTS[语音合成] + VAD[声音活动检测 VAD] + ASR[语音识别 ASR] + TD[回合检测 TD] + LLM[大语言模型 LLM] + TTS[语音合成 TTS] end - subgraph Multimodal["多模态引擎"] - RT[Realtime Model
GPT-4o / Gemini] + subgraph Realtime["实时交互引擎连接"] + RTOpenAI[OpenAI Realtime] + RTGemini[Gemini Live] + RTDoubao[Doubao 实时交互] + end + + subgraph Tools["工具"] + Webhook[Webhook] + ClientTool[客户端工具] + Builtin[内建工具] end end Client[客户端] -->|音频流| WS WS --> SM SM --> Pipeline - SM --> Multimodal + SM --> Realtime + Pipeline --> LLM + LLM --> Tools + Realtime --> Tools Pipeline -->|文本/音频| WS - Multimodal -->|文本/音频| WS + Realtime -->|文本/音频| WS ``` +### 外部服务与工具 + +| 类别 | 说明 | 可选项 | +|------|------|--------| +| **外部服务** | 管线式引擎各环节所依赖的云/本地服务 | OpenAI、SiliconFlow、DashScope、本地模型 | +| **实时交互引擎** | 实时交互引擎可连接的后端 | OpenAI Realtime、Gemini Live、Doubao 实时交互引擎 | +| **工具** | 管线式 LLM 与实时交互引擎均可调用 | Webhook、客户端工具、内建工具 | + --- ## 引擎架构 ### 管线式全双工引擎 -传统方案,将语音交互拆分为三个独立阶段: +管线式引擎包含:**声音活动检测(VAD)**、**语音识别(ASR)**、**回合检测(TD)**、**大语言模型(LLM)**、**语音合成(TTS)**。外部服务可选用 **OpenAI**、**SiliconFlow**、**DashScope**、**本地模型**。LLM 可连接**工具**(Webhook、客户端工具、内建工具)。 ```mermaid sequenceDiagram participant C as 客户端 participant E as 引擎 + participant VAD as VAD participant ASR as 语音识别 + participant TD as 回合检测 participant LLM as 大语言模型 participant TTS as 语音合成 + participant Tools as 工具 C->>E: 音频流 (PCM) + E->>VAD: 检测语音活动 + VAD-->>E: 有效语音段 E->>ASR: 语音转文字 ASR-->>E: 转写文本 + E->>TD: 回合边界 + TD-->>E: 可送 LLM 的输入 E->>LLM: 生成回复 + LLM->>Tools: 可选:调用工具 + Tools-->>LLM: 工具结果 LLM-->>E: 回复文本 (流式) E->>TTS: 文字转语音 TTS-->>E: 音频流 @@ -150,10 +185,15 @@ sequenceDiagram **特点:** -- 灵活选择各环节供应商 -- 可独立优化每个环节 +- 灵活选择各环节供应商(OpenAI、SiliconFlow、DashScope、本地模型) +- 可独立优化 VAD、ASR、TD、LLM、TTS 每个环节 +- LLM 与工具联动(Webhook、客户端工具、内建工具) - 延迟约 500-1500ms +### 实时交互引擎 + +实时交互引擎可连接**实时交互引擎**,包括 **OpenAI Realtime**、**Gemini Live**、**Doubao 实时交互引擎**等,同样可连接**工具**(Webhook、客户端工具、内建工具)。 + ### 原生多模态引擎 使用端到端多模态模型(如 GPT-4o Realtime): diff --git a/docs/content/stylesheets/extra.css b/docs/content/stylesheets/extra.css index b0fd038..bbe7b20 100644 --- a/docs/content/stylesheets/extra.css +++ b/docs/content/stylesheets/extra.css @@ -83,9 +83,13 @@ border: none; } -/* Mermaid Diagram Styling */ +/* Mermaid Diagram Styling - consistent element size across diagrams */ .mermaid { margin: 1.5rem 0; + overflow-x: auto; +} +.mermaid svg { + min-width: min-content; } /* Navigation Enhancement */ diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 291dc1c..c9cecff 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -162,4 +162,5 @@ extra_css: - stylesheets/extra.css extra_javascript: + - javascripts/mermaid.mjs - javascripts/extra.js