Domotica e controllo vocale (parte 2)

Una delle applicazioni pratiche associata al riconoscimento vocale è legata alle tecnologie assistive (accessibilità) e al mondo domotico, ovvero la possibilità di controllare e monitorare i numerosi apparati tecnologici sempre più presenti nelle case di oggigiorno.

Ripartiamo da dove ci siamo lasciati la volta scorsa, ovvero dall’ implementazione pratica di un controllo vocale ovvero l’integrazione del toolkit CMUSphinx [5] con il sistema di controllo luci Philips HUE [6].

CMUSphinx descrizione architettura

Sphinx è un sistema di riconoscimento vocale automatico con le seguenti caratteristiche:

·         indipendenza dal parlante

·         capacità di riconoscimento in parlato continuo

·         gestione vasto vocabolario

Sphinx è basato su Modello Marcoviani Nascosti (HMM) come il popolare Dragon Naturally Speaking e come questo non ha bisogno della connettività in rete per poter operare dato che lavora esclusivamente in locale.

Attualmente le percentuali di riconoscimento per la lingua inglese sono state stimate con un WER intorno al 15%.

Il processo di riconoscimento vocale si suddivide nei seguenti passi:

1.      Acquisizione del parlato e sua trasformazione da oscillogramma a spettrogramma passando quindi da una rappresentazione su base temporale e base frequenziale.

2.      Lo spettrogramma viene digitalizzato e quantizzato ottenendo in uscita una sequenza di feature vector.

3.      Con la fase di segmentazione si passa dalla sequenza continua del parlato all’individuazione sullo spettrogramma dei singoli foni costituenti le parole e la discriminazione di ciò che è parlato o meno (si escludono rumore di fondo e momenti di silenzio fra la singole parole)

4.      Fase di decodifica delle parole.

processo riconoscimento vocale

processo riconoscimento vocale

 

Come descritto in [8] la decodifica del parlato si può descrivere nel seguente modo:

Un modello statistico del linguaggio basato sui trigrammi come una macchina a stati finiti (Catena Marcoviana) costituita da parole; le parole a loro volta sono rappresentate da una macchina a stati finiti costituita da fonemi; i fonemi possono essere rappresentati ancora come un’ulteriore macchina a stati finiti costituita da stati HMM.

In conclusione la decodifica avviene attraverso una grande macchina a stati finiti dove le transizioni sono descritte da probabilità.

 

Nel toolkit Sphinx tutto questo si basa su tre componenti:

1        Modello Acustico (Acoustic Model): mappa le relazioni fra suoni e foni.

Ogni fono è suddiviso in 3 stati (iniziale, centrale e finale).

Nel modello non si considera un singolo fono ma la sequenza di tre foni in un contesto (il precedente ed il successivo a quello attuale) il tutto per gestire la coarticolazione vocale [8].

Il componente è specifico per ogni lingua (Italiano, Inglese, ecc.) e per tipologia di canale (telefonico, broadcast, ecc.).

Può essere adattato a condizione acustiche ed accenti particolari.

Nello specifico ogni modello acustico contiene i Modelli Marcoviani Nascosti associati ai singoli foni.

 

Il “code-mixing” descritto in [9] può essere gestito a questo livello integrando il modulo acustico di due lingue diverse https://cmusphinx.github.io/wiki/tutorialadapt.

Il motivo per cui i sistemi di riconoscimento vocale danno risultati peggiori se sottoposti ad un parlante non madrelingua [9] può essere associato ancora a questo livello: l’articolazione vocale dei loro foni non sarà “perfetta” come per parlante L1 e l’interpretazione del modello acustico ne risentirà.

 

2        Dizionario Fonetico (Phonetic Dictionary): contiene il mapping fra parole e la loro pronuncia composta dai singoli fonemi: il cosiddetto “phonetic spelling”.

Lo standard seguito è quello ARPAbet.

Ad esempio un estratto dal pronounciation-dictionary inglese si presenta come segue:

 

abboud      AH B UW D

abbreviate AH B R IY V IY EY T

 

Il suo ruolo è quello di aggiungere al modello parole altrimenti sconosciute.

Il Dizionario insieme al Modello di Linguaggio è basilare per estendere il numero di parole riconoscibili dal sistema ed è utile ad esempio per particolari applicazioni (es.  Controllo traffico marittimo dove è richiesta una terminologia specifica).

La parola aggiunta deve essere contemplata anche nel Modello di Linguaggio altrimenti non verrà mai riconosciuta.

Ad ogni parola possono essere aggiunte varianti di pronuncia (causate ad esempio dalla coarticolazione o da piccole variazione dovute alle differenze dei tratti vocali dei singoli parlanti); basta indicare le possibili varianti tra parentesi tonde ed ordine progressivo come ad esempio:

 

