In diesem Artikel lernst du, wie du das Voice Recognition Module V3 nutzt, um ein Licht per Sprachbefehl zu steuern. Das Voice Recognition Module V3 ist – wie der Name schon sagt – ein Modul zur Spracherkennung. Wenn ein bestimmter Sprachbefehl erkannt wird, signalisiert das Modul dies über seine GPIO-Pins (OUT0…OUT6) und überträgt die Daten zudem per UART (RXD, TXD) an einen angeschlossenen Mikrocomputer.
Im folgenden Abschnitt gebe ich dir einen Überblick über die Funktionen und die Nutzung des Moduls. Für weitere technische Details siehe das hier verlinkte Datenblatt.
Spracherkennung
Beachte, dass das Modul tatsächlich auch darauf trainiert werden kann, alle möglichen Geräusche zu erkennen – nicht nur Stimmen. Zum Beispiel das Geräusch von Regen, Hundebellen und so weiter. Das eröffnet interessante Möglichkeiten. Du könntest zum Beispiel automatisch die Fenster schließen, wenn Regen erkannt wird, oder den Hund füttern, wenn er bellt.
Anzahl der Befehle
Insgesamt kann das Modul 80 Geräusche speichern, wobei jedes Geräusch nicht länger als 1,5 Sekunden sein darf. Das klingt kurz, reicht aber für Befehle wie „Licht an“ oder „Licht aus“ völlig aus. Es gibt eine weitere Einschränkung: Zur gleichen Zeit können nur 7 Befehle (von den 80) unterschieden werden. Du kannst jedoch Befehle verketten. Zum Beispiel könntest du Befehlsfolgen wie „Jarvis“, „Licht“, „An“ trainieren. In jeder Stufe dieser Kette kannst du 7 Befehle erkennen, was insgesamt 7 * 7 * 7 = 343 verschiedene Befehlsfolgen ergibt. Das Modul hat also genug Speicher, um eine große Anzahl von Geräten zu steuern, wenn du Befehlsgruppen kaskadierst (> 7 11 ).
Immer an, aber offline
Das Modul hört immer mit, was super ist! Du musst keinen Knopf drücken, um die Spracherkennung zu starten. Und da das Modul nicht mit dem Internet verbunden ist und nur kurze Tonfragmente aufnimmt, gibt es keine Datenschutzbedenken. Außerdem ist die Erkennung als Offline-Gerät schnell, da keine Kommunikation mit einem Server nötig ist.
Genauigkeit
Im Handbuch wird die Erkennungsgenauigkeit unter idealen Bedingungen mit 99 % angegeben, aber beachte, dass die Erkennung sprecherabhängig ist. Außerdem sinkt die Genauigkeit deutlich, wenn es laut ist oder du weiter vom Mikrofon entfernt bist.
Standalone-Betrieb
Du kannst das Modul auch ohne Mikroprozessor verwenden. Es läuft mit 4,5–5,5 V und zieht etwa 40 mA Strom. Es gibt 7 GPIO-Pins für die 7 Befehle, die gleichzeitig erkannt werden können. Außerdem gibt es 3 Eingänge (IN0, IN1, IN2), mit denen du zwischen Befehlsgruppen wechseln kannst; das sind die Sets von 7 Befehlen, die du trainiert hast.
Kommunikation
Meistens möchtest du jedoch die UART-Seriellschnittstelle (RXD, TXD) nutzen, um mit dem Arduino zu kommunizieren und deine eigene Software zu programmieren, die entscheidet, was bei Erkennung eines Befehls passiert. Genau das zeige ich dir im nächsten Abschnitt.
Benötigte Teile
Unten findest du die für dieses Projekt benötigten Teile. Beachte, dass einige Voice Recognition Module keine angelöteten Pins haben. Du musst diese eventuell selbst anlöten, um das Modul mit Dupont-Kabeln verbinden zu können.

Arduino Uno

USB-Kabel für Arduino UNO

