Salve a tutti,
ho deciso di realizzare un progetto che è dotato di riconoscimento e sintesi vocale, per dare dei comandi ad arduino parlando e ricevere delle risposte.
Navigando un poì sul web ho trovato questa libreria in C++ che riconosce le parole che imposto nel file .gram.
Però questa libreria, a mio parere, è molto limitata, perchè riconosce solo l'inglese (nel mio caso mi farebbe comodo l'italiano a causa della non perfetta pronuncia) e non riconosce tutte le parole, inoltre se aggiungi i numeri tra le varie parole, allora si hanno tantissimi problemi di incomprensione.
La stavo utilizzando con processing, perchè mi semplificava la comunicazione seriale (è possibile utilizzarla direttamente da arduino? credo pesi troppo).
Ok lo so che è una cosa complicata e difficile, per questo mi ero accontentato, ma ieri su youtube ho trovato questo video fenomenale
Come potete vedere il riconoscimento è in italiano e anche la sintesi, è pulito fluido, insomma anni luce più avanti di quella llibreria.
Ho provato a contattare il creatore del video ma ancora non ho avuto risposte.
Sapreste dirmi qualche programma o libreria da poter utilizzare per il riconoscimento e la sintesi vocale? in modo tale che poi dal pc invio tramite seriale i comandi ad arduino.
Ovviamente la gestione del discorso la effettuo sul pc, sono a conoscenza dei limiti di arduino xD
p.s: preferirei scrivermi un programma piuttosto che comprare uno shield come easyVR (o come si chiama XD)
Ho il sospetto che Arduino sia usato semplicemente come esecutore di comandi hardware provenienti da un PC su cui gira un programma di riconoscimento e sintesi vocale (tipo DRAGON Naturally Speaking 11).
DRAGON interpreta il parlato e manda il testo relativo a qualsiasi applicazione (Word o altro).
In questo caso, si usa il monitor seriale dell'IDE di Arduino od altro programma di comunicazione seriale (tipo Hyper Terminal) e lo sketch su Arduino interpreta il testo per trasformarlo in attivazione di relè.
Il riconoscimento vocale di Google funziona molto bene, non è semplice da implementare però è utilizzabile con javascript tramite le relative api.
In pratica basta realizzare una pagina web che sfrutta l'engine di Google con uno script che accetta il parlato e fa il confronto tra quanto rilevato e i vari testi da utilizzare, dopo di che invia, dietro richiesta, ad una applicazione, scritta con qualunque linguaggio che supporta i socket, gli esiti e questa invia i necessari comandi, via USB, ad Arduino che viene utilizzato esclusivamente come attuatore low level.
Si sembra che in questo caso arduino può essere utilizzato solo come attuatore, però nel progetto arduino effettua anche altre misurazioni con dei sensori.
A me piacerebbe che tutto ciò però avvenisse su un sistema senza monitor e altri dispositivi di input oltre al microfono.
Vorrei prendere una vecchia scheda madre con una vecchia cpu, arduino e i vari attuatori e relè e far girare il programma da solo. Un po' come la centralina che fa vedere nel video.
È possibile fare questa cosa sia con Dragon sia con l'engine di Google?
salvatore_94:
È possibile fare questa cosa sia con Dragon sia con l'engine di Google?
Potresti usare un vecchio smartphone Android per il riconoscimento vocale oppure un sistema Linux Embedded, tutte e due soluzioni che costano poco, piccole dimensioni, minimo consumo energetico.
Su linux sono completamente impreparato, non l'ho mai utilizzato
Per quanto riguarda lo smartphone ci avevo pensato, però preferirei utilizzare un pc piuttosto che uno smartphone
In quel video, se avete notato, dalla "fase 3" in poi si vede chiaramente nel contenitore una vecchia motherboard "cannibalizzata" da qualche portatile, probabilmente di vecchio modello, data la forma e la dimensione, sembra quasi quella di un vecchio Acer, quelli che avevano il monitor a 4/3 e la ventolina della CPU verso il centro, invece che in un'angolo come adesso, ma potrei sbagliarmi ... comunque pare chiaro che e' quella a fare quasi tutto il lavoro ... poi senza monitor collegato e' impossibile sapere che programma ci stia girando sopra ...
Sisi ho capito che dovrebbe essere il computer a fare tutto, arduino non è abbastanza potente per questa cosa.
Ma sarebbe possibile costruire un sistema "embedded"(se è il termine giusto), cioè prendere una cpu ed una scheda madre che effettuano la sintesi e il riconoscimento vocale e arduino che effettua i vari controlli e misurazioni?
Avevo pensato di utilizzare un vecchio pc, far partire il programma e poi scollegare monitor tastiera e tutto il resto e lasciarlo ad operare
[RISOLTO]
Grazie a tutti per l'aiuto.
Girando sul web ho trovato un programma, "BitVoicer". E' davvero molto veloce e semplice da utilizzare, permette di riconoscere i comandi dettati e di inviare dei valori a propria scelta sulla porta seriale.
Il riconoscimento vocale è davvero ottimo direi, inoltre ha una vasta scelta di linguaggi riconosciuti.
E' un programma a pagamento, ma costa solo 3,50 € , quindi è davvero una spesa minima, direi insignificante date le potenzialità e la facilità d'uso.(però gira solo su windows).
Per il fatto che giri solo su win, puoi "cannibalizzare" qualche vecchio netbook tipo asus o acer (credo se ne possano trovare a poco su giornaletti tipo la soffiata o su ebay, usati e magari esteticamente rovinati, ma a te dell'estetica non te ne fregherebbe nulla in fondo, dato l'uso ;)), ed integrarlo nel sistema ... il fatto che cosi avresti pure tastiera, touchpad e schermo e' un "di piu" nel caso servissero per intervenire al volo, senza doverli collegare ogni volta