Créez une synthèse vocale ESP32 à l’aide de Wit.ai

Text-to-Speech on ESP32 using Wit.ai
  • Des voix au son naturel optimisées par des algorithmes d’IA avancés
  • Le dispositif ESP32 utilise de très petites ressources mémoire pour ses opérations.
  • Le système fonctionne sans avoir recours à des bibliothèques de traitement audio complexes, qui s’exécutent sur des machines locales.
  • Le système fournit une solution évolutive qui prend en charge les cas d’utilisation commerciale.
  • Le système reçoit des mises à jour et des améliorations automatiques, qui sont gérées depuis le serveur.
Ressource Limitation Impact sur TTS
Mémoire RAM ~ 520 Ko au total Insuffisant pour les grands modèles de synthèse vocale
Vitesse de traitement Double cœur 240 MHz Trop lent pour une génération vocale de haute qualité en temps réel
Espace de stockage Flash typique de 4 Mo Impossible de stocker des bases de données vocales complètes
Traitement audio Pas de DSP dédié La synthèse audio complexe crée des goulots d’étranglement en termes de performances

L’implémentation ESP32 de la synthèse vocale (TTS) moderne comporte de nombreux niveaux différents de traitement complexe au cours du pipeline de traitement TTS, notamment :

∗ Normalisation du texte – Conversion de la représentation numérique en mots, expansion des abréviations et représentation des symboles sous forme de caractères lisibles par l’homme.

∗ Analyse linguistique – Décomposer le texte en plusieurs phonèmes (sons de la parole) et déterminer comment chaque phonème doit être prononcé selon les règles de la linguistique.

∗ Génération de prosodie – Déterminer où utiliser les pauses naturelles, comment souligner des mots spécifiques présentant des variations de hauteur et de rythme lorsque l’on parle.

∗ Synthèse audio – Transformer les données vocales traitées sous une forme pouvant être stockée dans un format audio numérique.

∗ Lecture audio – Diffusion de l’audio numérique généré via les haut-parleurs de l’ESP32.

Composants requis pour le projet de synthèse vocale ESP32, notamment la carte ESP32, l'amplificateur MAX98357A et le haut-parleur

Composant Quantité Remarques
Carte de développement ESP32 1 ESP32 générique avec prise en charge Wi-Fi
Amplificateur MAX98357A 1 Module amplificateur audio numérique
Conférencier 1 Haut-parleur d’impédance 4Ω ou 8Ω pour lire l’audio
Planche à pain 1 Pour les connexions de prototypage
Fils de liaison Plusieurs Homme à femme ou homme à homme selon les besoins
Câble USB 1 Vers l’alimentation et la programmation

Schéma de câblage complet montrant l'ESP32 DevKit connecté à l'amplificateur MAX98357A pour les projets de synthèse vocale

Broche ESP32 Broche MAX98357A Type de connexion
GPIO27 BCLK Horloge binaire
GPIO26 LRC Horloge gauche/droite
GPIO25 VACARME Entrée de données
5V NIV Alimentation
GND GND Sol

Assemblage de planche à pain montrant les connexions physiques entre le microcontrôleur ESP32 et le module amplificateur MAX98357A
Page d'accueil Wit.ai montrant l'interface de connexion pour les développeurs ESP32Page des paramètres Wit.ai affichant le jeton d'accès au serveur requis pour l'intégration ESP32 TTS

Guide expert de l’équipe d’ingénierie de CircuitDigest – a développé une bibliothèque open source ESP32 TTS qui simplifie l’intégration de Wit.ai. Cette bibliothèque est distribuée via le gestionnaire de bibliothèque officiel Arduino pour une installation et des mises à jour faciles.

Capture d'écran de l'IDE Arduino montrant où saisir les informations d'identification WiFi et le jeton API Wit.ai dans le croquis ESP32

Explication du code source de synthèse vocale ESP32

Ce programme convertit le texte saisi en audio parlé en utilisant un service de synthèse vocale en ligne et en lisant le son via une sortie audio sur le tableau. Le système dépend du WiFi et d’un jeton cloud valide. Lorsque le texte est envoyé, la carte demande la parole au serveur, reçoit l’audio numérique et la lit via l’interface I2S. Le design reste simple et bloquant, ce qui convient aux démos et aux projets de créateurs.

