Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. ESP
  3. ESP32-audioI2S

ESP32-audioI2S

GPL-3.0C3.4.7

An Arduino library for ESP32 multi-core chips to play audio files and streams from SD card or network via I2S to external DACs/amplifiers.

GitHubGitHub
1.7k stars415 forks0 contributors

What is ESP32-audioI2S?

ESP32-audioI2S is an Arduino library that allows ESP32 multi-core microcontrollers to play audio files from an SD card or stream audio over a network via the I2S protocol to external DACs and amplifiers. It solves the problem of adding high-quality, multi-format audio playback to embedded projects without requiring complex low-level audio handling.

Target Audience

Embedded developers and hobbyists building audio projects with ESP32 boards, such as internet radios, music players, or voice-enabled devices, who need reliable I2S audio output with support for various codecs.

Value Proposition

Developers choose this library for its extensive built-in audio decoder support, compatibility with popular I2S hardware, and additional features like network streaming and TTS integration, all within an Arduino-friendly framework.

Overview

Play mp3 files from SD via I2S

Use Cases

Best For

  • Building internet radio players with ESP32 and I2S amplifiers
  • Creating portable music players that read MP3/AAC files from SD cards
  • Adding voice output to IoT projects using Google TTS or OpenAI speech
  • Developing embedded systems with multi-format audio playback (e.g., FLAC, Opus)
  • Prototyping audio streaming devices with metadata display capabilities
  • Designing stereo audio setups with dual MAX98357A amplifiers

Not Ideal For

  • Projects using ESP32-S2 or ESP32-C3 chips without PSRAM
  • Applications requiring audio playback without external I2S DACs or amplifiers
  • Teams prioritizing minimal external components in embedded designs
  • Developers needing audio recording capabilities alongside playback

Pros & Cons

Pros

Multi-format Decoding

Includes built-in decoders for MP3, AAC, FLAC, Vorbis, M4A, and Opus, allowing playback from SD cards and streams without additional libraries.

I2S Hardware Support

Tested with popular DACs like MAX98357A, UDA1334A, and PCM5102A, ensuring compatibility with common audio hardware for reliable output.

Network Streaming

Supports live icy-streams and online audio sources, enabling internet radio and streaming applications directly from the network.

Text-to-Speech Integration

Compatible with Google TTS and OpenAI speech synthesis, adding voice output features to IoT projects with minimal setup.

Detailed Callbacks

Provides extensive audio event callbacks for metadata, bitrate, and logging, aiding in debugging and user interface development.

Cons

Chip Limitations

Only works on multi-core ESP32, ESP32-S3, and ESP32-P4 with PSRAM, excluding ESP32-S2 and ESP32-C3, which restricts hardware choices.

External Hardware Dependency

Requires external I2S DACs and amplifiers, adding cost and complexity to projects compared to internal audio solutions or software-only playback.

Fixed Output Frequency

Outputs at a constant 48kHz, which may not suit all audio sources or require resampling, potentially affecting audio quality or compatibility with some hardware.

Decoder Constraints

Some formats have limitations, such as Vorbis bitrate caps (<=196Kbit/s) and FLAC blocksize restrictions, which could impact high-fidelity playback or specific use cases.

Frequently Asked Questions

Quick Stats

Stars1,654
Forks415
Contributors0
Open Issues24
Last commit2 days ago
CreatedSince 2018

Tags

#embedded-audio#esp32#opus#i2s#audio-decoding#dac#text-to-speech#mp3#i2s-audio#sd-card#webradio#aac#network-streaming#arduino-library

Built With

E
ESP32-S3
E
ESP32
A
Arduino

Included in

ESP2.3k
Auto-fetched 19 hours ago

Related Projects

Wasm3Wasm3

🚀 A fast WebAssembly interpreter and the most universal WASM runtime

Stars7,965
Forks531
Last commit6 days ago
IRremoteESP8266IRremoteESP8266

Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/

Stars3,547
Forks922
Last commit1 month ago
ESPAudioESPAudio

Arduino library to play MOD, WAV, FLAC, MIDI, RTTTL, OGG/Opus, MP3, and AAC files on I2S DACs or with a software emulated delta-sigma DAC on the ESP8266 and ESP32 and Pico

Stars2,370
Forks470
Last commit3 days ago
TinyGSMTinyGSM

A small Arduino library for GSM modules, that just works

Stars2,208
Forks789
Last commit3 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub