S.A.M, la synthése vocale sur ESP8266 old school

Rémi Sarrailh son

Aujourd’hui nous allons tester ESP8266SAM, Surement pas très utile, mais amusant, ceci est un portage d’une iconique synthèse vocale pour l’ESP8266 (mais aussi l’ESP32 bien que le nom ne le laisse pas supposer)

S.A.M (Software Automatic Mouth) a été développé par Mark Barton et vendu par Don’t Ask Software. Ce programme est sorti sur les Atari 8-bit, l’Apple II et le Commodore 64 en 1982.
https://en.wikipedia.org/wiki/Software_Automatic_Mouth

Afin de vous faire une idée, vous pouvez tester directement SAM grâce à ce site : https://discordier.github.io/sam/

Installation

ESP8266SAM dépends de la bibliothèque ESP8266Audio qui permet de jouer des fichiers MP3, WAV, FLAC, ACC, RTTL mais aussi des fichiers MIDI ou MOD.

Malheureusement ces deux bibliothèques ne sont pas dans le gestionnaire de bibliothèques du logiciel Arduino, il va donc falloir les télécharger puis les copier dans Arduino/Libraries.

https://github.com/earlephilhower/ESP8266Audio
https://github.com/earlephilhower/ESP8266SAM

Il est possible d’utiliser un DAC (Convertisseur Analogique vers Digitale) afin d'avoir un son de meilleur qualité mais bon, pour S.A.M ça n'est pas très utile, allons le tester sans.

Il va nous falloir deux trois composants pour ça, une sortie audio, pour le brancher à des hauts parleurs (ou l'entrée micro de votre PC), deux condensateurs et une résistance (sinon la sortie audio va être vraiment tout pourri)

Test

Le seul exemple disponible est speak mais il est pensé pour utiliser un DAC, résultat ça marche mais avec un son vraiment pas terrible.
On va modifier le code pour le faire fonctionner sans.

Vu que la sortie audio est relié sur RX (qui fait aussi office de sortie I2S), vous allez entendre l'upload du programme.

Code : https://gist.github.com/maditnerd/7428f5649b773708bcb50f787581bef5

 

Bonus, S.A.M en tant qu'API

C'est sympa, mais ça le serait plus de pouvoir lui faire dire ce que l'on veut !
Pour ça voici un programme que j'ai fait.

Ce programme utilise une fonctionne de ESP8266WebServer récemment ajouté, penser à mettre à jour vos cartes sur Arduino (Dans Outils/Type de carte/Gestionnaires de carte)

Alors le programme est un peu long, j'ai ajouté WiFiManager, comme ça pour le connecter vous avez juste à aller sur le hotspot wifi SAM.

Pour le faire parler aller sur http://sam.local/say puis taper votre message.
Il gère le décodage des urls, donc vous pouvez taper des messages avec des espaces du genre: http://sam.local/say/hello world par ex.

J'ai aussi ajouté le support de MDNS et Netbios donc vous devriez pouvoir y accéder sans utiliser l'adresse IP

Pour finir, il y a aussi le support du SSDP donc vous devriez aussi y avoir accès depuis l'onglet réseau de Windows.

 Code : https://gist.github.com/maditnerd/0bf91523dfd903e5f2179da13badfb50

 Partagez c'est important

Cette bibliothèque est plutôt marrante, mais elles manquent cruellement d'exemples, j'ai donc forker la bibliothèque sur https://github.com/usini/ESP8266SAM/ et fait un pull request afin qu'elle soit reversé dans la bibliothèque.

 

Commentaire