# udp_server **Repository Path**: diystring/udp_server ## Basic Information - **Project Name**: udp_server - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-07 - **Last Updated**: 2026-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 小智 AI 语音交互 — Arduino 版 (离线唤醒 + LCD) 核心流水线:**语音输入 → OPUS编码 → WebSocket → 云端 ASR/LLM/TTS → OPUS解码 → 语音输出** ## 功能 | 特性 | 实现方式 | |------|---------| | 语音唤醒 | ESP-SR 唤醒词 "你好小智" 或 VAD 触发 | | LCD 显示 | ST7789 240×240, 显示状态 + 对话文字 | | 音频采集 | I2S INMP441 MEMS 麦克风 | | 音频播放 | I2S MAX98357A 功放 + 扬声器 | | 按钮 | GPIO0 手动触发 (PTT 备用) | | 编码 | OPUS 16kHz 单声道 60ms 帧 | ## 硬件接线 ``` INMP441 ESP32-S3 MAX98357A ST7789 LCD ┌──────┐ ┌────────┐ ┌─────────┐ ┌──────────┐ │ VDD │───────────│ 3.3V │───────────│ VIN │ │ VCC GND │── 3.3V/GND │ GND │───────────│ GND │───────────│ GND │ │ SCL SDA │── GPIO12/11 │ SCK │───────────│ GPIO4 │ │ │ │ CS DC │── GPIO10/13 │ WS │───────────│ GPIO5 │ │ │ │ RST BL │── GPIO14/21 │ SD │───────────│ GPIO6 │ │ │ └──────────┘ │ L/R │───────────│ GND │ │ │ └──────┘ │GPIO15 │───────────│ BCLK │ │GPIO16 │───────────│ LRC │ │GPIO17 │───────────│ DIN │ │GPIO18 │───────────│ SD │ │ │ └─────────┘ ┌──────┐│ │ 按钮 ────│GPIO0 ││ │ └──────┘└────────┘ ``` ## 唤醒模式 ### 模式 A: VAD 触发 (默认, 开箱即用) 无需额外模型文件。对设备 **大声说话** 即可触发(语音活动检测)。 设置 `USE_WAKE_WORD=0` 或删除 `-DUSE_WAKE_WORD=1`。 ### 模式 B: ESP-SR 唤醒词 "你好小智" 1. 下载 ESP-SR 模型文件放入 `data/srmodels/` 2. 在 `platformio.ini` 中保留 `-DUSE_WAKE_WORD=1` 3. 烧录模型: ```bash pio run -t buildfs pio run -t uploadfs ``` 4. 重新编译烧录固件 ## 编译 & 烧录 ### 1. 修改配置 编辑 `include/config.h`: ```cpp #define WIFI_SSID "你的WiFi" #define WIFI_PASSWORD "你的密码" #define SERVER_URL "ws://你的服务器:8000" ``` ### 2. 编译烧录 ```bash cd arduino_xiaozhi pio run -t upload # 编译并烧录 pio device monitor # 串口监视 ``` ### 3. LCD 引脚修改 在 `platformio.ini` 的 `build_flags` 中修改: ``` -DTFT_MOSI=11 -DTFT_SCLK=12 -DTFT_CS=10 -DTFT_DC=13 -DTFT_RST=14 -DTFT_BL=21 ``` ## 使用方式 1. 上电后 LCD 显示启动状态,连接 WiFi 和服务器 2. **说"你好小智"(或大声说话)** → 开始录音 3. 说完后自动停止(检测到静音)或按按钮手动停止 4. AI 处理后语音回复,LCD 同步显示文字 5. 自动回到空闲状态,等待下次唤醒 ## 文件结构 ``` arduino_xiaozhi/ ├── platformio.ini # PlatformIO 项目配置 ├── partitions_wake.csv # 分区表 (含 SPIFFS for 模型) ├── include/ │ ├── config.h # 所有可配置项 │ ├── audio_driver.h # I2S + OPUS 编解码 │ ├── xiaozhi_protocol.h # WebSocket 协议 │ ├── wake_word.h # VAD / ESP-SR 双模唤醒 │ └── lcd_display.h # ST7789 LCD 驱动 ├── src/ │ └── main.cpp # 主程序 (状态机) ├── data/srmodels/ # (可选) ESP-SR 模型文件 └── README.md ``` ## 与原版对比 | 方面 | 原版 (xiaozhi-esp32) | Arduino 版 | |------|---------------------|:---------:| | 框架 | ESP-IDF + CMake | Arduino / PlatformIO | | 唤醒 | ESP-SR AFE | ESP-SR 或 VAD | | 显示 | LVGL (表情动画) | TFT_eSPI (状态+文字) | | MCP | 设备/云端工具 | 无 | | 板卡 | 70+ 种硬件 | INMP441+MAX98357A+ST7789 | | 代码量 | ~20,000+ 行 | ~800 行 | | 上手难度 | 需 ESP-IDF 环境 | PlatformIO 一键编译 |