Come usare il Riconoscimento Vocale di Google in Linux
In questa guida vi spiegherò come usare il riconoscimento vocale di Google come “metodo di immissione” come si fa con Android cliccando sul classico simbolo del microfono
.
Il riconoscimento vocale in italiano in linux è materia un po’ ostica, ma la grande G ci da una mano con le Google Voice Api.
Grazie a Zenity tutto avviene in modo grafico, nonostante tutto sia realizzato attraverso un semplicissimo script bash.
Per quanto io ami l’utilizzo del terminale, creeremo un lanciatore nel nostro pannello di gnome, in modo da avere questa piccola utility sempre a disposizione.
Il funzionamento è abbastanza semplice, ma differisce un po’ dalla funzionalità che trovate sul vostro telefono Android o su Google Chrome: Si imposta un tempo di registrazione, poi si parla e dopo l’elaborazione, se il risultato è soddisfacente, si copia il testo ottenuto negli appunti oppure no…
Questo script si basa sul materiale che ho trovato in questa pagina, con l’integrazione di Zenity.
Prerequisiti
- SoX http://sox.sourceforge.net per convertire i file Wav in Flac
- WGET http://www.gnu.org/s/wget/ per inoltrare il file Flac alle Api di Google Voice
- SED http://sed.sourceforge.net/ per estrarre il testo riconosciuto dalle stringhe di testo di ritorno dalle Google Voice API
- XCLIP http://sourceforge.net/projects/xclip/ per copiare il testo nella clipboard del server X
per gli utenti Ubuntu basterà aprire un terminale con CTRL+ALT+T, quindi digitare o incollare:
sudo apt-get update
sudo apt-get install sox sed wget zenity xclip
Script Bash
Creiamo il file di testo googlevoicezen.sh nella vostra home con il comando
gedit ~/googlevoicezen.sh
quindi copiate il testo seguente, incollatelo in gedit, salvate e chiudete l’applicazione
#!/bin/sh
sec=$(zenity --entry --title="Google Speech Recognition for Linux" --text="Quanti secondi vuoi parlare? Prego inserire un numero ." --entry-text "10")
if [[ $sec -gt 0 ]]
then
(for i in `seq 0 $sec`; do
sleep 1
: $((x = sec - $i ))
echo "#attesa di $x sec."
echo "$x"
done) | zenity --progress --title="Parla adesso..." --auto-close & rec -r 16000 -b 16 -c 1 message.wav trim 0 $sec;
sox message.wav message.flac rate 16k gain -n -5 silence 1 5 2% ;
wget -q -U "Mozilla/5.0" --post-file message.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=it-IT&client=chromium" >message.ret
zenity --title="Google Speech Recognition for Linux" --text=" Invio richiesta in corso... " --info --timeout 3
echo "4 SED Extract recognized text"
cat message.ret | sed 's/.*utterance":"//' | sed 's/","confidence.*//' > message.txt
echo "5 Remove Temporary Files"
rm message.flac
rm message.ret
echo "6 Show Text "
mex=$(cat message.txt)
zenity --title="Copiare il testo negli appunti?" --text="$mex" --question
if [[ "$?" -eq "0" ]]
then
xclip message.txt;fi
else
zenity –title=”Errore” –text=”Valore errato.” –info;
fi
Bene, ora aggiungiamo i permessi di esecuzione al file:
chmod + ~/googlevoicezen.sh
Ora dobbiamo creare il lanciatore:
- Apriamo la tua directory home con Nautilus
- Trascina l’icona del file sul pannello superiore (o in qualsiasi altro pannello che preferisci)
- Clicca con il tasto destro sull’icona del lanciatore così creato, quindi seleziona proprietà: alla voce “Comando” trovi il path dello script, devi aggiungere all’inizio di tale stringa il comando “bash” (senza le virgolette ovviamente), seguito da uno spazio.
- Clicca sull’icona e impostane una di tuo gradimento. Se ti piace puoi usare questa immagine
.
Utilizzo
Cliccare sull’icona del lanciatore
Impostate il tempo di cui avete bisogno (meglio abbondare, ma senza strafare)
Parliamo scandendo bene le parole… ma non troppo;)
Attendiamo l’elaborazione
Se il risultato è soddisfacente copiamo il testo nella clipboard cliccando su “Si”
Incolliamo il testo dove vogliamo!;) NB: Per incollare il testo non potete utilizzare il classico CTRL+V o il tasto destro del mouse, ma il tasto centrale, premendo la rotellina del mouse. Questo succede perché c’è una clipboard primaria, come nel nostro caso, ed una secondaria, che siamo soliti utilizzare con il tasto destro. Se non avete lo scroll, ma utilizzate un mouse a due bottoni, una trackball o un touchpad basta cliccare entrambi i tasti contemporaneamente.
Puoi scaricare lo script già fatto e l’icona da qui. Lo script è sotto licenza GPL.
Le tue impressioni, precisazioni o miglioramenti sono bene accetti.












