公司推出AI眼镜等边缘设备,需要为设备提供实时语音交互能力。市面上存在多家AI服务提供商(OpenAI、阿里云、火山引擎等),但各家API协议不统一,且单一厂商存在可用性风险。目标是构建统一的AI能力聚合平台,屏蔽底层厂商差异,实现端到端低延迟(首句响应小于500ms)的多模态对话体验,支持千级并发设备连接,并为边缘设备赋能MCP工具调用能力,使AI具备文件系统、IoT设备、传感器等外部能力扩展。
多协议AI Provider统一抽象层:封装7种TTS提供商、3种ASR提供商、多种LLM提供商,通过统一接口加工厂模式实现业务层无感知厂商切换。
全链路流式处理架构:智能分句引擎按标点符号实时切割LLM输出,每个完整句子立即送TTS合成无需等待完整响应;Context级联取消机制确保用户打断时20ms内停止所有任务;定速音频发送避免设备缓冲区溢出。
MCP工具协议集成层:基于Eino框架实现MCP Host,支持全局工具(SSE协议)与设备专属工具(WebSocket协议)动态注册,打通LLM的Function Calling能力,使大模型可调用文件系统、IoT设备控制等外部工具,支持工具调用结果自动回注LLM实现多轮交互。
多传输层适配:支持WebSocket(控制与文本)、MQTT(信令通道)、UDP(低延迟音频流)混合协议,UDP音频传输采用AES-GCM加密加Nonce防重放,确保弱网环境下低延迟(小于50ms)与安全性。
对话状态机与会话管理:为每个设备创建独立ChatManager实例,封装ASRManager、LLMManager、TTSManager三大管理器,状态机驱动任务切换,资源池复用VAD检测、ASR连接、TTS连接。
整体架构基于Go-Zero微服务框架的清洁架构(Clean Architecture),分为传输层、会话管理层、业务处理层、Provider抽象层、基础设施层。传输层使用Gorilla WebSocket进行长连接管理、MQTT Client作为信令通道、UDP Server加AES-GCM加密实现低延迟音频流传输。会话管理层为每设备创建独立ChatManager实例实现状态隔离,通过Context生命周期管理实现资源自动回收。业务处理层包含ASRManager负责语音识别、LLMManager负责大模型推理、TTSManager负责语音合成、ServerTransport负责消息发送,各Manager独立运行互不阻塞。Provider抽象层封装多厂商适配,AsrProvider支持FunASR、阿里ASR、豆包ASR,LLMProvider基于Eino框架封装OpenAI、通义千问、豆包、Ollama,TTSProvider支持阿里、豆包、Edge、Cosyvoice、Xiaozhi等,AgentProvider支持阿里智能体、FastGPT。基础设施层使用Redis存储对话历史、设备配置和热更新,MySQL存储应用配置、设备管理、日志,gRPC与sys、agt微服务通信,MCP通过SSE或WebSocket连接工具服务器。
核心技术栈包括音频编解码使用Opus Codec和PCM Float32转换,VAD检测使用WebRTC VAD和Silero VAD(ONNX推理),ASR使用各厂商WebSocket流式API,LLM使用Eino框架统一接口,TTS使用各厂商WebSocket或HTTP流式API,MCP协议基于Eino Tool接口加自研SSE或WebSocket客户端,并发控制使用Go Context、Goroutine、Channel、sync.Map,资源池自实现WebSocket连接复用,配置管理使用Viper加Redis Pub/Sub实现热更新,日志追踪使用Logrus加轮转日志。设计模式运用包括适配器模式统一Provider接口、工厂模式动态创建Provider实例、管道模式通过Channel串联ASR到LLM到TTS异步非阻塞、观察者模式实现Context级联取消、对象池模式复用WebSocket连接和VAD实例、策略模式实现智能分句。