Sommario:

Riconoscitore vocale: 12 passaggi
Riconoscitore vocale: 12 passaggi

Video: Riconoscitore vocale: 12 passaggi

Video: Riconoscitore vocale: 12 passaggi
Video: Riconoscimento vocale 2024, Luglio
Anonim
Riconoscitore vocale
Riconoscitore vocale

Ciao a tutti………

Questa è la mia seconda istruzione che sto postando

Quindi benvenuti a tutti…

In questo Instructable ti insegnerò come costruire un riconoscimento vocale usando una scheda arduino.

Quindi penso che tu abbia già avuto esperienza con le schede arduino. In caso contrario, non è affatto un grosso problema qui. Ma ti consiglio di abituarti perché è molto interessante giocarci e creare alcuni progetti interessanti da esso in base alla tua creatività e conoscenza su di esso.

Quindi per le persone che non hanno una precedente esperienza con arduino:

Arduino è un hardware per computer open source prodotto da un'azienda che ha una vasta comunità di designer e produttori. Può essere considerato come un piccolo computer che può essere utilizzato per controllare altri circuiti elettronici

Arduino è programmato in un ambiente sviluppato da loro stessi che può essere facilmente scaricato dal loro sito web

Passaggio 1: come impostare l'ambiente?

Come impostare l'ambiente?
Come impostare l'ambiente?
Come impostare l'ambiente?
Come impostare l'ambiente?
Come impostare l'ambiente?
Come impostare l'ambiente?
Come impostare l'ambiente?
Come impostare l'ambiente?

Basta cercare in google "scarica arduino"

Fare clic su "Arduino - Software"

Sarai in grado di vedere "Scarica l'IDE Arduino"

Scegli in base al tuo sistema operativo

Scaricalo e installalo

Quindi hai installato con successo il software e puoi scrivere il tuo codice per arduino e con l'aiuto di un cavo puoi collegare la scheda arduino al computer e puoi inserire il codice.

Passaggio 2: perché la domanda di Arduino sta aumentando?

Economico

Le schede Arduino sono economiche rispetto ad altre piattaforme di microcontrollori. Costerà solo circa $ 50.

Multipiattaforma

Il software per Arduino funziona su sistemi operativi Windows, Macintosh OS e Linux. Se pensiamo ad altri sistemi a microcontrollore funzionerà solo in Windows o in altre parole limitato solo a Windows.

Software open source ed estensibile

Il software è open source, così le persone hanno iniziato a studiarlo a fondo e ad includere librerie (che include un insieme di funzioni per il suo funzionamento) di altri linguaggi di programmazione.

Ambiente di programmazione semplice e facile

È facile usare l'IDE Arduino (software di cui abbiamo già discusso….) per le persone compresi i principianti, poiché una grande quantità di risorse è fornita dallo stesso Arduino che è disponibile su Internet gratuitamente. Quindi sentiti libero di saperne di più a proposito.

Hardware open source ed estensibile

I piani delle schede Arduino sono pubblicati con una licenza Creative Commons, quindi le persone che hanno esperienza nella progettazione di circuiti possono realizzare la propria versione del modulo, hanno anche il diritto di estendere la tecnologia e possono migliorare aggiungendo funzionalità.

Passaggio 3: iniziamo!!!!

Quindi ho già detto che questo progetto è principalmente incentrato sul riconoscimento vocale utilizzando Arduino e per consentirgli di svolgere alcune attività.

Parlando più chiaramente ……

Raccoglie i segnali sonori forniti dall'utente, che possono essere rilevati dal lampeggio del LED dopo che è stato convertito in parlato sintetizzato.

Passaggio 4: componenti necessari

Componenti richiesti
Componenti richiesti
Componenti richiesti
Componenti richiesti
Componenti richiesti
Componenti richiesti

I componenti principali richiesti per questo progetto sono:

Arduino Due x 1

Spark Fun Electret Microfono Breakout x 1

Spark Fun Mono Audio Amp Breakout x 1

Altoparlante: 0,25 W, 8 ohm x 1

Tagliere x 1

LED da 5 mm: rosso x 3

Resistenza 330 ohm x 3

Ponticelli x 1

Saldatore x 1

Server BitVoicer

È un server di riconoscimento vocale e sintesi per l'automazione vocale.

Passaggio 5: come funziona effettivamente?

