Crea il computer di bordo per la tua astronave, by Cristian Maglie

Post on 13-May-2015

1.855 views 6 download

description

Vedremo come interfacciare dei dispositivi di controllo vocale per controllare il vostro PC. Ma non solo. Scopriremo anche come interfacciarci ai propulsori per i nostri velivoli.

Transcript of Crea il computer di bordo per la tua astronave, by Cristian Maglie

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