fbpx

Avviare la conversazione con un assistente virtuale

da | 17 Mag 2021 | Blog

Uno dei modi con il quale l’intelligenza artificiale è entrata a far parte della vita di tutti i giorni, è certamente tramite gli assistenti virtuali, grazie all’integrazione nativa con la stragrande maggioranza degli smartphone in commercio e ai milioni di dispositivi intelligenti venduti negli ultimi anni, come gli Amazon Echo o Google Home.

Al di là della forma con cui si presentano, tutti gli assistenti virtuali che utilizzano la voce come modalità di interazione hanno una funzionalità in comune: si attivano quando viene rilevata una parola chiave, o keyword, come ad esempio “Alexa”, oppure “Hey, Siri”. I nostri assistenti ascoltano le voci ed i rumori nell’ambiente circostante e aspettano che venga pronunciata la parola chiave, attivandosi quando questo succede per rispondere alle nostre richieste. 

Questa tecnica è chiamata keyword spotting, e può essere implementata in vari modi. Vediamo insieme come.

Dalla voce al modello

Per fare in modo che un dispositivo possa attivarsi tramite comando vocale, c’è bisogno innanzitutto di un sistema che permetta l’analisi in tempo reale dell’audio prelevato dal microfono. Per questo tipicamente il sistema di attivazione vocale è implementato all’interno del dispositivo stesso.

L’approccio più utilizzato è quello di affidarsi ad un certo tipo di reti neurali chiamate CNN (Convolutional Neural Networks), che sono di solito impiegate nell’analisi di immagini. Le CNN lavorano su dati presentati sotto forma di matrici (più propriamente array a 2 dimensioni), per questo il segnale audio viene convertito in uno spettrogramma.

Uno spettrogramma è in grado di rappresentare un segnale audio in tre dimensioni, vale a dire tempo, ampiezza e frequenza. Possiamo vederlo come una fotografia del segnale audio, dove il colore di ogni pixel rappresenta l’ampiezza del segnale ad una certa frequenza e in un determinato istante.

Fonte: https://www.researchgate.net/figure/Spectrograms-and-Oscillograms-This-is-an-oscillogram-and-spectrogram-of-the-boatwhistle_fig2_267827408

La rete neurale sarà così in grado di analizzare il suono e scovare i pattern che corrispondono alla parola che cerchiamo. Lo fa applicando al segnale una serie di filtri consecutivi chiamati convoluzioni, da cui il nome della rete neurale. Quando la keyword viene rilevata, l’assistente si attiva e invia l’audio a sistemi di riconoscimento vocale più complessi, che quindi trascrivono l’audio in testo. Solitamente sistemi del genere non girano direttamente sul dispositivo, ma nei sistemi in cloud dei rispettivi vendor.

Fonte: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/CNN_ASLPTrans2-14.pdf

Questa è quello che succede a grandi linee. Nel dettaglio, poi, ci sono numerose tecniche che vengono adottate per migliorare le prestazioni del sistema di riconoscimento nel mondo reale. Possiamo misurare le performance del modello in base al numero di falsi negativi (l’assistente non si attiva quando dovrebbe) e falsi positivi (si attiva quando non ci si rivolge ad esso). Sembrerà intuitivo a chi utilizza regolarmente un assistente virtuale: performance migliori del modello si traducono direttamente in una migliore esperienza d’uso del prodotto. 

Pensate ad esempio ad Alexa, che è presente in milioni di case in tutto il mondo. Gli sviluppatori hanno dovuto provvedere ad escludere tutte le menzioni della parola “Alexa” nelle pubblicità, per evitare che possa attivarsi mentre la tv è accesa. 

Un altro esempio è il sistema con il quale Apple ha costruito il sistema di riconoscimento di Siri, che, girando su uno smartphone, ha come priorità quella di preservare la durata della batteria. Tramite l’impiego di hardware ad-hoc, è stato possibile ottenere un consumo energetico molto basso nonostante la registrazione continua. Il tutto è descritto in un articolo molto interessante tratto dal blog del team di Machine Learning di Apple.