Dupont-Kabel-Set

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.
Anschluss des Voice Recognition Module
In diesem Abschnitt zeige ich dir, wie du das Voice Recognition Module V3 an den Arduino anschließt. Glücklicherweise ist das sehr einfach.

Wie du siehst, müssen wir nur die Stromversorgung (5V und GND) anschließen und dann die UART-Schnittstelle verbinden:
- RXD -> Pin 2
- TXD -> Pin 3
Achte darauf, dass RXD an Pin 3 und TXD an Pin 2 angeschlossen ist. Es ist ein häufiger Fehler, diese zu vertauschen, und selbst die Dokumentation in den Codebeispielen für das Modul ist da verwirrend.
Das Bild unten zeigt, wie diese Schaltung in der Praxis aussieht. Ich habe jedoch eine zusätzliche LED hinzugefügt und andere Kabel verwendet, da mein Modul ohne angelötete Pins geliefert wurde. Später habe ich die Pins angelötet und auf Dupont-Kabel für eine bessere Verbindung gewechselt.

Wir verwenden die interne LED des Arduino, um die Sprachsteuerung zu testen. Wenn du eine externe LED hinzufügen möchtest (wie ich), findest du hier den Schaltplan dafür. Beachte, dass wir die LED an Pin 5 anschließen, was du im unten gezeigten Code anpassen musst. Vergiss auch nicht den 220-Ohm-Widerstand, um den Strom durch die LED zu begrenzen und deinen Arduino zu schützen.

Im nächsten Abschnitt zeige ich dir, wie du die Software für das Sprachmodul installierst und die korrekte Einrichtung testest.
Installation und Test der Software
Wir beginnen mit dem Download der VoiceRecognitionV3 Bibliothek von der github repo.
Als Nächstes müssen wir die Bibliothek in die Arduino-Umgebung einbinden. Gehe dazu auf Sketch -> Include Library -> Add .ZIP library ... und wähle den Speicherort der heruntergeladenen VoiceRecognitionV3-master.zip aus.

Beispielcode laden
Danach solltest du Beispielcode für die Bibliothek unter File -> Examples -> VoiceRecognitionV3-master finden. Öffne das vr_sample_train Beispiel.

Kompiliere die Software und lade sie wie gewohnt auf deinen Arduino. Öffne anschließend den Serial Monitor, stelle die Baudrate auf 115200 und das Zeilenende auf New Line ein. Siehe Bild unten.

Die richtige Baudrate einzustellen ist wichtig, sonst kann der Arduino nicht mit dem Modul kommunizieren. Prüfe das und bei Problemen auch, welche Baudrate im Code eingestellt ist.
Status des Voice Recognizers prüfen
Wenn du jetzt deinen Arduino neu startest oder die Software neu lädst, solltest du folgende Ausgabe im Serial Monitor sehen.

Schließlich gib den Befehl vr in das Nachrichtenfeld des Serial Monitors ein und drücke Enter. Wenn alles korrekt funktioniert, solltest du den Status des Voice Recognizers (vr) wie unten gezeigt sehen.

Er zeigt an, dass wir mit dem Voice Recognition Module kommunizieren können und dass aktuell keiner der 7 verfügbaren Befehle (Record) geladen ist. Das System ist untrainiert. Das werden wir im nächsten Abschnitt ändern.
Wenn du den Status des Voice Recognizers nicht sehen kannst, überprüfe deine Verkabelung. TXD muss an Pin 2 und RXD an Pin 3 angeschlossen sein. Stelle außerdem sicher, dass das Modul mit Strom versorgt wird. Die gelbe Power-LED sollte leuchten.
Sprachbefehle trainieren
Vorausgesetzt, du hast noch vr_sample_train auf den Arduino geladen und das Programm läuft, können wir nun beginnen, das Modul auf Sprachbefehle zu trainieren. Gib „ train “ in das Nachrichtenfeld ein und dann die Nummer (0..79), unter der dieser Befehl gespeichert werden soll. Zum Beispiel train 0 und dann drücke Enter.

