Update documentation for Realtime Agent Studio with enhanced content and structure
- Revised site name and description for clarity and detail. - Updated navigation structure to better reflect the organization of content. - Improved changelog entries for better readability and consistency. - Migrated assistant configuration and prompt guidelines to new documentation paths. - Enhanced core concepts section to clarify the roles and capabilities of assistants and engines. - Streamlined workflow documentation to provide clearer guidance on configuration and usage.
This commit is contained in:
@@ -1,349 +1,107 @@
|
||||
# 引擎架构详解
|
||||
# 引擎架构
|
||||
|
||||
深入了解 RAS 的两种引擎架构:管线式引擎和多模态引擎。
|
||||
RAS 提供两类实时运行时:**Pipeline 引擎** 和 **Realtime 引擎**。本页只回答一个问题:你的助手应该跑在哪种引擎上。
|
||||
|
||||
---
|
||||
|
||||
## 引擎概述
|
||||
## 先记住这条判断标准
|
||||
|
||||
引擎是 RAS 的核心,负责处理实时语音交互。根据不同需求,可以选择两种架构:
|
||||
- 如果你优先考虑 **可控性、可替换性、成本管理、工具 / 知识 / 流程编排**,优先选 **Pipeline 引擎**
|
||||
- 如果你优先考虑 **超低延迟、更自然的端到端语音体验**,优先选 **Realtime 引擎**
|
||||
|
||||
| 架构 | 特点 | 适用场景 |
|
||||
|------|------|---------|
|
||||
| **管线式** | 灵活、可定制、成本可控 | 大多数场景 |
|
||||
| **多模态** | 低延迟、自然、简单 | 高端体验场景 |
|
||||
## 两类引擎的区别
|
||||
|
||||
---
|
||||
| 维度 | Pipeline 引擎 | Realtime 引擎 |
|
||||
|------|---------------|---------------|
|
||||
| **交互路径** | VAD → ASR → TD → LLM → TTS | 端到端实时模型 |
|
||||
| **可控性** | 高,每个环节可替换 | 中,更多依赖模型供应商 |
|
||||
| **延迟** | 中等,通常由多环节累加 | 低,链路更短 |
|
||||
| **能力编排** | 更适合接入工具、知识库、工作流 | 也可接工具,但流程可控性较弱 |
|
||||
| **成本结构** | 可按环节优化 | 往往更依赖单一供应商定价 |
|
||||
| **适合场景** | 企业客服、流程型助手、电话场景、知识问答 | 高拟真语音助手、多模态入口、高自然度体验 |
|
||||
|
||||
## 管线式引擎 (Pipeline)
|
||||
## Pipeline 引擎是什么
|
||||
|
||||
### 架构设计
|
||||
|
||||
管线式引擎包含 **声音活动检测(VAD)**、**语音识别(ASR)**、**回合检测(TD)**、**大语言模型(LLM)**、**语音合成(TTS)**,各环节可对接**外部服务**(OpenAI、SiliconFlow、DashScope、本地模型)。LLM 可连接**工具**(Webhook、客户端工具、内建工具)。
|
||||
Pipeline 引擎把实时语音拆成多个明确环节:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph Input["输入处理"]
|
||||
Audio[用户音频] --> VAD[声音活动检测 VAD]
|
||||
VAD --> ASR[语音识别 ASR]
|
||||
ASR --> Text[转写文本]
|
||||
Text --> TD[回合检测 TD]
|
||||
end
|
||||
|
||||
subgraph Process["语义处理"]
|
||||
TD --> LLM[大语言模型 LLM]
|
||||
LLM --> Response[回复文本]
|
||||
LLM --> Tools[工具]
|
||||
end
|
||||
|
||||
subgraph Output["输出生成"]
|
||||
Response --> TTS[语音合成 TTS]
|
||||
TTS --> OutputAudio[助手音频]
|
||||
end
|
||||
VAD[VAD] --> ASR[ASR]
|
||||
ASR --> TD[回合检测]
|
||||
TD --> LLM[LLM]
|
||||
LLM --> TTS[TTS]
|
||||
```
|
||||
|
||||
### 数据流详解
|
||||
这样做的好处是:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as 用户
|
||||
participant E as 引擎
|
||||
participant ASR as ASR 服务
|
||||
participant LLM as LLM 服务
|
||||
participant TTS as TTS 服务
|
||||
- 你可以分别选择 ASR、LLM、TTS 的供应商
|
||||
- 你可以单独优化某一个环节,而不是整体替换
|
||||
- 工具、知识库和工作流更容易插入到链路中
|
||||
|
||||
U->>E: 音频帧 (PCM 16kHz)
|
||||
|
||||
Note over E: VAD 检测语音活动
|
||||
E->>E: 累积音频缓冲
|
||||
|
||||
Note over E: 回合检测 (TD) 确定可送 LLM 的输入
|
||||
E->>ASR: 发送音频
|
||||
ASR-->>E: 转写文本 (流式)
|
||||
E-->>U: transcript.delta
|
||||
E-->>U: transcript.final
|
||||
|
||||
E->>LLM: 发送对话历史 + 用户输入
|
||||
LLM-->>E: 回复文本 (流式)
|
||||
E-->>U: assistant.response.delta
|
||||
|
||||
loop 流式合成
|
||||
E->>TTS: 文本片段
|
||||
TTS-->>E: 音频片段
|
||||
E-->>U: 音频帧
|
||||
end
|
||||
|
||||
E-->>U: assistant.response.final
|
||||
```
|
||||
代价是:
|
||||
|
||||
### 延迟分析
|
||||
- 延迟会累加
|
||||
- 系统集成更复杂
|
||||
- 你需要同时管理多类外部依赖
|
||||
|
||||
管线式引擎的延迟由各环节累加:
|
||||
## Realtime 引擎是什么
|
||||
|
||||
| 环节 | 典型延迟 | 优化方向 |
|
||||
|------|---------|---------|
|
||||
| VAD/EOU | 200-500ms | 调整灵敏度 |
|
||||
| ASR | 100-300ms | 选择快速模型 |
|
||||
| LLM TTFT | 200-500ms | 选择低延迟模型 |
|
||||
| TTS | 100-200ms | 流式合成 |
|
||||
| **总计** | **600-1500ms** | - |
|
||||
|
||||
### 流式优化
|
||||
|
||||
为降低感知延迟,采用流式处理:
|
||||
|
||||
```mermaid
|
||||
gantt
|
||||
title 非流式 vs 流式处理
|
||||
dateFormat X
|
||||
axisFormat %s
|
||||
|
||||
section 非流式
|
||||
ASR完成 :a1, 0, 300ms
|
||||
LLM完成 :a2, after a1, 800ms
|
||||
TTS完成 :a3, after a2, 500ms
|
||||
播放 :a4, after a3, 500ms
|
||||
|
||||
section 流式
|
||||
ASR :b1, 0, 300ms
|
||||
LLM开始 :b2, after b1, 200ms
|
||||
TTS开始 :b3, after b2, 100ms
|
||||
边生成边播放 :b4, after b3, 600ms
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 实时交互引擎与多模态
|
||||
|
||||
### 实时交互引擎连接
|
||||
|
||||
实时交互引擎可连接**实时交互引擎**后端,包括:
|
||||
|
||||
| 后端 | 说明 |
|
||||
|------|------|
|
||||
| **OpenAI Realtime** | OpenAI 实时语音模型 |
|
||||
| **Gemini Live** | Google 实时多模态 |
|
||||
| **Doubao 实时交互引擎** | 豆包实时交互 |
|
||||
|
||||
实时交互引擎与管线式引擎中的 LLM 一样,均可连接**工具**:Webhook、客户端工具、内建工具。
|
||||
|
||||
### 多模态引擎架构
|
||||
|
||||
多模态引擎使用端到端模型,直接处理音频输入输出:
|
||||
Realtime 引擎直接连接端到端实时模型,让模型同时处理输入、理解、生成与打断。
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph Client["客户端"]
|
||||
Mic[麦克风] --> AudioIn[音频输入]
|
||||
AudioOut[音频输出] --> Speaker[扬声器]
|
||||
end
|
||||
|
||||
subgraph Engine["引擎"]
|
||||
AudioIn --> RT[Realtime Model]
|
||||
RT --> AudioOut
|
||||
RT --> Tools[工具]
|
||||
end
|
||||
|
||||
subgraph Model["实时交互引擎"]
|
||||
RT --> GPT4o[OpenAI Realtime]
|
||||
RT --> Gemini[Gemini Live]
|
||||
RT --> Doubao[Doubao 实时]
|
||||
end
|
||||
Input[音频 / 视频 / 文本输入] --> RT[Realtime Model]
|
||||
RT --> Output[音频 / 文本输出]
|
||||
RT --> Tools[工具]
|
||||
```
|
||||
|
||||
### 数据流详解
|
||||
这样做的好处是:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as 用户
|
||||
participant E as 引擎
|
||||
participant RT as Realtime Model
|
||||
- 链路更短,延迟更低
|
||||
- 全双工与打断通常更自然
|
||||
- 接入路径更简单,适合强调体验的入口
|
||||
|
||||
U->>E: 音频帧
|
||||
E->>RT: 转发音频
|
||||
|
||||
Note over RT: 端到端处理
|
||||
|
||||
RT-->>E: 音频响应 (流式)
|
||||
E-->>U: 播放音频
|
||||
|
||||
Note over U,RT: 支持全双工<br/>用户可随时打断
|
||||
```
|
||||
代价是:
|
||||
|
||||
### 外部服务(管线式)
|
||||
- 更依赖特定模型供应商
|
||||
- 对 ASR / TTS / 回合检测的独立控制更弱
|
||||
- 成本和能力边界受实时模型限制更大
|
||||
|
||||
管线式引擎各环节可选用以下**外部服务**:
|
||||
## 怎么选
|
||||
|
||||
| 服务 | 说明 |
|
||||
|------|------|
|
||||
| **OpenAI** | LLM / ASR / TTS 等 |
|
||||
| **SiliconFlow** | 国内 API 服务 |
|
||||
| **DashScope** | 阿里云灵积 |
|
||||
| **本地模型** | 私有化部署模型 |
|
||||
### 适合选择 Pipeline 的情况
|
||||
|
||||
### 支持的实时交互模型
|
||||
- 你要接入特定 ASR 或 TTS 供应商
|
||||
- 你需要知识库、工具、工作流形成稳定业务流程
|
||||
- 你更在意可解释性、观测和分段优化
|
||||
- 你需要把成本按环节精细控制
|
||||
|
||||
| 模型 | 供应商 | 特点 |
|
||||
|------|--------|------|
|
||||
| **OpenAI Realtime** | OpenAI | 最自然的语音,延迟极低 |
|
||||
| **Gemini Live** | Google | 多模态能力强 |
|
||||
| **Doubao 实时交互** | 字节跳动 | 国内可用,中文优化 |
|
||||
### 适合选择 Realtime 的情况
|
||||
|
||||
### 延迟对比
|
||||
- 你把“自然对话感”放在首位
|
||||
- 你需要更低的首响和更顺滑的打断体验
|
||||
- 你可以接受对某个模型供应商的依赖
|
||||
- 你的场景更接近语音助手、陪练、虚拟角色或多模态入口
|
||||
|
||||
```mermaid
|
||||
xychart-beta
|
||||
title "端到端延迟对比"
|
||||
x-axis ["管线式 (普通)", "管线式 (优化)", "多模态"]
|
||||
y-axis "延迟 (ms)" 0 --> 1500
|
||||
bar [1200, 700, 300]
|
||||
```
|
||||
## 简化决策表
|
||||
|
||||
---
|
||||
| 场景 | 推荐引擎 | 原因 |
|
||||
|------|----------|------|
|
||||
| 企业客服 / 电话机器人 | Pipeline | 可控、可审计、易接工具与业务系统 |
|
||||
| 知识问答 / 业务流程助手 | Pipeline | 更适合接知识库与工作流 |
|
||||
| 高拟真语音助手 | Realtime | 更自然、更低延迟 |
|
||||
| 多模态入口 | Realtime | 端到端处理音频 / 视频 / 文本 |
|
||||
| 预算敏感场景 | Pipeline | 更容易逐环节优化成本 |
|
||||
|
||||
## 智能打断机制
|
||||
## 智能打断的差异
|
||||
|
||||
两种引擎都支持智能打断,但实现方式不同。
|
||||
两类引擎都支持打断,但边界不同:
|
||||
|
||||
### 管线式引擎打断
|
||||
- **Pipeline**:由 VAD / 回合检测与 TTS 停止逻辑协同实现,行为更可控
|
||||
- **Realtime**:更多由实时模型内部完成,体验更自然,但可解释性更低
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as 用户
|
||||
participant E as 引擎
|
||||
participant TTS as TTS
|
||||
## 继续阅读
|
||||
|
||||
Note over E,TTS: TTS 正在合成播放
|
||||
E->>U: 音频帧...
|
||||
|
||||
U->>E: 用户说话 (检测到 VAD)
|
||||
E->>E: 判断是否有效打断
|
||||
|
||||
alt 有效打断
|
||||
E->>TTS: 停止合成
|
||||
E->>E: 清空音频缓冲
|
||||
E-->>U: output.audio.interrupted
|
||||
Note over E: 处理新输入
|
||||
else 噪音/误触发
|
||||
Note over E: 继续播放
|
||||
end
|
||||
```
|
||||
|
||||
### 多模态引擎打断
|
||||
|
||||
多模态模型原生支持全双工,打断由模型内部处理:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as 用户
|
||||
participant E as 引擎
|
||||
participant RT as Realtime Model
|
||||
|
||||
Note over RT: 模型正在输出
|
||||
RT-->>E: 音频流...
|
||||
E-->>U: 播放
|
||||
|
||||
U->>E: 用户说话
|
||||
E->>RT: 转发用户音频
|
||||
|
||||
Note over RT: 模型检测到打断<br/>自动停止输出
|
||||
|
||||
RT-->>E: 新的响应
|
||||
E-->>U: 播放新响应
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 引擎选择指南
|
||||
|
||||
### 决策流程
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start[选择引擎] --> Q1{延迟要求?}
|
||||
|
||||
Q1 -->|< 500ms| Q2{预算充足?}
|
||||
Q1 -->|> 500ms 可接受| Pipeline[管线式引擎]
|
||||
|
||||
Q2 -->|是| Q3{模型可用?}
|
||||
Q2 -->|否| Pipeline
|
||||
|
||||
Q3 -->|GPT-4o/Gemini 可用| Multimodal[多模态引擎]
|
||||
Q3 -->|国内环境受限| Q4{Step Audio?}
|
||||
|
||||
Q4 -->|可用| Multimodal
|
||||
Q4 -->|不可用| Pipeline
|
||||
```
|
||||
|
||||
### 场景推荐
|
||||
|
||||
| 场景 | 推荐引擎 | 理由 |
|
||||
|------|---------|------|
|
||||
| **企业客服** | 管线式 | 成本可控,可定制 ASR |
|
||||
| **高端虚拟人** | 多模态 | 最自然的交互体验 |
|
||||
| **电话机器人** | 管线式 | 可对接电信 ASR |
|
||||
| **语音助手** | 多模态 | 低延迟,自然对话 |
|
||||
| **口语练习** | 管线式 | 需要精确的 ASR 评分 |
|
||||
|
||||
### 混合方案
|
||||
|
||||
也可以根据用户等级使用不同引擎:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
User[用户请求] --> Router{路由判断}
|
||||
|
||||
Router -->|VIP 用户| Multimodal[多模态引擎]
|
||||
Router -->|普通用户| Pipeline[管线式引擎]
|
||||
|
||||
Multimodal --> Response[响应]
|
||||
Pipeline --> Response
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置示例
|
||||
|
||||
### 管线式引擎配置
|
||||
|
||||
```json
|
||||
{
|
||||
"engine": "pipeline",
|
||||
"asr": {
|
||||
"provider": "openai-compatible",
|
||||
"model": "FunAudioLLM/SenseVoiceSmall",
|
||||
"language": "zh"
|
||||
},
|
||||
"llm": {
|
||||
"provider": "openai",
|
||||
"model": "gpt-4o-mini",
|
||||
"temperature": 0.7
|
||||
},
|
||||
"tts": {
|
||||
"provider": "openai-compatible",
|
||||
"model": "FunAudioLLM/CosyVoice2-0.5B",
|
||||
"voice": "anna"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 多模态引擎配置
|
||||
|
||||
```json
|
||||
{
|
||||
"engine": "multimodal",
|
||||
"model": {
|
||||
"provider": "openai",
|
||||
"model": "gpt-4o-realtime-preview",
|
||||
"voice": "alloy"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [系统架构](../overview/architecture.md) - 整体架构设计
|
||||
- [WebSocket 协议](../api-reference/websocket.md) - 协议详情
|
||||
- [部署指南](../deployment/index.md) - 引擎部署配置
|
||||
- [Pipeline 引擎](pipeline-engine.md) - 查看分段链路、延迟构成与配置示例
|
||||
- [Realtime 引擎](realtime-engine.md) - 查看端到端实时模型的交互路径
|
||||
- [系统架构](../overview/architecture.md) - 从服务边界理解引擎在整体系统中的位置
|
||||
|
||||
Reference in New Issue
Block a user