In questo articolo imparerai come utilizzare il Voice Recognition Module V3 per controllare una luce con la tua voce. Il Voice Recognition Module V3 è, come suggerisce il nome, un modulo per il riconoscimento vocale. Quando viene rilevato un comando vocale specifico, il modulo lo segnala tramite i suoi pin GPIO (OUT0…OUT6) e trasferisce anche i dati tramite UART (RXD, TXD) a un microcomputer collegato.
Nella sezione seguente ti fornirò una panoramica delle sue capacità e di come usarlo. Per maggiori dettagli tecnici sul modulo consulta il datasheet linkato qui.
Riconoscimento Sonoro
Nota che il modulo può essere addestrato a riconoscere tutti i tipi di suoni, non solo le voci. Ad esempio il suono della pioggia, un cane che abbaia e così via. Questo apre interessanti possibilità. Potresti, per esempio, chiudere automaticamente le finestre se viene rilevata la pioggia, oppure dare da mangiare al cane se abbaia.
Numero di Comandi
In totale il modulo può memorizzare 80 suoni, ciascuno della durata massima di 1,5 secondi. Può sembrare poco, ma è più che sufficiente per comandi come “accendi luce” o “spegni luce”. C’è un’altra limitazione: contemporaneamente possono essere distinti solo 7 comandi (dei 80). Tuttavia, puoi concatenare i comandi. Ad esempio, potresti addestrare sequenze di comandi come “Jarvis”, “Luci”, “Accendi”. In ogni fase di questa catena puoi riconoscere 7 comandi, ottenendo così 7 * 7 * 7 = 343 diverse sequenze di comandi complessive. Quindi, il modulo ha molta memoria per controllare un gran numero di dispositivi concatenando gruppi di comandi (> 7 11 ).
Sempre attivo ma offline
Il modulo è sempre in ascolto, il che è fantastico! Non devi premere alcun pulsante per avviare il riconoscimento vocale. E poiché il modulo non è connesso a internet e registra solo brevi frammenti sonori, non ci sono problemi di privacy. Inoltre, essendo un dispositivo offline, il riconoscimento è veloce, dato che il modulo non deve comunicare con un server.
Precisione
Il manuale indica una precisione del riconoscimento del 99% in condizioni ideali, ma tieni presente che il riconoscimento dipende dal parlante. Inoltre, la precisione diminuisce significativamente se c’è rumore o se ti trovi lontano dal microfono.
Funzionamento autonomo
Puoi usare il modulo senza un microprocessore. Funziona a 4,5-5,5V e assorbe circa 40mA. Ci sono 7 pin GPIO per i 7 comandi che possono essere rilevati contemporaneamente. Ci sono 3 pin di ingresso (IN0, IN1, IN2) che ti permettono di passare tra gruppi di comandi; questi sono i set di 7 comandi che hai addestrato.
Comunicazione
Tuttavia, la maggior parte delle volte vorrai usare l’interfaccia seriale UART (RXD, TXD) per comunicare con Arduino e programmare il tuo software che decide cosa fare quando un comando viene rilevato. Questo è esattamente ciò che ti mostrerò nella sezione seguente.
Componenti necessari
Di seguito trovi i componenti necessari per questo progetto. Nota che alcuni Voice Recognition Module non hanno i pin saldati. Potrebbe essere necessario saldarli per poter collegare il modulo usando i fili Dupont.

Arduino Uno

Cavo USB per Arduino UNO

Set di fili 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.
Collegare il Voice Recognition Module
In questa sezione ti mostrerò come collegare il Voice Recognition Module V3 ad Arduino. Fortunatamente è molto semplice.

Come puoi vedere, dobbiamo solo collegare l’alimentazione (5V e GND) al modulo e poi collegare l’interfaccia UART:
- RXD -> Pin 2
- TXD -> Pin 3
Assicurati che RXD sia collegato al Pin 3 e TXD al Pin 2. È un errore comune scambiarli e anche la documentazione negli esempi di codice per il modulo è confusa a riguardo.
L’immagine qui sotto mostra come appare questo circuito nella realtà. Tuttavia, ho aggiunto un LED aggiuntivo e usato fili diversi poiché il mio modulo non aveva i pin saldati. Successivamente, ho saldato i pin e usato fili Dupont per una connessione migliore.

