Skip to content

Py-Xiaozhi 项目架构

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

核心架构

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

状态管理

IDLE

空闲状态,等待用户交互或唤醒词

CONNECTING

正在建立连接

LISTENING

正在监听用户输入

SPEAKING

正在播放语音回复

数据流

音频输入流程

从用户到服务器

1

麦克风捕获音频并进行采样率转换

2

VAD检测语音活动判断是否有语音

3

使用Opus编码器压缩音频数据

4

通过WebSocket/MQTT协议发送到服务器

音频输出流程

从服务器到用户

1

服务器返回经过Opus编码的音频数据

2

使用Opus解码器解码音频数据

3

通过SoXR进行高质量重采样

4

输出到音频设备进行播放

MCP工具执行流程

命令处理与执行

1

用户发送语音或文本命令

2

MCP服务器解析命令和参数

3

路由到相应的工具执行器

4

执行结果返回给用户界面

模块详情

src/application.py

  • 应用主类,采用单例模式管理全局状态
  • 使用asyncio.Task池进行任务管理
  • 实现设备状态机(IDLE/CONNECTING/LISTENING/SPEAKING)
  • 通过命令队列实现线程安全的异步操作

src/core/resource_manager.py

  • 中央化资源生命周期管理
  • 依赖关系跟踪和优先级清理
  • 资源健康监控和统计
  • 自动清理和错误恢复

src/mcp/mcp_server.py

  • 基于JSON-RPC 2.0的MCP服务器
  • 可扩展的工具插件系统
  • 类型安全的参数验证
  • 支持系统、日历、定时器、音乐等多种工具

src/protocols/

  • 抽象协议接口设计
  • WebSocket协议:实时双向通信
  • MQTT协议:IoT设备通信
  • TLS加密和自动重连机制

src/audio_codecs/

  • 基于Opus的实时音频编解码
  • SoXR高质量音频重采样
  • 异步音频流处理
  • 低延迟音频缓冲管理

src/audio_processing/

  • 基于Vosk的语音活动检测(VAD)
  • 多语言唤醒词检测
  • 相似度算法和拼音匹配
  • 实时音频处理回调

src/display/

  • 策略模式的UI系统架构
  • PyQt5 + qasync的GUI实现
  • 异步CLI界面支持
  • 情感表情和状态显示

src/iot/

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

技术栈

Python

3.9-3.12

AsyncIO

异步编程框架

PyQt5

GUI框架

qasync

Qt异步集成

Vosk

语音识别

OpusLib

音频编解码

SoXR

高质量重采样

SoundDevice

音频设备

WebSockets

实时通信

MQTT

IoT通信

Paho-MQTT

MQTT客户端

Cryptography

加密库

架构特点

单例模式

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

异步架构

全面采用asyncio异步编程,支持高并发和高性能

资源管理

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

状态机模式

设备状态管理采用状态机模式,清晰的状态转换逻辑

插件化设计

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

跨平台兼容

支持Windows、macOS、Linux多平台,优雅降级处理