Einfache Spracherkennung mit C# und Arduino UNO
Komponenten & Zubehör
| Arduino UNO | 1 |
| 3× LED (Rot, Grün, Blau) | 3 |
| 3× Vorwiderstand 220 Ω (beliebiger Wert 150–330 Ω) | 3 |
| Breadboard | 1 |
| Steckbrücken | 1 Set |
| Headset mit Mikrofon (Smartphone-Headset) oder PC-Mikrofon | 1 |
Software
- Arduino IDE
- Microsoft Visual Studio (2015/2017/2019/2022) – Windows Forms App (.NET Framework)
- Referenz:
System.Speech(Spracherkennung & Sprachausgabe)
Projektidee
Steuerung von LEDs per Sprachbefehl, ohne teures Spracherkennungsmodul. Der PC übernimmt die Spracherkennung (System.Speech), sendet erkannte Kommandos per Serial (USB) an den Arduino, der die LEDs schaltet. Perfekt für Einsteiger, um Hardware per Stimme zu steuern.
Schaltung
- LED Rot (Anode) → Pin 9 über 220 Ω → Kathode → GND
- LED Grün → Pin 8 über 220 Ω → GND
- LED Blau → Pin 10 über 220 Ω → GND
- Arduino GND → Breadboard GND-Schiene
Arduino Code
const int blueLed = 10, redLed = 9, greenLed = 8;
char incoming = '0';
void setup() {
Serial.begin(9600);
pinMode(blueLed, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop() {
if (Serial.available()) incoming = Serial.read();
switch (incoming) {
case 'B': digitalWrite(blueLed, HIGH); break; // Blue On
case 'R': digitalWrite(redLed, HIGH); break; // Red On
case 'G': digitalWrite(greenLed, HIGH); break; // Green On
case 'Z': digitalWrite(blueLed, LOW); break; // Blue Off
case 'X': digitalWrite(redLed, LOW); break; // Red Off
case 'C': digitalWrite(greenLed, LOW); break; // Green Off
case 'V': digitalWrite(blueLed, HIGH); digitalWrite(redLed, HIGH); digitalWrite(greenLed, HIGH); break; // All On
case 'M': digitalWrite(blueLed, LOW); digitalWrite(redLed, LOW); digitalWrite(greenLed, LOW); break; // All Off
}
}
C# Windows Forms Anwendung
- Neues Projekt: „Windows Forms App (.NET Framework)“.
- Referenz hinzufügen: Projekt → Verweis hinzufügen → .NET →
System.Speechanhaken. - Form: Buttons „Start“ / „Stop“, TextBox
txtCommands(Multiline) für Log. - Code (siehe unten) einfügen, COM-Port anpassen (hier
COM5). - Arduino Sketch hochladen, C# App starten, „Start“ klicken, Befehle sprechen.
C# Hauptcode
using System; using System.Windows.Forms; using System.IO.Ports;
using System.Speech; using System.Speech.Recognition; using System.Speech.Synthesis;
namespace VoiceControl {
public partial class Form1 : Form {
SerialPort port = new SerialPort();
SpeechRecognitionEngine rec = new SpeechRecognitionEngine();
SpeechSynthesizer synth = new SpeechSynthesizer();
Choices cmds = new Choices();
public Form1() {
InitializeComponent();
port.PortName = "COM5"; // Anpassen!
port.BaudRate = 9600;
LoadGrammar();
}
void LoadGrammar() {
cmds.Add(new string[] { "Blue On", "Red On", "Green On",
"Blue Off", "Red Off", "Green Off",
"All On", "All Off",
"Exit", "Arduino Say Good Bye to makers" });
Grammar gr = new Grammar(new GrammarBuilder(cmds));
rec.RequestRecognizerUpdate();
rec.LoadGrammarAsync(gr);
rec.SetInputToDefaultAudioDevice();
rec.SpeechRecognized += Rec_SpeechRecognized;
}
void Rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) {
string cmd = e.Result.Text;
txtCommands.AppendText(cmd + Environment.NewLine);
switch (cmd) {
case "Blue On": Send('B'); break;
case "Red On": Send('R'); break;
case "Green On": Send('G'); break;
case "Blue Off": Send('Z'); break;
case "Red Off": Send('X'); break;
case "Green Off": Send('C'); break;
case "All On": Send('V'); break;
case "All Off": Send('M'); break;
case "Arduino Say Good Bye to makers": synth.SpeakAsync("Good Bye Makers"); break;
case "Exit": Application.Exit(); break;
}
}
void Send(char c) {
if (!port.IsOpen) port.Open();
port.Write(c.ToString());
port.Close();
}
private void btnStart_Click(object sender, EventArgs e) {
rec.RecognizeAsync(RecognizeMode.Multiple);
btnStart.Enabled = false; btnStop.Enabled = true;
MessageBox.Show("Spracherkennung gestartet!");
}
private void btnStop_Click(object sender, EventArgs e) {
rec.RecognizeAsyncStop();
btnStop.Enabled = false; btnStart.Enabled = true;
}
}
}
Wichtige Hinweise
- COM-Port in Arduino IDE und C# Code muss identisch sein.
System.Speechnur unter Windows verfügbar (kein Linux/Mac).- Mikrofon in Windows als Standard-Aufnahmegerät einrichten, Pegel prüfen.
- Bei Erkennungsproblemen: Spracheinstellung (Deutsch/Englisch) anpassen, Training durchführen.
Erweiterungsideen
- Relais-Module für echte Verbraucher (Licht, Lüfter, Garage).
- Weitere Befehle: „Licht dimmen“, „Temperatur anzeigen“ (Sensoren einbinden).
- Sprachausgabe für Statusmeldungen („Licht eingeschaltet“).
- Kombination mit IoT-Plattformen (MQTT, Home Assistant).
Herstellungsprozess
- Google Assistant auf MATRIX Voice Raspberry Pi installieren – Schritt-für-Schritt-Anleitung
- Echtzeit-Gesichtserkennung auf Raspberry Pi – Komplette Anleitung
- Sichere Gesichtserkennungs-Tür mit Windows IoT und Raspberry Pi bauen
- Smart Pen: Echtzeit-Handschrifterkennung & Bewegungstracking mit Raspberry Pi & IMU
- Eigenen LUMAZOID bauen: DIY Arduino Musik-Visualisierer
- Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
- 37-LED-Roulette-Spiel mit Arduino Nano bauen – Europäisches Layout
- Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
- "Geh-Weg-Roboter" – Einfaches Arduino-Starterset für Kinder
- Analog-Style LED Persistence-of-Vision Uhr – DIY Arduino Nano Projekt