Skip to Content

Utilisation du module de reconnaissance vocale V3 avec Arduino

Utilisation du module de reconnaissance vocale V3 avec Arduino

Dans cet article, vous apprendrez comment utiliser le Voice Recognition Module V3 pour contrôler une lumière avec votre voix. Le Voice Recognition Module V3 est, comme son nom l’indique, un module de reconnaissance vocale. Lorsqu’une commande vocale spécifique est détectée, le module le signale via ses broches GPIO (OUT0…OUT6) et transmet également les données via UART (RXD, TXD) à un micro-ordinateur connecté.

Dans la section suivante, je vous donnerai un aperçu de ses capacités et de son utilisation. Pour plus de détails techniques sur le module, consultez la fiche technique liée ici.

Reconnaissance sonore

Notez que le module peut en fait aussi être entraîné à reconnaître toutes sortes de sons, pas seulement des voix. Par exemple, le son de la pluie, un chien qui aboie, etc. Cela ouvre des possibilités intéressantes. Vous pourriez par exemple fermer automatiquement les fenêtres si la pluie est détectée, ou nourrir le chien s’il aboie.

Nombre de commandes

Globalement, le module peut stocker 80 sons, chacun durant au maximum 1,5 seconde. Cela semble court, mais c’est largement suffisant pour des commandes comme « allumer la lumière » ou « éteindre la lumière ». Il y a une autre limitation : à un instant donné, seulement 7 commandes (sur les 80) peuvent être distinguées. Cependant, vous pouvez enchaîner les commandes. Par exemple, vous pourriez entraîner des séquences de commandes telles que « Jarvis », « Lumières », « On ». À chaque étape de cette chaîne, vous pouvez reconnaître 7 commandes, ce qui donne 7 * 7 * 7 = 343 séquences de commandes différentes au total. Le module dispose donc de suffisamment de mémoire pour contrôler un grand nombre d’appareils en enchaînant des groupes de commandes (> 7 11 ).

Toujours allumé mais hors ligne

Le module est toujours à l’écoute, ce qui est génial ! Vous n’avez pas besoin d’appuyer sur un bouton pour démarrer la reconnaissance vocale. Et comme le module n’est pas connecté à Internet et n’enregistre que de courts fragments sonores, les questions de confidentialité ne se posent pas. De plus, étant un appareil hors ligne, la reconnaissance est rapide, car le module n’a pas besoin de communiquer avec un serveur.

Précision

Le manuel indique une précision de reconnaissance de 99 % dans des conditions idéales, mais notez que la reconnaissance dépend de la voix de l’utilisateur. De plus, la précision diminue significativement en cas de bruit ou si vous êtes éloigné du microphone.

Autonome

Vous pouvez utiliser le module sans microprocesseur. Il fonctionne sous 4,5-5,5 V et consomme environ 40 mA. Il y a 7 broches GPIO pour les 7 commandes pouvant être détectées simultanément. Il y a 3 broches d’entrée (IN0, IN1, IN2) qui permettent de basculer entre les groupes de commandes, c’est-à-dire les ensembles de 7 commandes que vous avez entraînés.

Communication

Cependant, la plupart du temps, vous voudrez utiliser l’interface série UART (RXD, TXD) pour communiquer avec l’Arduino et programmer votre propre logiciel qui décide quoi faire lorsqu’une commande est détectée. C’est exactement ce que je vais vous montrer dans la section suivante.

Pièces requises

Voici les pièces nécessaires pour ce projet. Notez que certains Voice Recognition Modules n’ont pas les broches soudées. Vous devrez peut-être les souder pour pouvoir connecter le module avec des fils Dupont.

Arduino Uno

USB Data Sync cable Arduino

Câble USB pour Arduino UNO

Dupont wire set

Set de fils Dupont

Voice Recognition Module V3

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Connexion du Voice Recognition Module

Dans cette section, je vais vous montrer comment connecter le Voice Recognition Module V3 à l’Arduino. Heureusement, c’est très simple.

Connecting the Voice Recognition Module to the Arduino
Connexion du Voice Recognition Module à l’Arduino

