Journal Article

小智AI服务器端深度解析:多LLM接入、声纹识别与完整功能矩阵

深入解析小智AI的Python服务器端架构:FunASR/XunfeiStream ASR流水线、Qwen/DeepSeek/Zhipu多LLM接入、Huoshan/EdgeTTS语音合成、3D-Speaker声纹识别、RAGFlow知识库、PowerMem记忆系统、意图识别与MCP工具调用。

8 min1 views

小智AI服务器端深度解析:多LLM接入、声纹识别与完整功能矩阵

服务器仓库:xiaozhi-esp32-server 10.1k Stars

本文是小智AI专栏的第二篇,聚焦服务器端架构:从 ASR 语音识别管道到大模型接入,从声纹识别到知识库检索增强生成,完整拆解服务端的 10 大功能模块。


服务器整体架构

code
xiaozhi-esp32-server
│
├── 智控台 (Vue.js) — Web管理界面 · 多用户 · 设备管理
├── HTTP API
├── WebSocket 语音流
├── MQTT Gateway 设备指令下发
├── MCP 接入点 工具扩展
│
├── 核心管道 (Pipeline)
│   VAD → ASR → LLM → TTS → Opus编码
│         ├── 意图识别 (Intent)
│         ├── 函数调用 (FunctionCall)
│         └── 知识库 (RAGFlow)
│
└── 辅助系统
    ├── 声纹识别 (3D-Speaker)
    ├── 记忆系统 (PowerMem / mem0ai)
    └── MCP 服务 (tools/call)

1. ASR 语音识别

方案部署延迟成本
FunASRDocker本地~200ms免费
XunfeiStreamASRAPI流式~100ms付费
SherpaASR本地编译~300ms免费
OpenAI ASRAPI~200ms付费

FunASR 本地部署(阿里达摩院):

python
from funasr import AutoModel
model = AutoModel(
    model="iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
    vad_model="iic/speech_fsmn_vad_zh-cn-16k-common-pytorch",
    punc_model="iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch",
)
res = model.generate(input=audio_chunk, chunk_size=60)

资源要求:2核4G(最小),4核8G(推荐)。Docker 一键部署。


2. LLM 大语言模型

平台接口免费额度推荐模型
阿里百炼OpenAI兼容100万token/月qwen-flash
DeepSeekOpenAI兼容价格极低deepseek-chat
智谱GLMOpenAI兼容免费glm-4-flash
GeminiOpenAI兼容部分免费gemini-2.0-flash
Ollama本地免费qwen2.5:7b
Coze接口免费任意模型

核心设计:只要支持 OpenAI 接口格式就能接入。

python
class LLMProvider:
    def __init__(self, config):
        self.client = OpenAI(
            api_key=config.api_key,
            base_url=config.base_url  # 切换平台只需改 URL
        )
    def chat(self, messages, tools=None):
        return self.client.chat.completions.create(
            model=config.model, messages=messages, tools=tools
        )

3. TTS 语音合成

方案延迟费用特点
EdgeTTS~500ms免费40+语言
火山流式TTS~100ms付费首包最快
FishSpeech~1s免费本地开源
GPT-SOVITS~2s免费声音克隆
CosyVoice~1s免费阿里开源
灵犀流式TTS~200ms免费流式接口

自 v0.5.2 起全面支持流式 TTS,首包 ~100ms 即开始播放,相比早期版本响应速度提升约 2.5 秒。


4. 声纹识别 (3D-Speaker)

阿里达摩院出品,与 ASR 并行处理不阻塞:

python
embedding = speaker_model.extract_embedding(audio)
database.add("user_1", embedding)

current_embedding = speaker_model.extract_embedding(live_audio)
identity = database.verify(current_embedding)  # "user_1" / "unknown"

识别结果传给 LLM 实现个性化回应——"欢迎回来,用户A" vs "你好,访客"。


5. 意图识别与函数调用

模式原理适用
function_callLLM原生函数调用主流,速度快
intent_llm外挂意图识别LLM复杂意图
nointent跳过意图识别纯对话

LLM 自主决定调用哪个工具,结果注入上下文继续对话:

code
用户: "把客厅灯打开"
  → LLM判断: 需要调用 control_light(room="客厅", action="on")
  → MCP → ESP32设备执行 → "客厅灯已打开"
  → LLM: "好的,客厅灯已经为您打开了"

6. 记忆系统

类型存储适用
mem_local_short本地短期单次会话
mem0ai云端向量库长期记忆
PowerMemOceanBase向量智能检索

7. RAGFlow 知识库

code
用户提问 → LLM判断是否查知识库 → RAGFlow切片+向量检索+重排序 → 注入上下文 → 回答

8. MCP 双向协议

python
# MCP Client → 调用ESP32设备
await mcp_client.call_tool("self.light.set_rgb", {"r":255,"g":0,"b":0})

# MCP Server → 暴露云端能力
@mcp_server.tool("search_web")
async def search(query: str) -> str:
    return await web_search(query)

9. 部署方案

方案A:最简安装

code
Docker单容器 (.env配置)
├─ 功能:智能对话 + 单智能体
├─ 资源:2核2G (全API) / 2核4G (含FunASR)
└─ 适合:个人家庭

方案B:全模块安装

code
Docker Compose多容器
├─ Server (Python) + MySQL + Redis
├─ FunASR (可选) + MQTT Broker
└─ Vue Web智控台
├─ 功能:多用户 + 智控台 + 设备管理
└─ 资源:2核4G (全API) / 4核8G (含FunASR)

完整组件清单

code
[ASR] FunASR / SherpaASR / 讯飞流式 / 火山 / 腾讯云 / 阿里云 / 百度云 / OpenAI
[LLM] Qwen / DeepSeek / GLM / Gemini / 火山豆包 / 讯飞 / Ollama / Dify / Coze
[VLLM] 阿里百炼Vision / ChatGLM VLLM
[TTS] EdgeTTS / 火山流式 / 讯飞 / 腾讯云 / CosyVoice / FishSpeech / GPT-SOVITS / Index-TTS / 灵犀
[VAD] SileroVAD
[Voiceprint] 3D-Speaker
[Memory] PowerMem / mem0ai / mem_local_short
[Intent] function_call / intent_llm
[RAG] RAGFlow
[MCP] 设备工具调用 + 服务端能力暴露
[MQTT] ESP32指令下发
[Web] 智控台 (Vue.js)
[OTA] 固件升级

总结

  1. 全模块插件化:ASR/LLM/TTS/Memory 每个环节独立可替换
  2. OpenAI接口标准:任何兼容格式的API都能接入
  3. 本地+云端混合:FunASR/3D-Speaker/SherpaASR 本地运行
  4. 流式全链路:ASR流式 → LLM流式 → TTS流式
  5. MCP双端协议:服务端既调用设备又暴露能力
  6. 生产级部署:Docker Compose + Vue智控台 + OTA