Skip to content

【开源自荐】py-xiaozhi:轻量级Python版小智AI语音助手(支持多模态交互、IoT控制与音乐播放,纯代码实现,无需硬件即可体验) #6643

@huangjunsen0406

Description

@huangjunsen0406

py-xiaozhi 小智语音AI助手

GitHub地址

一个基于xiaozhi-esp32移植到Python实现的小智AI语音助手客户端,支持语音交互、多模态视觉识别、IoT设备控制、联网音乐播放等功能,无需专用硬件即可体验AI语音助手的智能交互。

预览

Image

项目背景

本项目基于开源项目xiaozhi-esp32进行Python生态的移植重构,通过桌面端软件方案复现智能语音交互核心功能。相较于原ESP32硬件方案,本实现采用纯Python开发并整合PyAudio、Vosk等开源库,在保留唤醒词识别、语音对话、指令执行等核心功能的同时,实现了功能扩展,使普通用户无需专用硬件设备即可体验AI语音交互技术。

解决的痛点

  • 硬件依赖高:传统语音助手需要专用硬件,成本高且不便携,本项目仅需普通电脑和麦克风
  • 学习门槛高:市面上缺乏开源的AI语音交互学习平台,本项目提供完整源码和详细文档
  • 功能单一:大多数开源语音助手功能单一,本项目集成多种智能交互功能
  • 二次开发难:闭源系统难以进行个性化定制,本项目采用模块化设计便于扩展
  • 跨平台支持差:很多语音助手只支持特定平台,本项目支持Windows、macOS和Linux

解决方案

  • 纯软件实现:使用Python实现全功能AI语音助手,无需专用硬件
  • 开源代码:提供完整源代码和详细文档,便于学习和二次开发
  • 多功能集成:集成语音交互、多模态视觉、IoT控制、音乐播放等多种功能
  • 模块化设计:采用分层架构设计,各功能模块职责明确,便于扩展和定制
  • 跨平台支持:经过充分测试,确保在Windows、macOS和Linux系统上稳定运行

功能特点

语音交互

  • 双重交互模式:支持长按对话模式(按住说话,松手发送)和自动对话模式(自动检测语音并发送)
  • 语音唤醒:支持自定义唤醒词激活系统,免去手动操作(默认使用"小智小智"作为唤醒词)
  • 实时打断:支持在AI回答过程中随时打断,实现更自然的对话体验
  • 连续对话:智能保持对话上下文,无需重复唤醒即可继续对话
  • 加密音频传输:采用WSS协议,保障音频数据的安全传输

视觉多模态

  • 摄像头控制:支持通过语音命令打开/关闭摄像头
  • 图像智能识别:集成智普视觉大模型,能够分析和描述摄像头捕获的画面内容
  • 多场景支持:适用于物体识别、场景描述、文字识别等多种视觉任务

IoT设备控制

  • 统一设备管理:采用ThingManager统一管理所有IoT设备
  • 灵活扩展架构:基于Thing基类的设备抽象,便于添加自定义设备
  • 虚拟设备支持:内置灯控、温度传感器等虚拟设备,便于功能演示
  • 设备状态同步:实时同步和显示设备状态变化

音乐播放

  • 在线音乐搜索:支持通过歌名、歌手搜索在线音乐资源
  • 播放控制:支持播放、暂停、上一首、下一首等基本控制
  • 歌词显示:支持显示当前播放歌曲的歌词
  • 播放进度控制:支持查看和调整播放进度
  • 本地缓存:自动缓存播放过的音乐,减少流量消耗

系统功能

  • 双界面模式:支持图形界面(GUI)和命令行界面(CLI)两种运行模式
  • 跨平台音量控制:提供统一的音量控制接口,支持各大主流操作系统
  • 系统状态可视化:直观显示系统当前状态和操作反馈
  • 丰富的配置选项:支持通过config.json自定义各项功能参数
  • 自动验证码处理:首次使用时自动复制验证码并打开浏览器,简化用户操作