Die LED am Modul wechselt in den gelben Blinkmodus und dann auf Rot. Gleichzeitig erscheint die Zeile „ Record 0 Speak now “ im Serial Monitor. Sprich deinen Befehl, zum Beispiel „Licht an“, und wenn es erfolgreich war, erscheint die Zeile „ Record 0 Speak again “. Wenn nicht, liest du „ Record 0 Cann't matched “. (Ja, ich weiß, die Rechtschreibung und Grammatik sind falsch, aber so steht es da 😉
Nach zwei erfolgreichen Aufnahmen zeigt der Serial Monitor an, dass das Training erfolgreich war und der Befehl jetzt unter Index 0 gespeichert ist: „ Record 0 Trained “
Wiederhole diesen Vorgang für einen zweiten Befehl „Licht aus“, indem du „ train 1 “ in das Nachrichtenfeld eingibst. Danach kannst du überprüfen, ob die Befehle trainiert sind. Gib „ record 0 “ und dann „ record 1 “ in das Nachrichtenfeld ein, und du solltest folgendes Bild sehen.

Testen der trainierten Befehle
Nach dem erfolgreichen Training gib „load 0 1“ ein, um die Befehle zu laden und die Erkennung zu starten. Die LEDs sollten nun gelb blinken, was anzeigt, dass das Modul zuhört. Wenn du jetzt deine trainierten Befehle sagst, zum Beispiel „Licht an“ gefolgt von „Licht aus“, solltest du folgende Ausgabe sehen.

