Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Système de reconnaissance vocale simple avec C# et Arduino UNO

Composants et fournitures

Arduino UNO × 1
Résistance 220 Ω (valeur flexible, éviter trop faible) × 3
LEDs (bleue, rouge, verte) × 3
Breadboard × 1
Fils de connexion (jumpers) × 1
Écouteurs avec microphone (type smartphone) ou microphone intégré PC × 1

Applications et services en ligne

À propos du projet

Note : Mise à jour 2020

Ce projet date de 2 ans et a reçu des retours encourageants. Si vous êtes nouveau, je recommande le tutoriel mis à jour (2020) :

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

Description du projet

Nous sommes tous dotés de capteurs naturels (oreilles, langue, nez...) utilisés au quotidien dans une communication bidirectionnelle (émission/réception). Nous appliquons le même concept aux machines !

Comme tout débutant, j'ai commencé par faire clignoter des LEDs, mais je voulais les contrôler par commande vocale. Après recherches et apprentissage, j'ai terminé ce projet pour le partager avec la communauté créative, surtout les débutants ! La méthode la plus simple pour la reconnaissance vocale avec Arduino.

Nous utilisons des LEDs pour simplifier. Dans ce projet, nous allumons/éteignons des LEDs non pas de façon standard, mais par commandes vocales. C'est très simple et facile, seule une base de programmation est nécessaire.

Pourquoi ce projet ?

Tout a commencé quand mon professeur a démontré un projet C# Windows Forms contrôlant une ampoule virtuelle par commande vocale (sans Arduino). C'était fascinant ! Pour un projet Arduino, j'ai pensé : pourquoi ne pas contrôler une vraie LED par la voix ? Contrôle matériel physique, pas virtuel.

Pourquoi c'est simple ?

Raison importante : aucun module externe de reconnaissance vocale n'est nécessaire ! J'étais sûr qu'il existait un moyen sans module dédié, et je l'ai trouvé grâce à : c-sharpcorner.com

Comment le réaliser

  1. Rassembler tous les composants.
  2. Monter le circuit sur breadboard selon le schéma.
  3. Brancher l'Arduino par USB à l'ordinateur.
  4. Télécharger le code Arduino, l'ouvrir dans l'IDE Arduino, créer un nouveau sketch, coller le code.
Système de reconnaissance vocale simple avec C# et Arduino UNO

Il faut installer Visual Studio (j'utilise VS 2010, toute version permettant application Windows Forms C# convient). Lien de téléchargement : Dropbox

Système de reconnaissance vocale simple avec C# et Arduino UNO

Note #0 : Le projet ne fonctionnera pas sans la bibliothèque System.Speech dans Visual Studio. Pour l'ajouter : Barre d'outils → Projet → Ajouter une référence → .NET → Rechercher "System.Speech" → OK.

Système de reconnaissance vocale simple avec C# et Arduino UNO

Note #1 : Le port COM dans l'IDE Arduino doit correspondre à celui du code C#. Exemple : COM5 dans les deux.

Système de reconnaissance vocale simple avec C# et Arduino UNO

Téléverser le sketch Arduino, puis lancer l'application C# (flèche verte "Start"). En cas de doute, regardez la vidéo de démonstration.

Que pouvez-vous faire avec ce projet ?

Utilisez votre créativité pour créer quelque chose de nouveau ! Apprenez, Créez, Partagez, Recommencez.

Système de reconnaissance vocale simple avec C# et Arduino UNO

Codes sources

Code Arduino (C/C++)

/* Contrôle LEDs ON/OFF par reconnaissance vocale C# (System.Speech)
 * Partie excitante : pas de module externe nécessaire, utilise microphone PC/écouteurs.
 * Idée de base pour débutants, à vous de l'adapter utilement.
 * Keep Learning, Share, Think and Repeat. Enjoy!
 * 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) {
    // États ON
    case 'B': digitalWrite(blueLed, HIGH); break;
    case 'R': digitalWrite(redLed, HIGH); break;
    case 'G': digitalWrite(greenLed, HIGH); break;
    // États OFF (lettres arbitraires, à faire correspondre dans le code C#)
    case 'Z': digitalWrite(blueLed, LOW); break;
    case 'X': digitalWrite(redLed, LOW); break;
    case 'C': digitalWrite(greenLed, LOW); break;
    // Tout allumer
    case 'V':
      digitalWrite(blueLed, HIGH);
      digitalWrite(redLed, HIGH);
      digitalWrite(greenLed, HIGH);
      break;
    // Tout éteindre
    case 'M':
      digitalWrite(blueLed, LOW);
      digitalWrite(redLed, LOW);
      digitalWrite(greenLed, LOW);
      break;
  }
}

Code C# (Visual Studio)

/* Programme de liaison C# - Arduino pour transmission données microphone → Arduino
 * By Jalal Mansoori
 */
using System;
using System.Windows.Forms;
using System.IO.Ports; // Liaison série C# - Arduino
using System.Speech;   // Reconnaissance vocale
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(); // Pour réponse vocale
    Choices commands = new Choices(); // Stockage commandes

    public Form1() {
      InitializeComponent();
      myPort.PortName = "COM5"; // À adapter selon votre port Arduino IDE
      myPort.BaudRate = 9600;   // Identique à Serial.begin(9600)
      processing();
    }

    void processing() {
      // Définition des commandes vocales
      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(); // Micro intégré ou casque
      re.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(re_SpeechRecognized);
    }

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

    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);
    }
  }
}

Schéma de câblage

Suivez simplement le schéma et connectez les composants sur votre breadboard :

  1. Connectez d'abord les LEDs et résistances comme indiqué.
  2. Ensuite, connectez l'anode (+) de chaque LED sur la même colonne que la résistance reliée au pin Arduino :
    - LED Verte + → Pin numérique 8
    - LED Rouge + → Pin numérique 9
    - LED Bleue + → Pin numérique 10
  3. Enfin, reliez le GND de l'Arduino aux cathodes (-) des LEDs avec un fil de connexion.

schematic_ob2ZmiQwOV.fzz (fichier Fritzing)

Processus de fabrication

  1. Installer Google Assistant sur un MATRIX Voice Raspberry Pi – Guide étape par étape
  2. Reconnaissance faciale en temps réel sur Raspberry Pi – Guide complet
  3. Construire une porte à reconnaissance faciale sécurisée avec Windows IoT et Raspberry Pi
  4. Stylo intelligent : Suivi temps réel de l'écriture et du mouvement avec Raspberry Pi et IMU
  5. Construisez votre propre LUMAZOID : Visualiseur musical DIY Arduino
  6. Créer un système Ambilight spectaculaire pour moniteur avec Arduino
  7. Créer votre propre jeu de roulette à 37 LED avec Arduino Nano
  8. Construire un dispositif de lévitation ultrasonique avec Arduino – Guide étape par étape
  9. Construire un Robot « Dégage » – Kit de Démarrage Arduino Facile pour Enfants