Markdown source

# Una semplice Talking Machine

<h6>
Di seguito troverete alcuni script per come fare il text-to-speech su Linux, basandosi su di 
un servizio Google o usando il programma pico2wave
</h6>

<img src="./tux_to_speech.jpg">

Come prova ho realizzato uno script che fa dire al computer l'ora e la data, ed un altro che legge le news dell'ANSA. Ne ha anche uno che legge il meteo,
ma purtroppo il servizio meteo a cui mi appoggiavo ha chiuso l'utilizzo free delle API e quindi "è tutto da rifare"!

## Il servizio Google

Google offre questo servizio di _Text to Speech_ ma non bisogna "sfruculiarlo" troppo! In pratica non bisogna fargli troppe richieste 
al minuto altrimenti ci bannerà!

Questa è la URL che dobbiamo inviare a Google per farci convertire in speech la parola "Ciao":
<pre class="terminal">
http://translate.google.com/translate_tts?tl=it&ie=UTF-8&q=Ciao&client=tw-ob
</pre>


Google però ci risponderà con uno stream audio, per cui, per poterlo riprodurre, useremo il programma mpg123:
<pre class="terminal">
<B>mpg123 -0 -o alsa -q </B>"http://translate.google.com/translate_tts?tl=it&ie=UTF-8&q=$NEXTURL&client=tw-ob"
</pre>

La richiesta a Google è idonea per generare una conversione "Text to Speech" in Italiano. Notate le opzioni **tl=it**.
<pre class="terminal">
mpg123 -0 -o alsa -q "http://translate.google.com/translate_tts?<B>tl=it</B>&ie=UTF-8&q=$NEXTURL&client=tw-ob"
</pre>

Lo script completo che ho usato è questo che ho trovato in Internet e che ho chiamato **speech_IT.sh**:
@source='speech_IT.sh'

Per usarlo vi faccio vedere come ho fatto lo script per dire la data e l'ora:
<pre class="prettyprint">
#!/bin/bash

dt=$(LC_TIME="it_IT.utf8" date '+sono le ore %H e %M minuti, di %A %d %B %Y')
./speech_IT.sh $dt
</pre>

Un'altro modo per scaricare l'audio da Google è usando **wget**:
<pre class="terminal">
wget -q -U Mozilla -O output.mp3 "http://translate.google.com/translate_tts?tl=it&ie=UTF-8&q=Ciao&client=tw-ob"
</pre>

## Il programma pico2wave

Il programma **pico2wave** si installa come un qualsiasi altro programma. Il suo utilizzo è semplice, ed anche lui ci genererà un audio
che poi faremo riprodurre da un'altro programma.

Questo è uno script che ho fatto e che utilizzo per la lettura delle ANSA, si chiama **play_speech.sh**:
@source='play_speech.sh'

Le opzioni con cui eseguiamo **pico2play** ci permettono di definire la lingua _-l=it-IT_ ed il file di output.
In questo caso ho usato il programma **aplay** per la riproduzione.

## E adesso ci facciamo leggere le News ANSA!

Di seguito vi riporto alcuni script: il primo scarica le prime dieci news dal sito ANSA e le salva in altrettanti files sotto la directory **/tmp**.
Gli altri due script non fanno altro che **leggercele** usando in un caso i servizi Google e in un altro caso il programma pico2wave:

### Programma ansa_reader.py
@source='ansa_reader.py'

### Programma di lettura delle news usando i servizi Google
Questo script riproduce le news scaricate, una per volta. Usa lo script **speech_IT.sh** che abbiamo visto prima:
@source='play_ansa_google.sh'

### Programma di lettura delle news usando pico2wave
Questo script riproduce le news scaricate, una per volta. Usa lo script **play_speech.sh** che abbiamo visto prima:
@source='play_ansa.sh'

## Sorgenti dei script
I vari progammi sono su github:
[Talking Machine](https://github.com/cledic/talking_machine)

@include='bio_clemente_dicaprio'