Crea il computer di bordo per la tua astronave Cristian Maglie [email protected] http://bug.st/ Arduino http://arduino.cc/
Crea il computer di bordo per la tua astronave
Cristian [email protected]://bug.st/
Arduinohttp://arduino.cc/
Cristian [email protected] – Arduino (http://arduino.cc)
2
Notizie sull'autore• Programmatore freelance• Entusiasta utilizzatore di tutte le tecnologie open-
source• Appassionato di elettronica, collabora con il progetto
Arduino da più di 3 anni
• NON è un fan accanito di Star-Trek (anche se dopo il seminario la penserete diversamente)
• Attore consumato degli spot del codemotion
Cristian [email protected] – Arduino (http://arduino.cc)
4
Interfacce utente
• Dispositivo fisico o virtuale che permette la comunicazione tra due o più entità di tipo diverso
• Schermo, tastiera sono interfacce ma anche telefono, fotocopiatrice, televisione
• Sono tutti supporti materiali che permettono l'interazione tra informazione “digitalizzata” e il mondo ordinario
Cristian [email protected] – Arduino (http://arduino.cc)
9
Interfacce(come siamo abituati a vederle)
Pad LCD
Screen
Touch
CPUMouse
Tastiera MonitorINPUT OUTPUT
Cristian [email protected] – Arduino (http://arduino.cc)
10
Evoluzione delle interfacce
• Tende ad aumentare l'intimità tra utente e macchina
• L'interfaccia del futuro sarà eterea: l'utente non si accorgerà della sua esistenza
Cristian [email protected] – Arduino (http://arduino.cc)
11
Cristian [email protected] – Arduino (http://arduino.cc)
13
Interfacce
Pad LCD
Screen
Touch
CPUMouse
Tastiera MonitorINPUT OUTPUT
Cristian [email protected] – Arduino (http://arduino.cc)
14
Interfacce
CPUMic SpeechRecognition
TTSText To Speech
SpkINPUT OUTPUT
Cristian [email protected] – Arduino (http://arduino.cc)
15
Comando vocale
• Problemi di sicurezza e identificazione• Comandi errati o falsi riconoscimenti• Rumore o voci sovrapposte• Indecisione nell'esporre il comando
Cristian [email protected] – Arduino (http://arduino.cc)
16
Riconoscimento vocale
• Android / Google API• iPhone• Vbot• CMU Sphinx
Cristian [email protected] – Arduino (http://arduino.cc)
17
Speech Input API (Android)
É la libreria sviluppata da google per fornire i dispositivi Android del riconoscimento vocale.
Cristian [email protected] – Arduino (http://arduino.cc)
18
Speech Input API (Android)
PRO• Riconoscimento vocale: ottimo• Sintesi vocale: buona, migliorabile in alcuni casi• Localizzazione in parecchie lingue• Open API: molto semplice da utilizzare
Cristian [email protected] – Arduino (http://arduino.cc)
19
Speech Input API (Android)
CONTRO• Richiede connessione a internet
Cristian [email protected] – Arduino (http://arduino.cc)
20
Online Speech Recognition
Recognize Speech Intent
Android OS
InternetGoogleservices
voice
“Hello”
Cristian [email protected] – Arduino (http://arduino.cc)
21
Speech Input API (Android)
CONTRO• Richiede connessione a internet
Cristian [email protected] – Arduino (http://arduino.cc)
22
Speech Input API (Android)
CONTRO• Richiede connessione a internet• Problemi privacy
Cristian [email protected] – Arduino (http://arduino.cc)
23
Online Speech Recognition
Recognize Speech Intent
Android OS
InternetGoogleservices
voice
“Hello”
Cristian [email protected] – Arduino (http://arduino.cc)
24
Online Speech Recognition
Googleservices
24/03/2012 15.34Cristian said:
“Hello”
Logs
Cristian [email protected] – Arduino (http://arduino.cc)
25
Speech Input API (Android)http://android-developers.blogspot.it/2010/03/speech-input-api-for-android.html
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass()
.getPackage().getName());intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
"Speech recognition demo");intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
if (!mSupportedLanguageView.getSelectedItem().toString().equals("Default")) {
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,mSupportedLanguageView.getSelectedItem().toString());
}startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
Cristian [email protected] – Arduino (http://arduino.cc)
26
Speech Input API (Android)
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE&& resultCode == RESULT_OK) {
List<String> matches =
intent.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
doSomethingWithVoiceCommands( matches );}
}
Cristian [email protected] – Arduino (http://arduino.cc)
27
Speech Input API (Android)
boolean TTSReady = false;TextToSpeech mTTS = new TextToSpeech(this, new OnInitListener() {
@Overridepublic void onInit(int status) {
TTSReady = true;}
});
[…......]
mTTs.speak(“Ciao”, TextToSpeech.QUEUE_FLUSH, null);
Cristian [email protected] – Arduino (http://arduino.cc)
28
Siri (iPhone)
• É il software sviluppato da Apple per aggiungere il supporto all'input vocale ai suoi nuovi dispositivi
Cristian [email protected] – Arduino (http://arduino.cc)
29
Siri (iPhone)
PRO• Riconoscimento vocale: ottimo• Sintesi vocale: ottima• Ottima integrazione con le funzioni del telefono
(calendar, sms, weather, clock, etc.)
Cristian [email protected] – Arduino (http://arduino.cc)
30
Siri (iPhone)
CONTRO• Richiede connessione internet• Problemi privacy• Localizzazione ancora mancante per parecchie lingue• Closed source• Closed API, non esiste documentazione per lo
sviluppatore, per poterlo programmare bisogna hackerare il dispositivo
Cristian [email protected] – Arduino (http://arduino.cc)
31
Siri (iPhone)
Non può essere utilizzato per i nostri scopi
Cristian [email protected] – Arduino (http://arduino.cc)
32
EasyVR Vbot
É un co-processore in grado di effettuare la speech recognition. Permette di dotare di controllo vocale piccoli sistemi embedded.
http://www.veear.eu/Products/EasyVR.aspx
Cristian [email protected] – Arduino (http://arduino.cc)
33
Vbot
ARDUINO Vbot
UART
CMD_LANGUAGE 'l' // set language <1>CMD_TIMEOUT 'o' // set timeout <1>CMD_RECOG_SI 'i' // recog trigger word <1>CMD_TRAIN_SD 't' // train sd command at groupCMD_GROUP_SD 'g' // insert new command at groupCMD_UNGROUP_SD 'u' // remove command at group
Cristian [email protected] – Arduino (http://arduino.cc)
34
Vbot
PRO• Riconoscimento vocale: ottimo• Funziona offline: il riconoscimento avviene sul
dispositivo• Riconoscimento vocale continuo• Segnale audio di “parola riconosciuta”
Cristian [email protected] – Arduino (http://arduino.cc)
35
VRobot
CONTRO• Sintesi vocale assente• Riconoscimento basato su vocabolario, non permette il
riconoscimento di testo libero• Closed source
Cristian [email protected] – Arduino (http://arduino.cc)
36
CMU Sphinx
• Engine di speech recognition sviluppato dalla Carnage Mellon University
http://cmusphinx.sourceforge.net/
Cristian [email protected] – Arduino (http://arduino.cc)
37
CMU Sphinx
• Esiste una versione light dell'engine (pocketsphinx) che può essere utilizzata su dispositivi embedded
• Sì può sfruttare JNI per realizzare un wrapper Java che fornisce la speech recognition utilizzando pocketsphinx dentro Android
Cristian [email protected] – Arduino (http://arduino.cc)
38
Recognize Speech Intents multipli su piattaforma Android
Recognize Speech Intent
Google API
CMU Sphinx
Cristian [email protected] – Arduino (http://arduino.cc)
39
CMU Sphinx
PRO• Riconoscimento vocale: buono• Sintesi vocale: ottima• Funzionamento offline• Riconoscimento vocale continuo• Open API in C e Java• Open Source
Cristian [email protected] – Arduino (http://arduino.cc)
40
CMU Sphinx
CONTRO• Localizzazione ancora limitata• Documentazione poco aggiornata• API molto potenti, ma di utilizzo non immediato• Installazione complessa
Cristian [email protected] – Arduino (http://arduino.cc)
41
Cristian [email protected] – Arduino (http://arduino.cc)
43
Interconnessione
• Oggetti fisici possono essere connessi• Internet-of-Things
Cristian [email protected] – Arduino (http://arduino.cc)
44
Interconnessione
INPUT OUTPUTVoiceDevice
Device A Device B
Cristian [email protected] – Arduino (http://arduino.cc)
45
Interconnesione
• Varie modalità di interconnessione (BT, RS232, WiFi, Ethernet, Zigbee e chi più ne ha più ne metta)
• Dispositivi Ethernet / Wifi sempre più diffusi e meno costosti
Cristian [email protected] – Arduino (http://arduino.cc)
46
Cristian [email protected] – Arduino (http://arduino.cc)
47
Arduino Ethernet
• Semplice da utilizzare• Costo contenuto• Comunicazione tra smartphone e device
tramite Webservices• Il firmware sull'Arduino Ethernet ha un
piccolo webserver “stupido” che esegue i comandi