技术栈

  • 后端:Python 3.9-3.12
  • 音频处理:PyAudio, Opus (音频编解码)
  • 语音识别:Vosk (离线语音唤醒)
  • GUI界面:Tkinter (轻量级跨平台界面)
  • 通信协议:WebSocket/MQTT (双协议支持)
  • 多媒体:Pygame (高性能音乐播放)
  • IoT控制:自定义协议 (设备抽象和管理)
  • 视觉识别:OpenCV, 智普视觉API

项目结构

├── .github                          # GitHub 相关配置
├── config                           # 配置文件目录
├── docs                             # 详细文档目录
├── hooks                            # PyInstaller钩子目录
├── libs                             # 依赖库目录
├── resources                        # 资源文件目录
├── scripts                          # 实用脚本目录
├── src                              # 源代码目录
│   ├── audio_codecs                 # 音频编解码模块
│   ├── audio_processing             # 音频处理模块
│   ├── constants                    # 常量定义
│   ├── display                      # 显示界面模块
│   ├── iot                          # IoT设备相关模块
│   │   ├── things                   # 具体设备实现
│   │   ├── thing.py                 # 设备基类
│   │   └── thing_manager.py         # 设备管理器
│   ├── protocols                    # 通信协议模块
│   ├── utils                        # 工具类模块
│   └── application.py               # 应用程序主类
├── LICENSE                          # 项目许可证
├── README.md                        # 项目说明文档
├── main.py                          # 程序入口点
└── requirements.txt                 # Python 依赖包列表

安装运行

  1. 克隆项目仓库

    git clone https://github.com/huangjunsen0406/py-xiaozhi.git
    cd py-xiaozhi
    
  2. 安装依赖

  • 请根据项目根目录的docs下的文档进行安装其他第三方依赖
pip install -r requirements.txt  # Windows/Linux
pip install -r requirements_mac.txt  # macOS
  1. 运行程序
    python main.py  # 默认GUI模式
    python main.py --mode cli  # 命令行模式
    python main.py --protocol mqtt  # 使用MQTT协议
    

使用说明

基本操作

  • 启动程序:运行main.py
  • 语音交互:点击麦克风按钮或使用唤醒词激活
  • 结束对话:等待AI回复完成或点击停止按钮
  • 打断功能:在AI回答过程中使用F3键或界面按钮打断
  • 音量调节:使用界面上的音量滑块调节

语音命令示例

  • 基础交互:"你好"、"你是谁"、"谢谢"、"再见"
  • 灯光控制:"打开/关闭客厅的灯"
  • 音乐播放:"播放周杰伦的稻香。"
  • 摄像头控制:"打开摄像头"、"识别画面"、"关闭摄像头"
  • 音量控制:"把音量调到50%"、"音量调小一点"

配置说明

  • 唤醒词设置:在config.json中设置USE_WAKE_WORD为true
  • 摄像头配置:配置CAMERA部分的参数,包括摄像头索引和视觉API密钥
  • 音频设置:调整AUDIO部分的参数,包括采样率和缓冲区大小
  • 协议选择:设置默认通信协议(WebSocket或MQTT)

高级功能

  • 自定义IoT设备:通过继承Thing基类创建自定义设备
  • 视觉识别配置:接入智普视觉大模型API,实现更强大的视觉分析能力
  • 自动化任务:设置定时任务或条件触发的自动化场景

状态流转图

                        +----------------+
                        |                |
                        v                |
+------+  唤醒词/按钮  +------------+   |   +------------+
| IDLE | -----------> | CONNECTING | --+-> | LISTENING  |
+------+              +------------+       +------------+
   ^                                            |
   |                                            | 语音识别完成
   |          +------------+                    v
   +--------- |  SPEAKING  | <-----------------+
     完成播放 +------------+

常见问题解决

  • 找不到音频设备:检查麦克风和扬声器是否正常连接和启用
  • 唤醒词不响应:确认config.json中USE_WAKE_WORD设置为true,模型路径正确
  • 网络连接失败:检查网络设置和防火墙配置,确保WebSocket通信未被阻止
  • 视觉识别失败:确认摄像头权限已授予,智普API密钥正确配置

贡献与支持

许可证

MIT License

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions