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 TTSmTts = new TextToSpeech(this, this);//Controllo se la lingua italiana è disponibileif(mTts.isLanguageAvailable(Locale.ITALIAN)== TextToSpeech.LANG_AVAILABLE) { mTts.setLanguage(Locale.ITALIAN); } else {//Altrimenti metto quella inglese o lancio l'installmTts.setLanguage(Locale.ENGLISH); } } else {// dati mancanti, provo ad installarloIntent 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 codamTts.speak(sParla, TextToSpeech.QUEUE_ADD, null);//In quest altro modo interrompe la coda e riproduce il testomTts.speak(sParla, TextToSpeech.QUEUE_FLUSH, null);
Per ulteriori approfondimenti , la risorsa "ufficiale" riguardo al TTS in Android è raggiungibile qui.
No comments:
Post a Comment