WitAITTS tts;

Cette ligne crée le moteur principal de synthèse vocale. L’objet gère l’ensemble du flux de travail, y compris la gestion du WiFi, la communication sécurisée avec le serveur Wit.ai, le décodage audio et la sortie sonore vers le haut-parleur. Toutes les fonctionnalités liées à la parole dépendent de cet objet.

tts.begin(WIFI_SSID, WIFI_PASSWORD, WIT_TOKEN);

Cette ligne connecte la carte au réseau WiFi et s’authentifie auprès du service Wit.ai à l’aide du jeton d’accès. Le programme vérifie l’accès au réseau et la disponibilité du service à ce stade. Si cette étape échoue, le système ne peut demander ni lire aucune parole.

tts.setVoice("wit$Remi");

Cette ligne sélectionne la voix utilisée pour la sortie vocale. La voix choisie définit le ton, le genre et le caractère du son. La modification de cette valeur modifie directement la façon dont l’appareil sonne pour l’utilisateur.

tts.setSpeed(100);
tts.setPitch(100);

Ces lignes contrôlent la vitesse et la hauteur de la voix. Les valeurs normales gardent le discours clair et naturel. Le réglage de ces paramètres permet d’optimiser la clarté, le confort et l’expérience d’écoute.

tts.speak(text);

Cette ligne envoie le texte au service cloud pour conversion en audio. La carte attend pendant que le serveur génère la parole et renvoie l’audio. Le système lit l’audio immédiatement et met en pause tout autre travail jusqu’à la fin de la lecture.

Journal de la bibliothèque WitAITTS indiquant que la connexion à Internet est établie

  • Utilisation réduite de la mémoire
  • Réponse perçue plus rapide
  • Pas besoin de mise en mémoire tampon complète des fichiers

La qualité de la lecture dépend fortement de :

  • Latence du réseau
  • Stabilité de puissance
  • Qualité des haut-parleurs

Facteurs affectant la qualité de lecture

Facteur Impact Conseils d’optimisation
Latence du réseau Délais entre la saisie de texte et le démarrage de l’audio Utilisez une connexion WiFi stable, positionnez l’ESP32 près du routeur
Stabilité de puissance Distorsion audio ou crépitement Utilisez une alimentation 5 V de qualité, ajoutez des condensateurs de découplage
Qualité des haut-parleurs Clarté et intelligibilité de la voix Choisissez des enceintes avec une bonne réponse en fréquence médium
Force du signal Wi-Fi Interruptions de diffusion ou bégaiement Assurez un signal WiFi fort (-60 dBm ou mieux)
Configuration I2S Précision du taux d’échantillonnage et de la profondeur de bits Utiliser les valeurs par défaut de la bibliothèque, sauf si des exigences spécifiques existent
Catégorie Problème observé Cause fondamentale potentielle
Sortie audio Aucune sortie sonore • Configurations de câblage incorrectes
• Absence d’alimentation de l’amplificateur
• Affectations erronées des broches I2S
Communication Erreurs HTTP • 400 : Fourniture de chaînes de texte invalides ou vides
• 401 : utilisation d’un jeton d’accès non valide
• Délai d’expiration du réseau : présence d’instabilité Wi-Fi
Qualité du signal Audio déformé • Tension d’alimentation insuffisante
• Inadéquation de l’impédance des haut-parleurs
• Paramètres de configuration d’horloge incorrects

⇥ Est-il possible pour l’ESP32 de convertir du texte en signal audio lorsqu’il n’est pas connecté à Internet ?
Oui, il est techniquement possible pour l’ESP32 d’exécuter des fonctions de synthèse vocale (TTS) hors ligne ; cependant, les résultats auront généralement une consonance très robotique et auront un vocabulaire limité. Des bibliothèques telles que Talkie et eSpeak sont utilisées pour effectuer des TTS hors ligne basés sur ESP32. De plus, les services basés sur le cloud tels que Wit.ai fournissent une voix naturelle de bien meilleure qualité sur Internet lors de l’utilisation de l’ESP32 pour la fonctionnalité de synthèse vocale.

