Inhaltsverzeichnis:

Spracherkennung - Gunook
Spracherkennung - Gunook

Video: Spracherkennung - Gunook

Video: Spracherkennung - Gunook
Video: Spracherkennung mit Python in 7 Zeilen 2024, November
Anonim
Spracherkennung
Spracherkennung

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?

Wie richte ich die Umgebung ein?
Wie richte ich die Umgebung ein?
Wie richte ich die Umgebung ein?
Wie richte ich die Umgebung ein?
Wie richte ich die Umgebung ein?
Wie richte ich die Umgebung ein?
Wie richte ich die Umgebung ein?
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

Erforderliche Komponenten
Erforderliche Komponenten
Erforderliche Komponenten
Erforderliche Komponenten
Erforderliche Komponenten
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

Verdrahten der Komponenten
Verdrahten der Komponenten
Verdrahten der Komponenten
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

Bereitstellung von Code für das Arduino-Board
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.

Schritt 12: Fazit

Los geht's!!!

Du hast ein tolles Projekt gemacht und kannst mit ihm reden

Also fang an zu reden………………

Sie können die LEDs aufblinken und gleichzeitig sagen, dass es ein Lied singt, wenn es nötig ist, der Code wurde bereits bereitgestellt

Also habe ich mein zweites Instructable abgeschlossen !!!!!!!!

Ja……

Ich glaube, jeder hat es verstanden…

Wenn jemand Fragen hat, kann er mich gerne fragen

Ich werde das nächste Mal mit einem ausgezeichneten Instructable kommen…

Wiedersehen…

Seh dich später……………