1. Le onde audio vengono scoperte, quindi cattura queste onde e vengono amplificate dalla scheda Sparkfun Electret Breakout.

2. Il segnale amplificato ottenuto dal processo di cui sopra sarà digitalizzato e bufferizzato/memorizzato nella scheda Arduino utilizzando il suo convertitore analogico-digitale (ADC) presente in essa.

3. I campioni audio verranno forniti a BitVoicer Server utilizzando la porta seriale Arduino presente.

4. BitVoicer Server elaborerà il flusso audio e quindi riconoscerà il discorso che contiene.

5. Il parlato riconosciuto verrà mappato ai comandi che è già stato definito da se stesso in precedenza, quindi verrà rimandato all'Arduino. Se uno dei comandi consiste nel sintetizzare il parlato, BitVoicer Server preparerà il flusso audio e lo invierà ad Arduino.

6. Arduino identificherà i comandi forniti ed eseguirà determinate azioni appropriate. Se viene ricevuto un flusso audio, verrà messo in coda nella classe BVS Speaker e riprodotto utilizzando DUE DAC e DMA.

7. L'amplificatore audio mono SparkFun amplificherà il segnale DAC in modo che possa pilotare un altoparlante da 8 Ohm e possa essere ascoltato attraverso di esso.

Passaggio 6: cablaggio dei componenti

Cablaggio dei componenti
Cablaggio dei componenti
Cablaggio dei componenti
Cablaggio dei componenti

Il primo passo è cablare diversi componenti nella breadboard e anche con la scheda arduino come mostrato nell'immagine

Ricorda che la scheda arduino utilizzata qui è DUE, ci sono diversi altri modelli che sono stati prodotti da Arduino, ognuno dei quali funziona su diversi livelli di tensione

La maggior parte delle schede Arduino funziona a 5 V, ma il DUE funziona a 3,3 V

Il DUE utilizza già un riferimento analogico a 3,3 V, quindi non è necessario un ponticello sul pin AREF

Oh scusa, ho dimenticato di dire che un pin AREF è un "PIN DI RIFERIMENTO ANALOGICO" che è presente in una scheda arduino come mostrato nella figura successiva (è un arduino UNO ma è simile nel sito simile nel caso di DUE)

Il pin AREF sul DUE è collegato al microcontrollore tramite un ponte di resistenze

Per utilizzare il pin AREF, il resistore R1 deve essere dissaldato dal PCB [Printed Circuit Board]

Passaggio 7: fornire codice alla scheda Arduino

Fornire codice alla scheda Arduino
Fornire codice alla scheda Arduino

Quindi dobbiamo caricare il codice sulla scheda Arduino, in modo che possa funzionare in base alle istruzioni fornite nel codice.

È molto facile farlo. Spiegherò ognuno di loro in dettaglio, su cosa fanno e come funzionano.

Come installare una libreria?

Quindi prima dobbiamo sapere come installare le librerie BitVoicer Server nell'IDE Arduino,.che nel software arduino.

Quindi per questo apri l'IDE Arduino

Nel pannello superiore clicca su "Schizzo"

Quindi fare clic su "Includi libreria"

Quindi fai clic su "Gestisci libreria"

Quindi si aprirà il gestore della libreria e potremo vedere un elenco di librerie pronte per l'installazione o quelle che sono già state installate

Cerca la libreria da installare e quindi seleziona il numero di versione

Qui stiamo installando le librerie BitVoicer Server, necessarie per questo progetto

Come importare una libreria.zip?

Le biblioteche possono anche essere distribuite come file o cartelle ZIP

Il nome della cartella è il nome della libreria

All'interno della cartella ci sarà un file.cpp, un file.h e spesso un file keywords.txt, una cartella degli esempi e altri file richiesti dalla libreria

Dalla versione 1.0.5 di Arduino IDE, puoi installare librerie di terze parti al suo interno

Non decomprimere la libreria scaricata, lasciala così com'è

Per questo vai a schizzo> Includi libreria> Aggiungi libreria.zip

Seleziona la posizione del file.zip e aprilo.

Torna al menu Schizzo > Importa libreria.

Se è stata importata correttamente, quella libreria deve essere visualizzata nella parte inferiore del menu a discesa durante la navigazione.

Passaggio 8: programma/schizzo

