Inhaltsverzeichnis:
- Schritt 1: Wie richte ich die Umgebung ein?
- Schritt 2: Warum steigt die Nachfrage nach Arduino?
- Schritt 3: Lassen Sie uns beginnen !!!!
- Schritt 4: Erforderliche Komponenten
- Schritt 5: Wie funktioniert es tatsächlich?
- Schritt 6: Verdrahten der Komponenten
- Schritt 7: Bereitstellung von Code für das Arduino-Board
- Schritt 8: Programm/Skizze
- Schritt 9: Was ist mit den geschriebenen Codes?
- Schritt 10: Schleifenfunktion
- Schritt 11: Wie importiert man BitVoicer Server-Lösungsobjekte?
- Schritt 12: Fazit
Video: Spracherkennung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Hallo allerseits………
Dies ist mein zweites instructable, das ich poste
Also alle willkommen…
In diesem Instructable werde ich Ihnen beibringen, wie Sie einen Spracherkenner mit einem Arduino-Board aufbauen.
Also ich denke du hast schon Erfahrungen mit Arduino Boards gemacht. Wenn nicht, ist es hier überhaupt kein großes Problem. Aber ich empfehle dir, dich daran zu gewöhnen, da es sehr interessant ist, damit zu spielen und einige coole Projekte zu erstellen nach Ihrer Kreativität und Ihrem Wissen daraus heraus.
Also für die Leute, die noch keine Erfahrung mit Arduino haben:
Arduino ist eine Open-Source-Computerhardware, die von einem Unternehmen mit einer großen Gemeinschaft von Designern und Herstellern hergestellt wird. Es kann wie ein kleiner Computer betrachtet werden, der zur Steuerung anderer elektronischer Schaltungen verwendet werden kann
Arduino wird in einer selbst entwickelten Umgebung programmiert, die einfach von ihrer Website heruntergeladen werden kann
Schritt 1: Wie richte ich die Umgebung ein?
Suchen Sie einfach in der Google "Download arduino"
Klicken Sie auf "Arduino - Software"
Sie können "Herunterladen der Arduino-IDE" sehen
Wählen Sie je nach Betriebssystem
Laden Sie es herunter und installieren Sie es
Sie haben also die Software erfolgreich installiert und können Ihren Code für Arduino schreiben und mit Hilfe eines Kabels können Sie das Arduino-Board an den Computer anschließen und den Code einfügen.
Schritt 2: Warum steigt die Nachfrage nach Arduino?
Preiswert
Arduino-Boards sind im Vergleich zu anderen Mikrocontroller-Plattformen kostengünstig. Es wird nur etwa 50 Dollar kosten.
Plattformübergreifend
Die Software für Arduino funktioniert auf Windows-, Macintosh OS- und Linux-Betriebssystemen. Wenn wir an andere Mikrocontroller-Systeme denken, wird es nur in Windows funktionieren, oder anders gesagt, nur auf Windows beschränkt.
Open Source und erweiterbare Software
Die Software ist Open Source, so dass die Leute begannen, sie gründlich zu studieren und Bibliotheken (die eine Reihe von Funktionen für ihren Betrieb enthalten) anderer Programmiersprachen einzubinden.
Einfache und einfache Programmierumgebung
Es ist einfach, die Arduino IDE (Software, über die wir bereits diskutiert haben….) für Leute einschließlich Anfänger zu verwenden, da eine große Menge von Ressourcen von Arduino selbst bereitgestellt wird, die kostenlos im Internet verfügbar sind. Also zögern Sie nicht, mehr zu erfahren darüber.
Open Source und erweiterbare Hardware
Die Pläne der Arduino-Boards werden unter einer Creative Commons-Lizenz veröffentlicht, sodass Personen mit Erfahrung im Schaltungsdesign ihre eigene Version des Moduls erstellen können, sie auch das Recht haben, die Technologie zu erweitern und durch Hinzufügen von Funktionen zu verbessern.
Schritt 3: Lassen Sie uns beginnen !!!!
So habe ich bereits gesagt, dass dieses Projekt hauptsächlich auf die Spracherkennung mit dem Arduino ausgerichtet ist und einige Aufgaben ausführen kann.
Klarer sprechen ……
Es nimmt die vom Benutzer bereitgestellten Tonsignale auf, die durch Blinken der LED erkannt werden können, nachdem sie in synthetisierte Sprache umgewandelt werden.
Schritt 4: Erforderliche Komponenten
Die für dieses Projekt benötigten Hauptkomponenten sind:
Arduino fällig x 1
Spark Fun Elektret-Mikrofon Breakout x 1
Spark Fun Mono Audioverstärker Breakout x 1
Lautsprecher: 0,25 W, 8 Ohm x 1
Steckbrett x 1
5 mm LED: Rot x 3
Widerstand 330 Ohm x 3
Überbrückungsdrähte x 1
Lötkolben x 1
BitVoicer-Server
Es ist ein Spracherkennungs- und Syntheseserver für die Sprachautomatisierung.
Schritt 5: Wie funktioniert es tatsächlich?
1. Audiowellen werden gefunden, dann fängt es diese Wellen ein und wird durch das Sparkfun Electret Breakout Board verstärkt.
2. Das aus dem obigen Prozess erhaltene verstärkte Signal wird digitalisiert und mit dem darin vorhandenen Analog-Digital-Wandler (ADC) auf der Arduino-Platine gepuffert / gespeichert.
3. Die Audiobeispiele werden dem BitVoicer Server über den vorhandenen seriellen Arduino-Port bereitgestellt.
4. BitVoicer Server verarbeitet den Audiostream und erkennt dann die darin enthaltene Sprache.
5. Die erkannte Sprache wird auf die zuvor bereits definierten Befehle abgebildet und dann an das Arduino zurückgesendet. Wenn einer der Befehle darin besteht, Sprache zu synthetisieren, bereitet BitVoicer Server den Audiostream vor und sendet ihn an den Arduino.
6. Der Arduino identifiziert die bereitgestellten Befehle und führt die entsprechende Aktion aus. Wenn ein Audiostream empfangen wird, wird er in die BVS-Lautsprecherklasse eingereiht und mit dem DUE DAC und DMA abgespielt.
7. Der SparkFun Mono Audio Amplifier verstärkt das DAC Signal, so dass es einen 8 Ohm Lautsprecher ansteuern und durch ihn gehört werden kann.
Schritt 6: Verdrahten der Komponenten
Der allererste Schritt besteht darin, verschiedene Komponenten im Steckbrett und auch mit dem Arduino-Board zu verdrahten, wie im Bild gezeigt
Denken Sie daran, dass das hier verwendete Arduino-Board DUE ist. Es gibt verschiedene andere Modelle, die von Arduino hergestellt wurden, die jeweils auf unterschiedlichen Spannungsniveaus arbeiten
Die meisten Arduino-Boards arbeiten mit 5 V, aber das DUE läuft mit 3,3 V
Das DUE verwendet bereits eine 3,3-V-Analogreferenz, sodass Sie keinen Jumper zum AREF-Pin benötigen
Oh Entschuldigung, ich habe vergessen zu sagen, dass ein AREF-Pin ein "ANALOG REFERENCE PIN" ist, der in einem Arduino-Board vorhanden ist, wie in der nächsten Abbildung gezeigt (es ist ein Arduino UNO, aber ähnlich auf der ähnlichen Seite im Fall von DUE)
Der AREF-Pin des DUE ist über eine Widerstandsbrücke mit dem Mikrocontroller verbunden
Um den AREF-Pin zu verwenden, muss der Widerstand R1 von der PCB [Printed Circuit Board] abgelötet werden
Schritt 7: Bereitstellung von Code für das Arduino-Board
Wir müssen also den Code auf das Arduino Board hochladen, damit er je nach den Anweisungen im Code funktionieren kann.
Das geht ganz einfach. Ich erkläre jedem von ihnen im Detail, was sie tun und wie sie funktionieren.
Wie installiere ich eine Bibliothek?
Zuvor müssen wir also wissen, wie man BitVoicer Server-Bibliotheken in der Arduino IDE installiert,.das auf der Arduino-Software.
Öffnen Sie dazu die Arduino IDE
Klicken Sie im oberen Bereich auf "Skizze"
Klicken Sie dann auf "Bibliothek einschließen"
Klicken Sie dort auf "Bibliothek verwalten"
Dann öffnet sich der Bibliotheksmanager und wir sehen eine Liste der Bibliotheken, die zur Installation bereit sind oder bereits installiert wurden
Suchen Sie nach der zu installierenden Bibliothek und wählen Sie dann die Versionsnummer aus
Hier installieren wir BitVoicer Server-Bibliotheken, die für dieses Projekt erforderlich sind
Wie importiert man eine.zip-Bibliothek?
Bibliotheken können auch als ZIP-Datei oder Ordner verteilt werden
Der Name des Ordners ist der Name der Bibliothek
Im Ordner befinden sich eine.cpp-Datei, eine.h-Datei und oft eine keywords.txt-Datei, ein Beispielordner und andere Dateien, die von der Bibliothek benötigt werden
Ab der Version 1.0.5 von Arduino IDE können Sie Bibliotheken von Drittanbietern darin installieren
Entpacken Sie die heruntergeladene Bibliothek nicht, sondern lassen Sie sie unverändert
Gehen Sie dazu zu Sketch> Include Library> Add.zip Library
Wählen Sie den Speicherort der ZIP-Datei aus und öffnen Sie sie.
Kehren Sie zum Menü Skizze > Bibliothek importieren zurück.
Wenn es richtig importiert wurde, wird diese Bibliothek beim Navigieren unten im Dropdown-Menü angezeigt.
Schritt 8: Programm/Skizze
Dies ist das Programm, das im Arduino hochgeladen werden muss.
Dies kann einfach durch Anschließen des Arduino Boards an den Computer und Hochladen auf das Board erfolgen.
Schritt 9: Was ist mit den geschriebenen Codes?
Schauen wir uns nun an, was jede der im Code geschriebenen Funktionen tatsächlich tut ………..
Bibliotheksreferenzen und Variablendeklaration
Bevor wir darüber sprechen, müssen wir einige grundlegende Terminologien kennen und verstehen. Dazu gehören:
-
BVSP
Es ist eine Bibliothek, die uns fast alle Ressourcen zur Verfügung stellt, die zum Austausch von Informationen mit dem BitVoicer-Server erforderlich sind
Es gibt ein Protokoll, das als BitVoicer Server Protocol bekannt ist und durch die Klasse von BVSP implementiert wird. Dies ist erforderlich, um mit dem Server zu interagieren
-
BVSMic
Es ist eine Bibliothek, die alle Dinge implementiert, die zum Aufzeichnen des Audios mit dem Analog-Digital-Wandler (ADC) des Arduino erforderlich sind
Dieses Audio wird im internen Puffer der Klasse gespeichert und kann abgerufen und dann an die Spracherkennungs-Engines gesendet werden, die auf dem BitVoicer-Server verfügbar sind
-
BVSSprecher
Es ist eine Bibliothek, die alle wesentlichen Ressourcen enthält, die zum Reproduzieren von Audiostreams erforderlich sind, die vom BitVoicer-Server gesendet werden
Dazu muss das Arduino-Board über einen eingebauten Digital-Analog-Wandler (DAC) verfügen
Arduino DUE ist das einzige Arduino-Board, das über einen integrierten DAC verfügt
BVSP-, BVSMic-, BVSSpeaker- und DAC-Bibliotheken, deren Verweis in die ersten vier Zeilen geschrieben wird, die den Start des Programms ausmachen
Wenn Sie BitVoicer Server installieren, finden Sie BitSophia, das all diese vier Bibliotheken bereitstellt
Wenn der Benutzer eine Referenz zur BVSSpeaker-Bibliothek hinzufügt, wird die zuvor erwähnte DAC-Bibliothek automatisch aufgerufen
Die BVSP-Klasse wird verwendet, um mit BitVoicer Server zu kommunizieren
Die BVSMic-Klasse wird verwendet, um Audio aufzunehmen und zu speichern
Die BVSSpeaker-Klasse wird verwendet, um Audio mit dem Arduino DUE DAC zu reproduzieren
2. Setup-Funktion
Die Setup-Funktion wird verwendet, um bestimmte Aktionen auszuführen, wie zum Beispiel:
So stellen Sie die Pin-Modi und ihre Anfangszustände ein
So initialisieren Sie die serielle Kommunikation
So initialisieren Sie die BVSP-Klasse
So initialisieren Sie die BVSMic-Klasse
So initialisieren Sie die BVSSpeaker-Klasse
Es setzt auch „Event Handler“(Funktionszeiger) für die Ereignisse frameReceived, modeChanged und streamReceived der Klasse BVSP
Schritt 10: Schleifenfunktion
Es führt fünf Hauptoperationen durch:
1. keepAlive()-Funktion
Diese Funktion dient dazu, den Server nach den Statusinformationen abzufragen.
2. empfang()-Funktion
Mit dieser Funktion wird überprüft, ob der Server Daten gesendet hat oder nicht. Wenn der Server Daten gesendet hat, werden diese verarbeitet.
3. isSREAvailable(), startRecording(), stopRecording() und sendStream() Funktionen
Diese Funktionen werden verwendet, um die verschiedenen Einstellungen beim Aufnehmen des Audios zu steuern und nachdem es das Audio erreicht hat, wird dieses Audio an den BitVoicer-Server gesendet.
4. play() Funktion
Diese Funktion wird verwendet, um das Audio abzuspielen, das in der BVSSpeaker-Klasse in die Warteschlange eingereiht wurde.
5. playNextLEDNote()
Diese Funktion wird verwendet, um zu steuern, wie die Led blinken soll.
6. BVSP_frameReceived-Funktion
Diese Funktion wird jedes Mal aufgerufen, wenn die Funktion receive() beginnt, zu erkennen, dass ein vollständiger Frame empfangen wurde. Hier führen wir die Befehle aus, die vom BitVoicer-Server erhalten wurden. Die Befehle, die das Blinken von LEDs steuern, haben 2 Bytes. Dabei zeigt das erste Byte den Pin an und das zweite Byte zeigt den Pin-Wert an. Hier verwenden wir die analogWrite ()-Funktion, um den entsprechenden Wert für den Pin zu setzen. Zu diesem Zeitpunkt müssen wir auch überprüfen, ob der Befehl playLEDNotes, der vom Typ Byte ist, empfangen wurde. Wenn es empfangen wurde, setze ich playLEDNotes auf true und es überwacht und markiert die aktuelle Uhrzeit. Diese Zeit wird von der Funktion playNextLEDNote verwendet, um die LEDs mit dem Song zu synchronisieren.
7. BVSP_modeChanged-Funktion
Diese Funktion wird jedes Mal aufgerufen, wenn die Funktion receive() einen Moduswechsel in ausgehender Richtung erkennt (Server Arduino). BitVoicer Server kann gerahmte Daten oder Audio an das Arduino senden. Bevor die Kommunikation von einem Modus in einen anderen übergeht, sendet BitVoicer Server ein Signal. Die BVSP-Klasse identifiziert dieses Signal und löst das modeChanged-Ereignis aus oder markiert es. Wenn der Benutzer in der BVSP_modeChanged-Funktion erkennt, dass die Kommunikation vom Stream-Modus in den Frame-Modus übergeht, weiß er/sie, dass das Audio beendet ist, sodass der Benutzer der BVSSpeaker-Klasse mitteilen kann, die Audiowiedergabe zu stoppen.
8. BVSP_streamReceived-Funktion
Diese Funktion wird jedes Mal aufgerufen, wenn die Funktion receive() erkennt, dass Audiosamples empfangen wurden. Es ruft einfach die Audiodaten ab und reiht sie in die BVSSpeaker-Klasse ein, damit die Funktion play() sie reproduzieren kann.
9. playNextLEDNote-Funktion
Diese Funktion wird nur ausgeführt, wenn die Funktion BVSP_frameReceived den Befehl playLEDNotes identifiziert. Es steuert und synchronisiert die LEDs mit dem vom BitVoicer Server gesendeten Audio. Um die LEDs mit dem Audio zu synchronisieren und das richtige Timing zu kennen, kann eine kostenlose Software Sonic Visualizer verwendet werden. Es ermöglicht uns, die Audiowellen zu beobachten, damit die Person erkennen kann, wann eine Klaviertaste gedrückt wurde.
Schritt 11: Wie importiert man BitVoicer Server-Lösungsobjekte?
Wir haben jetzt BitVoicer Server eingerichtet, um mit dem Arduino zu arbeiten.
Es gibt vier Hauptlösungsobjekte für einen BitVoicer-Server: Standorte, Geräte, Binärdaten und Sprachschemas.
Schauen wir uns diese im Detail an:
Standorte
Es stellt den physischen Standort dar, an dem das Gerät installiert wird.
Wir können einen Ort namens Home erstellen.
Geräte
Sie gelten als Clients von BitVoicer Server.
Wie beim Erstellen eines Standorts können wir ein gemischtes Gerät erstellen, der Einfachheit halber nennen wir es ArduinoDUE.
Manchmal kann es zu Pufferüberläufen kommen, daher musste ich die Datenrate in den Kommunikationseinstellungen auf 8000 Samples pro Sekunde begrenzen.
BinaryData ist ein Befehlstyp, den BitVoicer Server an Clientgeräte senden kann. Sie sind eigentlich Byte-Arrays, die Sie mit Befehlen verknüpfen können.
Wenn BitVoicer Server Sprache im Zusammenhang mit diesem Befehl erkennt, sendet er das Byte-Array an das Zielgerät.
Aus diesem Grund habe ich für jeden Pin-Wert ein BinaryData-Objekt erstellt und sie ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff und so weiter genannt.
Ich musste also 18 BinaryData-Objekte erstellen, daher schlage ich vor, dass Sie die Objekte aus der unten bereitgestellten Datei VoiceSchema.sof herunterladen und importieren.
Was ist also ein Sprachschema?
Bei Voice-Schemas kommt alles zusammen. Die Hauptaufgabe von ihnen besteht darin, zu definieren, wie die Sätze erkannt werden sollen und welche Befehle ausgeführt werden müssen.
Für jeden Satz können Sie beliebig viele Befehle und deren Ausführungsreihenfolge definieren.
Sie können auch Verzögerungen zwischen jedem der bereitgestellten Befehle definieren.
BitVoicer Server unterstützt nur 8-Bit-Mono-PCM-Audio (8000 Samples pro Sekunde), daher muss die Audiodatei in dieses Format konvertiert werden. Es gibt heute so viele Online-Konvertierungsgebühren und ich empfehle https://audio.online -convert.com/convert-to-wav.
Sie können alle Lösungsobjekte, die ich in diesem Projekt verwendet habe, aus den folgenden Dateien importieren (Importieren von Lösungsobjekten).
Einer von ihnen enthält das DUE-Gerät und der andere enthält das Sprachschema und seine Befehle.