Inhoudsopgave:
- Stap 1: Hoe de omgeving instellen?
- Stap 2: Waarom stijgt de vraag naar Arduino?
- Stap 3: Laten we beginnen !!!!
- Stap 4: Vereiste componenten
- Stap 5: Hoe werkt het eigenlijk?
- Stap 6: Bedrading van de componenten
- Stap 7: Code verstrekken aan het Arduino-bord
- Stap 8: Programma/schets
- Stap 9: Hoe zit het met de geschreven codes?
- Stap 10: Loop-functie
- Stap 11: Hoe BitVoicer Server-oplossingsobjecten importeren?
- Stap 12: Conclusie
Video: Spraakherkenning: 12 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
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?
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
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
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
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:
Spraakherkenning met Arduino (Bluetooth + LCD + Android) - Ajarnpa
Spraakherkenning met Arduino (Bluetooth + LCD + Android): In dit project gaan we spraakherkenning doen met Arduino, Bluetooth-module (HC-05) en LCD. laten we uw eigen spraakherkenningsapparaat bouwen
Spraakherkenning met Google Speech API en Python: 4 stappen
Spraakherkenning met Google Speech API en Python: Spraakherkenning Spraakherkenning is een onderdeel van natuurlijke taalverwerking, een subveld van kunstmatige intelligentie. Simpel gezegd, spraakherkenning is het vermogen van computersoftware om woorden en zinnen in gesproken taal te identificeren
Hoe de Android-applicatie te verbinden met AWS IOT en de API voor spraakherkenning te begrijpen: 3 stappen
Hoe de Android-applicatie te verbinden met AWS IOT en de spraakherkenning-API te begrijpen: deze tutorial leert de gebruiker hoe de Android-applicatie te verbinden met de AWS IOT-server en de spraakherkenning-API te begrijpen die een koffiemachine bestuurt. De applicatie bestuurt de koffiemachine via de Alexa Spraakservice, de ka
Inleiding tot spraakherkenning met Elechouse V3 en Arduino: 4 stappen (met afbeeldingen)
Inleiding tot spraakherkenning met Elechouse V3 en Arduino.: Hallo daar…! Spraakherkenningstechnologie is hier de laatste jaren. We herinneren ons nog steeds de grote opwinding die we hadden tijdens het praten met de eerste Siri-compatibele iPhone. Sindsdien zijn apparaten voor spraakopdrachten uitgegroeid tot een zeer geavanceerd niveau dat verder gaat dan
Een microfoon toevoegen aan het Omnitech GPS-systeem voor spraakherkenning: 4 stappen
Een microfoon toevoegen aan het Omnitech GPS-systeem voor spraakherkenning: tijdens het sleutelen aan mijn apparaat vond ik een gemakkelijke en snelle manier om een microfoon toe te voegen aan dit dove apparaat. Met een microfoon kunt u gebruikmaken van spraakherkenning voor navigatie. Het zal een kleine hoeveelheid solderen met zich meebrengen, maar bijna iedereen