# 引擎架构详解 深入了解 RAS 的两种引擎架构:管线式引擎和多模态引擎。 --- ## 引擎概述 引擎是 RAS 的核心,负责处理实时语音交互。根据不同需求,可以选择两种架构: | 架构 | 特点 | 适用场景 | |------|------|---------| | **管线式** | 灵活、可定制、成本可控 | 大多数场景 | | **多模态** | 低延迟、自然、简单 | 高端体验场景 | --- ## 管线式引擎 (Pipeline) ### 架构设计 管线式引擎将语音交互拆分为三个独立阶段: ```mermaid flowchart LR subgraph Input["输入处理"] Audio[用户音频] --> VAD[VAD 检测] VAD --> ASR[语音识别] ASR --> Text[转写文本] end subgraph Process["语义处理"] Text --> LLM[大语言模型] LLM --> Response[回复文本] end subgraph Output["输出生成"] Response --> TTS[语音合成] TTS --> OutputAudio[助手音频] end ``` ### 数据流详解 ```mermaid sequenceDiagram participant U as 用户 participant E as 引擎 participant ASR as ASR 服务 participant LLM as LLM 服务 participant TTS as TTS 服务 U->>E: 音频帧 (PCM 16kHz) Note over E: VAD 检测语音活动 E->>E: 累积音频缓冲 Note over E: 检测到语音结束 (EOU) 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 ``` ### 延迟分析 管线式引擎的延迟由各环节累加: | 环节 | 典型延迟 | 优化方向 | |------|---------|---------| | 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 ``` --- ## 多模态引擎 (Multimodal) ### 架构设计 多模态引擎使用端到端模型,直接处理音频输入输出: ```mermaid flowchart LR subgraph Client["客户端"] Mic[麦克风] --> AudioIn[音频输入] AudioOut[音频输出] --> Speaker[扬声器] end subgraph Engine["引擎"] AudioIn --> RT[Realtime Model] RT --> AudioOut end subgraph Model["多模态模型"] RT --> GPT4o[GPT-4o Realtime] RT --> Gemini[Gemini Live] RT --> Step[Step Audio] end ``` ### 数据流详解 ```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: 支持全双工
用户可随时打断 ``` ### 支持的模型 | 模型 | 供应商 | 特点 | |------|--------|------| | **GPT-4o Realtime** | OpenAI | 最自然的语音,延迟极低 | | **Gemini Live** | Google | 多模态能力强 | | **Step Audio** | 阶跃星辰 | 国内可用,中文优化 | ### 延迟对比 ```mermaid xychart-beta title "端到端延迟对比" x-axis ["管线式 (普通)", "管线式 (优化)", "多模态"] y-axis "延迟 (ms)" 0 --> 1500 bar [1200, 700, 300] ``` --- ## 智能打断机制 两种引擎都支持智能打断,但实现方式不同。 ### 管线式引擎打断 ```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: 模型检测到打断
自动停止输出 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) - 引擎部署配置