ESP8266 : I2S et UDP pour transmettre un son en Wifi

Bonjour

Je viens içi faire un simple retour de test d'un programme pour ESP8266 qui m'intriguait, le programme I2STransmit qui propose la transmission par UDP d'un flux audio extrait d'un microphone I2S. Il s'agit d'un des exemples fournis avec l'extension ESP8266 pour IDE Arduino.

Résultat : ça fonctionne, 'genre babyphone'

Le micro utilisé est un module utilisant la puce INMP441 d'Invensense /TDK

C'est un micro plutôt destiné à capter une source proche.
C'est évidement par l'ouverture centrale au dos du petit circuit imprimé que le micro capte le son. (face opposée à la puce)
module micro I2S.jpg

On le trouve, facilement monté en module (<2€) :

pour le bus I2S voir par exemple Wikipedia : I2S — Wikipédia

S'agisant d'une source il faut la relier aux 3 signaux I2SI_x du bus d'entrée I2S de l'ESP8266, un DAC serait, lui, relié à l'interface de sortie I2SO_x :

5 fils relient donc le module à la carte Wemos D1 Mini utilisée

  • D5/GPIO14 - WS
  • D6/GPIO12 - Data
  • D7/GPIO13 - BCK
    • 2 fils d'alimentation sous 3,3 Volts

Au niveau du micro j'ai relié L/R à la masse ( fonctionnement sur le canal Gauche)
micro I2s.png
micro en marche.jpg

Dans le code d'exemple I2STransmit penser à renseigner :
en lignes 16 et 17 les paramètres du point d'accès,
en ligne 20 l'adresse IP du destinataire, (qui écoute le flux audio)

A l'autre bout (ordinateur en écoute du flux audio) j'ai testé sous mon Linux habituel la simple ligne de commande 'enfilant' netcat et play (de sox), proposée par l'auteur de l'exemple.
Résultat OK, comme attendu.

nc -u -p 8266 -l | play -t raw -r 11025 -b 16 -c 2 -e signed-integer -

Il est probable que ça fonctionne également de cette façon avec un Mac.....si netcat et sox y tournent avec les options à utiliser ici.

Pour Windows il faut trouver une autre solution, je pensais à PyAudio et effectivement une petite recherche m'a amené sur ce fil qui propose une solution sous Python.
Après avoir augmenté la taille du buffer à 100 , adapté à 11025 Hz la fréquence d'échantillonnage du flux j'ai eu un résultat acceptable... disons que le son passe....
Je joins le petit programme play.py qui nécessite des améliorations !
(lancer Python play.py)

Voilà de quoi jouer un peu en Audio sur WiFi
La librairie utilisée sur l'ESP8266 ouvre d'ailleurs des perspectives intéressantes

module micro I2S.jpg

micro en marche.jpg

play.zip (723 Bytes)

micro I2s.png

Réservé pour un complément éventuel, ESP32 peut être… Réception sur smartphone peut être…