py-xiaozhi 是一个使用 Python 实现的小智语音客户端,旨在通过代码学习和在没有硬件条件下体验 AI 小智的语音功能。 本仓库是基于xiaozhi-esp32移植
- 仔细阅读/docs/使用文档.md 启动教程和文件说明都在里面了
- main是最新代码,每次更新都需要手动重新安装一次pip依赖防止我新增依赖后你们本地没有
- 目前在树莓派b4、b5、jetson等设备运行有问题
- mac的话 m1、m2等会出现找不到opuslib,目前有人提示说是python版本问题
- 跪求大佬加入!!!
- Python 3.9.13+(推荐 3.9.13)最大支持版本3.12
- Windows/Linux/macOS
- main 主分支
- feature/v1 第一个版本
- feature/visual 视觉分支
- 语音交互:支持语音输入与识别,实现智能人机交互。
- 图形化界面:提供直观易用的 GUI,方便用户操作。
- 音量控制:支持音量调节,适应不同环境需求。
- 会话管理:有效管理多轮对话,保持交互的连续性。
- 加密音频传输:保障音频数据的安全性,防止信息泄露。
- CLI 模式:支持命令行运行,适用于嵌入式设备或无 GUI 环境。
- 自动验证码处理:首次使用时,程序自动复制验证码并打开浏览器,简化用户操作。
- 唤醒词:支持语音唤醒,免去手动操作的烦恼。
- 键盘按键:监听可以最小化视口
+----------------+
| |
v |
+------+ 唤醒词/按钮 +------------+ | +------------+
| IDLE | -----------> | CONNECTING | --+-> | LISTENING |
+------+ +------------+ +------------+
^ |
| | 语音识别完成
| +------------+ v
+--------- | SPEAKING | <-----------------+
完成播放 +------------+
├── .github # GitHub 相关配置
│ └── ISSUE_TEMPLATE # Issue 模板目录
│ ├── bug_report.md # Bug 报告模板
│ ├── code_improvement.md # 代码改进建议模板
│ ├── documentation_improvement.md # 文档改进建议模板
│ └── feature_request.md # 功能请求模板
├── config # 配置文件目录
│ └── config.json # 应用程序配置文件
├── docs # 文档目录
│ ├── images # 文档图片资源
│ │ ├── QQ音乐接口配置.png # QQ音乐接口配置示例图
│ │ ├── 唤醒词.png # 唤醒词设置示例图
│ │ └── 群聊.jpg # 社区交流群图片
│ ├── 使用文档.md # 用户使用指南
│ └── 异常汇总.md # 常见错误及解决方案
├── libs # 依赖库目录
│ └── windows # Windows 平台特定库
│ └── opus.dll # Opus 音频编解码库
├── scripts # 实用脚本目录
│ ├── dir_tree.py # 生成目录树结构脚本
│ └── py_audio_scanner.py # 音频设备扫描工具
├── src # 源代码目录
│ ├── audio_codecs # 音频编解码模块
│ │ └── audio_codec.py # 音频编解码器实现
│ ├── audio_processing # 音频处理模块
│ │ ├── vad_detector.py # 语音活动检测实现(用于实时打断)
│ │ └── wake_word_detect.py # 语音唤醒词检测实现
│ ├── constants # 常量定义
│ │ └── constants.py # 应用程序常量(状态、事件类型等)
│ ├── display # 显示界面模块
│ │ ├── base_display.py # 显示界面基类
│ │ ├── cli_display.py # 命令行界面实现
│ │ └── gui_display.py # 图形用户界面实现
│ ├── iot # IoT设备相关模块
│ │ ├── things # 具体设备实现目录
│ │ │ ├── CameraVL # 摄像头与视觉识别模块
│ │ │ │ ├── Camera.py # 摄像头控制实现
│ │ │ │ └── VL.py # 视觉识别实现
│ │ │ ├── lamp.py # 智能灯具控制实现
│ │ │ ├── music_player.py # 音乐播放器实现
│ │ │ └── speaker.py # 智能音箱控制实现
│ │ ├── thing.py # IoT设备基类定义
│ │ └── thing_manager.py # IoT设备管理器(统一管理各类设备)
│ ├── protocols # 通信协议模块
│ │ ├── mqtt_protocol.py # MQTT 协议实现(用于设备通信)
│ │ ├── protocol.py # 协议基类
│ │ └── websocket_protocol.py # WebSocket 协议实现
│ ├── utils # 工具类模块
│ │ ├── config_manager.py # 配置管理器(单例模式)
│ │ ├── logging_config.py # 日志配置
│ │ ├── system_info.py # 系统信息工具(处理 opus.dll 加载等)
│ │ └── volume_controller.py # 音量控制工具(跨平台音量调节)
│ └── application.py # 应用程序主类(核心业务逻辑)
├── .gitignore # Git 忽略文件配置
├── LICENSE # 项目许可证
├── README.md # 项目说明文档
├── main.py # 程序入口点
├── requirements.txt # Python 依赖包列表(通用)
├── requirements_mac.txt # macOS 特定依赖包列表
└── xiaozhi.spec # PyInstaller 打包配置文件
- 新增 GUI 页面,无需在控制台一直按空格
- 代码模块化,拆分代码并封装为类,职责分明
- 音量调节,可手动调整音量大小
- 自动获取 MAC 地址,避免 MAC 地址冲突
- 支持 WSS 协议,提升安全性和兼容性
- GUI 新增小智表情与文本显示,增强交互体验
- 新增命令行操控方案,适用于 Linux 嵌入式设备
- 自动对话模式,实现更自然的交互
- 语音唤醒,支持唤醒词激活交互 (默认关闭需要手动开启)
- IoT 设备集成,实现更多物联网功能
- 联网音乐播放
- 新增 Volume控制类统一声音改变
- 新增 视觉多模态
- 修复 goodbye 后无法重连 的问题
- 解决 macOS 和 Linux 运行异常(原先使用 pycaw 处理音量导致)
- 优化“按住说话”按钮,使其更明显
- 修复 Stream not open 错误(目前 Windows 不再触发,其他系统待确认)
- 修复 没有找到该设备的版本信息,请正确配置 OTA 地址提示
- 修复 cli模式update_volume缺失问题
- 新 GUI(Electron),提供更现代的用户界面
欢迎提交 Issues 和 Pull Requests!