Comme vous pouvez le voir, il suffit de connecter l’alimentation (5V et GND) au module, puis de connecter l’interface UART :

  • RXD -> Broche 2
  • TXD -> Broche 3

Assurez-vous que RXD est connecté à la broche 3 et TXD à la broche 2. C’est une erreur courante de les inverser, et même la documentation dans les exemples de code pour le module prête à confusion.

L’image ci-dessous montre à quoi ressemble ce circuit en réalité. Cependant, j’ai ajouté une LED supplémentaire et utilisé des fils différents car mon module n’avait pas de broches soudées. Plus tard, j’ai soudé les broches et utilisé des fils Dupont pour une meilleure connexion.

Câblage du Voice Recognition Module avec l’Arduino

Nous utiliserons la LED interne de l’Arduino pour tester le contrôle vocal, mais si vous souhaitez ajouter une LED externe (comme je l’ai fait), voici le schéma correspondant. Notez que nous connectons la LED à la broche 5, ce qui signifie que vous devrez modifier cela dans le code ci-dessous. N’oubliez pas non plus la résistance de 220 Ohms pour limiter le courant à travers la LED et éviter d’endommager votre Arduino.

Connecting the Voice Recognition Module and an LED to the Arduino
Connexion du Voice Recognition Module et d’une LED à l’Arduino

Dans la section suivante, je vous montre comment installer le logiciel pour le module vocal et comment tester sa bonne configuration.

Installation et test du logiciel

Nous commençons par télécharger la VoiceRecognitionV3 bibliothèque depuis le github repo.

Ensuite, nous devons ajouter la bibliothèque à l’environnement Arduino. Pour cela, allez dans Sketch -> Include Library -> Add .ZIP library ... et sélectionnez l’emplacement du fichier où vous avez téléchargé VoiceRecognitionV3-master.zip.

Add the VoiceRecognitionV3 library to the Arduino environment
Ajoutez la bibliothèque VoiceRecognitionV3 à l’environnement Arduino

Charger un exemple de code

Après cela, vous devriez trouver des exemples de code pour la bibliothèque sous File -> Examples -> VoiceRecognitionV3-master. Ouvrez l’exemple vr_sample_train.

Open example file vr_sample_train
Ouvrir le fichier exemple vr_sample_train

Compilez le logiciel et téléversez-le sur votre Arduino comme d’habitude. Ensuite, ouvrez le Moniteur Série, réglez le débit en bauds à 115200 et la fin de ligne à New Line. Voir l’image ci-dessous.

Settings for Serial Monitor
Paramètres pour le Moniteur Série

Il est important de régler correctement le débit en bauds, sinon l’Arduino ne pourra pas communiquer avec le module. Vérifiez cela et, en cas de problème, vérifiez aussi quel débit est défini dans le code.

Vérifier le statut du Voice Recognizer

Si vous redémarrez maintenant votre Arduino ou rechargez le logiciel, vous devriez voir la sortie suivante dans votre Moniteur Série.

Serial Monitor output for vr_sample_train after restart
Sortie du Moniteur Série pour vr_sample_train après redémarrage

Enfin, tapez la commande vr dans la zone de message du Moniteur Série et appuyez sur Enter. Si tout fonctionne correctement, vous devriez voir le statut du voice recognizer (vr) affiché ci-dessous.

Serial Monitor shows status of voice recognizer
Le Moniteur Série affiche le statut du voice recognizer

Cela indique que nous pouvons communiquer avec le module de reconnaissance vocale et qu’aucune des 7 commandes disponibles (Record) n’est actuellement chargée. Le système n’est pas encore entraîné. Mais nous allons changer cela dans la section suivante.

Si vous ne voyez pas le statut du voice recognizer, assurez-vous que votre câblage est correct. TXD doit être connecté à la broche 2 et RXD à la broche 3. Assurez-vous aussi que le module est alimenté. La LED jaune d’alimentation doit être allumée.

Entraînement des commandes vocales

En supposant que vous avez toujours vr_sample_train téléversé sur l’Arduino et qu’il fonctionne, nous pouvons maintenant commencer à entraîner le module à reconnaître des commandes vocales. Tapez « train » dans la zone de message, puis le numéro (0..79) sous lequel cette commande doit être enregistrée. Par exemple, train 0 puis appuyez sur Enter.

