import os
from machine import I2S, Pin
# ======= CONFIGURACIÓN DE ALTA VELOCIDAD =======
CHUNK_SIZE = 256
INTERNAL_BUFFER = 4096
# Pines para ESP32-S3 (Ajustados para MAX98357A)
# Entrada (INMP441)
RECORD_SCK, RECORD_WS, RECORD_SD = 12, 13, 14
# Salida (MAX98357A)
PLAY_SCK, PLAY_WS, PLAY_SD = 5, 6, 7
FORMAT = I2S.MONO
SAMPLE_RATE = 16000
BITS = 16
# Configuración de Entrada (Micrófono)
audio_in = I2S(0, sck=Pin(RECORD_SCK), ws=Pin(RECORD_WS), sd=Pin(RECORD_SD),
mode=I2S.RX, bits=BITS, format=FORMAT,
rate=SAMPLE_RATE, ibuf=INTERNAL_BUFFER)
# Configuración de Salida (Amplificador MAX98357A)
audio_out = I2S(1, sck=Pin(PLAY_SCK), ws=Pin(PLAY_WS), sd=Pin(PLAY_SD),
mode=I2S.TX, bits=BITS, format=FORMAT,
rate=SAMPLE_RATE, ibuf=INTERNAL_BUFFER)
samples = bytearray(CHUNK_SIZE)
print("S3: Pass-through I2S Activo (MAX98357A)")
try:
while True:
# Lee del micrófono y escribe al amplificador de inmediato
num_read = audio_in.readinto(samples)
if num_read > 0:
audio_out.write(samples[:num_read])
except KeyboardInterrupt:
audio_in.deinit()
audio_out.deinit()