Una delle cose che più colpisce chi si avvicina per la prima volta ad App Inventor è la facilità con cui mette a disposizione strumenti molto potenti (GPS, accelerometro, etc...) richiedendo pochissimo sforzo allo sviluppatore.
Due di questi elementi li vedremo nel tutorial di oggi; come spesso accade in App Inventor, questi due blocchi sono in realtà più che altro degli activity starter (utilizzano le "activity" di Android) e possono tornare molto utili in applicazioni che richiedano un interazione facilitata tra noi e lo smartphone.
SpeechRecognizer ci permette di inserire del testo nella nostra applicazione utilizzando la nostra voce al posto della tastiera (spesso scomoda o pericolosa da usare ad esempio se stiamo guidando)
Chi di voi non ha mai utilizzato la fenomenale ricerca vocale di Google...?
beh, con pochi semplici blocchi funzionali potremmo usare gli stessi algoritmi anche nelle nostre app!!!
Mentre TextToSpeech (conosciuto anche come TTS) fa esattamente l'opposto, ovvero pronuncerà con voce naturale (Google deve a mio avviso migliorare questo aspetto, la voce attuale è ancora troppo robotica) una stringa di testo che gli daremo in pasto.
Per il tutorial di oggi è richiesto che abbiate completato il progetto del tutorial 17, se non avete tempo o voglia di farlo, potete scaricare il sorgente del Tutorial 17 direttamente da qui
Buona visione!
SpeechRecognizer
Usa il componente speech recognizer per ascoltare quello che dice l'utente e convertire il suono pronunciato in testo usando le feature di riconoscimento vocale di Android.
Properties
Result
- Il testo così come riconosciuto da android.
Methods
GetText()
- Chiede all'utente di parlare, e converte il parlato in testo. Il segnale
AfterGettingText
viene generato quando il risultato è stato elaborato.
Events
AfterGetting(Text result)
- Evento generato dopo che speechrecognizer ha prodotto il testo. L'argomento è il testo convertito prodotto.
BeforeGettingText()
- Evento generato subito prima che il blocco venga chiamato dall'applicazione.
TextToSpeech
Usa il componente TTS per pronunciare un testo in modo audibile.
Perchè questo componente funzioni, il device deve avere TTS Extended Service app by Eyes-Free Project installato (lo trovate nel market e nel video vi mostro dove)
Il componente TTS ha delle proprietà che potete impostare per modificare la lingua e il paese da utilizzare nella sintesi vocale.
Queste proprietà usano dei codici di tre lettere, per esempio si può definire Inglese britannico o inglese americano.
Per inglese britannico "language code" è eng e "contry code" è GBR.
Mentre per l'americano il "language code" è eng e "contry code" è USA.
La lista completa la trovate qui:
Properties
Country
- Il codice paese da utilizzare.
Language
- Il codice lingua da utilizzzare.
Methods
Speak(Text message)
- Pronuncia il testo che viene passato all'elemento.
Events
AfterSpeaking(Text result)
- Evento generato dopo che il testo è stato pronunciato, l'argomento è il testo stesso.
BeforeSpeaking()
- Evento generato subito prima che il testo venga pronunciato.
Ciao Sebastiano volevo sapere se c'è un'oggetto di AI che abbia la funzione di riconoscimento vocale o meglio che facci un controllo su 2 audio se simili o meno...grazie.
RispondiEliminaNo gli unici due componenti che esistono solo quelli che ho pubblicato
RispondiEliminaciao Sebastiano, complimenti per i tuoi tutorial.... in questo però ho un problema: l'ig di google ha un xml diverso, quindi quando vado a lanciare l'app naturalmente si blocca restituendomi un errore. come posso modificare il filtraggio delle stringhe?
RispondiEliminagrazie.
Ciao Antonio,scusami ma non capisco la tua domanda,
Eliminascrivi sul forum per ulteriore aiuto e se vuoi allega anche il tuo file .zip col sorgente
ciao
Ciao Sebastiano, scusami se non ho risposto sul forum ma ho qualche problema con la registrazione (dopo aver compilato la prima schermata con i dati della mail, nick e pass, la registrazione non va avanti....)..... in poche parole ho seguito alla lettera il tutorial su come prendere alcune stringhe della pagina API di google weather(http://www.google.com/ig/api....ect), ma essendo un tutorial di 1 anno fa, quella pagina ora è diversa, pertanto l'app mi restituisce un errore. Inoltre ho anche un problema con i tasti del DELETE dell'app inventor, nel senso che non mi funzionano (infatti non mi escono neanche i messaggi di conferma cancellazione). Scusami se ti ho mosto molti quesiti su questo post, ma, non funzionando il forum, non so dove scrivere o comunicare...
EliminaGrazie e buona giornata
Ciao Antonio,forse ora ho capito,
Eliminaho riscaricato il mio tutorial e funziona ancora, solo che è molto importante usare www.google.com (http://www.google.com/ig/api?weather=Milano) perchè se si utilizza la versione italiana della pagina http://www.google.it/ig/api?weather=Milano l'xml che ci ritorna ha i caratteri accentati che non sono ancora supportati in app inventor.
Ti consiglio di controllare con le finestre di watch nel blocks editor cosa ti ritorna l'app in "responsecode" se hai dei caratteri strani tipo un triangolo con un punto di domanda è perchè non riesce a leggere gli accenti, tipo "umidità" invece che "humidity" per il momento c'è poco da fare, finchè google non supporterà gli unicode avremo dei problemi.
Se vedi il problema nel mio esempio è proprio umidità, se togli quel pezzo l'app dovrebbe funzionare sia che leggi da .it o da .com
Per il forum se vuoi riprova,a volta ci son problemi con la registrazione...
Ciao Sebastiano, ho risolto tutti i problemi:
Elimina1) Il programma del meteo il problema era sulla trascrizione di weather e condition, di conseguenza il programma è partito
2)i problemi della pagina xml di google weather, il tasto DELETE dell'AI e la registrazione sul forum li ho risolti passando da google chrome a firefox.
Grazie per l'aiuto e continua con i tutorial, se per caso ho qualche altra domanda adesso userò il forum XD
Ciao
Ciao Sebastiano, ho risolto tutti i problemi:
Elimina1) Il programma del meteo il problema era sulla trascrizione di weather e condition, di conseguenza il programma è partito
2)i problemi della pagina xml di google weather, il tasto DELETE dell'AI e la registrazione sul forum li ho risolti passando da google chrome a firefox.
Grazie per l'aiuto e continua con i tutorial, se per caso ho qualche altra domanda adesso userò il forum XD
Ciao
scusa ma io volevo sapere come fare a far smettere di parlare il texttospeech
RispondiEliminacosa intendi? che se sta pronunciando un testo troppo lungo lo vuoi interrompere? non mi risulta sia possibile farlo, una volta che richiami il metodo "speak" tutto il testo che gli passi viene pronunciato ad alta voce, se non ho capito cerca di spiegarmi meglio il tuo problema, ciao
Eliminasi hai capito bene, peccato perchè mi sarebbe piaciuto perchè esattamente come hai detto te dovevo fermare un testo troppo lungo
RispondiEliminaE' un pò macchinoso ma potresti spezzare il testo da pronunciare in varie frasi da mettere in una lista, poi crei una procedura che le pronuncia una dopo l'altra a meno che l'utente non prema un altro button nel qual caso "blocchi" il prossimo text-to-speech di fatto "simulando" l'interruzione prematura del metodo "speak",
Eliminapiù complesso da realizzare, ma potrebbe essere una soluzione fattibile...:)
Puoi inserire un tasto "STOP" e chiamare la routine texttospeech del componente TTS inserendo un testo vuoto. Provato, funziona. Non interrompe all'istante ma quasi.
RispondiEliminaGrazie! ottima soluzione a cui non avevo pensato!
Eliminasemplice ma efficace!!! grazie ancora :)
Ho fatt oavviare uno speechrecognizer con un timer, ma è possibile fargli ottenere dell'audio se l'apparecchio è in blocca schermo/standby?
RispondiEliminaonestamente non ho mai provato ma in genere le app fatte con AI vengono "congelate" col telefono in standby
EliminaCiao è possibile con ai2 filtrare la voce,ovvero tu parli con la tua voce e ne esce ad esempio una ameccanica?
RispondiEliminaciao come posso modificare il tempo di registrazione ?grazie in anticipo
RispondiEliminaQuesto commento è stato eliminato dall'autore.
RispondiEliminaQuesto commento è stato eliminato da un amministratore del blog.
RispondiElimina