基于Seeed Studio XIAO ESP32S3 Sense开发板的实时音频数据分析应用程序。
- 🎵 实时音频波形显示 - 示波器风格的波形图
- 📊 频谱分析 - 实时频率频谱显示
- 📈 音频参数计算 - RMS、声压级、峰值频率等
- 🔊 高级音频特征 - MFCC、谐波分析、响度、尖锐度
- 🔌 简单易用 - 选择COM口,一键连接
- Seeed Studio XIAO ESP32S3 Sense开发板
- USB数据线
- Windows/Linux/macOS系统
pip install -r requirements.txt主要依赖包括:
- PySide6 (Qt6界面)
- pyqtgraph (实时图表)
- numpy (数值计算)
- scipy (信号处理)
- librosa (音频分析)
- pyserial (串口通信)
将 Esp32MicrophoneTest/Esp32MicrophoneTest.ino/Esp32MicrophoneTest.ino.ino 文件烧录到ESP32S3开发板。
python app.py- 将ESP32S3通过USB连接到电脑
- 在应用程序中选择对应的COM口
- 点击"连接"按钮
- 开始实时音频分析
- COM口选择 - 选择ESP32设备对应的串口
- 刷新 - 重新扫描可用串口
- 连接/断开 - 控制与设备的连接状态
- 波特率 - 串口通信波特率(默认115200)
- 实时波形 - 显示音频信号的时域波形
- 频谱分析 - 显示音频信号的频域特征
- RMS - 均方根值,反映信号强度
- 声压级 (dB) - 以分贝为单位的声压级
- 峰值频率 (Hz) - 频谱中幅值最大的频率
- 峰值幅度 - 峰值频率对应的幅度
- 响度 - 基于A加权的响度计算
- 尖锐度 - 高频能量与总能量的比值
- 显示梅尔频率倒谱系数,用于音频特征分析
- 显示基频的各次谐波成分
- 采样率: 16 kHz
- 位深: 16位
- 声道: 单声道 (Mono)
- 更新频率: 20 FPS
- 缓冲区大小: 2048样本
- 分析窗长: 1024样本
反映音频信号的平均能量水平,常用于测量信号强度。
以分贝为单位表示的声音响度级别,是音频信号强度的对数表示。
基于人耳听觉特性的音频特征,广泛用于语音识别和音频分析。
分析基础频率的整数倍频率成分,用于评估音质和音色特征。
- 响度: 基于A加权的感知响度
- 尖锐度: 高频成分的相对强度,影响音色的明亮度
- 确认ESP32设备已正确连接
- 检查驱动程序是否已安装
- 尝试不同的USB端口
- 检查波特率设置是否正确
- 确认ESP32固件已正确烧录
- 检查串口数据格式是否正确
- 重启应用程序和设备
- 查看控制台调试输出
应用程序现在包含详细的调试功能:
- 串口调试输出: 显示数据接收统计
- 缓冲区监控: 实时显示数据缓冲区状态
- 波形调试: 显示波形更新信息
- 谐波分析调试: 显示基频和谐波检测结果
- 状态栏指示器: 实时显示连接和数据状态
- 进度条: 显示数据缓冲区填充状态
如果ESP32硬件不可用,可以使用测试数据发送器:
# 使用测试工具发送模拟音频数据
python test_data_sender.py COM5 -p complex -d 10
# 可用的测试模式:
# sine - 440Hz正弦波
# complex - 复合谐波信号(推荐用于测试谐波显示)
# chirp - 扫频信号
# noise - 白噪声- 关闭其他占用CPU的程序
- 降低更新频率
- 减少显示缓冲区大小
详细的故障排除指南请查看 troubleshooting.md 文件。
WirelessMicrophone/
├── app.py # 主应用程序
├── requirements.txt # Python依赖
├── README.md # 项目说明
└── Esp32MicrophoneTest/ # ESP32固件
└── Esp32MicrophoneTest.ino/
└── Esp32MicrophoneTest.ino.ino
- 可以添加音频录制功能
- 支持WiFi无线传输
- 增加更多音频特征分析
- 添加数据导出功能
本项目采用开源许可证,详见LICENSE文件。
欢迎提交Issue和Pull Request来改进项目。
注意: 请确保在使用前已正确安装所有依赖库,并将ESP32固件烧录到开发板中。