Wenn die gelbe LED nicht blinkt, hört das Modul nicht zu. Ich habe festgestellt, dass das gelegentlich passiert und die einzige Lösung war, die Stromversorgung kurz zu trennen und wieder anzuschließen. Andere haben dieses Problem (link) ebenfalls berichtet, aber keine gute Lösung gefunden. Das Modul scheint etwas zickig zu sein.
Im nächsten Abschnitt verwenden wir die trainierten Befehle, um die eingebaute LED des Arduino ein- und auszuschalten.
Eine LED mit der Stimme steuern
Du könntest das vr_sample_control_led Beispiel laden, um die eingebaute LED des Arduino per Sprache zu steuern, aber ich fand den Code unnötig komplex und teilweise verwirrend. Zum Beispiel findest du in dem Beispiel diesen Codeabschnitt:
/** * Connection * Arduino VoiceRecognitionModule * 2 -------> TX * 3 -------> RX */ VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins.
Er widerspricht sich bei der Pinbelegung. Ist RX=2 oder RX=3? Es stellt sich heraus, dass die korrekte Belegung RX=3 ist!
Wie auch immer, wir implementieren unsere eigene Lösung, die leichter zu verstehen und zu erweitern ist. Sieh dir unten die komplette Lösung zur Steuerung einer LED an.
#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;
}
}
}
Schauen wir uns die einzelnen Abschnitte des Codes genauer an.
Konstanten und Variablen
Wir beginnen mit dem Einbinden der notwendigen Bibliotheken und der Definition der erforderlichen Konstanten und Variablen.
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;
Hier binden wir die SoftwareSerial Bibliothek ein, um serielle Kommunikation zu ermöglichen, und die VoiceRecognitionV3 Bibliothek, um mit dem Sprachmodul zu kommunizieren. Wir erstellen eine Instanz der VR Klasse und geben die RX- und TX-Pins für die Kommunikation an. Außerdem definieren wir ein Array namens buf, um die erkannten Sprachbefehle zu speichern.
Zusätzlich definieren wir die Pin-Nummer für die eingebaute LED und zwei Konstanten für die Befehle zum Ein- und Ausschalten des Lichts. Wenn du eine externe LED steuern möchtest, ändere die led-Konstante auf den Pin, an dem die LED angeschlossen ist, z. B. Pin 5 wie im vorherigen Schaltplan.
Setup-Funktion
In der setup() Funktion initialisieren wir das Sprachmodul, setzen die Baudrate für die serielle Kommunikation, konfigurieren den LED-Pin als Ausgang und laden die Sprachbefehle zum Ein- und Ausschalten des Lichts.
void setup() {
vr.begin(9600);
Serial.begin(115200);
pinMode(led, OUTPUT);
vr.load(lightOn);
vr.load(lightOff);
}
Wir starten, indem wir die begin() Funktion der VR-Instanz aufrufen, um das Modul mit 9600 Baud zu initialisieren. Außerdem starten wir die serielle Kommunikation mit 115200 Baud. Der LED-Pin wird mit der pinMode() Funktion als Ausgang gesetzt.
Zum Schluss laden wir die Sprachbefehle zum Ein- und Ausschalten des Lichts mit der load() Funktion der VR-Instanz. Denk daran, dass du nur 7 Befehle gleichzeitig laden kannst. Du kannst aber Befehle nutzen, um andere Befehle zu wechseln oder zu laden und so Befehlsketten bauen.
Loop-Funktion
In der loop() Funktion prüfen wir kontinuierlich auf Sprachbefehle und steuern die LED entsprechend.
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;
}
}
Zuerst rufen wir die recognize() Funktion der VR-Instanz auf, um nach Sprachbefehlen zu suchen. Der erkannte Befehl wird im buf-Array gespeichert. Wenn kein Befehl erkannt wird, gibt die Funktion -1 zurück und wir verlassen die Schleife. Andernfalls prüfen wir den Wert des zweiten Elements im buf Array (buf[1]), um den Befehl zu bestimmen. Wenn die Befehls-ID lightOn ist, setzen wir den LED-Pin mit der digitalWrite() Funktion auf HIGH. Wenn der Befehl lightOff ist, setzen wir den LED-Pin auf LOW.
Falls du Probleme hast, den Code zur Steuerung der LED zu verstehen, schau dir unser Tutorial How To Blink An LED Using Arduino (4 Different Ways) an. Und wenn du statt einer LED ein Relais schalten möchtest, ersetze die LED einfach durch ein Relaismodul. Mehr Details findest du im Tutorial How To Use A Relay With Arduino.
Und das war’s. Jetzt hast du eine per Sprache gesteuerte LED. Viel Spaß beim Ausprobieren ; )
Anwendungen
Hier sind ein paar Ideen, wie du das Modul in deinen Projekten einsetzen kannst:
- Hausautomation: Steuere deine Lichter, Geräte und andere Komponenten nur mit deiner Stimme.
- Sprachaktiviertes Sicherheitssystem: Verbessere die Sicherheit deines Zuhauses oder Büros mit einem sprachaktivierten Sicherheitssystem.
- Sprachgesteuerte Robotik: Mit dem Voice Recognition Module kannst du deine Roboter per Sprachbefehl zu bestimmten Aktionen oder zur Navigation durch Hindernisse steuern.
- Sprachfähige Assistenten: Erstelle deinen eigenen sprachfähigen Assistenten, ähnlich wie Amazon Alexa oder Google Assistant.
- Barrierefreiheitslösungen: Das Voice Recognition Module kann für assistive Technologien für Menschen mit Behinderungen eingesetzt werden. Zum Beispiel kannst du einen sprachgesteuerten Rollstuhl oder ein freihändiges Kommunikationsgerät für Menschen mit eingeschränkter Mobilität entwickeln.
- Bildungsprojekte: Integriere Spracherkennung in Bildungsprojekte, um das Lernen interaktiver und spannender zu gestalten. Schüler können Sprachbefehle nutzen, um Simulationen zu steuern, Quizfragen zu beantworten oder mit virtuellen Charakteren zu interagieren.
Fazit
Das Voice Recognition Module V3 bietet eine einfache Möglichkeit, Geräte per Sprache zu steuern. Da es für die Spracherkennung nicht auf einen Server mit Internetverbindung angewiesen ist, ist die Erkennung schnell und Datenschutzbedenken entfallen.
Andererseits ist die Spracherkennung sprecherabhängig und auf einfache Phrasen beschränkt. Außerdem habe ich die Erkennungsgenauigkeit als sehr niedrig empfunden, definitiv unter den angegebenen 99 %. Deine Erfahrung kann jedoch anders sein.
Auf jeden Fall ist es ein spaßiges Projekt zum Ausprobieren und es gibt viele interessante Anwendungsmöglichkeiten.
Wenn du weitere Fragen hast oder zusätzliche Hilfe benötigst, schau bitte in den Abschnitt Häufig gestellte Fragen oder nutze die bereitgestellten Links für weitere Ressourcen und Tutorials. Viel Spaß beim Basteln!
Häufig gestellte Fragen
Hier sind einige häufig gestellte Fragen zur Nutzung des Sprachmoduls.
Kann ich das Voice Recognition Module mit jedem Arduino-Board verwenden?
Ja, das Voice Recognition Module V3 ist mit den meisten Arduino-Boards kompatibel. Es kommuniziert über serielle Schnittstelle, daher kannst du es mit jedem Arduino nutzen, der eine serielle Schnittstelle hat.
Warum kann ich keine Verbindung zum Voice Recognition Module herstellen?
Um das Voice Recognition Module mit deinem Arduino zu verbinden, musst du folgende Verbindungen herstellen: VCC des Moduls an 5V des Arduino, GND des Moduls an GND des Arduino, RX des Moduls an Pin 3 des Arduino, TX des Moduls an Pin 2 des Arduino.
Das hat bei mir gut funktioniert, aber andere haben Probleme berichtet. Probiere andere Pins, wenn du Verbindungsprobleme hast. Achte darauf, den Code entsprechend anzupassen. Eventuell hilft auch ein Test mit anderen Baudraten für die serielle Verbindung.
Wie trainiere ich das Voice Recognition Module, um meine Sprachbefehle zu erkennen?
Zum Trainieren des Voice Recognition Module musst du die Arduino IDE verwenden und einen Sketch auf den Arduino laden. Der Sketch führt dich durch den Prozess, deine Sprachbefehle aufzunehmen und zu speichern. Danach kann das Modul diese Befehle erkennen.
Wie genau ist das Voice Recognition Module?
Das Datenblatt gibt eine Erkennungsgenauigkeit von 99 % unter idealen Bedingungen (kein Lärm, nah am Mikrofon, …) an. Meiner Erfahrung nach habe ich diese Genauigkeit jedoch nicht annähernd erreicht.
Warum hört das Voice Recognition Module nicht zu?
Es kann vorkommen, dass die gelbe LED des Moduls nicht wie erwartet blinkt, wenn es zuhören soll. Ich hatte dieses Problem mehrmals. Abhilfe schaffte es, die Stromversorgung kurz zu trennen und wieder anzuschließen. Ein Soft-Reset des Arduino half nicht.
Warum kann ich das Voice Recognition Module nicht trainieren?
Stelle sicher, dass die Baudraten für die serielle Kommunikation im Code und im Serial Monitor korrekt eingestellt sind. Überprüfe auch, ob RXD und TXD des Moduls an die richtigen Pins des Arduino angeschlossen sind. Es ist leicht, diese versehentlich zu vertauschen.
Kann ich mit dem Voice Recognition Module auch andere Geräte als Lichter steuern?
Ja, das Voice Recognition Module kann verwendet werden, um verschiedene Geräte zu steuern. Du kannst den Arduino-Sketch anpassen, um Motoren, Servos oder andere Arduino-gesteuerte Geräte zu steuern.
Ist das Voice Recognition Module für kommerzielle Anwendungen geeignet?
Das Voice Recognition Module V3 ist hauptsächlich für Hobby- und Bildungszwecke konzipiert.
Links
Hier findest du einige Links zu zusätzlichen Ressourcen und Tutorials.
- Introduction to Voice Recognition With Elechouse V3
- Speak Recognition, Voice Recognition Module V3
- Arduino library for elechouse Voice Recognition V3 module
- Voice Recognition Module


