Inhoudsopgave:

Spraakherkenning: 12 stappen
Spraakherkenning: 12 stappen

Video: Spraakherkenning: 12 stappen

Video: Spraakherkenning: 12 stappen
Video: Nederlandstalige Ondertiteling Spraakherkenning - met ondertiteling 2024, November
Anonim
Spraakherkenning
Spraakherkenning

Hallo iedereen………

Dit is mijn tweede instructable die ik aan het posten ben

Dus welkom allemaal…

In deze Instructable ga ik je leren hoe je een stemherkenner kunt bouwen met behulp van een Arduino-bord.

Dus ik denk dat je eerder ervaring hebt met arduino-borden. Zo niet, dan is het hier helemaal geen groot probleem. Maar ik raad je aan eraan te wennen, want het is erg interessant om ermee te spelen en om een aantal coole projecten te maken eruit halen volgens uw creativiteit en kennis ervan.

Dus voor de mensen die geen eerdere ervaring hebben met het gebruik van arduino:

Arduino is een open source computerhardware die wordt vervaardigd door een bedrijf met een grote gemeenschap van ontwerpers en fabrikanten. Het kan worden beschouwd als een kleine computer die kan worden gebruikt om andere elektronische circuits te besturen

Arduino is geprogrammeerd in een door henzelf ontwikkelde omgeving die eenvoudig van hun website kan worden gedownload

Stap 1: Hoe de omgeving instellen?

Hoe de omgeving instellen?
Hoe de omgeving instellen?
Hoe de omgeving instellen?
Hoe de omgeving instellen?
Hoe de omgeving instellen?
Hoe de omgeving instellen?
Hoe de omgeving instellen?
Hoe de omgeving instellen?

Zoek gewoon in de google "download arduino"

Klik op "Arduino - Software"

U zult "Download de Arduino IDE" kunnen zien

Kies afhankelijk van uw besturingssysteem:

Download en installeer het

Dus je hebt de software succesvol geïnstalleerd en je kunt je code voor arduino schrijven en met behulp van een kabel kun je het arduino-bord op de computer aansluiten en de code invoegen.

Stap 2: Waarom stijgt de vraag naar Arduino?

Goedkoop

Arduino-boards zijn goedkoop in vergelijking met andere microcontrollerplatforms. Het kost slechts ongeveer $ 50.

Cross-platform

De Software voor Arduino werkt op de besturingssystemen Windows, Macintosh OS en Linux. Als we aan andere microcontroller-systemen denken, werkt het alleen in Windows of met andere woorden beperkt tot alleen Windows.

Open source en uitbreidbare software

De software is open source, dus mensen begonnen er diep over te studeren en bibliotheken (die een reeks functies voor de werking ervan bevatten) van andere programmeertalen op te nemen.

Eenvoudige en gemakkelijke programmeeromgeving

Het is gemakkelijk om de Arduino IDE (software waar we het al over hebben gehad over…) te gebruiken voor mensen, inclusief beginners, aangezien Arduino zelf een groot aantal bronnen aanbiedt die gratis beschikbaar zijn op internet. Dus voel je vrij om meer te leren over het.

Open source en uitbreidbare hardware

De plannen van de Arduino-boards worden gepubliceerd onder een Creative Commons-licentie, dus mensen die ervaring hebben met het ontwerpen van circuits, kunnen hun eigen versie van de module maken, ze hebben ook het recht om de technologie uit te breiden en kunnen verbeteren door er functies aan toe te voegen.

Stap 3: Laten we beginnen !!!!

Dus ik heb al verteld dat dit project vooral gericht is op spraakherkenning met behulp van de Arduino en om het een aantal taken te laten uitvoeren.

Duidelijker praten……

Het pikt de geluidssignalen op die door de gebruiker worden geleverd, die kunnen worden gedetecteerd door de LED te knipperen, waarna het wordt omgezet in gesynthetiseerde spraak.

Stap 4: Vereiste componenten

Vereiste componenten
Vereiste componenten
Vereiste componenten
Vereiste componenten
Vereiste componenten
Vereiste componenten

De belangrijkste componenten die nodig zijn voor dit project zijn:

Arduino Due x 1

Spark Fun Electret Microfoon Breakout x 1

Spark Fun Mono Audio Amp Breakout x 1

Luidspreker: 0,25 W, 8 ohm x 1

Broodplank x 1

5 mm LED: Rood x 3

Weerstand 330 ohm x 3

Doorverbindingsdraden x 1

Soldeerbout x 1"

BitVoicer-server

Het is een spraakherkennings- en syntheseserver voor spraakautomatisering.

Stap 5: Hoe werkt het eigenlijk?