Training the Voice Recognition Module
Entraînement du Voice Recognition Module

La LED du module passera en mode clignotement jaune puis deviendra rouge. En même temps, la ligne « Record 0 Speak now » apparaîtra dans le Moniteur Série. Prononcez votre commande, par exemple « Allumer la lumière » et si c’est réussi, la ligne « Record 0 Speak again » s’affichera. En cas d’échec, vous lirez « Record 0 Cann't matched« . (oui, je sais que l’orthographe et la grammaire sont incorrectes, mais c’est ce qui est affiché 😉

Après deux enregistrements réussis, le Moniteur Série indiquera que l’entraînement a réussi et que la commande est maintenant stockée sous l’index 0 : « Record 0 Trained« 

Répétez ce processus pour une deuxième commande « Éteindre la lumière » en entrant « train 1 » dans la zone de message. Une fois terminé, vous pouvez vérifier si les commandes sont bien entraînées. Tapez « record 0 » puis « record 1 » dans la zone de message et vous devriez voir l’image suivante.

Checking the commands recorded in the Voice Recognition Module
Vérification de l’enregistrement des commandes

Test des commandes entraînées

Après un entraînement réussi, tapez « load 0 1 » pour charger les commandes et démarrer la reconnaissance. Les LEDs devraient maintenant clignoter en jaune, indiquant que le module est à l’écoute. Si vous prononcez vos commandes entraînées, par exemple « Allumer la lumière » suivi de « Éteindre la lumière », vous devriez voir la sortie suivante.

Testing the trained commands
Test des commandes entraînées

Si la LED jaune ne clignote pas, le module n’est pas à l’écoute. J’ai constaté que cela arrive parfois et la seule solution que j’ai trouvée est de débrancher puis rebrancher rapidement l’alimentation. D’autres ont signalé ce problème (link) mais aucune solution satisfaisante n’a été trouvée. Il semble que le module soit un peu capricieux.

Dans la section suivante, nous utiliserons les commandes entraînées pour allumer et éteindre la LED intégrée de l’Arduino.

Contrôler une LED avec votre voix

Vous pourriez charger l’exemple vr_sample_control_led pour contrôler la LED intégrée de l’Arduino avec votre voix, mais j’ai trouvé le code inutilement complexe et partiellement confus. Par exemple, vous trouverez ce morceau de code dans l’exemple :

/**        
 * Connection
 * Arduino    VoiceRecognitionModule
 * 2   ------->     TX
 * 3   ------->     RX
 */
VR myVR(2,3);    // 2:RX 3:TX, you can choose your favourite pins.

Il se contredit dans l’affectation des broches. RX=2 ou RX=3 ? En fait, la bonne affectation est RX=3 !.

Quoi qu’il en soit, nous allons implémenter notre propre solution, plus simple à comprendre et à étendre. Voici la solution complète pour contrôler une LED.

#include "SoftwareSerial.h"
#include "VoiceRecognitionV3.h"

VR vr(2, 3);  // 2:TX 3:RX!
uint8_t buf[64];

const int led = 13;  // built-in
const uint8_t lightOn = 0;
const uint8_t lightOff = 1;

void setup() {
  vr.begin(9600);
  Serial.begin(115200);
  pinMode(led, OUTPUT);
  vr.load(lightOn);
  vr.load(lightOff);
}

void loop() {
  if (vr.recognize(buf, 50) > 0) {
    switch (buf[1]) {
      case lightOn:
        digitalWrite(led, HIGH);
        break;
      case lightOff:
        digitalWrite(led, LOW);
        break;
    }
  }
}

Examinons de plus près les différentes sections du code.

Constantes et variables

Nous commençons par inclure les bibliothèques nécessaires et définir les constantes et variables requises.

include "SoftwareSerial.h"
#include "VoiceRecognitionV3.h"

VR vr(2, 3);  // 2:TX 3:RX!
uint8_t buf[64];

const int led = 13;  // built-in
const uint8_t lightOn = 0;
const uint8_t lightOff = 1;