abbreviated      AH B R IY V IY EY T AH D

abbreviated(2) AH B R IY V IY EY T IH D

 

3        Modello di Linguaggio (Language Model): Definisce le sequenze di tutte le possibili parole che possono essere interpretate.

Il suo ruolo è sia quello di ampliare le possibili sequenze di parole sia quello di restringere le possibilità alle sole contemplate nel modello stesso.

Con un approccio a macchina a stati finiti (Catena di Markov) “cattura” la sequenza di parole usando il modello a “tri-gramma” (la probabilità di una parola dipende dalle due precedenti) lavorando su base statistica.

Esistono infatti grammatiche statistiche che associano la probabilità di accadimento di ogni sequenza di tre parole.

Si parte dalle prime 3 parole e le loro alternative possibili ed incrociandole con queste grammatiche statistiche si estrae la sequenza più probabile.

Si procede spostandosi di una parola più a destra e si ripete il procedimento.

Alla fine si otterrà la sequenza di parole (composta da spezzoni di 3) più probabile.

Questa sarà l’output del sistema di riconoscimento.

 

Il Modello di Linguaggio può essere particolarmente utile per “catturare” la sequenza di parole usate in un particolare dominio (es navale, aereoportuale, medico) e per disambiguare parole identiche dal punto di vista fonico (es “disc” e “disk”).

Un estratto dal language model inglese si presenta come segue (i numeri che precedono e seguono la sequenza sono pesi associati alla sequenza stessa):

 

\1-grams:

-5.6332 abscess -0.2435

-6.3384 abscond -0.1849

-6.3074 absconded -0.2692

-6.3352 absconding -0.2496

-4.6783 absence -0.5733

 

\2-grams:

-3.6058 autopsy receiving 0.0000

-2.7527 autopsy records 0.0000

-1.1515 autopsy report -0.0912

-3.6213 autopsy report’s 0.0000

-1.6965 autopsy reports -0.0464

 

\3-grams:

-1.2699 having waited twelve

-0.6122 having was screaming

-1.2368 having washington spend

-2.0820 having watched fung

-1.2117 having watched him

 

 

Il Language Model è il blocco “dell’intelligenza semantica e sintattica”.

Solo in questo blocco possiamo stabilire le relazioni tra sequenze di parole, ossia è qui che possiamo definire sia “gruppi semantici”, parole che ne portano altre dietro perché connesse a livello di significato, sia i “gruppi sintattici”, ovvero la possibilità di stabilire regole grammaticali per l’output del processo di riconoscimento.

L’analisi del modello attuale per l’inglese

Per la lingua inglese i fonemi considerati nel modello del canale sono 39. La loro relazione coi simboli IPA può essere osservata al link https://en.wikipedia.org/wiki/Arpabet

 

AA CH G M S W
AE D HH N SH Y
AH DH IH NG T Z
AO EH IY OW TH ZH
AW ER JH OY UH
AY EY K P UW
B F L R V

 

Il numero di parole singole presenti nel Language Model (1-grams) sono circa 72300.

Nel dettaglio:

ngram 1=72354

ngram 2=6581523

ngram 3=7704188

