WaveNet – Abbiamo già parlato più volte di DeepMind, l’azienda di intelligenza artificiale comprata da Google: vi abbiamo raccontato di quando la loro Intelligenza Artificiale AlphaGo ha battuto uno dei campioni mondiali di Go, abbiamo seguito pure il suo 4 – 1 con l’attuale campione mondiale, vi abbiamo spiegato come la figlia di AlphaGo ha analizzato la gestione energetica della sede principale di Google, fornendogli un nuovo piano energetico e facendogli risparmiare decine di milioni l’anno.
Oggi, parliamo di un’altra grande impresa dell’Intelligenza Artificiale più famosa al mondo: parlare umanamente.
Non è una cosa nuova, non è nulla di innovativo. Ma diciamocelo: abbiamo mai sentito uno speaker del tipo text-to-speech parlare anche solo accettabilmente? Abbiamo mai avuto un navigatore che non ci facesse ridere con il suo “fra – due – cento – metri – svoltare – a – …… – destra”? E utilizzare un timbro suadente sembra non bastare più, purtroppo.
Questa volta, l’IA in questione si chiama WaveNet, e sembra proprio saper parlare, articolare accenti e pronunciare fluentemente un’intera frase.
WaveNet utilizza un deep generative model per onde sonore che può imitare qualsiasi voce umana. Le frasi pronunciate da WaveNet suonano del 50% più simili ad una voce umana rispetto al più avanzato text-to-speech. Per dimostrarlo, sono stati creati campioni in Inglese e in Mandarino, e utilizzando il sistema MOS (Mean Opinion Scores), che ormai è uno standard nella valutazione di audio, sono stati valutati i campioni dell’intelligenza artificiale rispetto a quelli generati da normali text-to-speech, parametric-text-to-speech, e rispetto anche a campioni di voci reali.
Ecco due campioni generati da WaveNet e pubblicati da Google:
Ad oggi, i sistemi Text-To-Speech sono basati su grossi database di piccole registrazioni associate a sillabe o parole, pronunciate tutte dalla stessa persona.
Ovviamente non si possono avere le registrazioni di tutto il vocabolario di ogni lingua, quindi le parole non memorizzate vengono prodotte concatenando le sillabe conosciute e supponendo tramite alcuni algoritmi quale sia la pronuncia corretta. Per l’italiano è molto semplice questo processo, ma per alcune lingue diventa un grosso problema.
Così, si è affinata la tecnica, creando dei text-to-speech parametrici, che oltre al testo, richiedono dei parametri di pronuncia dello stesso, delle direttive, insomma. In questo modo, la generazione di parole nuove risulta molto più semplice, anche se comunque, la voce rimane robotica.
È proprio questo dover combinare registrazioni di singole sillabe insieme, che rende le voci di questo tipo molto robotiche.
WaveNet lavora diversamente. Inanzi tutto, non c’è nessuna registrazione. Nessun sample, nessuna associazione di sillabe a suoni già costruiti.
Quest’intelligenza artificiale, lavora su un altro livello: ha milioni di informazioni su come creare si creano i suoni e su come modulare le onde sonore.
Si è partiti dall’allenare WaveNet con tantissimi speaker diversi, per estrarre i pattern di creazione di un’onda sonora e riconoscere pronunce diverse della stessa parola, in modo da comprendere ciò che è essenziale e ciò che invece è differente in ognuno di noi, e quindi superfluo. Imparare qual è il fulcro di ogni onda, ciò che ci fa dire: questa parola è pronunciata correttamente, quest’altra è robotica.
L’addestramento è quindi nella creazione di singole onde sonore che, messe insieme, produrranno una sillaba riconosciuta. Ma ogni sillaba può essere prodotta in tantissimi modi diversi, che dipendono dal timbro, dal volume, dalla velocità con cui la si pronuncia.
WaveNet calcola l’andamento della singola onda: conoscendo ciò che è stato prodotto prima, conoscendo bene il funzionamento delle onde, prevede quindi se l’onda che sta generando in quel momento deve crescere o decrescere, alzarsi o abbassarsi, instante per istante.
Questo richiede moltissimi calcoli al secondo.
Istante per istante verrà quindi generato un valore che dipenderà da tutti i valori precedenti, da molte regole imparate dall’analisi di tantissimi campioni vocali, e da ciò che si vuole dire.
Conoscere ciò che bisogna dire, oltre a conoscere ciò che si è detto, diventa fondamentale per WaveNet. Ad ogni passaggio WaveNet elabora l’onda creata fino ad ora, tutte le sue conoscenze sulle regole con cui si formano le onde, e ciò che deve dire.
Il testo fornitogli è in un certo senso parametrico: contiene anche metadati su ogni sillaba.
Ci si è però chiesti: Cosa succede se non forniamo a WaveNet il testo da pronunciare? Cosa succede se gli facciamo basare i propri conti solo su ciò che ha già detto finora e ciò che conosce sulle regole di formazione delle onde?
Il risultato, è ovviamente un blaterare in una lingua inventata, ma mantenendo la caratteristica principale di WaveNet: sembrare umana.
La voce sembra ancora umana e il risultato sembra essere proprio una lingua vera, molto simile all’inglese, e che in alcuni tratti sembra pronunciare proprio parole sensate.
È importante far notare che addestrando l’intelligenza artificiale con un maggior numero di campioni in una sola lingua (un numero tendente a infinito) si otterrebbe come risultato una vera e propria frase di senso compiuto.
Servirebbe anche moltissima potenza di calcolo, per elaborare non solo gli istanti precedenti, ma tutta la frase che si sta dicendo: per produrre una frase che abbia senso, bisogna tener presente tutta la frase, dall’inizio alla fine.
Teoricamente quindi, questo tipo di intelligenza artificiale potrebbe produrre frasi di senso compiuto, addirittura libri di senso compiuto. Praticamente, ciò è per ora impossibile in quanto richiederebbe sia quantità di memoria sia potenza di calcolo ad oggi inconcepibili.
Una delle caratteristiche principali di questo nuovo modo di riprodurre voci umane è proprio l’indipendenza da campioni. Non si raccolgono dei campioni da utilizzare per creare suoni, ma si insegna all’IA come riprodurre, come creare, quei suoni.
Questo rende possibile cambiare timbro in qualsiasi momento, senza dover registrare altre migliaia di campioni. L’IA ha appreso come mimare timbri femminili e timbri maschili, come mimare timbri di una persona arrabbiata o di una persona felice.
Ecco un timbro maschile lasciato libero di esprimersi:
Un altro aspetto molto importante sono le emozioni che emergono in questi audio. Si sentono pause nei momenti giusti e intonazione, ma ancora più importanti sono i sospiri. WaveNet sospira naturalmente come farebbe una persona nel parlare. Prende fiato, schiocca le labbra, deglutisce.
I ricercatori di DeepMind hanno già dimostrato più volte di essere molto creativi: ogni progetto acquista mille sfumature diverse, si sperimentano sempre cose nuove, si crea qualcosa e lo si prova in altri contesti.
Ed ecco l’idea di provare a far generare a WaveNet non onde sonore di parole, ma onde sonore di un piano forte. Provare a farle creare musica.
I ricercatori hanno addestrato l’Intelligenza Artificiale con moltissimi sample di musica classica in pianoforte, e l’hanno lasciata libera di creare: senza assegnarle uno spartito.
Il risultato risulta simile a ciò che è stato ottenuto lasciandola libera di parlare senza un testo da leggere: un blaterare musicale, che sembra essere una forma musicale nuova, ma che ricorda la musica classica.
Eccone alcuni campioni:
Ovviamente, alle orecchie di un buon ascoltatore, non sfuggirà che le note sono molto casuali. Ciò che si può notare però è l’estrema somiglianza timbrica con un piano forte reale, che è poi l’obiettivo di WaveNet: creare suoni realistici. Voci o note è indifferente, ragionando in termini di onde sonore.
Fino ad ora, la direzione presa riguardo alle voci umane era quella di cercare di registrare più parole intere possibile, in modo che ogni parola fosse pronunciata correttamente. Ironia della sorte, la soluzione sembra essere all’opposto: allenare un’intelligenza artificiale a produrre istante per istante onde sonore, quindi parti di sillaba.
DeepMind spiega che questo metodo è stato ispirato da un altro progetto dell’azienda: le Pixel Recurrent Neural Networks. Queste reti neurali sono utilizzate per creare immagini non solo pixel per pixel, ma generando pixel per pixel ogni canale di colore: è stata quindi generata la variabile del Rosso (in RGB) per ogni pixel, poi la variabile del verde (Green), e poi la variabile del Blu. La rete neurale ha imparato a generare singolarmente ognuno di questi canali: l’andamento di un canale è esattamente un’onda.
Allo stesso modo si è capito che il metodo migliore per generare suoni realistici è generare onde sonore, e non fare un collage di suoni pre-registrati.