Ciao scusami ma in realtà ho sbagliato a scrivere, come si può capire dal contesto non intendevo dire che lo script era approssimativo, soprattutto perché prima avevo detto che funzionava correttamente. Semplicemente ho scritto googlevoicezen laddove dovevo scrivere "Google Speech Recognition" (o come diavolo si chiama). Volevo insomma dire che al di là dello script personalmente ho trovato molte difficoltà nel riconoscimento vocale, perché google riconosce in media una parola su 5. Insomma, tutto volevo meno che "sputare sentenze sul lavoro degli altri" e se ho dato questa impressione mi dispiace.
Chiarito questo, come già avevo detto a me funzionava semplicemente cambiando le virgolette alla riga 28
Poi avevo cambiato giusto qualcosina perché trovavo più semplice usarlo graficamente ma il succo dello script resta quello.
In ogni caso, considerato che non mi piace postare cose che non funzionano, ho fatto un controllo e il problema era semplicemente che non avevo installato sox e xclip, per cui adesso che li ho installati va tutto bene e li posto entrambi.
Il primo con le virgolette e i trattini modificati
Codice: Seleziona tutto
#!/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
#See more at: http://www.tecnomani.com/come-usare-il-riconoscimento-vocale-di-google-in-linux/#sthash.LTAtrDQg.dpuf
Il secondo presuppone la creazione della cartella riconoscimento_vocale nella propria home, dove verranno spostati i files message.txt e message.wav dopo averli rinominati.
Codice: Seleziona tutto
#!/bin/sh
#Riconoscimento vocale in italiano basato su Google Speech Recognition
cartella=$HOME/riconoscimento_vocale
sec=$(zenity --entry --title="Riconoscimento Vocale" --text="Quanti secondi vuoi parlare? Prego inserire un numero ." --entry-text "10")
case $? in
0) : ;;
1) zenity --warning --title="Errore" --text="Hai annullato" && exit 1 ;;
esac
if [ $sec -gt 0 ]; then
(for i in `seq 0 $sec`; do
sleep 1
: $((x = sec - $i ))
echo "#Attesa di $x secondi"
done) | zenity --progress --title="Parla adesso..." --no-cancel --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="Riconoscimento Vocale" --text="Invio richiesta in corso... " --info --timeout 3
case $? in
0) : ;;
1) (rm message.* | zenity --warning --title="Errore" --text="Hai annullato") && exit 1 ;;
esac
#Estrazione del testo
cat message.ret | sed 's/.*utterance":"//' | sed 's/","confidence.*//' > message.txt
#Rimozione files temporanei
rm message.flac
rm message.ret
#Mostra il testo
mex=$(cat message.txt)
zenity --title="Salvare tutto?" --text="$mex" --question
if [ "$?" -eq "0" ]; then
xclip message.txt;
nuovonome=$(zenity --entry --title="Rinomina file" --text="Scrivi qui il nuovo titolo " --entry-text "message")
rinomina=$(mv message.txt $nuovonome.txt && mv message.wav $nuovonome.wav)
sposta=$(mv $nuovonome.* $cartella)
$rinomina && $sposta;
else
rm -r message.wav message.txt
zenity --warning --title="Hai annullato" --text="Tutti i files saranno cancellati" && exit 1
fi
else
zenity --warning --title="Errore" --text="Valore errato";
fi
exit 0
#See more at: http://www.tecnomani.com/come-usare-il-riconoscimento-vocale-di-google-in-linux/#sthash.kcyCryAu.dpuf
A me funzionano entrambi, fatemi sapere.