Taula de continguts:

Reconeixedor de veu: 12 passos
Reconeixedor de veu: 12 passos

Vídeo: Reconeixedor de veu: 12 passos

Vídeo: Reconeixedor de veu: 12 passos
Vídeo: The Cranberries - Zombie (Official Music Video) 2024, Desembre
Anonim
Reconeixedor de veu
Reconeixedor de veu

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?

Com configurar el medi ambient?
Com configurar el medi ambient?
Com configurar el medi ambient?
Com configurar el medi ambient?
Com configurar el medi ambient?
Com configurar el medi ambient?
Com configurar el medi ambient?
Com configurar el medi ambient?

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

Components necessaris
Components necessaris
Components necessaris
Components necessaris
Components necessaris
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

Cablatge dels components
Cablatge dels components
Cablatge dels components
Cablatge 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

Proporcionar codi a la placa Arduino
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: