Post on 13-May-2015
description
Crea il computer di bordo per la tua astronave
Cristian Magliec.maglie@bug.sthttp://bug.st/
Arduinohttp://arduino.cc/
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
3
Introduzione
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
5
Schermi Piatti
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
6
Touch Screen
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
7
Cellulare
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
8
Tablet
This iPadIs wonderful!
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
9
Interfacce(come siamo abituati a vederle)
Pad LCD
Screen
Touch
CPUMouse
Tastiera MonitorINPUT OUTPUT
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
11
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
12
Riconoscimento Vocale
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
13
Interfacce
Pad LCD
Screen
Touch
CPUMouse
Tastiera MonitorINPUT OUTPUT
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
14
Interfacce
CPUMic SpeechRecognition
TTSText To Speech
SpkINPUT OUTPUT
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
16
Riconoscimento vocale
• Android / Google API• iPhone• Vbot• CMU Sphinx
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
17
Speech Input API (Android)
É la libreria sviluppata da google per fornire i dispositivi Android del riconoscimento vocale.
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
19
Speech Input API (Android)
CONTRO• Richiede connessione a internet
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
20
Online Speech Recognition
Recognize Speech Intent
Android OS
InternetGoogleservices
voice
“Hello”
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
21
Speech Input API (Android)
CONTRO• Richiede connessione a internet
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
22
Speech Input API (Android)
CONTRO• Richiede connessione a internet• Problemi privacy
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
23
Online Speech Recognition
Recognize Speech Intent
Android OS
InternetGoogleservices
voice
“Hello”
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
24
Online Speech Recognition
Googleservices
24/03/2012 15.34Cristian said:
“Hello”
Logs
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
28
Siri (iPhone)
• É il software sviluppato da Apple per aggiungere il supporto all'input vocale ai suoi nuovi dispositivi
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
31
Siri (iPhone)
Non può essere utilizzato per i nostri scopi
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
35
VRobot
CONTRO• Sintesi vocale assente• Riconoscimento basato su vocabolario, non permette il
riconoscimento di testo libero• Closed source
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
36
CMU Sphinx
• Engine di speech recognition sviluppato dalla Carnage Mellon University
http://cmusphinx.sourceforge.net/
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
38
Recognize Speech Intents multipli su piattaforma Android
Recognize Speech Intent
Google API
CMU Sphinx
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
41
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
42
Interconnessione
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
43
Interconnessione
• Oggetti fisici possono essere connessi• Internet-of-Things
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
44
Interconnessione
INPUT OUTPUTVoiceDevice
Device A Device B
Cristian Magliec.maglie@bug.st – 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 Magliec.maglie@bug.st – Arduino (http://arduino.cc)
46
Cristian Magliec.maglie@bug.st – 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
Cristian Magliec.maglie@bug.st – Arduino (http://arduino.cc)
48
Conclusione e domande