Skip to content

Py-Xiaozhi 项目架构

基于 Python 实现的小智语音客户端,采用模块化设计,支持多种通信协议和设备集成

核心架构

核心架构图:展示了应用核心、资源管理器、MCP服务器、通信协议层、音频处理系统、用户界面系统、IoT设备管理等模块的关系

模块详情

src/application.py

  • 应用主类,单例模式管理全局状态
  • 异步任务管理和状态机控制
  • 设备状态(IDLE/CONNECTING/LISTENING/SPEAKING)
  • 线程安全的命令队列处理

src/mcp/

  • 基于JSON-RPC 2.0的MCP服务器
  • 丰富的工具生态系统(系统、日历、地图等)
  • 可扩展的插件架构
  • 类型安全的参数验证

src/protocols/

  • 抽象协议接口设计
  • WebSocket和MQTT协议实现
  • TLS加密和自动重连机制
  • 统一的通信抽象层

src/audio_codecs/

  • 基于Opus的实时音频编解码
  • WebRTC音频回声消除(AEC)处理器
  • SoXR高质量音频重采样
  • 系统音频录制与环回处理
  • 异步音频流处理
  • 低延迟音频缓冲管理

src/audio_processing/

  • AEC声学回声消除处理器
  • 基于Sherpa-ONNX的语音活动检测(VAD)
  • 多语言唤醒词检测
  • 实时音频处理和回调机制

src/display/

  • 策略模式的UI系统架构
  • PyQt5 GUI和CLI界面实现
  • 异步界面更新
  • 状态显示和用户交互

src/iot/

  • 基于Thing抽象的IoT设备框架
  • 统一设备管理和状态同步
  • 动态设备发现
  • 智能家居设备控制

src/utils/

  • 配置管理和设备指纹
  • 日志系统和资源查找
  • 音量控制和通用工具
  • 跨平台兼容性处理

技术栈

Python

3.9-3.12

AsyncIO

异步编程框架

PyQt5

GUI框架

qasync

Qt异步集成

Sherpa-ONNX

语音识别引擎

WebRTC AEC

WebRTC音频处理模块

OpusLib

音频编解码

SoXR

高质量重采样

SoundDevice

音频设备管理

WebSockets

实时通信协议

MQTT

IoT消息传输

MCP Protocol

模型上下文协议

Cryptography

加密安全库

Thing抽象

IoT设备抽象

JSON-RPC

远程过程调用

架构特点

单例模式

应用核心采用线程安全的单例模式,保证全局唯一实例和状态一致性

异步架构

全面采用asyncio异步编程,支持高并发处理和实时音频流

资源管理

中央化资源管理器,智能依赖跟踪和优雅清理机制

状态机模式

设备状态管理采用状态机模式,清晰的状态转换和错误恢复

插件化生态

MCP工具和IoT设备采用插件化设计,支持热插拔和动态扩展

跨平台兼容

支持Windows、macOS、Linux多平台,智能特性检测和优雅降级