1. Er worden audiogolven ontdekt, het vangt deze golven op en wordt versterkt door het Sparkfun Electret Breakout-bord.

2. Het versterkte signaal dat met het bovenstaande proces wordt verkregen, wordt gedigitaliseerd en gebufferd/opgeslagen in het Arduino-bord met behulp van de daarin aanwezige analoog-naar-digitaalomzetter (ADC).

3. De audiosamples worden aan BitVoicer Server geleverd met behulp van de aanwezige Arduino seriële poort.

4. BitVoicer Server verwerkt de audiostream en herkent vervolgens de spraak die erin zit.

5. De herkende spraak wordt toegewezen aan de opdrachten die al eerder door hemzelf zijn gedefinieerd en wordt vervolgens teruggestuurd naar de Arduino. Als een van de opdrachten bestaat uit het synthetiseren van spraak, zal BitVoicer Server de audiostream voorbereiden en naar de Arduino sturen.

6. De Arduino identificeert de gegeven opdrachten en voert de juiste actie uit. Als een audiostream wordt ontvangen, wordt deze in de wachtrij geplaatst in de BVS Speaker-klasse en afgespeeld met de DUE DAC en DMA.

7. De SparkFun Mono Audio Amplifier zal het DAC-signaal versterken zodat het een 8 Ohm-luidspreker kan aansturen en er doorheen kan worden gehoord.

Stap 6: Bedrading van de componenten

Bedrading van de componenten
Bedrading van de componenten
Bedrading van de componenten
Bedrading van de componenten

De allereerste stap is om verschillende componenten in het breadboard te bedraden en ook met het arduino-bord zoals weergegeven in de afbeelding

Onthoud dat het Arduino-bord dat hier wordt gebruikt DUE is, er zijn verschillende andere modellen die door Arduino zijn vervaardigd, elk op verschillende spanningsniveaus

De meeste Arduino-borden werken op 5 V, maar de DUE werkt op 3,3 V

De DUE gebruikt al een analoge referentie van 3,3 V, dus je hebt geen jumper naar de AREF-pin nodig

Oh sorry, ik vergat te zeggen dat een AREF-pin een "ANALOGE REFERENTIEPIN" is die aanwezig is in een Arduino-bord zoals weergegeven in de volgende afbeelding (het is een Arduino UNO maar het lijkt op de vergelijkbare site in het geval van DUE)

De AREF-pin op de DUE is via een weerstandsbrug verbonden met de microcontroller

Om de AREF-pin te gebruiken, moet weerstand R1 van de PCB [Printed Circuit Board] worden losgemaakt

Stap 7: Code verstrekken aan het Arduino-bord

Code verstrekken aan het Arduino-bord
Code verstrekken aan het Arduino-bord

We moeten de code dus uploaden naar het Arduino-bord, zodat het kan werken volgens de instructies in de code.

Het is heel gemakkelijk om dit te doen. Ik zal elk van hen in detail uitleggen, over wat ze doen en hoe ze werken.

Hoe installeer ik een bibliotheek?

Dus daarvoor moeten we weten hoe we BitVoicer Server-bibliotheken in de Arduino IDE moeten installeren,.dat op de Arduino-software.

Dus open daarvoor de Arduino IDE

Klik in het bovenste paneel op "Sketch"

Klik vervolgens op "Bibliotheek opnemen"

Klik vervolgens op "Bibliotheek beheren"

Vervolgens wordt de bibliotheekmanager geopend en kunnen we een lijst zien met bibliotheken die klaar zijn voor installatie of die al zijn geïnstalleerd

Zoek naar de bibliotheek die u wilt installeren en selecteer vervolgens het versienummer

Hier installeren we BitVoicer Server-bibliotheken, wat nodig is voor dit project

Hoe een.zip-bibliotheek importeren?

Bibliotheken kunnen ook worden gedistribueerd als een ZIP-bestand of map

De naam van de map is de naam van de bibliotheek

In de map bevinden zich een.cpp-bestand, een.h-bestand en vaak een keywords.txt-bestand, een map met voorbeelden en andere bestanden die vereist zijn door de bibliotheek

Vanaf versie 1.0.5 van Arduino IDE kunt u er bibliotheken van derden in installeren

Pak de gedownloade bibliotheek niet uit, maar laat deze zoals hij is

Ga daarvoor naar schets> Bibliotheek opnemen>.zip-bibliotheek toevoegen

Selecteer de locatie van het.zip-bestand en open het.

Keer terug naar het menu Schets > Bibliotheek importeren.

Als het correct is geïmporteerd, is die bibliotheek te zien onderaan het vervolgkeuzemenu wanneer u navigeert.

Stap 8: Programma/schets