Useremo il LED interno di Arduino per testare il controllo vocale, ma se vuoi aggiungere un LED esterno (come ho fatto io) ecco lo schema. Nota che colleghiamo il LED al pin 5, quindi dovrai modificare questo nel codice mostrato più avanti. Non dimenticare la resistenza da 220 Ohm per limitare la corrente attraverso il LED ed evitare di danneggiare Arduino.

Nella sezione successiva ti mostrerò come installare il software per il modulo vocale e come testarne il corretto funzionamento.
Installazione e test del software
Iniziamo scaricando la VoiceRecognitionV3 libreria da github repo.
Successivamente dobbiamo aggiungere la libreria all’ambiente Arduino. Per farlo vai su Sketch -> Include Library -> Add .ZIP library ... e seleziona la posizione del file dove hai scaricato VoiceRecognitionV3-master.zip.

Caricare un esempio di codice
Dopo dovresti trovare alcuni esempi di codice per la libreria sotto File -> Examples -> VoiceRecognitionV3-master. Apri l’esempio vr_sample_train.

Compila il software e caricalo su Arduino come al solito. Poi apri il Serial Monitor, imposta la velocità di trasmissione a 115200 e la terminazione della linea a New Line. Vedi l’immagine sotto.

Impostare la velocità di trasmissione corretta è importante, altrimenti Arduino non riuscirà a comunicare con il modulo. Controlla questo e, se hai problemi, verifica anche quale velocità è impostata nel codice.
Controllare lo stato del Voice Recognizer
Se ora riavvii Arduino o ricarichi il software dovresti vedere il seguente output nel Serial Monitor.

Infine, digita il comando vr nella casella di testo del Serial Monitor e premi Enter. Se tutto funziona correttamente, dovresti vedere lo stato del voice recognizer (vr) mostrato qui sotto.

Indica che possiamo comunicare con il modulo di riconoscimento vocale e che attualmente nessuno dei 7 comandi disponibili (Record) è caricato. Il sistema non è addestrato. Ma lo cambieremo nella prossima sezione.
Se non vedi lo stato del voice recognizer assicurati che il cablaggio sia corretto. TXD deve essere collegato al pin 2 e RXD al pin 3. Assicurati anche che il modulo sia alimentato. Il LED giallo di alimentazione dovrebbe essere acceso.
Addestramento dei comandi vocali
Assumendo che tu abbia ancora vr_sample_train caricato su Arduino e che sia in esecuzione, possiamo ora iniziare ad addestrare il modulo a riconoscere i comandi vocali. Digita “train” nella casella di testo e poi il numero (0..79) sotto cui vuoi memorizzare questo comando. Per esempio, train 0 e poi premi Enter.

Il LED sul modulo passerà alla modalità lampeggiante gialla e poi diventerà rosso. Allo stesso tempo apparirà la riga “Record 0 Speak now” nel Serial Monitor. Pronuncia il tuo comando, per esempio “Accendi luce” e se avrà successo apparirà la riga “Record 0 Speak again“. Se non avrà successo, leggerai “Record 0 Cann't matched“. (sì, lo so che l’ortografia e la grammatica sono sbagliate, ma è quello che c’è scritto 😉
Dopo due registrazioni riuscite il Serial Monitor indicherà che l’addestramento è stato un successo e che il comando è ora memorizzato all’indice 0: “Record 0 Trained“
Ripeti questo processo per un secondo comando “Spegni luce” inserendo “train 1” nella casella di testo. Una volta fatto, puoi verificare se i comandi sono stati addestrati. Digita “record 0” e poi “record 1” nella casella di testo e dovresti vedere l’immagine seguente.

Testare i comandi addestrati
Dopo l’addestramento riuscito digita “load 0 1” per caricare i comandi e avviare il riconoscimento. I LED dovrebbero ora lampeggiare di giallo, indicando che il modulo è in ascolto. Se ora pronunci i comandi addestrati, per esempio “Accendi luce” seguito da “Spegni luce”, dovresti vedere il seguente output.

