giovedì 19 settembre 2019

Servizi Speech to text in italiano

I seguenti servizi sono disponibili in italiano:

A pagamento:

https://www.speechmatics.com/       3,6£/ora
https://sonix.ai/ (solo files audio)     10$/ora
https://transcribe.wreally.com/          6$/ora
https://www.trascrivi.it/                     16,8€/ora
https://www.happyscribe.co/user       12$/ora
https://trint.com                                   52$/mese illimitato
https://newportal.transcribeme.com    0,99$/minuto
https://vocalmatic.com/                        15$/ora
https://www.listenbycode.com               2,4$/ora

Gratuiti

https://dictation.io/speech (solo microfono, non accetta files audio)
https://speechlogger.appspot.com/ (solo microfono)
https://speechnotes.co/ (solo microfono, files audio a pagamento)

martedì 10 settembre 2019

Italian Speech Datasets

Degli ASR, il lavoro duro, per fortuna, è già stato fatto da qualche cervello fine.
Tra i vari ASR a disposizione ho scelto di sperimentare Kaldi, come sistema speaker-indipendent.
Ecco qualche consiglio per creare i modelli, basato sulle mie esperienze.
Le competenze: come ho detto, la parte difficile è già stata risolta. Bisogna essere bravi nelle parole incrociate, pazienti compositori di puzzle e ossessivi collezionisti.
La strategia di prendere tantissimi dati e metterli in un calderone non ha soddisfatto le mie aspettative (ho semplificato troppo il senso dei big-data?). Ha prodotto un sistema che fa sì le trascrizioni, ma ha la tendenza a trascrivere la qualsiasi, soprattutto i rumori.
Meglio prendere pochi dati, ma consistenti.
Quanto pochi? Qui ci sono alcune indicazioni https://cmusphinx.github.io/wiki/tutorialam/, ma in generale bisogna usare il buon senso.
Il progetto VoxForge si è posto un minimo di 140 ore, ma ci sono solo 20 ore di audio a disposizione

Si tratta di preparare dei segmenti audio di alcuni secondi, idealmente da 5 a 20 secondi. Un po' di materiale pronto in rete si trova:

Link Ore
http://www.voxforge.org/it/downloads 20
https://voice.mozilla.org/it/datasets 122
https://www.caito.de/2019/01/the-m-ailabs-speech-dataset/ 140

http://voice.fub.it/activities/corpora/emovo/index.html 0,5

Italian Conversational Speech Corpus - MagicHub


facebookresearch/voxpopuli: A large-scale multilingual speech corpus for representation learning, semi-supervised learning and interpretation (github.com)

Multilingual TED at openslr.org

The SIWIS database
https://phonogenres.unige.ch/downloads/siwis_latest.zip                    4,77

ArtiPhon: Articulatory Phone Recognition
http://www.mspkacorpus.it/

Evalita connected digits recognition
http://www.evalita.it/sites/evalita.fbk.eu/files/doc2009/evalita2009srt.zip

Sugar
https://github.com/evalitaunina/SUGAR_Corpus

Altre risorse invece richiedono del lavoro supplementare per segmentare gli audio in files in piccoli:

CLIPS, LIP
http://www.clips.unina.it/it/corpus.jsp
http://www.parlaritaliano.it/index.php/it/volip
http://www.leadhoc.org/index.php/data-access/corpus-of-spoken-italian/
https://kiparla.it/

https://lionbridge.ai/datasets/12-best-italian-datasets-for-machine-learning/

https://github.com/JRMeyer/open-speech-corpora

Dunque il grosso del lavoro è creare i files necessari a Kaldi per l'addestramento del modello, quest'acqua qui https://www.eleanorchodroff.com/tutorial/kaldi/training-acoustic-models.html#create-files-for-datatrain

Che problemi ci sono nell'utilizzo di questi dati?

La qualità audio non sempre è buona.

Clipping


Sottocampionamento approssimativo (aliasing)


Accenti
I volontari che donano la loro voce spesso non sono madrelingua e hanno un forte accento (vedi gli audio librivox all'interno di M-AILABS)

Mismatch

A volte il testo non corrisponde all'audio. E' normale, provare a gestire centinaia di migliaia di prompt!!!!! Per questo servono le capacità di un collezionista


Distribuzione degli speakers
Gran parte del corpus M-AILABS è stato dettato da 2 soli speakers. Volendo fare un modello speaker-indipendent, parrebbe sensato utilizzare il maggior numero possibile di speakers equamente distribuiti

Lexicon arcaico
Alcuni degli audio che si trovano in rete contengono un italiano di 100 anni fa.
Non c'è niente di male in questo se non che è necessario del lavoro supplementare per creare la trascrizione fonetica di parole che mai oggi verrebbero utilizzate.
Ad esempio, per addestrare le novelle di Pirandello presenti in M-AILABS ho dovuto creare la trascrizione fonetica di 30.000 nuove forme lessicali che difficilmente verranno riutilizzate in un contesto reale.


In conclusione, la preparazione dei dati per l'addestramento di un modello richiede tantissimo tempo e impegno.
Preparare i dati da zero anziché partire da quelli a disposizione non è detto che sia una opzione svantaggiosa.
A parte M-AILABS, non mi risulta che ci siano altri tentativi in italiano di progetti tipo https://github.com/kaldi-asr/kaldi/tree/master/egs/librispeech.
Il limite dell' approccio con gli audiolibri, a mio avviso, è che il numero degli speakers è limitato in quanto sono quasi sempre gli stessi attori professionisti, e la voce è impostata e non naturale.