Ici, nous incluons la bibliothèque SoftwareSerial pour activer la communication série, et la bibliothèque VoiceRecognitionV3 pour interfacer avec le module de reconnaissance vocale. Nous créons une instance de la classe VR, en spécifiant les broches RX et TX pour la communication. Nous définissons aussi un tableau appelé buf pour stocker les commandes vocales reconnues.

De plus, nous définissons le numéro de broche pour la LED intégrée et deux constantes représentant les commandes pour allumer et éteindre la lumière. Si vous souhaitez contrôler une LED externe, changez la constante led pour la broche à laquelle la LED est connectée, par exemple la broche 5 comme dans le schéma montré précédemment.

Fonction setup

Dans la fonction setup(), nous initialisons le module de reconnaissance vocale, réglons le débit en bauds pour la communication série, configurons la broche de la LED en sortie, et chargeons les commandes vocales pour allumer et éteindre la lumière.

void setup() {
  vr.begin(9600);
  Serial.begin(115200);
  pinMode(led, OUTPUT);
  vr.load(lightOn);
  vr.load(lightOff);
}

Nous commençons par appeler la fonction begin() de l’instance VR pour initialiser le module avec un débit de 9600 bauds. Nous initialisons aussi la communication série avec un débit de 115200 bauds. La broche de la LED est configurée en sortie avec la fonction pinMode().

Enfin, nous chargeons les commandes vocales pour allumer et éteindre la lumière avec la fonction load() de l’instance VR. Rappelez-vous que vous ne pouvez charger que 7 commandes à la fois, mais vous pouvez utiliser des commandes pour basculer ou charger d’autres commandes afin de créer des chaînes de commandes.

Fonction loop

Dans la fonction loop(), nous vérifions continuellement la présence de commandes vocales et contrôlons la LED en conséquence.

void loop() {
  int ret = vr.recognize(buf, 50);
  if (ret == -1) return;

  switch (buf[1]) {
    case lightOn:
      digitalWrite(led, HIGH);
      break;
    case lightOff:
      digitalWrite(led, LOW);
      break;
  }
}

D’abord, nous appelons la fonction recognize() de l’instance VR pour vérifier les commandes vocales. La commande reconnue est stockée dans le tableau buf. Si aucune commande n’est reconnue, la fonction retourne -1 et nous sortons de la boucle. Sinon, nous vérifions la valeur du deuxième élément du tableau buf (buf[1]) pour déterminer la commande. Si l’ID de la commande est lightOn, nous mettons la broche de la LED à HIGH avec la fonction digitalWrite(). Si la commande est lightOff, nous mettons la broche de la LED à LOW.

Si vous avez des difficultés à comprendre le code pour contrôler une LED, consultez notre tutoriel How To Blink An LED Using Arduino (4 Different Ways). Et si vous voulez commander un relais au lieu d’une LED, remplacez simplement la LED par un module relais. Pour plus de détails, voir le tutoriel How To Use A Relay With Arduino.

Et voilà. Vous avez maintenant une LED contrôlée par la voix. Amusez-vous bien ; )

Applications

Voici quelques idées pour utiliser ce module dans vos projets :

  1. Domotique : Contrôler vos lumières, appareils et autres dispositifs simplement avec votre voix.
  2. Système de sécurité activé par la voix : Améliorez la sécurité de votre maison ou bureau en mettant en place un système de sécurité activé par la voix.
  3. Robotique contrôlée par la voix : Avec le Voice Recognition Module, vous pouvez commander vos robots pour effectuer des actions spécifiques ou naviguer à travers des obstacles grâce à des commandes vocales.
  4. Assistants vocaux : Créez votre propre assistant vocal, similaire à Amazon Alexa ou Google Assistant.
  5. Solutions d’accessibilité : Le Voice Recognition Module peut être utilisé pour développer des technologies d’assistance pour les personnes en situation de handicap. Par exemple, vous pouvez créer un fauteuil roulant contrôlé par la voix ou un dispositif de communication mains libres pour les personnes à mobilité réduite.
  6. Projets éducatifs : Intégrez la reconnaissance vocale dans des projets éducatifs pour rendre l’apprentissage plus interactif et engageant. Les élèves peuvent utiliser des commandes vocales pour contrôler des simulations, répondre à des quiz ou interagir avec des personnages virtuels.

Conclusion

Le Voice Recognition Module V3 offre un moyen simple de contrôler des appareils avec votre voix. Comme il ne dépend pas d’un serveur connecté à Internet pour la reconnaissance vocale, celle-ci est rapide et les questions de confidentialité ne se posent pas.

En revanche, la reconnaissance vocale dépend de la voix de l’utilisateur et est limitée à des phrases simples. De plus, j’ai trouvé la précision de reconnaissance assez faible, bien en dessous des 99 % annoncés. Cependant, votre expérience peut être différente.

Quoi qu’il en soit, c’est un projet amusant à essayer et il existe de nombreuses applications intéressantes.

Si vous avez d’autres questions ou besoin d’aide supplémentaire, veuillez consulter la section FAQ ou les liens fournis pour plus de ressources et tutoriels. Bon bricolage !

Foire aux questions

Voici quelques questions fréquemment posées sur l’utilisation du module de reconnaissance vocale.

Puis-je utiliser le module de reconnaissance vocale avec n’importe quelle carte Arduino ?

Oui, le Voice Recognition Module V3 est compatible avec la plupart des cartes Arduino. Il communique avec l’Arduino via une communication série, donc tant que votre Arduino dispose d’une interface série, vous pourrez utiliser le module.

Pourquoi ne puis-je pas me connecter au module de reconnaissance vocale ?

Pour connecter le module de reconnaissance vocale à votre Arduino, vous devez effectuer les connexions suivantes : broche VCC du module à la broche 5V de l’Arduino, broche GND du module à la broche GND de l’Arduino, broche RX du module à la broche 3 de l’Arduino, broche TX du module à la broche 2 de l’Arduino.

Cela a bien fonctionné pour moi, mais d’autres ont rencontré des problèmes. Essayez d’autres broches si vous avez des soucis de connexion. Assurez-vous simplement d’adapter le code en conséquence. Vous pouvez aussi essayer de modifier le débit en bauds pour la connexion série.

Comment entraîner le module de reconnaissance vocale à reconnaître mes commandes vocales ?

Pour entraîner le module de reconnaissance vocale, vous devez utiliser l’IDE Arduino et téléverser un sketch sur l’Arduino. Le sketch vous guidera dans le processus d’enregistrement et de sauvegarde de vos commandes vocales. Une fois les commandes enregistrées, le module pourra les reconnaître.

Quelle est la précision du module de reconnaissance vocale ?

La fiche technique indique une précision de reconnaissance de 99 % dans des conditions idéales (pas de bruit, proche du microphone, etc.). Dans mon expérience, je ne suis même pas arrivé proche de cette précision.

Pourquoi le module de reconnaissance vocale n’écoute-t-il pas ?

Il se peut que la LED jaune du module ne clignote pas comme elle le devrait lorsqu’il est à l’écoute. J’ai rencontré ce problème plusieurs fois. Ce qui a aidé, c’est de débrancher puis rebrancher rapidement l’alimentation. Un redémarrage logiciel de l’Arduino n’a pas aidé.

Pourquoi ne puis-je pas entraîner le module de reconnaissance vocale ?

Assurez-vous que les débits en bauds pour la communication série sont correctement réglés dans le code et dans le moniteur série. Vérifiez aussi que les broches RXD et TXD du module sont connectées aux bonnes broches de l’Arduino. Il est facile de les inverser par erreur.

Puis-je contrôler d’autres appareils que des lumières avec le module de reconnaissance vocale ?

Oui, le module de reconnaissance vocale peut être utilisé pour contrôler divers appareils autres que des lumières. Vous pouvez modifier le sketch Arduino pour contrôler des moteurs, servos ou tout autre appareil contrôlable par l’Arduino.

Le module de reconnaissance vocale est-il adapté aux applications commerciales ?

Le Voice Recognition Module V3 est principalement conçu pour les amateurs et les usages éducatifs.

Liens

Voici quelques liens vers des ressources et tutoriels supplémentaires.