Avete mai pensato di implementare la sintesi vocale in una vostro progetto Android?
Se non sapete come fare, vi posso assicurare che è più semplice di quanto pensate.
Senza perderci in chiacchere, implementiamo nella nostra classe l'interfaccia OnInitListener la quale sarà richiesta dalla classe TextToSpeech. Ora possiamo dichiararci il nostro oggetto:
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener
private TextToSpeech tts = null;
Le API TTS supportano diverse lingue come Inglese, Francese, Tedesco, Italiano e Spagnolo ma è necessario ogni volta specificare la lingua di output. Se diciamo all'istanza TTS configurata in italiano di pronunciare la parola "I am 21" aspettiamoci un "I am ventuno" e non un "Ai em tuenti uan". E' molto importante quindi la configurazione dell'oggetto.
Ulteriore controllo da fare, è anche la presenza delle librerie nel device. Alcuni dispositivi non le possiedono per motivi di spazio oppure possono non avere giusto la lingua che serve a noi.
Per ovviare a ciò potremmo ipotizzare di lanciare un Intent di controllo per esempio nell OnCreate.
Intent checkIntent = new Intent(); checkIntent.setAction(TextToSpeech.Engine.
ACTION_CHECK_TTS_DATA
); startActivityForResult(checkIntent, CODICE_CONTROLLO);
Sarà allora nostro compito gestire l'onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CODICE_CONTROLLO) { if (resultCode == TextToSpeech.Engine.
CHECK_VOICE_DATA_PASS
) {
//tutto apposto creiamo l'istanza TTS
mTts = new TextToSpeech(this, this);
//Controllo se la lingua italiana è disponibile
if(mTts.isLanguageAvailable(Locale.
ITALIAN
)== TextToSpeech.
LANG_AVAILABLE
) { mTts.setLanguage(Locale.
ITALIAN
); } else {
//Altrimenti metto quella inglese o lancio l'install
mTts.setLanguage(Locale.
ENGLISH
); } } else {
// dati mancanti, provo ad installarlo
Intent installIntent = new Intent(); installIntent.setAction(TextToSpeech.Engine.
ACTION_INSTALL_TTS_DATA
); startActivity(installIntent); } } }
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA è l'action necessaria a far aprire il market e a proporre il download delle librerie TTS.
A questo punto abbiamo l'oggetto pronto, non ci resta che farlo parlare ;)
Il modo più semplice è col metodo speak, vediamo come si usa:
String sParla= "
Prova, ciao ciao ciao
";
//In questo modo aggiunge la riproduzione del testo in coda
mTts.speak(sParla, TextToSpeech.
QUEUE_ADD
, null);
//In quest altro modo interrompe la coda e riproduce il testo
mTts.speak(sParla, TextToSpeech.
QUEUE_FLUSH
, null);
Per ulteriori approfondimenti , la risorsa "ufficiale" riguardo al TTS in Android è raggiungibile qui.
No comments:
Post a Comment