Dit is het programma dat in de Arduino moet worden geüpload.

Het kan eenvoudig worden gedaan door het Arduino-bord op de computer aan te sluiten en het naar het bord te uploaden.

Stap 9: Hoe zit het met de geschreven codes?

Laten we nu eens kijken naar wat elk van de functies die in de code zijn geschreven eigenlijk doen ……..

Bibliotheekverwijzingen en variabele declaratie

Voordat we hierover praten, moeten we enkele basisterminologieën kennen en begrijpen. Deze omvatten:

  • BVSP

    Het is een bibliotheek die ons bijna alle middelen geeft die nodig zijn om informatie uit te wisselen met de BitVoicer Server

    Er is een protocol aanwezig dat bekend staat als het BitVoicer Server-protocol dat wordt geïmplementeerd via de klasse van BVSP. Dit is nodig om met de server te kunnen communiceren

  • BVSMic

    Het is een bibliotheek die alle dingen implementeert die nodig zijn om de audio op te nemen met behulp van Analog-to-Digital Converter (ADC) van de Arduino

    Deze audio wordt opgeslagen in de interne buffer van de klasse en kan worden opgehaald en vervolgens worden verzonden naar de spraakherkenningsengines die beschikbaar zijn op BitVoicer Server

  • BVSSpeaker

    Het is een bibliotheek die alle essentiële bronnen bevat die nodig zijn om audiostreams te reproduceren die worden verzonden vanaf de BitVoicer-server

    Daarvoor moet het Arduino-bord een ingebouwde digitaal-naar-analoogomzetter (DAC) hebben

    Arduino DUE is het enige Arduino-bord met een geïntegreerde DAC

BVSP-, BVSMic-, BVSSpeaker- en DAC-bibliotheken, de verwijzing ernaar is geschreven op de eerste vier regels die het begin van het programma vormen

Wanneer u BitVoicer Server installeert, kunt u BitSophia vinden die al deze vier bibliotheken biedt

Wanneer de gebruiker een verwijzing naar de BVSSpeaker-bibliotheek toevoegt, wordt de eerder genoemde DAC-bibliotheek automatisch aangeroepen

De BVSP-klasse wordt gebruikt om te communiceren met BitVoicer Server

De klasse BVSMic wordt gebruikt om audio vast te leggen en op te slaan

De klasse BVSSpeaker wordt gebruikt om audio te reproduceren met behulp van de Arduino DUE DAC

2. setup-functie:

De setup-functie wordt gebruikt om bepaalde acties uit te voeren, zoals:

Om pin-modi en hun begintoestanden in te stellen

Seriële communicatie initialiseren:

BVSP-klasse initialiseren

De BVSMic-klasse initialiseren

Om de BVSSpeaker-klasse te initialiseren

Het stelt ook "event-handlers" (functiewijzers) in voor de frameReceived, modeChanged en streamReceived gebeurtenissen van de BVSP-klasse

Stap 10: Loop-functie

Het voert vijf grote operaties uit:

1. keepAlive() functie

Deze functie is om de server op te vragen over de statusinformatie.

2. ontvang() functie

Deze functie is om te controleren of de server gegevens heeft verzonden of niet. Als de server gegevens heeft verzonden, zal deze deze verwerken.

3. isSREAvailable(), startRecording(), stopRecording() en sendStream() functies

Deze functies worden gebruikt om de verschillende instellingen bij het opnemen van de audio te regelen en nadat de audio is bereikt, wordt deze audio naar de BitVoicer-server verzonden.

4. play() functie

Deze functie wordt gebruikt om de audio af te spelen die in de wachtrij van de BVSSpeaker-klasse staat.

5. speelNextLEDNote()

Deze functie wordt gebruikt om te bepalen hoe de led moet knipperen.

6. BVSP_frameReceived-functie

Deze functie wordt elke keer aangeroepen wanneer de functie ontvangen() begint te identificeren dat één compleet frame is ontvangen. Hier voeren we de opdrachten uit die zijn verkregen van BitVoicer Server. De commando's die het knipperen van LED's regelen, zijn van 2 bytes. In die eerste byte geeft de pin aan en de tweede byte geeft de pinwaarde aan. Hier gebruiken we de functie analogWrite() om de juiste waarde voor de pin in te stellen. Op dat moment moeten we ook controleren of de opdracht playLEDNotes, die van het type Byte is, is ontvangen. Als het is ontvangen, stel ik playLEDNotes in op true en het zal de huidige tijd controleren en markeren. Deze tijd wordt gebruikt door de playNextLEDNote-functie om de LED's met het nummer te synchroniseren.

7. BVSP_mode Functie gewijzigd:

