Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Eenvoudig Spraakherkenningssysteem met C# en Arduino UNO

Onderdelen en benodigdheden

Arduino UNO1
Weerstand 220 Ω (of vergelijkbaar)3
LED's (blauw, rood, groen)3
Breadboard1
Jumper wires1 set
Oortjes met microfoon (of ingebouwde laptop-microfoon)1

Apps en online diensten

  • Arduino IDE
  • Microsoft Visual Studio 2015 (of nieuwer, met .NET Framework voor Windows Forms)

Over dit project

Let op: bijgewerkte tutorial (2020)

Ik maakte dit project twee jaar geleden en kreeg positieve reacties. Voor nieuwe makers raad ik de geüpdatete tutorial aan:

https://medium.com/illumination/how-to-make-your-first-voice-project-using-arduino-956bfd494947

Projectbeschrijving

We mensen hebben sensoren (oren, tong, neus) voor tweerichtingscommunicatie. Dezelfde toepassen we op machines. Als beginner begin je vaak met knipperende LED's, maar ik wilde ze met mijn stem besturen. Na zoeken en leren bouwde ik dit systeem – speciaal voor beginners! De simpelste manier voor spraakherkenning met Arduino, zonder extra hardwaremodule.

We gebruiken drie LED's die aan/uit gaan via spraakcommando's. Het vereist alleen basisprogrammeerkennis.

Waarom dit project?

Mijn leraar demonstreerde een C# Windows Forms app die een virtuele lamp via spraak bestuurde (alleen software). Ik wilde dat met echte hardware (Arduino + LED's) doen.

Waarom is het simpel?

