Clonazione della voce con Python
Qualche tempo fa ha fatto scalpore la notizia che Baidu aveva sviluppato un’applicazione in grado di clonare la voce di chiunque a partire da tre o quattro secondi di registrazione. [1] In verità sempre più soggetti stanno lavorando su questo campo per realizzare sistemi di sintesi vocale (TTS) via via più realistici per impieghi commerciali.
Prima di cominciare è utile preparare il file audio con il campione di voce da usare per l’esperimento: già una decina di secondi di parlato basta, ma con qualche minuto il risultato sarà migliore. I formati accettati sono mp3, flac e wav; tuttavia l’mp3, essendo compresso, richiede più tempo e risorse di memoria per essere elaborato. Il wav è ottimale.
Elaborati i dati di preaddestramento, ecco la richiesta di indicare dove si trova il file con il campione di voce da clonare. Se siete nella versione da terminale, la posizione va indicata come indirizzo assoluto; ad esempio, se il campione è sul desktop, in Linux si dovrà inserire
Nella pagina del progetto lo sviluppatore sostiene che si possono preparare abbastanza agevolmente degli script per interagire in maniera più articolata e automatica con la sua creazione e che, ma questa volta con enormi impegno e fatica, è persino possibile preparare dataset per altre lingue.
1. Cfr. ad es. l'articolo di Vice del 7 marzo 2018: https://www.vice.com/en/article/3k7mgn/baidu-deep-voice-software-can-clone-anyones-voice-with-just-37-seconds-of-audio
A partire da uno studio presentato al NeurIPS 2018 a Montreal in Canada [2] il ricercatore belga Corentin Jemine ha pubblicato per primo su Github un kit, basato su PyTorch e addestrato a “parlare” in inglese, per provare anche da casa questo tipo di tecnologia. [3] Occorre specificare che le richieste hardware sono comunque impegnative: l’installazione prende oltre tre gigabyte e il funzionamento occupa mediamente un paio di giga di memoria RAM, impegnando notevolmente la CPU; ragion per cui è altamente consigliato farlo girare su un computer che abbia anche una buona scheda grafica con GPU.
Il consiglio è di installare il kit in una bolla virtuale – su Linux c’è ad esempio il comodo Virtualenv di Python –, onde evitare di pasticciare con qualche componente del sistema operativo.
Scaricato il pacchetto di Corentin, non rimane che seguire le semplici istruzioni riportate nella sezione Setup della pagina e installarlo nell’ambiente virtuale.
L’applicativo può essere usato da linea di comando (demo_cli) o con interfaccia grafica (demo_toolbox); io ho preferito la prima, e perché mi pare più leggera in termini di memoria e perché permette di vedere meglio che cosa accade nei vari passaggi.
/home/utente/Scrivania/campione.wav
, dove naturalmente utente è il nome utente del sistema operativo e campione.wav è il nome del file audio da usare.
Elaborato il campione, è richiesta la frase da far pronunciare alla voce clonata; l’autore suggerisce di stare sulle venti parole. La mia esperienza consiglierebbe invece di non superare le dieci e di usare preferibilmente parole mono o bisillabe, il che in inglese non è difficile. Si tratta pur sempre di una demo. Ma soprattutto, secondo quanto affermato da Corentin, le trecento ore di parlato con relative trascrizioni e annotazioni dei dataset di preaddestramento forniti sono troppo poche per potere avere prestazioni oratorie migliori dall’applicazione. In effetti ho sperimentato che, superata la dozzina di parole o usando vocaboli plurisillabi, l’esito è spesso una sequela di bisbigli e gemiti indecifrabili. Potrebbero andare bene solo a chi volesse provare la sensazione di udire qualcosa di paragonabile agli oracoli della Pizia.
Un lato affascinante del giocattolo è che, pur esprimendosi per ora solo in inglese, nella voce campione il parlante può usare qualunque lingua; l’algoritmo infatti rielabora solo le caratteristiche sonore della voce e le usa poi come una sorta di pelle con cui rivestire la frase che verrà pronunciata in inglese e salvata a sua volta in un file wav.
Lascio a chi lo volesse cimentarsi nell’una e nell’altra impresa, nonché farmi eventualmente sapere com’è andata. Qui mi limito a far ripetere ai cloni vocali di un’anziana regina e di un tale di cui quest’estate è ricorso il cinquantenario della morte le parole che ho fatto pronunciare alla scatoletta parlante durante il test: “The man who reads is a good one”.
2. Cfr. l’articolo: https://arxiv.org/pdf/1806.04558.pdf
3. Cfr. https://github.com/CorentinJ/Real-Time-Voice-Cloning
4. Questo il campione utilizzato: https://youtu.be/e7NuC_ro4ZI
5. Questo il campione utilizzato: https://youtu.be/3xkfUB-yzi0