Tutorial: clonare una voce con l’intelligenza artificiale usando Real Time Voice Cloning

Negli ultimi anni i progressi nel campo dell’intelligenza artificiale hanno reso possibile numerose applicazioni per quanto riguarda le immagini (riconoscimento degli oggetti, generazione di foto) e dei testi (bot, elaborazione del linguaggio naturale NLP, generazione di articoli).

Lo stesso vale anche per i dati sonori. Si pensi per esempio a quanto il riconoscimento vocale è migliorato, come nel caso degli assistenti vocali, capaci di distinguere le parole che vengono pronunciate in maniera molto più chiara rispetto al passato. Stessa cosa per la sintesi vocale.

Il discorso risultava più complesso per la generazione o la modificazione di file audio, ad esempio la clonazione di una voce.

Qualche tempo fa, una startup chiamata Lyrebird aveva messo sù un sistema per clonare voci, e aveva avuto discreto successo. Ne avevo parlato anche io in questo articolo. Per quanto il risultato fosse lontano dalla perfezione (timbro semi robotico, dizione da sintetizzatore vocale), la direzione intrapresa era quantomeno incoraggiante.

Ecco come funziona Lyrebird: vengono mostrate all’utente una trentina di frasi da pronunciare, quasi degli scioglilingua, tipo: A loyal warrior will rarely worry why we rule. Trenta è il numero minimo degli scioglilingua da pronunciare, e viene espressamente detto all’utente che più registrazioni il sistema ha a disposizione e migliore sarà il risultato.

Il problema di Lyrebird è che, di fatto, è possibile clonare solo la propria voce, perchè bisogna convincere qualcuno a pronunciare le 30 frasi indicate dal computer. Diversamente sarebbe stato molto più interessante poter clonare qualsiasi voce a partire da una registrazione.

Poi, finalmente, a novembre del 2019, è stato rilasciato Real Time Voice Cloning, un’implementazione di questo articolo pubblicata su Github. In sostanza, questo algoritmo permette di clonare una voce a partire da una registrazione audio di pochi secondi.

E’ possibile testare Real Time Voice Cloning usando questo notebook precompilato di Google Colab:

https://colab.research.google.com/github/ak9250/Real-Time-Voice-Cloning/blob/master/Real_Time_Voice_Cloning.ipynb

Per farlo funzionare bisogna accedere al proprio account di Google.

Una volta aperto il link vi troverete davanti ad alcune celle di codice, bisognerà eseguirle tutte, una per una, cliccando sul tasto play alla sinistra di ogni singola cella.

 

Arrivati all’ultima cella di codice, il sistema chiede di inserire il file audio contenente la voce da clonare. Per questo tutorial prenderemo come esempio la voce di Berlusconi.

Per il momento Real Time Voice Cloning è stato allenato solamente con voci in lingua inglese, e quindi funziona male in italiano. Per questo, sono andato a trovarmi un piccolo video, circa 10 secondi, dove Berlusconi parla in inglese. Ho salvato l’audio in un file mp3 e l’ho caricato su Google Colab. Per caricare un file su Colab, cliccare sul tasto upload nella sidebar laterale della pagina, come in immagine.

Dopo di che va inserito il l’indirizzo del file nell’ultima cella di codice, e poi si può premere invio.

A questo punto, viene chiesto di scrivere una frase da far dire alla voce clonata. Circa una ventina di parole.

Dopo pochi secondi viene prodotto un file audio wav “demo_output_00.wav”, salvato nella sidebar, all’interno della cartella Real-Time-Voice-Cloning. Il file può essere scaricato e riprodotto. Se non compare nessun file audio, cliccare su refresh.

Il risultato , nel caso della voce di Berlusconi, non è proprio brillante. Ma, provato invece con voci di persone inglesi/americane è notevolmente migliore, e in alcuni casi perfettamente uguale. Il motivo sta nel fatto che Real Time Voice Cloning copia lo spettro della voce sorgente impostandola su una voce di destinazione sintetica pre-confezionata.

 

Esempio con la voce di Emilia Clarke:

 

**********

Aggiornamento 08/04/2020: Tensorflow 2.2.0 ha introdotto alcune modifiche incompatibili con la versione predente 1.14.0. Per fare funzionare il notebook di Colab bisogna aggiungere la seguente cella di codice ed eseguirla prima delle altre:

%tensorflow_version 2.x
!pip uninstall -y tensorflow
!pip install tensorflow-gpu==1.14.0