7月的电音

📅 2026/7/10 1:44:20
7月的电音
项目问题总结精简版问题1WiFi 连接失败现象E (15021) wifi station: Failed to connect to SSID:MinServer, password:12345678原因ESP32 开机时电脑热点还没开解决方案先开热点再给 ESP32 上电问题2环形缓冲区创建失败现象E (1637) AUDIO: Failed to create ring buffer原因512KB 太大ESP32-S3 内部 SRAM 只有 512KB还要给系统和其他任务用解决方案减小缓冲区到 64KB内部 RAM或启用 PSRAM把缓冲区放外部问题3PSRAM 未启用现象一直降级到内部 RAM只能用 64KB原因menuconfig 没配置 PSRAM解决方案进入Component config → ESP PSRAM启用选 Octal/Quad 模式问题4音量大/破音现象声音太大喇叭破音原因没有软件衰减直接输出满幅解决方案添加VOLUME_ATTENUATION 0.2f衰减到 20%问题5播放重复每句两遍现象普通话说完闽南语又说一遍原因TTS 生成的是双语对照普通话 闽南语不是播放器的问题解决方案修改 TTS 逻辑只生成一种语言问题6电音/噪音核心问题现象播放时有严重电音断断续续原因分析排查步骤结果测试音清晰吗✅ 清晰 → I2S 硬件正常WAV 电脑播放清晰吗✅ 清晰 → 音频文件正常固定 20ms 发送间隔精确吗❌time.sleep()有误差 → 速度不匹配暂停后还有电音✅ 有 → I2S 残留数据缓冲区满了怎么处理❌ 满了继续发丢包解决方案用ACK 流量控制代替固定间隔ESP32 控制 Python 发包速度用PSRAM把环形缓冲区扩大到 512KB暂停时写零数据清空 I2S只有成功放入缓冲区才回复 ACK最终架构PC (Python) ESP32-S3 ┌──────────────┐ ┌──────────────────────┐ │ HTTP 控制页面 │──控制命令───▶│ 命令接收 (3334) │ └──────────────┘ └──────────────────────┘ │ │ ▼ ▼ ┌──────────────┐ ┌──────────────────────┐ │ UDP 音频发送 │──数据ACK──▶│ UDP接收 (3333) │ │ (等待ACK) │◀──ACK──────│ → 放入环形缓冲区 │ └──────────────┘ └──────────────────────┘ │ ▼ ┌──────────────────────┐ │ 环形缓冲区 512KB │ │ (PSRAM) │ └──────────────────────┘ │ ▼ ┌──────────────────────┐ │ I2S 播放 (24kHz) │ └──────────────────────┘ │ ▼ 喇叭关键教训先开热点再给 ESP32 上电→ WiFi 才能连上大缓冲区要用 PSRAM→ 内部 SRAM 不够固定时间间隔不靠谱→ 用 ACK 流量控制自适应先确认硬件正常→ 测试音验证 I2S电脑播放验证 WAV日志要加够→ 没有日志没法排查电音TTS 要检查输出→ 双语对照不是播放器的 bug暂停时清空 I2S→ 否则残留数据继续播放