A ne da errore
marco@marco-desktop:~$ ./googlevoicezen.sh
Specificare il tipo di dialogo. Consultare "zenity –help" per maggiori dettagli
Specificare il tipo di dialogo. Consultare "zenity –help" per maggiori dettagli
marco@marco-desktop:~$
su Ubuntu 12.10 Unity
Ciao Marco, scusa per la latitanza. In effetti ho scoperto che se si copia lo script, se copiato direttamente dall'articolo non funziona perchè wordpress sostituisce le virgolette "giuste" con quelle più "fashion"… Ora il problema dovrebbe essere risolto. Grazie a te e al forum ubuntu!
Ciao, ho provato ad usare il tuo script su linux mint 14, dopo aver impostato il tempo quello che ottengo è il messaggio "valore errato" per qualsiasi valore che imposto.
Non sono un'esperto di script,non saprei da cosa può dipendere, però ci tenevo a segnalartelo. magari poi sono io che ho sbagliato qualcosa…
Ciao, grazie per il tuo contributo. Hai scaricato il file già fatto o hai fatto copia e incolla nell'editor di testo?
Ciao, credo di aver trovato la soluzione al problema del "valore errato" in ogni caso: in alcuni casi lo script non funziona tramite lanciatore, ma solo da terminale: basta dire al lanciatore di usare la shell bash per eseguire lo script e il gioco è fatto. Ho aggiornato questo dettaglio alla guida per semplicità. Grazie ancora per la segnalazione!
Ciao, scusa per il ritardo, mi ero quasi dimenticato di questa discussione.Ho risolto eliminando le doppie parentesi alla riga 3 e alla 22…non sono un'esperto,non so dirti perché così funziona..
E io che mi ero creato un piccolissimo script bash nella stessa cartella dell'altro, con questo contenuto:
#!/bin/bash
./googlevoicezen.sh
semplicemente richiamava da bash l'altro script…beh dai, l'ho corretto ed ora funziona in ogni caso…grazie!!
Grazie per il tuo contributo! Il bello di Linux è proprio questo: ci sono diverse soluzioni allo stesso problema! Pubblico il tuo post così resta qui a disposizione di tutti.
Ottimo post complimenti
Salve,
articolo veramente interessante. Mi domando se è lecito usarlo.
Ciao, grazie per il contributo… Non c'è niente di illegale o illecito: Google mette a disposizione le Api, cioè il codice che permette di utilizzare i suoi strumenti, che al momento sono disponibili liberamente. Se domani mattina Google decidesse di chiudere il servizio ovviamente lo script smetterebbe di funzionare. Un saluto.
Ciao, ho capito bene che il tuo sistema permette di trasformare un insieme di parole in italiano in un testo scritto?
Grazie
Sì, è proprio quello che fa!;) Grazie a te.
Ciao
,
ho seguito attentamente le istruzioni di cui sopra, ma non sono riuscito ad impostare il “Comando” “bash”, certamente per mia inesperienza.
Considera che cliccando col destro sull'icona, si apre una finestra con i campi seguenti
Nome:googlevoicezen.sh
Posizione:file:///root/Desktop/googlevoicezen.sh
Commento: Apre «/root/Desktop/googlevoicezen.sh»
cioè non trovo il campo comando.
Puoi aiutarmi? Grazie
Sembra solo una differente traduzione, prova con il campo "Posizione" e non dovresti avere problemi. Fammi sapere.
Se imposto "Posizione" come segue
bash file:///root/Desktop/googlevoicezen.sh
e poi clicco col sinistro sull'icona, il sistema risponde:
Errore. Impossibile aprire la posizione «bash file:///root/Desktop/googlevoicezen.sh» Operazione non supportata.
Cosa consigli?
Grazie