Dal modello al prodotto

Un sistema di keyword spotting può rivelarsi utile in diversi ambiti applicativi, non solo negli assistenti virtuali. Per chi volesse integrare un sistema di attivazione vocale all’interno del proprio prodotto, può fare affidamento su una serie di progetti e dataset che la comunità globale mette a disposizione. Come ormai accade nel mondo del machine learning, ogni giorno vengono pubblicati nuovi esperimenti che provano ad ottenere le migliori performance possibili. Dando un’occhiata a siti come Kaggle o Papers with code, troviamo moltissimi esempi di modelli per il keyword spotting.

Nella scelta di un framework di Machine Learning, bisogna tenere in considerazione le tecnologie che si utilizzano e l’hardware del dispositivo target. In base a questi, si potrebbe propendere per un framework piuttosto che un altro. Ad esempio, è possibile far girare un modello TensorFlow non solo su un desktop o un server, ma anche su dispositivi meno potenti come smartphone e sistemi embedded (con TensorFlow Lite), o addirittura nel browser con TensorFlow.js. Questa possibilità ci consente di risolvere anche una questione importante come quella della privacy dell’utente: i dati necessari al training del modello restano sul dispositivo dell’utente, invece di essere inviati ad un server. 

Durante lo sviluppo di Elly, il nostro assistente virtuale, ci siamo imbattuti in due sistemi che hanno catturato la nostra attenzione. Il primo è il modello speech-commands di Google, un modello TensorFlow.js in grado di riconoscere 18 parole chiave da un set di parole inglesi come ‘up’, ‘down’, ‘left’, ‘right’, i numeri da ‘zero’ a ‘ten’, etc. Le parole del dataset fornito fanno subito pensare ad un’interazione utente senza mouse o tastiera, ma non si limita a questo. Tramite una tecnica chiamata transfer learning infatti, è possibile costruire il proprio modello in grado di riconoscere una nuova parola, adattandolo così al nostro scopo. Nel repository GitHub del progetto trovate tutto ciò che vi occorre costruire un nuovo modello a partire da nuovi campioni audio.

La raccolta dei campioni audio per il training di un nuovo modello è un altro punto interessante sul quale soffermarsi. Raccogliere le registrazioni potrebbe rallentare le prime fasi di prototipazione, dove magari non è necessario che il modello di riconoscimento sia perfetto.

Per ovviare a questo problema, è possibile utilizzare un approccio diverso come quello adottato da Microsoft con Speech Studio. Sul portale è possibile generare un modello semplicemente scegliendo una parola del vocabolario, senza la necessità di fornire campioni audio per training. Il modello può essere generato in due modalità:, una più rapida e gratuita, l’altra più lenta e a pagamento, ma che promette un’affidabilità maggiore. Il modello generato da Speech Studio può essere utilizzato tramite l’SDK, che supporta C#, Python e Objective-C/Swift.

Considerazioni finali

In un assistente vocale, dove la voce è la modalità di interazione principale, un sistema di keyword spotting è tipicamente il primo di una serie di strumenti che analizzano la voce e interpretano i comandi impartiti dall’utente. Avere la possibilità di far girare il modello direttamente sul dispositivo dell’utente ci permette di risolvere principalmente due problemi: privacy e latenza.

Dal punto di vista della privacy, dal momento in cui vengono inviate solo le registrazioni in cui la keyword è stata rilevata, i dati inviati sono limitati alle sole interazioni con l’assistente, evitando l’invio dell’audio prelevato dal microfono 24h su 24h. Questo ci permette anche di non avere i problemi di latenza nell’attivazione dell’assistente vocale, eliminando la trasmissione del flusso audio ad un server.

La velocità di risposta è un aspetto che impatta moltissimo sulla user experience di chi interagisce con il nostro assistente: un’esperienza d’uso piacevole inizia fin dalla prima interazione.

Avere un buon modello di keyword spotting è quindi fondamentale e non vediamo l’ora di condividere con voi i risultati che stiamo avendo con Elly!

Continuate a seguirci.

Scritto da

Scritto da

Salvatore Merone