I²S Audio Microphone

The i2s_audio microphone platform allows you to receive audio via the the I²S Audio Component.

This platform only works on ESP32 based chips.


Audio and voice components consume a significant amount of resources (RAM, CPU) on the device.

Crashes are likely to occur if you include too many additional components in your device’s configuration. In particular, Bluetooth/BLE components are known to cause issues when used in combination with Voice Assistant and/or other audio components.

# Example configuration entry
  - platform: i2s_audio
    id: external_mic
    adc_type: external
    i2s_din_pin: GPIO23

  - platform: i2s_audio
    id: adc_mic
    adc_type: internal
    adc_pin: GPIO35

Configuration variables:

  • adc_type (Required, enum):

    • external: Use an external ADC connected to the I²S bus.

    • internal: Use the internal ADC of the ESP32. Only supported on ESP32, no variant support.

  • channel (Optional, enum): The channel of the microphone. One of left or right. Defaults to right.

  • sample_rate (Optional, positive integer): I2S sample rate. Defaults to 16000.

  • bits_per_sample (Optional, enum): The bit depth of the audio samples. Note that while set to 32bit, the samples will be scaled down to 16bit before being forwarded. One of 16bit or 32bit. Defaults to 16bit.

  • use_apll (Optional, boolean): I2S using APLL as main I2S clock, enable it to get accurate clock. Defaults to false.

  • i2s_audio_id (Optional, ID): The ID of the I²S Audio you wish to use for this microphone.

  • All other options from Microphone

External ADC

  • i2s_din_pin (Required, Pin Schema): The GPIO pin to use for the I²S DIN/SDIN (Data In) signal, also referred to as SD/SDATA (Serial Data) or ADCDAT (Analog to Digital Converter Data).

  • pdm (Required, boolean): Set this to true if your external ADC uses PDM (Pulse Density Modulation) instead of I²S.


    PDM microphones are only supported on ESP32 and ESP32-S3.

Internal ADC


Internal ADC microphones are only supported on a regular ESP32, not the variants.

  • adc_pin (Required, Pin Schema): The GPIO pin to use for the ADC input.

Known Devices

M5Stack Atom Echo

  - platform: i2s_audio
    adc_type: external
    i2s_din_pin: GPIO23
    pdm: true

RaspiAudio Muse Luxe

  - platform: i2s_audio
    i2s_din_pin: GPIO35
    adc_type: external
    pdm: false

See also