⇥ Quel type de qualité audio peut-on attendre de l’ESP32 ?
En utilisant les offres de services AI TTS (par exemple Wit.ai), vous pouvez vous attendre à des échantillons vocaux de haute qualité et au son naturel, comparables à bien des égards à ceux produits par les assistants vocaux commerciaux. En raison des problèmes de connectivité WiFi, de la qualité de l’alimentation électrique et des spécifications des haut-parleurs, la qualité de l’audio produit dépendra de ces facteurs. Pour maintenir un signal audio numérique propre vers l’amplificateur (par exemple MAX98357A), utilisez le protocole I2S.

⇥ Puis-je utiliser plusieurs voix ou langues avec ESP32 TTS ?
Lors de la création d’une application avec Wit.ai, vous aurez la possibilité de configurer plusieurs langues. La langue sélectionnée déterminera la façon dont la voix sonne et la façon dont la prononciation est faite, et vous ne pouvez pas basculer entre les différentes voix pendant que le logiciel est en cours d’exécution. Cependant, le même logiciel peut se connecter à des applications Wit.ai supplémentaires prenant en charge des langues supplémentaires et vous permettrait donc d’utiliser la bibliothèque ESP32 TTS pour des implémentations TTS supplémentaires utilisant l’API Wit.ai.

⇥ Les WiTaitt sont-ils compatibles avec ESP32 S2 et C3 ?
Oui, il prendra en charge la bibliothèque utilisée pour les applications de synthèse vocale ESP32 et prend en charge toutes les cartes de la série ESP32 (ESP32, ESP32-S2, ESP32-S3, ESP32-C3). Tous les membres de la famille ESP32 utilisent les mêmes protocoles de brochage et audio I2S, mais l’affectation des broches sur chaque carte peut différer. Assurez-vous de vérifier la fiche technique de votre carte pour connaître la capacité GPIO.

⇥ Quelle configuration Internet est nécessaire pour utiliser un service ESP32 TTS (texte-parole) ?
Le service ESP32 TTS nécessite une connexion Internet stable avec une bande passante minimale de 1 Mbps. Le signal Wi-Fi doit avoir une intensité de -60 dBm ou plus afin de diffuser l’audio avec précision et cohérence. Les réseaux Wi-Fi doivent utiliser le cryptage WPA2/WPA3 pour un accès sûr et sécurisé. L’ESP32 ne prend en charge que les connexions sur la bande de fréquence 2,4 GHz, tandis que les connexions établies sur la bande de fréquence 5 GHz ne peuvent être établies qu’avec l’ESP32-S2 ou un modèle ESP32 plus récent.

⇥ Combien de temps faut-il pour traiter une entrée ESP32 TTS ?
En fonction de la quantité de texte que vous saisissez dans l’ESP32, de la vitesse de votre connexion Wi-Fi et de l’occupation du serveur, cela peut prendre de 1 à 3 secondes avant que la sortie audio ne soit produite après la saisie du texte. Pendant que le texte saisi est en cours de traitement, l’ESP32 diffusera l’audio sur votre appareil au fur et à mesure qu’il télécharge l’audio, ce qui contribue à réduire le temps qu’il vous faut pour percevoir le retard. La latence du réseau représente la majeure partie du retard, et non le temps qu’il faut réellement à l’ESP32 pour traiter l’entrée.

Comparaison des convertisseurs de synthèse vocale (TTS) disponibles pour Raspberry Pi - eSpeak, Festival, Google TTS, Pico et PYTTSX3Radio Internet basée sur ESP32 utilisant la carte amplificateur MAX98357A I2SComment fonctionne un capteur sonore KY-038 et comment l'interfacer avec ESP32 ?

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

Youtube video

  • Heemol Mini ESP32-S3-N16R8 Xiaozhi AI Module de Dialogue Vocal robotique avec écran OLED de 0,96" Interface de Type C
  • Heemol ESP32-C3 Carte de développement d'écran de 0,96 Pouces Le Module Vocal AI Prend en Charge l'accès au Grand modèle Intelligent AI Xiaozhi/Deepseek/Doubao/Qwen et Prend en Charge Plusieurs