Deze functie wordt elke keer aangeroepen wanneer de functie ontvangen() een wijziging in de modus in de uitgaande richting identificeert (Server Arduino). BitVoicer Server kan ingelijste gegevens of audio naar de Arduino sturen. Voordat de communicatie van de ene modus naar de andere gaat, stuurt BitVoicer Server een signaal. De BVSP-klasse identificeert dit signaal en verhoogt of markeert de modeChanged-gebeurtenis. In de BVSP_modeChanged-functie, als de gebruiker detecteert dat de communicatie van de stream-modus naar de frame-modus gaat, weet hij/zij dat de audio is beëindigd, zodat de gebruiker de BVSSpeaker-klasse kan vertellen om te stoppen met het afspelen van audio.

8. BVSP_streamReceived-functie

Deze functie wordt elke keer aangeroepen wanneer de functie ontvangen() identificeert dat audiosamples zijn ontvangen. Het haalt eenvoudig de audio op en zet deze in de BVSSpeaker-klasse, zodat de functie play() ze kan reproduceren.

9. playNextLEDNote-functie

Deze functie wordt alleen uitgevoerd als de functie BVSP_frameReceived de opdracht playLEDNotes identificeert. Het bestuurt en synchroniseert de LED's met de audio verzonden vanaf BitVoicer Server. Om de LED's te synchroniseren met de audio en de juiste timing te kennen, kan een gratis software Sonic Visualizer worden gebruikt. Het stelt ons in staat om de audiogolven te bekijken, zodat de persoon kan zien wanneer een pianotoets is ingedrukt.

Stap 11: Hoe BitVoicer Server-oplossingsobjecten importeren?

We hebben nu BitVoicer Server ingesteld om met de Arduino te werken.

Er zijn vier hoofdoplossingsobjecten voor een BitVoicer-server: locaties, apparaten, binaire gegevens en spraakschema's.

Laten we deze in detail bekijken:

Locaties

Het vertegenwoordigt de fysieke locatie waar het apparaat wordt geïnstalleerd.

We kunnen een locatie maken met de naam Thuis.

Apparaten

Ze worden beschouwd als de klanten van BitVoicer Server.

Net als het maken van een locatie kunnen we een gemengd apparaat maken, laten we het voor het gemak ArduinoDUE noemen.

Soms kunnen bufferoverlopen optreden, dus om dit te elimineren moest ik de gegevenssnelheid in de communicatie-instellingen beperken tot 8000 samples per seconde.

BinaryData is een type opdracht dat BitVoicer Server naar clientapparaten kan sturen. Het zijn eigenlijk byte-arrays die u aan opdrachten kunt koppelen.

Wanneer BitVoicer Server spraak herkent die verband houdt met die opdracht, verzendt het de bytearray naar het doelapparaat.

Dus om die reden heb ik een BinaryData-object voor elke pinwaarde gemaakt en deze ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff enzovoort genoemd.

Dus ik moest 18 BinaryData-objecten maken, dus ik raad je aan de objecten te downloaden en te importeren uit het VoiceSchema.sof-bestand dat hieronder wordt weergegeven.

Dus wat is een Voice Schema?

Stemschema's zijn waar alles samenkomt. de belangrijkste rol van hen is om te definiëren hoe de zinnen moeten worden herkend en wat alle commando's moeten worden uitgevoerd.

Voor elke zin kun je zoveel commando's definiëren als je nodig hebt en de volgorde waarin ze zullen worden uitgevoerd.

U kunt ook vertragingen definiëren tussen elk van de geboden opdrachten.

BitVoicer Server ondersteunt alleen 8-bit mono PCM-audio (8000 samples per seconde), dus het is nodig om het audiobestand naar dit formaat te converteren, er zijn tegenwoordig zoveel online conversie-tols en ik raad https://audio.online aan -convert.com/convert-to-wav.

U kunt alle oplossingsobjecten die ik in dit project heb gebruikt, importeren (Importeren van oplossingsobjecten) uit de onderstaande bestanden.

Een daarvan bevat het DUE-apparaat en de andere bevat het spraakschema en de bijbehorende opdrachten.

Stap 12: Conclusie

Daar ga je !!!

Je hebt een geweldig project gemaakt en je kunt ermee praten

Dus begin met praten………………

Je kunt de LED's laten knipperen en tegelijkertijd kun je zeggen om een liedje te zingen als dat nodig is, de code is al verstrekt

Dus ik heb mijn tweede Instructable voltooid !!!!!!!!

Ja……

Ik denk dat iedereen het begreep…

Als iemand vragen heeft, stel ze me gerust

Ik zal de volgende keer met een uitstekende Instructable komen …

Doei…

Tot ziens……………

Aanbevolen: