CSV 转换器
本项目演示了如何使用 reSpeaker Lite 开发板从 I2S 接口捕获音频数据,并将其转换为 CSV 格式以供进一步分析或处理。reSpeaker Lite 是一款集成了 XIAO ESP32S3 微控制器的音频开发板,具有双通道麦克风和扬声器。
功能特性
- 从 I2S 接口捕获音频数据
 - 将捕获的音频数据转换为 CSV 格式
 - 通过串行接口流式传输 CSV 数据以供进一步处理
 - 利用 AudioTools 框架进行音频处理和流式传输
 - 易于使用的 AudioLogger 用于调试和监控
 
代码
#include "AudioTools.h"
AudioInfo info(16000, 2, 32);
I2SStream i2sStream; // Access I2S as stream
CsvOutput<int32_t> csvStream(Serial);
StreamCopy copier(csvStream, i2sStream); // copy i2sStream to csvStream
// Arduino Setup
void setup(void) {
    Serial.begin(115200);
    AudioLogger::instance().begin(Serial, AudioLogger::Info);
    
    auto cfg = i2sStream.defaultConfig(RX_MODE);
    cfg.copyFrom(info);
    cfg.i2s_format = I2S_STD_FORMAT; // or try with I2S_LSB_FORMAT
    cfg.is_master = false;  // this module nees a master clock if the ESP32 is master
    cfg.use_apll = false;   // try with yes
    i2sStream.begin(cfg);
    // make sure that we have the correct channels set up
    csvStream.begin(info);
}
// Arduino loop - copy data
void loop() {
    copier.copy();
}
配置说明
info:定义音频配置,包括采样率、通道数(2 为立体声,1 为单声道)和每个采样的位数(32 位)。
i2sStream:创建 I2SStream 类的实例,以将 I2S 接口作为流进行访问。
csvStream:创建 CsvOutput 对象,将音频数据转换为 CSV 格式并通过串行接口进行流式传输。
copier:创建 StreamCopy 对象,将音频数据从 I2S 流复制到 CSV 流。
cfg:使用所需的设置配置 I2S 流,如音频格式、主/从模式和 APLL 使用。
打开 Serial Plotter 查看输出波形。
