Quantcast

Come usare il Riconoscimento Vocale di Google in Linux

The following two tabs change content below.

Gianni M.

Sono da sempre stato uno smanettone… Ormai non più in erba, ma sempre desideroso di conoscere, scoprire, ogni cosa che abbia a che fare con tecnologia e dintorni.

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

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.

 

 

 

21 Responses

  1. Marco scrive:

    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

    • gianni scrive:

      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!

  2. dragonvil scrive:

    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…

    • gianni scrive:

      Ciao, grazie per il tuo contributo. Hai scaricato il file già fatto o hai fatto copia e incolla nell'editor di testo?

    • gianni scrive:

      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!

      • dragonvil scrive:

        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.. :P

        • nakki scrive:

          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!!

          • gianni scrive:

            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.

  3. Luca scrive:

    Ottimo post complimenti

  4. casperix scrive:

    Salve,

    articolo veramente interessante. Mi domando se è lecito usarlo.

    • gianni scrive:

      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.

  5. Claudio scrive:

    Ciao, ho capito bene che il tuo sistema permette di trasformare un insieme di parole in italiano in un testo scritto?

    Grazie :)

  6. Claudio scrive:

    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 :)

    • gianni scrive:

      Sembra solo una differente traduzione, prova con il campo "Posizione" e non dovresti avere problemi. Fammi sapere.

      • Claudio scrive:

        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 :)

  7. max scrive:

    Ciao, funziona perfettamente sotto debian 7.

    mi chiedevo se non esistesse la possibilità di usarlo come voice2text, in cui gli do in pasto un file audio della durata per esempio di 1 ora, e lui me lo trascrive in txt.

    ho provato a mettere 30 secondi di registrazione ma non esce testo… probabilmente è un limite delle api di google.

    • Gianni M. scrive:

      Ciao Max, grazie per il ritorno. In effetti avevo iniziato anch'io a smanettare con i file audio, ma poi ho abbandonato quasi subito perché ho pensato che fosse poco fruibile… oltre che molto impreciso: infatti anche i programmi per "sbobinare" le registrazioni audio (spesso usati dagli studenti universitari) hanno bisogno di una costante interazione dell'utente… troppo complesso per le mie conoscenze e di scarsa utilità probabilmente… Se non sbaglio, il limite è di 15-20 secondi, quindi si dovrebbe spezzettare la registrazione in tanti pezzi da convertire singolarmente… Grosso modo anche i programmi per sbobinare funzionano così, ma l'interfaccia diventava un tantino complessa. Cmq se ti vuoi cimentare limita la durata e assiurati che il formato del file wav sia corretto. Fammi sapere

  8. max scrive:

    parli di programmi per sbobinare….. ne conosci qualcuno?

    in teroia bisognarebbe trovare un programma che tececti le pause (superiori per esempio a 1 secondo e li effettui un taglio salvando i vari pezzi in una serie di files, poi con un ciclo for di mandano a sierve di google per ottenere il testo.

    beh… immagino che siamo ancora lontani da programmi che siano in grado di ascoltare e convertire in testo una conversazione tra 2 persone… :D

    • Gianni M. scrive:

      La questione è complicata e, sinceramente esistono già delle app per Android che riescono a scrivere sotto dettatura come questa https://play.google.com/store/apps/details?id=com… : si potrebbe semplicemente riprodurre l’audio da sbobinare da PC o dall’hifi e far partite l’app, quindi limitarsi a correggere gli errori di trascrizione… Fammi sapere se la provi com’è andato il test… Ciao

  1. 14 maggio 2013

    [...] [...]

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>