Una voce italiana per Piper TTS

Da tempo mi diverto a sperimentare con l’intelligenza artificiale, spinto da curiosità e voglia di divertirmi. Durante questa esplorazione, ho notato con dispiacere come l’italiano sia spesso trascurato in molti progetti di IA.

In particolare, nei sistemi di text-to-speech (TTS), le opzioni per la lingua italiana sono a dir poco limitate. Per i miei progetti personali, utilizzo Piper, un progetto open source abbastanza leggero, funzionale e abbastanza mantenuto, uno dei pochi che supporta l’italiano (almeno al momento della mia scelta). Tuttavia, Piper offre soltanto due voci per l’italiano e, in particolare, la qualità audio della voce maschile lascia molto a desiderare.

Per migliorare questa situazione, ho deciso di provare a effettuare un fine-tuning per creare una nuova voce. Tuttavia, ho incontrato subito un grosso ostacolo: non esisteva un checkpoint pre-addestrato per l’italiano, il che mi obbligava a partire da un altro idioma.

Dopo alcuni esperimenti su Google Colab, utilizzando checkpoint di partenza in spagnolo e inglese, i risultati sono stati mediocri in entrambi i casi. Alla fine, ho deciso di accantonare temporaneamente il progetto. Tuttavia, il desiderio di ottenere una voce italiana di qualità per Piper non mi ha abbandonato.

Così, ho scelto di creare un nuovo checkpoint da zero. Google Colab, con i suoi limiti di tempo, non era più una soluzione praticabile, quindi ho deciso di sfruttare il mio server domestico.

La documentazione di Piper per il training, però, risultava piuttosto obsoleta rispetto alla versione corrente del codice sorgente. Questo mi ha costretto a dedicare diverse serate alla configurazione di un ambiente containerizzato adatto all’addestramento.

Superato questo ostacolo, avevo bisogno di un dataset per il training. Fortunatamente, ho trovato il progetto Multilingual LibriSpeech (MLS), dal quale ho estratto una voce italiana da utilizzare per l’addestramento.

Quindi, dopo 150 ore di calcolo sul mio server domestico, finalmente ho ottenuto un checkpoint italiano per Piper.

Purtroppo il risultato non è stato quello sperato, la qualità è buona, ma la voce oltre ad avere ovviamente ereditato l’accento, cosa attesa e che non rappresena un problema, ha anche acquisito l’abitudine a fare pause enfatiche randomiche in modo non correlato al testo.

Ho deciso comunque di rilasciare questo checkpoint con licenza Creative Commons su Hugging Face, mettendolo a disposizione di chiunque voglia provare a personalizzare la voce di Piper. Nonostante le imperfezioni, rappresenta un punto di partenza migliore rispetto a effettuare il fine-tuning partendo da altri idiomi.

Ho imparato molto da questa esperienza, ho intenzione presto di fare una nuovo checkpoint partendo da una voce maschile, successivamente però voglio tornare su questa voce per cercare di rimuovere le pause enfatiche.

Trovate un antemprima della prima voce nella pagina del progetto

Trovate tutto su questo repository: https://huggingface.co/kirys79/piper_italiano

Enjoy

K.