Geen externe spraakherkenningsmodule nodig! De zware berekening gebeurt op de PC (C# met System.Speech), de Arduino ontvangt simpele seriële commando's. Geïnspireerd door C# Corner artikel.

Hoe te bouwen

  1. Verzamel alle onderdelen.
  2. Bouw de schakeling op breadboard (zie schema).
  3. Sluit Arduino via USB aan op de PC.
  4. Open Arduino IDE, maak nieuwe sketch, plak Arduino-code, upload.
  5. Installeer Visual Studio (elke versie met Windows Forms ondersteuning). Downloadlink in project.
  6. Maak Windows Forms C# project, voeg System.Speech referentie toe: Project → Add Reference → .NET → zoek System.Speech → OK.
  7. Plak C# code, pas COM-poort aan (moet overeenkomen met Arduino IDE).
  8. Upload Arduino sketch, start C# app (groene Play-knop), klik Start in de app.
Eenvoudig Spraakherkenningssysteem met C# en Arduino UNO
Eenvoudig Spraakherkenningssysteem met C# en Arduino UNO
Eenvoudig Spraakherkenningssysteem met C# en Arduino UNO
Eenvoudig Spraakherkenningssysteem met C# en Arduino UNO
Eenvoudig Spraakherkenningssysteem met C# en Arduino UNO

Bekijk de demovideo op YouTube voor duidelijke uitleg.

Wat kun je ermee?

Gebruik je creativiteit: bestuur relais, motoren, verlichting, robotarmen, … met je stem. Leer, Creëer, Deel, Herhaal!

Eenvoudig Spraakherkenningssysteem met C# en Arduino UNO

Code

Arduino Broncode (C/C++)

/* Spraakherkenning LED besturing via C# (System.Speech)
 * Geen externe module nodig – gebruikt PC microfoon.
 * Voor beginners – breid zelf uit!
 * By Jalal Mansoori
 */
const int blueLed = 10;
const int redLed = 9;
const int greenLed = 8;
char incomingData = '0';

void setup() {
  Serial.begin(9600);
  pinMode(blueLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
}

void loop() {
  incomingData = Serial.read();
  switch (incomingData) {
    case 'B': digitalWrite(blueLed, HIGH); break;
    case 'R': digitalWrite(redLed, HIGH); break;
    case 'G': digitalWrite(greenLed, HIGH); break;
    case 'Z': digitalWrite(blueLed, LOW); break;
    case 'X': digitalWrite(redLed, LOW); break;
    case 'C': digitalWrite(greenLed, LOW); break;
    case 'V': // alle aan
      digitalWrite(blueLed, HIGH);
      digitalWrite(redLed, HIGH);
      digitalWrite(greenLed, HIGH);
      break;
    case 'M': // alle uit
      digitalWrite(blueLed, LOW);
      digitalWrite(redLed, LOW);
      digitalWrite(greenLed, LOW);
      break;
  }
}

C# Code (Windows Forms)

/* C# Arduino spraakbesturing
 * By Jalal Mansoori
 * Voeg referentie System.Speech toe via Project → Add Reference
 */
using System;
using System.Windows.Forms;
using System.IO.Ports;
using System.Speech;
using System.Speech.Recognition;
using System.Speech.Synthesis;

namespace CsharpCode {
  public partial class Form1 : Form {
    SerialPort myPort = new SerialPort();
    SpeechRecognitionEngine re = new SpeechRecognitionEngine();
    SpeechSynthesizer ss = new SpeechSynthesizer();
    Choices commands = new Choices();

    public Form1() {
      InitializeComponent();
      myPort.PortName = "COM5"; // aanpassen aan jouw poort
      myPort.BaudRate = 9600;
      processing();
    }

    void processing() {
      commands.Add(new string[] {
        "Blue On", "Red On", "Green On",
        "Blue Off", "Red Off", "Green Off",
        "Exit", "All On", "All Off",
        "Arduino Say Good Bye to makers"
      });
      Grammar gr = new Grammar(new GrammarBuilder(commands));
      re.RequestRecognizerUpdate();
      re.LoadGrammarAsync(gr);
      re.SetInputToDefaultAudioDevice();
      re.SpeechRecognized += re_SpeechRecognized;
    }

    void re_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) {
      switch (e.Result.Text) {
        case "Blue On": sendDataToArduino('B'); break;
        case "Red On": sendDataToArduino('R'); break;
        case "Green On": sendDataToArduino('G'); break;
        case "Blue Off": sendDataToArduino('Z'); break;
        case "Red Off": sendDataToArduino('X'); break;
        case "Green Off": sendDataToArduino('C'); break;
        case "All On": sendDataToArduino('V'); break;
        case "All Off": sendDataToArduino('M'); break;
        case "Arduino Say Good Bye to makers":
          ss.SpeakAsync("Good Bye Makers"); break;
        case "Exit": Application.Exit(); break;
      }
      txtCommands.Text += e.Result.Text + Environment.NewLine;
    }

    void sendDataToArduino(char character) {
      myPort.Open();
      myPort.Write(character.ToString());
      myPort.Close();
    }

    private void btnStop_Click(object sender, EventArgs e) {
      re.RecognizeAsyncStop();
      btnStop.Enabled = false; btnStart.Enabled = true;
    }

    private void btnStart_Click(object sender, EventArgs e) {
      re.RecognizeAsync(RecognizeMode.Multiple);
      btnStop.Enabled = true; btnStart.Enabled = false;
      MessageBox.Show("Voice Recognition Started!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
  }
}

Schema

Volg het schema:

  1. Plaats LED's met weerstanden (220 Ω) op breadboard.
  2. LED + aan Arduino pinnen: Groen → D8, Rood → D9, Blauw → D10.
  3. Alle LED - (kathodes) verbinden met Arduino GND via jumper wire.

schematic_ob2ZmiQwOV.fzz (Fritzing-bestand)

Productieproces

  1. Google Assistant installeren op een MATRIX Voice Raspberry Pi – Stap-voor-stap gids
  2. Real-time Gezichtsherkenning op Raspberry Pi – Complete Gids
  3. Bouw een Veilige Gezichtsherkenning-deur met Windows IoT en Raspberry Pi
  4. Slimme Pen: Real-time Handgeschrift- & Bewegingstracking met Raspberry Pi en IMU
  5. Bouw Je Eigen LUMAZOID: Een DIY Arduino Muziek Visualizer
  6. Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
  7. Bouw Je Eigen 37-LED Roulette-spel met Arduino Nano
  8. Bouw een Ultrasonische Zweefapparaat met Arduino – Stap-voor-stap Handleiding
  9. Bouw Een 'Go Away' Robot – Eenvoudige Arduino Starter Kit Voor Kinderen
  10. Analoge-stijl LED Persistence-of-Vision Klok – DIY Arduino Nano Project
  11. Single-LED Lichtschilderen: Bouw Dynamische Afbeeldingen met een DIY Gemotoriseerd Systeem