Taula de continguts:
- Pas 1: Com configurar l'entorn?
- Pas 2: per què augmenta la demanda d’Arduino?
- Pas 3: Comencem !!!!
- Pas 4: components necessaris
- Pas 5: com funciona realment?
- Pas 6: Connexió dels components
- Pas 7: Proporcionar codi a la placa Arduino
- Pas 8: programa / esbós
- Pas 9: Què passa amb els codis escrits?
- Pas 10: funció de bucle
- Pas 11: Com importar objectes de solució de servidor BitVoicer?
- Pas 12: Conclusió
Vídeo: Reconeixedor de veu: 12 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Hola a tothom………
Aquest és el meu segon instructable que publico
Doncs benvinguts a tots …
En aquest instructiu us ensenyaré a construir un reconeixedor de veu mitjançant una placa arduino.
Per tant, crec que ja teniu experiència amb les plaques arduino. Si no, no és en absolut un gran problema aquí, però us recomano que us hi acostumeu, ja que és molt interessant jugar-hi i crear alguns projectes interessants. fora d’ella segons la vostra creativitat i coneixement.
Així doncs, per a les persones que no tinguin experiència prèvia amb l’arduino:
Arduino és un maquinari informàtic de codi obert fabricat per una empresa que té una gran comunitat de dissenyadors i fabricants. Es pot considerar com un ordinador petit que es pot utilitzar per controlar altres circuits electrònics
Arduino està programat en un entorn desenvolupat per ells mateixos que es pot descarregar fàcilment des del seu lloc web
Pas 1: Com configurar l'entorn?
Només cal que cerqueu al google "download arduino"
Feu clic a "Arduino - Programari"
Podreu veure "Descarregar l'IDE Arduino"
Trieu segons el vostre sistema operatiu
Baixeu-lo i instal·leu-lo
Per tant, heu instal·lat correctament el programari i podeu escriure el vostre codi per a arduino i, amb l’ajut d’un cable, podeu connectar la placa arduino a l’ordinador i inserir-hi el codi.
Pas 2: per què augmenta la demanda d’Arduino?
De baix cost
Les plaques Arduino són econòmiques en comparació amb altres plataformes de microcontroladors. Costarà uns 50 dòlars.
Multiplataforma
El programari per a Arduino funciona en sistemes operatius Windows, Macintosh OS i Linux. Si pensem en altres sistemes de microcontroladors, només funcionarà a Windows o, en altres paraules, es limitarà només a Windows.
Programari de codi obert i extensible
El programari és de codi obert, de manera que la gent va començar a estudiar-lo profundament i a incloure biblioteques (que inclouen un conjunt de funcions per al seu funcionament) d'altres llenguatges de programació.
Entorn de programació senzill i fàcil
És fàcil utilitzar l’Arduino IDE (programari del qual ja hem parlat ….) per a persones incloses per a principiants, ja que els mateixos Arduino proporcionen una gran quantitat de recursos, que estan disponibles a Internet de forma gratuïta. sobre això.
Maquinari de codi obert i extensible
Els plans de les plaques Arduino es publiquen sota una llicència Creative Commons, de manera que les persones que tenen experiència en el disseny de circuits poden fer la seva pròpia versió del mòdul, també tenen dret a ampliar la tecnologia i poden millorar afegint-hi funcions.
Pas 3: Comencem !!!!
Per tant, ja he dit que aquest projecte se centra principalment en el reconeixement de veu mitjançant Arduino i permetre-li realitzar algunes tasques.
Parlant amb més claredat …
Capta els senyals de so proporcionats per l’usuari, que es poden detectar parpellejant el LED després de convertir-lo en veu sintetitzada.
Pas 4: components necessaris
Els components principals necessaris per a aquest projecte són:
Arduino Due x 1
Spark Fun Breaket Microphone Electret x 1
Spark Fun Mono Audio Amp Breakout x 1
Altaveu: 0,25 W, 8 ohms x 1
Taula de pa x 1
LED de 5 mm: vermell x 3
Resistència 330 ohm x 3
Filferros de pont x 1
Soldador x 1
Servidor BitVoicer
És un servidor de reconeixement i síntesi de veu per a l'automatització de la parla.
Pas 5: com funciona realment?
1. S’estan descobrint ones d’àudio, que capturen aquestes ones i són amplificades per la placa Sparkfun Electret Breakout.
2. El senyal amplificat aconseguit amb el procés anterior es digitalitzarà i emmagatzemarà a la placa Arduino mitjançant el convertidor analògic-digital (ADC) que hi ha.
3. Les mostres d'àudio es proporcionaran al servidor BitVoicer mitjançant el port sèrie Arduino present.
4. BitVoicer Server processarà el flux d'àudio i, a continuació, reconeixerà la veu que conté.
5. El discurs reconegut es maparà a les ordres que ja hagi estat definides per ell mateix abans, i es tornarà a enviar a l'Arduino. Si una de les ordres consisteix a sintetitzar la veu, BitVoicer Server prepararà el flux d’àudio i l’enviarà a l’Arduino.
6. L'Arduino identificarà les ordres proporcionades i realitzarà les accions adequades. Si es rep un flux d’àudio, es posarà a la cua de la classe Altaveu BVS i es reproduirà amb els DUE DAC i DMA.
7. L'amplificador d'àudio mono SparkFun amplificarà el senyal DAC perquè pugui accionar un altaveu de 8 Ohm i es pugui escoltar a través d'ell.
Pas 6: Connexió dels components
El primer pas és connectar diferents components a la taula de treball i també amb la placa arduino tal com es mostra a la imatge
Recordeu que la placa arduino que s’utilitza aquí és DUE, hi ha altres models que han estat fabricats per Arduino i que funcionen en diferents nivells de voltatge
La majoria de les plaques Arduino funcionen a 5 V, però el DUE funciona a 3,3 V
El DUE ja utilitza una referència analògica de 3,3 V, de manera que no necessiteu un pont al pin AREF
Ho sento, m'he oblidat de dir que un pin AREF és un "PIN DE REFERÈNCIA ANALOGGICA" que es troba en una placa arduino tal com es mostra a la següent figura (és un arduino UNO però és similar al lloc similar en el cas de DUE)
El pin AREF del DUE està connectat al microcontrolador mitjançant un pont de resistència
Per utilitzar el pin AREF, la resistència R1 ha de ser soldada del PCB [placa de circuit imprès]
Pas 7: Proporcionar codi a la placa Arduino
Per tant, hem de carregar el codi a la placa Arduino, perquè funcioni en funció de les instruccions del codi.
És molt fàcil fer-ho: explicaré cadascun d’ells amb detall, què fan i com funcionen.
Com instal·lar una biblioteca?
Per tant, abans d’això hem de saber com instal·lar les biblioteques del servidor BitVoicer a l’IDE Arduino,.that al programari arduino.
Per això, obriu l'IDE Arduino
Al tauler superior, feu clic a "Esbós"
A continuació, feu clic a "Inclou biblioteca"
Feu clic a "Gestiona la biblioteca"
A continuació, s'obrirà el gestor de biblioteques i podrem veure una llista de biblioteques que estan a punt per instal·lar-se o que ja s'han instal·lat
Cerqueu la biblioteca per instal·lar i seleccioneu el número de versió
Aquí estem instal·lant biblioteques del servidor BitVoicer, que són necessàries per a aquest projecte
Com importar una biblioteca.zip?
Les biblioteques també es poden distribuir com a fitxer o carpeta ZIP
El nom de la carpeta és el nom de la biblioteca
Dins de la carpeta hi haurà un fitxer.cpp, un fitxer.h i sovint un fitxer keywords.txt, carpeta d’exemples i altres fitxers que requereix la biblioteca
Des de la versió 1.0.5 d'Arduino IDE, podeu instal·lar-hi biblioteques de tercers
No descomprimiu la biblioteca descarregada, deixeu-la tal qual
Per a això, aneu a croquis> Inclou biblioteca> Afegeix biblioteca.zip
Seleccioneu la ubicació del fitxer.zip i obriu-lo.
Torneu al menú Esbós> Importa biblioteca.
Si s’importa correctament, aquesta biblioteca es podrà veure a la part inferior del menú desplegable quan navegueu.
Pas 8: programa / esbós
Aquest és el programa que s’ha de penjar a l’Arduino.
Es pot fer simplement connectant la placa Arduino a l'ordinador i carregant-la a la placa.
Pas 9: Què passa amb els codis escrits?
Vegem ara què fan realment cadascuna de les funcions escrites al codi …
Referències de la biblioteca i declaració de variables
Abans de parlar-ne, hem de conèixer i comprendre algunes terminologies bàsiques, com ara:
-
BVSP
És una biblioteca que ens proporciona gairebé tots els recursos necessaris per intercanviar informació amb el servidor BitVoicer
Hi ha un protocol present conegut com a BitVoicer Server Protocol que s’implementa a través de la classe de de BVSP. Això és necessari per interactuar amb el servidor
-
BVSMic
És una biblioteca que implementa tot el necessari per gravar l'àudio mitjançant el convertidor analògic a digital (ADC) de l'Arduino
Aquest àudio s’emmagatzema al buffer intern de la classe i es pot recuperar i després es pot enviar als motors de reconeixement de veu disponibles al servidor BitVoicer
-
Altaveu BVS
És una biblioteca que conté tots els recursos essencials necessaris per reproduir els fluxos d'àudio enviats des del servidor BitVoicer
Per a això, la placa Arduino ha de tenir un convertidor digital a analògic (DAC) integrat
Arduino DUE és l’única placa Arduino que té un DAC integrat
Les biblioteques BVSP, BVSMic, BVSSpeaker i DAC, la referència a les quals s’escriu a les quatre primeres línies que conformen la mirada fixa del programa
Quan instal·leu BitVoicer Server, podeu trobar BitSophia que proporciona totes aquestes quatre biblioteques
Quan l'usuari afegeix una referència a la biblioteca BVSSpeaker, s'invocarà automàticament la biblioteca DAC que s'ha esmentat anteriorment
La classe BVSP s’utilitza per comunicar-se amb el servidor BitVoicer
La classe BVSMic s’utilitza per capturar i emmagatzemar àudio
La classe BVSSpeaker s’utilitza per reproduir àudio mitjançant l’Arduino DUE DAC
2. funció de configuració
La funció de configuració s’utilitza per dur a terme certes accions com:
Per definir els modes pin i els seus estats inicials
Per inicialitzar la comunicació en sèrie
Per inicialitzar la classe BVSP
Per inicialitzar la classe BVSMic
Per inicialitzar la classe BVSSpeaker
També estableix "gestors d'esdeveniments" (indicadors de funció) per als esdeveniments frameReceived, modeChanged i streamReceived de la classe BVSP
Pas 10: funció de bucle
Realitza cinc grans operacions:
1. funció keepAlive ()
Aquesta funció consisteix a sol·licitar al servidor informació sobre l’estat.
2. funció de rebre ()
Aquesta funció consisteix a comprovar si el servidor ha enviat dades o no. Si el servidor ha enviat dades, les processarà.
3. isSREAvailable (), startRecording (), stopRecording () i sendStream () funcions
Aquestes funcions s’utilitzen per controlar els diversos paràmetres de gravació de l’àudio i, després d’aconseguir l’àudio, enviarà aquest àudio al servidor BitVoicer.
4. funció play ()
Aquesta funció s'utilitza per reproduir l'àudio que s'ha posat a la cua de la classe BVSSpeaker.
5. playNextLEDNote ()
Aquesta funció s’utilitza per controlar com ha de parpellejar el led.
6. Funció BVSP_frameReceived
Aquesta funció s’anomena cada vegada que la funció receive () comença a identificar que s’ha rebut un fotograma complet. Aquí estem executant les ordres aconseguides des del servidor BitVoicer. Les ordres que controlen el parpelleig dels LED són de 2 bytes. En aquest primer byte indiquem el pin i el segon byte indica el valor del pin. Aquí estem utilitzant la funció analogWrite () per establir el valor adequat al pin. En aquest moment també hem de comprovar si s’ha rebut l’ordre playLEDNotes, que és de tipus Byte. Si s'ha rebut, he establert playLEDNotes a true i controlarà i marca l'hora actual. Aquest cop l’utilitzarà la funció playNextLEDNote per sincronitzar els LED amb la cançó.
7. Funció BVSP_modeChanged
Aquesta funció s’anomena cada vegada que la funció de recepció () identifica un canvi de mode en la direcció de sortida (servidor Arduino). BitVoicer Server pot enviar dades emmarcades o àudio a l’Arduino. Abans que la comunicació passi d'un mode a un altre, el servidor BitVoicer envia un senyal. La classe BVSP identifica aquest senyal i genera o marca l’esdeveniment modeChanged. A la funció BVSP_modeChanged, si l’usuari detecta que la comunicació passa del mode de transmissió al mode d’enquadrament, sabrà que l’àudio ha finalitzat perquè l’usuari pugui dir a la classe BVSSpeaker que deixi de reproduir àudio.
8. Funció BVSP_streamReceived
Aquesta funció s'anomena cada vegada que la funció receive () identifica que s'han rebut mostres d'àudio. Simplement recupera l’àudio i els posa a la cua a la classe BVSSpeaker perquè la funció play () els pugui reproduir.
9. Funció playNextLEDNote
Aquesta funció només s'executa si la funció BVSP_frameReceived identifica l'ordre playLEDNotes. Controla i sincronitza els LED amb l'àudio enviat des del servidor BitVoicer. Per sincronitzar els LED amb l'àudio i conèixer el moment correcte, es pot utilitzar un programari gratuït Sonic Visualizer. Ens permet veure les ones d'àudio perquè la persona pugui saber quan s'ha premut una tecla de piano.
Pas 11: Com importar objectes de solució de servidor BitVoicer?
Ara hem configurat el servidor BitVoicer per treballar amb Arduino.
Hi ha quatre objectes principals de solució per a un servidor BitVoicer: ubicacions, dispositius, BinaryData i esquemes de veu.
Vegem-los detalladament:
Ubicacions
Representa la ubicació física en què s’instal·la el dispositiu.
Podem crear una ubicació anomenada Inici.
Dispositius
Es considera que són els clients de BitVoicer Server.
Igual que crear una ubicació, podem crear un dispositiu mixt, per facilitar-nos el nom ArduinoDUE.
De vegades es poden produir alguns desbordaments de memòria intermèdia, de manera que per eliminar-lo he hagut de limitar la velocitat de dades a la configuració de la comunicació a 8000 mostres per segon.
BinaryData és un tipus d’ordre que BitVoicer Server pot enviar als dispositius clients. En realitat són matrius de bytes que podeu enllaçar a les ordres.
Quan BitVoicer Server reconeix la veu relacionada amb aquesta ordre, envia la matriu de bytes al dispositiu de destinació.
Per aquest motiu, he creat un objecte BinaryData per a cada valor de pin i els he anomenat ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff, etc.
Per tant, vaig haver de crear 18 objectes BinaryData, de manera que us proposo que baixeu i importeu els objectes del fitxer VoiceSchema.sof que es proporciona a continuació.
Llavors, què és un esquema de veu?
Els esquemes de veu són on tot s’uneix. el seu paper principal és definir com s'han de reconèixer les frases i quines comandes cal executar.
Per a cada frase, podeu definir tantes ordres com necessiteu i l'ordre en què s'executaran.
També podeu definir retards entre cadascuna de les ordres proporcionades.
BitVoicer Server només admet àudio PCM mono de 8 bits (8000 mostres per segon), de manera que caldrà convertir el fitxer d'àudio a aquest format, hi ha tants peatges de conversió en línia actuals i us recomano https://audio.online -convert.com/convert-to-wav.
Podeu importar (importar objectes de solució) tots els objectes de solució que he utilitzat en aquest projecte des dels fitxers següents.
Un d’ells conté el dispositiu DUE i l’altre conté l’esquema de veu i els seus ordres.
Pas 12: Conclusió
Aquí està !!!
Heu fet un projecte increïble i podeu parlar-hi
Així que comença a parlar ………………
Podeu parpellejar els LEDs i, al mateix temps, podeu dir que canta una cançó si és necessari, ja s'ha proporcionat el seu codi
Així que he completat la meva segona instrucció !!!!!!!!
Sí …
Crec que tothom ho va entendre …
Si algú té alguna pregunta, no dubti a preguntar-me
La propera vegada veuré un excel·lent instructiu …
Adéu …
Fins aviat……………
Recomanat:
Llançador de coets controlat per veu basat en Alexa: 9 passos (amb imatges)
Llançador de coets controlat per veu basat en Alexa: a mesura que s’acosta la temporada d’hivern; arriba aquella època de l'any en què se celebra la festa de les llums. Sí, parlem de Diwali, que és un veritable festival indi celebrat a tot el món. Aquest any, Diwali ja s’ha acabat i veurem persones
Reconeixedor de moviment manual: 5 passos
Reconeixement de moviment de mans: visió general En aquest projecte, farem un guant que pugui reconèixer alguns moviments bàsics de les mans, mitjançant un MicroBit i uns quants sensors. Utilitzarem les funcions Bluetooth del MicroBit, juntament amb una aplicació per a Android i un servidor web per formar un
Feu el sistema d’avís de notificació per veu / veu: 4 passos
Feu el sistema d'alerta de veu / notificació de veu: en aquest projecte hem creat un sistema d'alerta i de notificació de veu. En aquest projecte es poden utilitzar almenys dos sensors
Reconeixedor de dígits amb Python: 3 passos
Digit Recognizer With Python: Un tema molt popular actualment és el denominat “Computer Vision” que consisteix en una àrea de creació de programari capaç de reconèixer patrons dins d’imatges. És possible imaginar que aquesta habilitat sigui molt útil per a una computadora i permet expandir
Reconeixedor multilingüe amb AIY: 4 passos
Reconeixedor multilingüe amb AIY: a les estacions espacials exteriors hi ha molts astronautes allà.n ~ els astronautes provenen de molts planetes (països). per tant, per tant, hauria de funcionar en molts idiomes