Il “vocabolario corrente” di un madrelingua inglese di livello culturale medio-alto si aggira intorno ai 50000 lemmi (https://www.researchgate.net) mentre quello “esteso” si aggira sull’ordine dei 500000 lemmi.

Le 72300 parole sono una buona base di lavoro in relazione al vocabolario “potenzialmente” usato da chi potrebbe interagire col software in lingua inglese.

Ricordiamo che le stime di WER (Word Error Rate) di CMUSPhinx per l’inglese si aggirano intorno all’85%.

L’analisi del modello attuale per l’italiano

Come già detto il modello attuale per l’italiano deriva da VoxForge.

Per la lingua italiana i fonemi considerati nel modello del canale, in formato ARPAbet, sono 38 (i fonemi per l’italiano sono 30, diventano 38 per gestire la coarticolazione vocale) .

EE a1 f m r v
JJ b g n s w
LL d i nf t z
OO dZZ i1 ng tSS
SIL dz j o ts
SS e k o1 u
a e1 l p u1

 

Il numero di parole singole presenti nel Language Model (1-grams) sono circa 3700.

Nel dettaglio:

ngram 1=3741

ngram 2=11194

ngram 3=13364

 

Questo numero risulta molto inferiore al “vocabolario di base” italiano ovvero “l’insieme dei vocaboli necessari per capire e farsi capire nelle situazioni comunicative più frequenti” [7] che comprende circa 6700 lessemi [fonte GRADIT].

A maggior ragione risulta irrisorio se confrontato col “vocabolario corrente” ovvero circa 50000 lemmi (vocabolario di base sommato a quello corrente) che rappresenta ”l’insieme dei termini generalmente noti a chiunque abbia un livello medio superiore di istruzione”[De Mauro 1999, XX]

Per completare il confronto con l’inglese il vocabolario esteso italiano, che comprende anche i tecnicismi, regionalismi e dialettismi, si aggira intorno ai 250000 lemmi.

Statisticamente parlando, essendo il numero totale delle parole delle due lingue dello stesso ordine di grandezza, per avere un WER paragonabile a quello in lingua inglese, gli n-grammi contemplati nel modello italiano dovrebbe essere almeno 10 volte superiori (1 grammi) a quelli attuali per avvicinarsi, come numero, a quelli per il modello inglese.

A partire da questa considerazione ci spingiamo verso la creazione di un nuovo language model per l’italiano cercando di colmare questa “carenza lessicale” del modello attuale disponibile. Non verranno prese in considerazione variazioni ed integrazioni al Channel Model in quanto ritenuto “sufficientemente buono” dopo una prima fase preliminare di test.

Creazione del Language Model per l’italiano

Descrizione dei passi per la generazione nuovo modello

I passi per la creazione di un nuovo modello sono:

 

  1. Creazione/individuazione di un corpus di riferimento.
  2. Suddivisione del corpus in frasi.
  3. Creazione del dizionario fonetico in italiano attraverso Il software MaryTTS.
  4. Creazione del Modello di Linguaggio attraverso LMTool.

Integrazione con tecnologia di illuminazione Philips HUE

Lo scopo è la creazione di un Language Model ad hoc in lingua Italiana capace di discriminare i comandi di accensione e spegnimento luci in due stanze, camera e bagno.

Descrizione Philips HUE

La via di accesso della comunicazione Philips è il bridge HUE che grazie all’interfaccia RESTful si presenta come un servizio web gestibile attraverso API dedicata.

controllo vocale philips Hue

controllo vocale philips Hue

La descrizione completa dell’API è consultabile al link https://www.developers.meethue.com/documentation/getting-started previa registrazione.

Un breve estratto dei comandi attuabili è il seguente:

  • Spegnimento luce 1:

 

Address http://<bridge ip address>/api/[KEY]/lights/1/state
Body {“on”:false}
Method PUT
  • Accensione luce 1 e settaggio colore specifico:
Address http://<bridge ip address>/api/[KEY]/lights/1/state
Body {“on”:true, “sat”:254, “bri”:254,”hue”:10000}
Method PUT

Creazione Language Model ad hoc

I comandi a cui vogliamo che il sistema risponda sono:

  • accendi/spengi/spegni luce/luci [in] camera/bagno es. “accendi luce in bagno”
  • luce [in] camera/bagno accesa/spenta es. “luce bagno spenta”

dove [] indica parametro opzionale.

 

Il Dizionario Fonetico utilizzato si presenta così:

accendi  a ttS E1 n d i

bagno   b a1 JJ o

camera   k a m e r a

in   i1 n

luce   l u1 tS e

luci   l u1 tS i

spegni   s p e1 JJ i

spengi   s p e1 n dZ i

 

Il Language Model è costituito dai seguenti:

  • ngram 1=12
  • ngram 2=26
  • ngram 3=52

La descrizione completa è consultabile nell’appendice A.

Verifica funzionamento

Al blocco di riconoscimento del parlato è stato messo in cascata un “blocco di comprensione” che attraverso un parsing robusto [8] interpreta le parole chiave di luogo (camera/bagno) e azione (accendi/spengi) e genera le chiamate RESTful al bridge HUE.

I test, effettuati da 3 persone in ambiente domestico in modalità “riconoscimento continuo del parlato da microfono”, hanno riportato una percentuale di completamento del compito superiore al 90%.

Commenti

La creazione di un Language Model Italiano “generico e universale”, ovvero capace di riconoscere il maggior numero di parole all’interno di un parlato spontaneo  è un compito impegnativo e richieda sforzi notevoli.

Viceversa la gestione di un modello capace di riconoscere frasi specifiche all’interno di un particolare contesto si è mostrato un lavoro tutto sommato “semplice”.

Le alte percentuali di completamento del compito sono da attribuire sia al fatto che il sistema interpreta solo determinate parole chiave specifiche al contesto sia alla predisposizione dell’utilizzatore ad interagire col controllo vocale utilizzando una versione semplificata del parlato naturale, che potremmo definire “computer talk”, caratterizzata da una dizione più chiara e lenta delle parole rispetto alla normale pronuncia.

L’ esempio mostra come le qualità di un sistema di riconoscimento vocale debbano essere sempre contestualizzate alle funzionalità reali del prodotto e degli utilizzatori finali.

Ho avuto il piacere di mostrare tutto questo in una lezione che ho tenuto a Pisa nel dicembre 2017 nel corso di Linguistica Italiana II della laurea magistrale in Informatica Umanistica.

Chi è interessato a tale documentazione può scrivermi senza alcun problema.

Appendice A: Dettaglio Language Model per controllo luci

ngram 1=12

ngram 2=26

ngram 3=52

\1-grams:

-1.0414 </s> -0.3010

-1.0414 <s> -0.2348

-1.9956 ACCENDI -0.2785

-1.6946 ACCESA -0.2596

-1.3424 BAGNO -0.2399

-1.3424 CAMERA -0.2399

-1.3424 IN -0.2596

-1.2967 LUCE -0.2374

-1.3936 LUCI -0.2374

-1.6946 SPEGNI -0.2596

-1.6946 SPENGI -0.2596

-1.6946 SPENTA -0.2596

 

\2-grams:

-1.2553 <s> ACCENDI 0.0000

-0.9542 <s> LUCE 0.0000

-0.9542 <s> LUCI 0.0000

-0.9542 <s> SPEGNI 0.0000

-0.9542 <s> SPENGI 0.0000

-0.3010 ACCENDI LUCE 0.0000

-0.3010 ACCESA </s> -0.3010

-0.5563 BAGNO </s> -0.3010

-0.9542 BAGNO ACCESA 0.0000

-0.9542 BAGNO SPENTA 0.0000

-0.5563 CAMERA </s> -0.3010

-0.9542 CAMERA ACCESA 0.0000

-0.9542 CAMERA SPENTA 0.0000

-0.6021 IN BAGNO 0.0000

-0.6021 IN CAMERA 0.0000

-0.9031 LUCE BAGNO 0.0000

-0.9031 LUCE CAMERA 0.0000

-0.6021 LUCE IN 0.0000

-0.9031 LUCI BAGNO 0.0000

-0.9031 LUCI CAMERA 0.0000

-0.6021 LUCI IN 0.0000

-0.6021 SPEGNI LUCE 0.0000

-0.6021 SPEGNI LUCI 0.0000

-0.6021 SPENGI LUCE 0.0000

-0.6021 SPENGI LUCI 0.0000

-0.3010 SPENTA </s> -0.3010

 

\3-grams:

-0.3010 <s> ACCENDI LUCE

-0.9031 <s> LUCE BAGNO

-0.9031 <s> LUCE CAMERA

-0.6021 <s> LUCE IN

-0.9031 <s> LUCI BAGNO

-0.9031 <s> LUCI CAMERA

-0.6021 <s> LUCI IN

-0.6021 <s> SPEGNI LUCE

-0.6021 <s> SPEGNI LUCI

-0.6021 <s> SPENGI LUCE

-0.6021 <s> SPENGI LUCI

-0.9031 ACCENDI LUCE BAGNO

-0.9031 ACCENDI LUCE CAMERA

-0.6021 ACCENDI LUCE IN

-0.3010 BAGNO ACCESA </s>

-0.3010 BAGNO SPENTA </s>

-0.3010 CAMERA ACCESA </s>

-0.3010 CAMERA SPENTA </s>

-0.5563 IN BAGNO </s>

-0.9542 IN BAGNO ACCESA

-0.9542 IN BAGNO SPENTA

-0.5563 IN CAMERA </s>

-0.9542 IN CAMERA ACCESA

-0.9542 IN CAMERA SPENTA

-0.5229 LUCE BAGNO </s>

-1.0000 LUCE BAGNO ACCESA

-1.0000 LUCE BAGNO SPENTA

-0.5229 LUCE CAMERA </s>

-1.0000 LUCE CAMERA ACCESA

-1.0000 LUCE CAMERA SPENTA

-0.6021 LUCE IN BAGNO

-0.6021 LUCE IN CAMERA

-0.6021 LUCI BAGNO </s>

-0.9031 LUCI BAGNO ACCESA

-0.9031 LUCI BAGNO SPENTA

-0.6021 LUCI CAMERA </s>

-0.9031 LUCI CAMERA ACCESA

-0.9031 LUCI CAMERA SPENTA

-0.6021 LUCI IN BAGNO

-0.6021 LUCI IN CAMERA

-0.9031 SPEGNI LUCE BAGNO

-0.9031 SPEGNI LUCE CAMERA

-0.6021 SPEGNI LUCE IN

-0.9031 SPEGNI LUCI BAGNO

-0.9031 SPEGNI LUCI CAMERA

-0.6021 SPEGNI LUCI IN

-0.9031 SPENGI LUCE BAGNO

-0.9031 SPENGI LUCE CAMERA

-0.6021 SPENGI LUCE IN

-0.9031 SPENGI LUCI BAGNO

-0.9031 SPENGI LUCI CAMERA

-0.6021 SPENGI LUCI IN

Bibliografia

[1] https://pypi.python.org/pypi/SpeechRecognition/

[2] https://cmusphinx.github.io/

[3] http://mary.dfki.de/

[4] http://www.speech.sri.com/projects/

[5] http://www.speech.cs.cmu.edu/tools/lmtool-new.html

[6] https://www.developers.meethue.com/philips-hue-api

[7] Linguistica Italiana, Massimo Palermo

[8] The voice in the machine, Roberto Pieraccini

[9] La lingua e l’intelligenza artificiale, Mirko Tavosanis

Domotica e controllo vocale

La domotica

La domotica , dal francese domotique, parola composta dal latino domus ‘casa’ e (informa)tique, è la scienza interdisciplinare che si occupa dell’impiego delle tecnologie informatiche per il miglioramento della qualità della vita nella casa e più in generale negli ambienti civili.

La domotica (chiamata anche home-automation) è spesso associata al concetto di “casa intelligente” ovvero un ambiente, opportunamente progettato e tecnologicamente attrezzato, dove la tecnologia si integra al “tradizionale”, dove apparati e sistemi sono in grado di svolgere funzioni “intelligenti” in parziale autonomia coordinandosi fra loro (ad esempio un parametro ambientale diventa un input per il sistema che risponde propenendo un certo output); tali funzionalità vengono programmate a priori in funzione delle necessità dall’utente o più recentemente possono essere gestite in totale autonomia adattandosi alle abitudini dell’utente secondo algoritmi di apprendimento automatico, approcci ottimali per il raggiungimento della massima personalizzazione ed efficienza.

Ad un livello superiore si parla di building-automation (automazione degli edifici), ovvero un “edificio intelligente” che grazie ad una progettazione tecnica adeguata riesce ad integrare in maniera efficiente e coordinata i diversi impianti tecnologici presenti nel complesso architettonico come ad esempio impianto di illuminazione, di riscaldamento, sistema di sicurezza ed antiintrusione, irrigazione, intrattenimento audio-visivo. Ricadono in questo ambito aereoporti, chiese, ospedali, scuole, piazze, cinema, teatri, centri benessere, ecc.

Tra i benefici che l’adozione di un sistema di domotica può comportare si possono elencare:

  • miglioramento della qualità della vita espressa anche in termini di personalizzazione
  • maggiore sicurezza (fumi, gas) e controllo
  • facilità di utilizzo tramite gestione integrata delle nuove tecnologie (eliminazione dei vari telecomandi per tv, decoder, condizionatore, cancello, ecc).
  • evoluzione temporale dell’impianto alle nuove esigenze (l’impianto non è “scolpito nella pietra” ma programmabile nel tempo) -> riduzione dei costi di gestione.
  • risparmio energetico (gestione ottimizzata delle risorse)

Uno degli aspetti fondamentali apportati dalla domotica è quello della semplificazione e della personalizzazione dei controlli, tematica che può essere associata al concetto di accessibilità, ovvero l’insieme di tecniche per rendere fruibile l’impianto a qualsiasi persona indipendentemente dalle capacità psico-fisiche della stessa. (es. anziani o malati).

Come si può intuire la costruzione di un’ interfaccia user-friendly, ovvero che rispetti i canoni di usabilità universalmente riconosciuti, è uno degli aspetti cardini del progetto domotico.

Spesso la domotica viene intesa come intrattenimento quando l’esperienza domotica si concentra sulla gestione dell’impianto audio-visivo e ludico-tecnologico, ma questo ambito è solamente un sottoinsieme delle discipline e delle tematiche che la domotica abbraccia.

Un elenco (sicuramente non esaustivo) delle aree di interesse delle domotica è quello che segue:

  • illuminazione
  • distribuzione elettrica
  • irrigazione
  • ambienti esterni (piscina, coperture da giardino)
  • climatizzazione e riscaldamento
  • telefonia VOIP
  • gestione accessi, antifurto, videosorveglianza
  • audio-video
  • tende e tapparelle

Apple Home Kit

Apple recentemente si è affacciata al mercato domotico (visto il mercato in forte crescita) presentando la app Casa e la tecnologia Home Kit.

La soluzione permette di gestire diverse tipologie di apparati di uso consumer tramite un’unica App dedicata. È possibile creare un minimo di logica per far “dialogare” le tecnologie arrivando a creare semplici scenari personalizzati.

Apple HomeKit: lista accessori compatibili

Apple HomeKit: lista accessori compatibili

L’applicazione permette alcune piccole personalizzazioni come ad esempio la scelta dell’immagine di sfondo dell’interfaccia utente.

Apple HomeKit: interfaccia di controllo

Apple HomeKit: interfaccia di controllo

Particolare importanza viene data al controllo vocale tramite Siri, l’assistente vocale di casa Apple.

Google Home

Anche Google si sta affacciando al mercato domotico nell’insieme di tecnologie e soluzioni che stanno sotto il cappello di Google Home. Nata inizialmente per la gestione di contenuti audio, recentemente è stata anche destinata alla home automation tramite input vocale.

Dispositivo Google Home

Dispositivo Google Home

Il Controllo Vocale

La centralità del controllo vocale data dai grandi brand descritti in precedenza ne sottolineano l’importanza e l’attualità anche in ambito domotico.

In questa sezione verranno introdotte le motivazioni che spingono a considerare il controllo vocale all’interno dei sistemi domotici e delle criticità che questi soffrono e che ne limitano a tutt’oggi l’utilizzo.

Saranno presentati prima alcuni concetti introduttivi al fine di una migliore collocazione tematica.

Multimodalità

Nell’interazione uomo macchina una modalità è un modo di interagire con un sistema che sfrutti uno specifico senso umano [9].

Quindi un’interfaccia è multimodale se sfrutta più sensi per interagire (vista, udito, gesti, espessioni, ecc).

Il dialogo fra persone (comunicazione faccia a faccia) è in genere multimodale [2]; nella multimodalità gli elementi non verbali (i segni paralinguistici quali espressioni del volto, gesti, posizioni del corpo, ecc.) sono importantissimi: l’uso frequente dei riferimenti deittici (espressioni come “questo” o “quello” accompagnato o esclusivamente referenziato con un gesto) ne sono un esempio lampante.

Il linguaggio verbale (le parole che usiamo) rappresenta solo una minima parte della nostra capacità di comunicazione. La componente non verbale è spesso la componente principale.

Noi esseri umani non ce ne accorgiamo perché per noi è naturale fruire l’informazione da più canali, farne sintesi e operazioni inferenziali e soprattutto “risolvere” le ambiguità in base al contesto.

Tutte queste operazioni non sono possibili (o lo sono solo in parte) da una sistema di riconoscimento vocale che si può basare solo sull’input vocale: ecco perché tale approccio risulta spesso difficoltoso e non attuabile se non sotto particolari condizioni.

Per capire le motivazioni che spingono allo studio del controllo vocale (come di altri modi oltre a quello visivo) va fatto un passo indietro per comprendere i vantaggi della multimodalità.

Per fare questo partiamo dall’uomo e dai suoi processi cognitivi.

L’uomo ha tre tipi di memoria [9]:

  • Sensoriale
  • A breve termine (o di lavoro)
  • A lungo termine

Queste tre tipologie trattengono l’informazione per una durata di tempo variabile (ordine del decimo di secondo per la sensoriale, del secondo per quella di lavoro, ordine di giorni, mesi o anni per quella a lungo termine).

L’informazione in memoria a lungo termine è codificata in maniera diversa a seconda del canale sensoriale attraverso cui giunge al destinatario. La letteratura parla di superiorità dell’immagine (teoria doppia codifica) e ne porta prove inconfutabili a riguardo.

La multimodalità risulta utile nel suddividere l’informazione su più sensi per migliorare l’efficienza della memoria di lavoro (gli esseri umani sono in grado di elaborare modalità in modo parzialmente indipendente e quindi, presentando informazioni con molteplici modalità, aumenta la capacità della memoria di lavoro [1]), per aumentare l’usabilità e per questioni di accessibilità.

Voice User Interface (VUI)

Le interfacce vocali soffrono, come risaputo, del problema della transitorietà dell’informazione (altra caratteristica della lingua parlata [2]) e del problema sulla memoria di lavoro a breve termine precedentemente indicato.

Studi riguardo quest’ultima asseriscono che mediamente la memoria a breve termine dell’indivio comune si aggira intorno ai 7 elementi +2  – 2 (da 5 a 9). Questo buffer è un limite da tenere in considerazione quando si progetta un qualunque sistema interattivo.

Questi due elementi rendono la progettualità dei sistemi di controllo vocale estremamente complessa; i concetti di usabilità e di “buon design” analizzati in precedenza devono essere implementati con maggior rigore (oltre che rivisitati in funzione delle peculiarietà del canale) se vogliamo che la soluzione sia fruibile dall’utilizzatore.

L’architettura dell’informazione avrà un ruolo estremamente preponderante dato che il successo di un’interfaccia vocale dipenderà sia dal numero delle opzioni proposte ma anche dalla logicità della loro organizzazione.

Risulterà inoltre essenziale permettere all’utente di selezionare l’opzione desiderata in un qualunque momento, interrompendo la lista se necessario e di richiedere la ripetizione di una o più opzioni senza doverle riascoltarle tutte (controllo e libertà, flessibilità: Nielsen).

Tutte questi approcci e soluzioni tipiche di chi si rivolge allo sviluppo di un interfaccia vocale sono racchiuse nel termine VUI (Voice User Interface) Design [3].

Una metodologia proficua è quella di restringere, ad ogni passo di interazione, le possibilità di scelta grazie all’uso di vincoli, fino ad arrivare, ove possibile, al semplice “si” e “no”.

Ad esempio si prendano i due output di un sistema vocale:

  • “Per favore conferma che il numero di interesse è 123-456”
  • “Il numero di interesse è 123-456? Per favore rispondi con un ‘si’ o con un ‘no’”.

Le risposte umane al primo approccio possono essere molteplici:

  • “Si, giusto il numero è 123-456”
  • “Si”
  • “Ok”
  • Ecc.

 

L’unica risposta concessa al secondo approccio è “si” o “no” (in mancanza di questi input il sistema potrà richiedere la ripetizione del comando).

 

Un’altra tecnica è quella di includere nella domanda le riposte possibili, invitando l’utente (tramite questo suggerimento implicito) a dare la risposta corretta, come ad esempio:

 

Domanda: “cosa vuole fare accendere la luce, attivare lo scenario o accendere lo stereo?”

Risposta umana: “attivare lo scenario”.

L’esperienza ha mostrato come un’attenta progettazione VUI sia spesso più proficua in termini di usabilità (efficacia, efficienza e soddisfazione) che il semplice miglioramento delle performance (riduzione del Word Error Rate) ottenuto tramite l’ottimizzazione degli algoritmi di riconoscimento vocale.

Nonostante tutti gli sforzi c’è una grossa limitazione organica delle interfacce vocali, ovvero quella che viene definito il “problema di scopribilità” (Nielsen) [10];

Un po’ come le interfacce prompt a linea di comando dei computer di qualche decennio fa, le funzionalità non sono presentate in modo esplicito come avviene invece con un semplice menu grafico visivo, ma il sistema va “interrogato” a priori (in analogia con il comando “dir” o “ls” rispettivamente su Windows e linux).

Violazione dei principi di usabilità e di design

Come visto nel paragrafo precedente il controllo vocale soffre di molte problematiche che un progettista non può ignorare:

  • Il problema della scopribilità -> cosa può fare il sitema? A quali comandi può rispondere?
  • Problema della visibilità dello stato del sistema (violazione della prima euristica di Nielsen) che si lega indissolubilmente al ->
  • Problema del sovraccarico della memoria a breve termine

Si incontrano inoltre altre violazioni [4]:

  • Violazione dell’euristica “Favorire il riconoscimento piuttosto che il ricordo”

“Supporting recognition over recall is also severely constrained in a voice-only interface, since even reciting a list of options requires users to store the options in working memory while they make a selection.

 

  • Violazione dell’euristica “prevenzione dell’errore”: l’errore è innato in un sistema di riconoscimento vocale. Infatti nonostante tutti gli sforzi fatti nella ricerca e sviluppo in tutte le tecnologie (Reti Neurali Ricorrenti, Catene Markov Nascoste, ecc) il Word Error Rate (WER) non è mai diverso da zero.

“One of the classic usability heuristics is error prevention: the notion that rather than just help users recover from errors, systems should prevent errors from occurring in the first place. As speech recognition has improved in recent years, errors in natural-language understanding have dropped significantly. Hopefully this trend will continue for all voice interaction systems.”

 

Anche se si parla di pochi punti percentuali (intorno 5%) siamo enormemente al di sopra delle percentuali di errori sul comando grafico (si sbaglia un click sul bottone meno di una volta 1 su mille) .

Una tappa inevitabile?

Sembrano veramente tanti i contro all’impiego della voce come metodo di input verso un qualsiasi sistema informatico: violazione di principi base di usabilità e di design interattivo, difficoltà organica dell’interpretazione delle parole, maggior complessità nella definifione dell’interfaccia  e dell’architettuta informativa associata.

L’unico pro finora incontrato consiste nella diminuizione del carico cognitivo grazie alla separazione dell’informazione su un canale diverso da quello visivo (sempre che anche il feedback sul comando effettuato interessi il canale uditivo, altrimenti è solo un miglioramento parziale).

In realtà il confronto non è finito, e per pareggiare i piatti della bilancia bisogna spostarci ad un livello più profondo che gli aspetti “tecnici ed informatici” non contemplano ma quelli umanistici si.

La comunicazione ti tipo orale è la forma più innata e comune che ognuno di noi sviluppa in maniera naturale senza bisogno di insegnamenti, semplicemente “vivendo” ed “interagendo” in un determinato ambiente sociale e culturale.

Alla nascita dei computer sembrava naturale che il metodo di comunicativo con essi dovesse essere la parola e non la scrittura, essendo quest’ultima da sempre specifica per la memorizzazione dell’informazione e non tanto allo scambio dell’informazione, ruolo privilegiato, appunto, dall’oralità.

Purtroppo le difficoltà tecniche del riconoscimento del parlato incontrate fin dagli esordi dei computer hanno portato ad una “virata” verso le scrittura e successivamente alle immagini come tecniche privilegiate di interazione uomo-macchina.

Questo non deve però fare gettare la spugnia perchè prima o poi, quando le tecniche e gli approcci (vedi VUI Design) saranno maturi sarà inevitabile la predilezione verso il controllo vocale.

Alcuni principi generali cui tante discipline (letteratura, marketing, ecc.) ed ambiti tecnologici sono andati incontro nel corso degli anni sono racchiuse nelle “lezioni americane” di Italo Calvino.

Italo Calvino, fu invitato ad Harvard per un ciclo di conferenze da tenere nell’anno accademico 1985-1986. Purtroppo queste conferenze non furono mai tenute a causa della morte stessa dello scrittore nel 1985.

In queste “lezioni americane” egli sviluppo sei idee che ribattezzò “6 proposte per il nuovo millennio” che riteneva essere alla base della letteratura e della comunicazione per gli anni a venire.

  1. Leggerezza: Tutto ciò che è leggero è vincente e per leggero si intende sia leggero in senso fisico che in senso pratico.

L’iPod ha vinto lo stereo, i tablet hanno vinto i computer.

Le piattaforme e i servizi web-based vincono sui software standalone.

Gli e-book vincono i libri di carta.

L’archiviazione su cloud è vincente rispetto agli hard disk.

Lo streaming audio-video batte il supporto fisico.

La voce vincerà sui comandi visivi.

  1. Rapidità: Siamo nell’epoca della rapidità. La soluzione più veloce, che non implica troppi preamboli, vince.
  2. Esattezza: intesa come un progetto ben definito e studiato, che non si fermi difronte alle difficoltà ma che cerchi di aggirarle inventando nuove soluzioni ed approcci.
  3. Visibilità: come capacità di essere messo in vista, di essere promosso, di essere eletto come migliore. Basti pensare all’incremento dell’utilizzo dei messaggi vocali (whatsapp) a discapito di quelli testuali.
  4. Molteplicità: L’uso molteplice di più canali di comunicazione interconnessi fra loro da uno schema preciso di relazione e interrelazione deve creare un’armonia ed unità alla comunicazione.
  5. Coerenza: esseri coerenti con tutti gli altri principi e tenere a mente le motivazioni e le condizioni in cui si opera.

 

Risulta chiaro come il controllo vocale abbracci tutti questi principi ed è quindi inevitabilmente una strada da percorrere e sulla quale investire tempo e  denaro.

Comando vocale: un ambito di studio aperto

Se certi aspetti sembrano proclamare il controllo vocale come il futuro per la gestione delle interfacce, altri lo limitano ad ambiti circoscritti e limitati.

Ad oggi l’uso esclusivo di interfacce vocali è sconsigliato in contesti critici dove l’immediatezza dell’informazione o la situazione emotiva dell’utilizzatore diventano predominanti nell’atto interattivo (ad esempio stress dell’utente dovuto alla perdita della carta di credito).

Si preferisce quindi integrare il parlato con altro modalità di fruizione dell’informazione (ad esempio visiva).

Il peso della comunicazione vocale all’interno della comunicazione multimodale insieme allo studio di convenzioni comunicative (VUI e computer talk) costituiscono temi cardini della ricerca attuale sull’interazione uomo-macchina.

Domotica e controllo vocale

L’escursus fatto nella precedente sezione relativa al controllo vocale è da ritenersi come introduttivo e propedeutico per questa ultima parte del post dedicata ad un’implementazione pratica ovvero il controllo vocale di una tecnologia domotica, ovvero l’integrazione del toolkit CMUSphinx [5] con il sistema di controllo luci Philips HUE [6].

Tutto questo nel prossimo post.

controllo vocale philips Hue

controllo vocale philips Hue

ciao per ora

Riferimenti bibliografici

[1] Don Norman, La caffettiera del masochista

[2] Miriam Voghera, Lingua parlata, Treccani

[3] Roberto Pieraccini, The voice in the machine

[4] Jacob Nielsen, https://www.nngroup.com/articles/voice-interaction-ux/

[5] https://cmusphinx.github.io/

[6] https://www.developers.meethue.com/philips-hue-api

[7] https://it.wikipedia.org/wiki/Arduino_(hardware)

[8] https://ifttt.com

[9] Gamberini, Chittaro, Paternò, Human-Computer Interaction – I fondamenti dell’interazione tra persone e tecnologie

[10] Mirko Tavosanis, La lingua e l’intelligenza artificiale