Questo è il programma che deve essere caricato in Arduino.

Può essere fatto semplicemente collegando la scheda Arduino al computer e caricandola sulla scheda.

Passaggio 9: che dire dei codici scritti?

Ora diamo un'occhiata a cosa fanno effettivamente ciascuna delle funzioni scritte nel codice ………..

Riferimenti alla libreria e dichiarazione di variabili

Prima di parlare di questo dobbiamo conoscere e comprendere alcune terminologie di base. Queste includono:

  • BVSP

    È una libreria che ci fornisce quasi tutte le risorse necessarie per scambiare informazioni con il server BitVoicer

    Esiste un protocollo noto come BitVoicer Server Protocol che viene implementato attraverso la classe di BVSP. Questo è necessario per interagire con il server

  • BVSMic

    È una libreria che implementa tutte le cose necessarie per registrare l'audio utilizzando il convertitore analogico-digitale (ADC) di Arduino

    Questo audio viene memorizzato nel buffer interno della classe e può essere recuperato e quindi inviato ai motori di riconoscimento vocale disponibili su BitVoicer Server

  • Altoparlante BVSS

    È una libreria che contiene tutte le risorse essenziali necessarie per riprodurre i flussi audio inviati dal server BitVoicer

    Per questo la scheda Arduino deve avere un convertitore digitale-analogico (DAC) integrato

    Arduino DUE è l'unica scheda Arduino che ha un DAC integrato

Librerie BVSP, BVSMic, BVSSpeaker e DAC, il riferimento a queste è scritto sulle prime quattro righe che compongono l'avvio del programma

Quando installi BitVoicer Server puoi trovare BitSophia che fornisce tutte queste quattro librerie

Quando l'utente aggiunge un riferimento alla libreria BVSSpeaker, la libreria DAC menzionata in precedenza verrà richiamata automaticamente

La classe BVSP viene utilizzata per comunicare con BitVoicer Server

La classe BVSMic viene utilizzata per acquisire e memorizzare l'audio

La classe BVSSpeaker viene utilizzata per riprodurre l'audio utilizzando l'Arduino DUE DAC

2. funzione di configurazione

La funzione di configurazione viene utilizzata per eseguire determinate azioni come:

Per impostare le modalità pin e i loro stati iniziali

Per inizializzare la comunicazione seriale

Per inizializzare la classe BVSP

Per inizializzare la classe BVSMic

Per inizializzare la classe BVSSpeaker

Imposta anche "gestori di eventi" (puntatori a funzione) per gli eventi frameReceived, modeChanged e streamReceived della classe BVSP

Passaggio 10: funzione loop

Svolge cinque operazioni principali:

1. funzione keepAlive()

Questa funzione serve per richiedere al server le informazioni sullo stato.

2. funzione ricevi()

Questa funzione serve a verificare se il server ha inviato o meno dei dati. Se il server ha inviato dei dati, li elaborerà.

3. funzioni isSREAvailable(), startRecording(), stopRecording() e sendStream()

Queste funzioni vengono utilizzate per controllare le varie impostazioni sulla registrazione dell'audio e dopo che raggiunge l'audio invierà questo audio al server BitVoicer.

4. funzione play()

Questa funzione viene utilizzata per riprodurre l'audio che è stato messo in coda nella classe BVSSpeaker.

5. playNextLEDNota()

Questa funzione viene utilizzata per controllare come deve lampeggiare il Led.

6. Funzione BVSP_frameReceived

Questa funzione viene chiamata ogni volta che la funzione receiver() inizia a identificare che è stato ricevuto un frame completo. Qui stiamo eseguendo i comandi ottenuti da BitVoicer Server. I comandi che controllano il lampeggio dei LED sono di 2 Byte. In quel primo byte indica il pin e il secondo byte indica il valore del pin. Qui stiamo usando la funzione analogWrite() per impostare il valore appropriato al pin. A quel punto dobbiamo anche verificare se è stato ricevuto il comando playLEDNotes, che è di tipo Byte. Se è stato ricevuto, ho impostato playLEDNotes su true e controllerà e segnerà l'ora corrente. Questo tempo sarà utilizzato dalla funzione playNextLEDNote per sincronizzare i LED con la canzone.

7. BVSP_modeFunzione modificata