Se il LED giallo non lampeggia, il modulo non è in ascolto. Ho riscontrato che questo succede occasionalmente e l’unico modo per risolvere il problema è stato scollegare e ricollegare rapidamente l’alimentazione. Altri hanno segnalato questo problema (link) ma non è stata trovata una soluzione definitiva. Sembra che il modulo sia un po’ capriccioso.
Nella prossima sezione useremo i comandi addestrati per accendere e spegnere il LED integrato di Arduino.
Controllare un LED con la voce
Potresti caricare l’esempio vr_sample_control_led per controllare il LED integrato di Arduino con la voce, ma ho trovato il codice inutilmente complesso e in parte confuso. Per esempio, troverai questo pezzo di codice nell’esempio:
/** * Connection * Arduino VoiceRecognitionModule * 2 -------> TX * 3 -------> RX */ VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins.
Contraddice se stesso nell’assegnazione dei pin. RX=2 o RX=3? In realtà l’assegnazione corretta è RX=3!
Comunque, implementeremo la nostra soluzione, più semplice da capire e da estendere. Ecco la soluzione completa per controllare un 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;
}
}
}
Diamo un’occhiata più da vicino alle singole sezioni del codice.
Costanti e Variabili
Iniziamo includendo le librerie necessarie e definendo le costanti e variabili necessarie.
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;
Qui includiamo la libreria SoftwareSerial per abilitare la comunicazione seriale, e la libreria VoiceRecognitionV3 per interfacciarci con il modulo di riconoscimento vocale. Creiamo un’istanza della classe VR, specificando i pin RX e TX per la comunicazione. Definiamo anche un array chiamato buf per memorizzare i comandi vocali riconosciuti.
Inoltre, definiamo il numero del pin per il LED integrato e due costanti per rappresentare i comandi di accensione e spegnimento della luce. Se vuoi controllare un LED esterno, cambia la costante led con il pin a cui è collegato il LED, ad esempio il pin 5 come nello schema mostrato prima.
Funzione setup
Nella funzione setup() inizializziamo il modulo di riconoscimento vocale, impostiamo la velocità di trasmissione per la comunicazione seriale, configuriamo il pin del LED come uscita e carichiamo i comandi vocali per accendere e spegnere la luce.
void setup() {
vr.begin(9600);
Serial.begin(115200);
pinMode(led, OUTPUT);
vr.load(lightOn);
vr.load(lightOff);
}
Iniziamo chiamando la funzione begin() dell’istanza VR per inizializzare il modulo con una velocità di 9600 baud. Inizializziamo anche la comunicazione seriale con una velocità di 115200 baud. Il pin del LED è impostato come uscita usando la funzione pinMode().
Infine, carichiamo i comandi vocali per accendere e spegnere la luce usando la funzione load() dell’istanza VR. Ricorda che puoi caricare solo 7 comandi alla volta, ma puoi usare comandi per cambiare o caricare altri comandi e costruire catene di comandi.
Funzione loop
Nella funzione loop() controlliamo continuamente la presenza di comandi vocali e controlliamo il LED di conseguenza.
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;
}
}
Per prima cosa chiamiamo la funzione recognize() dell’istanza VR per verificare la presenza di comandi vocali. Il comando riconosciuto viene memorizzato nell’array buf. Se nessun comando viene riconosciuto, la funzione restituisce -1 e usciamo dal ciclo. Altrimenti, controlliamo il valore del secondo elemento dell’array buf (buf[1]) per determinare il comando. Se l’id del comando è lightOn, impostiamo il pin del LED su HIGH usando la funzione digitalWrite(). Se il comando è lightOff, impostiamo il pin del LED su LOW.
Se hai difficoltà a capire il codice per controllare un LED dai un’occhiata al nostro tutorial How To Blink An LED Using Arduino (4 Different Ways). E se vuoi comandare un relè invece di un LED, basta sostituire il LED con un modulo relè. Per maggiori dettagli, vedi il tutorial How To Use A Relay With Arduino.
E questo è tutto. Ora hai un LED controllato a voce. Divertiti a sperimentare ; )
Applicazioni
Ecco alcune idee su come puoi usare questo modulo nei tuoi progetti:
- Domotica: controlla luci, elettrodomestici e altri dispositivi solo con la voce.
- Sistema di sicurezza attivato dalla voce: migliora la sicurezza di casa o ufficio implementando un sistema di sicurezza attivato dalla voce.
- Robotica controllata a voce: con il Voice Recognition Module puoi comandare i tuoi robot a eseguire azioni specifiche o a navigare tra ostacoli usando comandi vocali.
- Assistenti vocali: crea il tuo assistente vocale, simile ad Amazon Alexa o Google Assistant.
- Soluzioni per l’accessibilità: il Voice Recognition Module può essere usato per sviluppare tecnologie assistive per persone con disabilità. Ad esempio, puoi creare una sedia a rotelle controllata a voce o un dispositivo di comunicazione a mani libere per persone con mobilità limitata.
- Progetti educativi: integra il riconoscimento vocale in progetti educativi per rendere l’apprendimento più interattivo e coinvolgente. Gli studenti possono usare comandi vocali per controllare simulazioni, rispondere a quiz o interagire con personaggi virtuali.
Conclusione
Il Voice Recognition Module V3 offre un modo semplice per controllare dispositivi usando la voce. Poiché non si basa su un server con connessione internet per il riconoscimento vocale, il riconoscimento è veloce e non ci sono problemi di privacy.
D’altra parte, il riconoscimento vocale dipende dal parlante ed è limitato a frasi semplici. Inoltre, ho riscontrato una precisione molto bassa, sicuramente inferiore al 99% dichiarato. Tuttavia, la tua esperienza potrebbe essere diversa.
In ogni caso è un progetto divertente da provare e ci sono molte applicazioni interessanti.
Se hai ulteriori domande o hai bisogno di ulteriori indicazioni, consulta la sezione Domande Frequenti o dai un’occhiata ai link forniti per altre risorse e tutorial. Buon divertimento!
Domande Frequenti
Ecco alcune domande frequenti sull’uso del modulo di riconoscimento vocale.
Posso usare il modulo di riconoscimento vocale con qualsiasi scheda Arduino?
Sì, il Voice Recognition Module V3 è compatibile con la maggior parte delle schede Arduino. Comunica con Arduino tramite comunicazione seriale, quindi finché il tuo Arduino ha un’interfaccia seriale potrai usare il modulo.
Perché non riesco a connettermi al modulo di riconoscimento vocale?
Per collegare il modulo di riconoscimento vocale ad Arduino devi fare queste connessioni: pin VCC del modulo al pin 5V di Arduino, pin GND del modulo al pin GND di Arduino, pin RX del modulo al pin 3 di Arduino, pin TX del modulo al pin 2 di Arduino.
A me ha funzionato così, ma altri hanno segnalato problemi. Prova pin diversi se riscontri problemi di connessione. Assicurati solo di modificare il codice di conseguenza. Puoi anche provare a cambiare la velocità di trasmissione seriale.
Come addestro il modulo di riconoscimento vocale a riconoscere i miei comandi vocali?
Per addestrare il modulo devi usare l’IDE Arduino e caricare uno sketch su Arduino. Lo sketch ti guiderà nel processo di registrazione e salvataggio dei comandi vocali. Una volta salvati, il modulo sarà in grado di riconoscerli.
Quanto è preciso il modulo di riconoscimento vocale?
Il datasheet indica una precisione del 99% in condizioni ideali (assenza di rumore, vicinanza al microfono, …). Nella mia esperienza non sono mai arrivato vicino a questa precisione.
Perché il modulo di riconoscimento vocale non è in ascolto?
Potresti notare che il LED giallo del modulo non lampeggia come dovrebbe quando è in ascolto. Ho riscontrato questo problema alcune volte. La soluzione che ha funzionato è stata scollegare e ricollegare rapidamente l’alimentazione. Un reset soft di Arduino non ha aiutato.
Perché non riesco ad addestrare il modulo di riconoscimento vocale?
Assicurati che le velocità di trasmissione per la comunicazione seriale siano impostate correttamente nel codice e nel serial monitor. Verifica anche che i pin RXD e TXD del modulo siano collegati correttamente ai pin di Arduino. È facile scambiarli per errore.
Posso controllare altri dispositivi oltre alle luci con il modulo di riconoscimento vocale?
Sì, il modulo può essere usato per controllare vari dispositivi oltre alle luci. Puoi modificare lo sketch Arduino per controllare motori, servomotori o qualsiasi altro dispositivo controllabile da Arduino.
Il modulo di riconoscimento vocale è adatto per applicazioni commerciali?
Il Voice Recognition Module V3 è progettato principalmente per scopi hobbistici ed educativi.
Link
Ecco alcuni link a risorse e tutorial aggiuntivi.
- Introduction to Voice Recognition With Elechouse V3
- Speak Recognition, Voice Recognition Module V3
- Arduino library for elechouse Voice Recognition V3 module
- Voice Recognition Module


