finds.dev← search

// the find

schreibfaul1/ESP32-audioI2S

★ 1,646 · C · GPL-3.0 · updated Jul 2026

Play mp3 files from SD via I2S

An Arduino library for streaming and decoding audio on ESP32 chips via I2S to external DACs and amplifiers. It bundles its own decoders for MP3, AAC, FLAC, Opus, Vorbis, and WAV — no external codec chip required — and handles internet radio streams, SD card playback, Google TTS, and OpenAI speech. Aimed at hobbyists building audio projects on ESP32 dev boards.

All the heavy decoders (Helix MP3, faad2 AAC, Opus, Vorbis, FLAC) are compiled in and work on-chip, so you don't need a separate DSP or codec board. The fixed 48kHz I2S output is a practical choice — it means any Bluetooth sink or DAC just works without resampling surprises. The example coverage is wide: Ethernet boards, M5Stack variants, Google TTS, OpenAI speech, Bluetooth transmitter, and specific DAC chips each get their own directory with working code. Active maintenance with a last push yesterday suggests bug reports actually get addressed.

Hard PSRAM requirement means a lot of the cheapest/most common ESP32 boards are locked out, and the README buries this in a warning rather than explaining why PSRAM is needed or how much. The entire decoder surface lives in one giant Audio.cpp file — useful codebases don't look like that at scale, and debugging a decoder-level issue means hunting through thousands of lines of mixed concerns. ESP32-S2 and C3 are flat-out unsupported, which will surprise anyone who grabbed a random ESP32 board; there's no graceful fallback or stripped-down mode. Documentation is a GitHub wiki with no versioning, so if the API changes under you, there's no changelog telling you what broke.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →