fbpx

Quattro chiacchiere con la nostra applicazione

da | 8 Feb 2021 | Blog

Per lo sviluppo del nostro assistente virtuale la componente vocale ha avuto fin da subito un ruolo fondamentale. L’interazione vocale, infatti, è il primo elemento necessario a costruire una User eXperience più naturale, che si compone principalmente di due elementi: la sintesi vocale (text-to-speech) con cui possiamo dire qualcosa al nostro interlocutore, ed il riconoscimento del parlato (speech-to-text) per ricavare il testo a partire dal parlato. Possibilmente cercando di fare qualcosa di meglio di questo:

Esistono già da molto tempo algoritmi in grado di leggere lo schermo o trascrivere del testo. Ma oggi l’intelligenza artificiale va a migliorare queste tecniche, aumentando la qualità del testo trascritto e consentendo la generazione di voci sempre più naturali, che imitano intonazione e cadenza di quelle umane.

Sviluppare queste tecnologie da zero richiede uno sforzo notevole, ed è per questo che i principali Cloud provider presenti sul mercato forniscono servizi vocali già pronti all’uso, eliminando la necessità di creare dei modelli che per essere affidabili richiederebbero molte ore di training.

Questi servizi, in gran parte simili tra loro, presentano alcune differenze in termini di costi, linguaggi supportati, velocità di esecuzione, e non solo. Ho pensato quindi che potesse essere interessante condividere con voi gli esperimenti fatti con i servizi Azure, Google Cloud e AWS, per darvi un’ idea di quali sono i fattori da prendere in considerazione nella scelta.

Performance

Un aspetto fondamentale per l’usabilità è sicuramente la velocità di risposta di questi servizi, specialmente nel caso di analisi e sintetizzazione real-time come quella necessaria per un assistente vocale.

Per quanto riguarda lo speech-to-text, ognuno dei servizi permette il riconoscimento in diversi formati audio per venire incontro ad ogni caso d’uso. Il riconoscimento può avvenire in due modalità: quella “batch”,  adatta a file molto lunghi, oppure in modalità “streaming”, per un’analisi in tempo reale del parlato.

Abbiamo fatto un test per verificare la velocità dei servizi, in cui otto frasi in italiano di lunghezza simile, sono state prima sintetizzate ed in seguito riconvertite in testo. E’ stata calcolata poi una media del tempo impiegato per eseguire le operazioni.

Ecco i risultati:

Sintesi (WAV)Totale (s)Media (s)
Amazon Polly05.7200.715
Azure Text-to-speech34.0394.254
Google Text-to-speech08.7531.094
Sintesi (MP3)Totale (s)Media (s)
Amazon Polly04.7530.594
Azure Text-to-speech29.9883.748
Google Text-to-speech07.3120.914

Per Amazon Transcribe è stata implementata la funzione di trascrizione “streaming” (in tempo reale) seguendo la documentazione. Negli SDK di Azure e Google invece è già inclusa.

Riconoscimento (WAV)Totale (min)Media (min)
Amazon Polly3:08.5160:23.560
Azure Text-to-speech1:38.4680:12.308
Google Text-to-speech0:39.9950:04.999
Riconoscimento (MP3)Totale (min)Media (min)
Amazon Polly
Azure Text-to-speech3:16.0110:24.501
Google Text-to-speech

Amazon Polly è stato il servizio più veloce nella sintesi, Google Text-to-Speech invece il più veloce nel riconoscimento. Da notare però che solo l’SDK Azure supporta il riconoscimento di file audio MP3, negli altri casi dovrà essere quindi implementata la decodifica in WAV.

Supporto alla lingua

Uno dei fattori da prendere in considerazione è sicuramente il numero di lingue supportate, che  aiuta a raggiungere un pubblico più vasto.

Sebbene l’italiano sia supportato da tutti e tre i provider, fino ad oggi solo Microsoft e Google forniscono per l’italiano delle voci neurali, vale a dire generate con l’intelligenza artificiale e che risultano più naturali all’ascoltatore. Google inoltre mette a disposizione diversi modelli per il riconoscimento del testo ottimizzate in base alla sorgente audio utilizzata, come conversazioni telefoniche o video.

ServizioLingue STTLingue TTSLingue NTTS
Amazon31 (11)*295
Azure864954
Google1364025
* Lingue che supportano il riconoscimento in streaming.

Durante i nostri test, le voci neurali italiane di Azure ci sono sembrate le più naturali. Tutti e tre mettono a disposizione un tool di prova con cui confrontarle, anche se per AWS è necessaria la registrazione. Provare per credere:

Azure Cognitive Services
Google Cloud Text-to-Speech
Amazon Polly

Costi

Il vantaggio di usare un servizio cloud-based è sicuramente quello di pagare solo ciò che si usa. Tutti i servizi visti finora seguono un modello di pagamento a consumo, basato sulla quantità di caratteri sintetizzati o dei secondi di audio analizzato.

Inoltre, entro una certa soglia è possibile usufruire dei servizi gratuitamente, cosa sicuramente gradita durante le prime fasi dello sviluppo.

Ecco una tabella riassuntiva dei prezzi per il riconoscimento:

ServizioCosto
Azure Speech-to-text$ 0,000277 al secondo
Google Cloud Speech-to-text$ 0,006/15 secondi ($0,004 con logging)
Amazon Transcribe$ 0,0004 ogni 1s (min 15s)

I prezzi per la sintesi vocale sono gli stessi per i provider, che si differenziano solo per la quantità di caratteri gratuiti mensili:

TipologiaCosto
(per 1 milione di caratteri)
Voci TTS standard$ 4,00
Voci NTTS (neurali)$ 16,00
ServizioVoci standard
(caratteri)
Voci neurali
(caratteri)
Azure Text-to-Speech5 Milioni500.000
Google Cloud Text-to-Speech4 Milioni1 milione
Amazon Polly4 Milioni1 milione

Ulteriori considerazioni

Oltre alle caratteristiche già discusse, ci sono altri aspetti da prendere in considerazione quando ci si approccia ad un servizio esterno, e questi non fanno eccezione. La disponibilità di librerie scritte nel linguaggio di programmazione di preferenza ad esempio.

Per quanto riguarda Amazon Transcribe infatti, il servizio di riconoscimento in streaming è disponibile solo nell’SDK Java, ma lo si può implementare in qualsiasi linguaggio di programmazione seguendo la documentazione.

Un altro aspetto importante è la possibilità di utilizzare questi strumenti all’interno della propria infrastruttura. Microsoft mette a disposizione un’ immagine Docker (attualmente in preview) che fornisce tutte le funzionalità dei servizi vocali in Cloud. Con Google invece, è possibile utilizzare solo lo speech-to-text facendo ricorso a sistemi come Anthos o GKE.

Azure Speech Container How-to
Google Cloud Speech-to-Text On-Prem

E’ possibile trovare un’ elenco aggiornato dei prezzi e funzioni supportate sulle pagine dei rispettivi provider:

Azure Cognitive Services Speech-to-text
Azure Cognitive Services Text-to-speech
Google Speech-to-text
Google Text-to-speech
Amazon Transcribe
Amazon Polly

Conclusione

Abbiamo dato solo una rapida occhiata a ciò che il mondo dei servizi dell’intelligenza artificiale ci mette a disposizione. Questi strumenti, in continuo miglioramento, semplificano l’utilizzo del parlato e creano numerose possibilità, non resta che sfruttarle per costruire le applicazioni del futuro.

Se vi interessa sapere come le stiamo utilizzando noi, restate sintonizzati!

Scritto da

Scritto da

Salvatore Merone