Questa funzione viene chiamata ogni volta che la funzione receiver() identifica un cambio di modalità nella direzione in uscita (Server Arduino). BitVoicer Server può inviare dati o audio con frame ad Arduino. Prima che la comunicazione passi da una modalità all'altra, BitVoicer Server invia un segnale. La classe BVSP identifica questo segnale e genera o contrassegna l'evento modeChanged. Nella funzione BVSP_modeChanged, se l'utente rileva che la comunicazione sta passando dalla modalità stream alla modalità frame, saprà che l'audio è terminato in modo che l'utente possa dire alla classe BVSSpeaker di interrompere la riproduzione dell'audio.

8. Funzione BVSP_streamReceived

Questa funzione viene chiamata ogni volta che la funzione receiver() identifica che sono stati ricevuti campioni audio. Recupera semplicemente l'audio e lo mette in coda nella classe BVSSpeaker in modo che la funzione play() possa riprodurli.

9. riproduci la funzione NextLEDNote

Questa funzione viene eseguita solo se la funzione BVSP_frameReceived identifica il comando playLEDNotes. Controlla e sincronizza i LED con l'audio inviato da BitVoicer Server. Per sincronizzare i LED con l'audio e conoscere la corretta temporizzazione, è possibile utilizzare un software gratuito Sonic Visualizer. Ci consente di guardare le onde audio in modo che la persona possa dire quando è stato premuto un tasto del pianoforte.

Passaggio 11: come importare gli oggetti della soluzione server BitVoicer?

Ora abbiamo configurato BitVoicer Server per funzionare con Arduino.

Esistono quattro oggetti principali della soluzione per un server BitVoicer: Posizioni, Dispositivi, Dati binari e Schemi vocali.

Vediamole in dettaglio:

Sedi

Rappresenta la posizione fisica in cui viene installato il dispositivo.

Possiamo creare una posizione chiamata Home.

Dispositivi

Sono considerati come i client di BitVoicer Server.

Come creare una posizione, possiamo creare un dispositivo misto, per semplicità chiamiamolo come ArduinoDUE.

A volte possono verificarsi dei buffer overflow, quindi per eliminarli ho dovuto limitare il Data Rate nelle impostazioni di comunicazione a 8000 campioni al secondo.

BinaryData è un tipo di comando che BitVoicer Server può inviare ai dispositivi client. In realtà sono array di byte che puoi collegare ai comandi.

Quando BitVoicer Server riconosce la voce relativa a quel comando, invia l'array di byte al dispositivo di destinazione.

Quindi per questo motivo ho creato un oggetto BinaryData per ogni valore pin e li ho chiamati ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff e così via.

Quindi ho dovuto creare 18 oggetti BinaryData, quindi suggerisco di scaricare e importare gli oggetti dal file VoiceSchema.sof che viene fornito di seguito.

Quindi cos'è uno schema vocale?

Gli schemi vocali sono il punto in cui tutto si riunisce. il loro ruolo principale è definire come devono essere riconosciute le frasi e quali comandi devono essere eseguiti.

Per ogni frase, puoi definire tutti i comandi di cui hai bisogno e l'ordine in cui verranno eseguiti.

È inoltre possibile definire ritardi tra ciascuno dei comandi forniti.

BitVoicer Server supporta solo audio PCM mono a 8 bit (8000 campioni al secondo), quindi sarà necessario convertire il file audio in questo formato, ci sono così tanti pedaggi di conversione online presenti oggi e consiglio https://audio.online -convert.com/convert-to-wav.

Puoi importare (Importazione di oggetti soluzione) tutti gli oggetti soluzione che ho usato in questo progetto dai file seguenti.

Uno di essi contiene il Dispositivo DUE e l'altro contiene lo Schema Vocale ei suoi Comandi.

Passaggio 12: Conclusione

Ecco qua!!!

Hai realizzato un progetto fantastico e puoi parlarci

Allora inizia a parlare………………

Puoi far lampeggiare i LED e allo stesso tempo puoi dirlo a canta una canzone se necessario, il suo codice è già stato fornito

Così ho completato il mio Secondo Instructable !!!!!!!!

Sì……

Penso che tutti lo abbiano capito…

Se qualcuno ha domande, non esitate a chiedermelo

La prossima volta inventerò un eccellente Instructable…

Ciao…

A presto……………

Consigliato: