Una prima nota: la maggior parte dei moderni sistemi di sintesi vocale, come quello di AT&T a cui ti sei collegato, usa la sintesi vocale concatenativa . Questa tecnica utilizza un ampio database di registrazioni della voce di una persona che pronuncia una lunga raccolta di frasi, selezionate in modo tale che sia presente il maggior numero di combinazioni di fonemi. La sintesi di una frase può essere fatta semplicemente mettendo insieme segmenti di questo corpus - il bit impegnativo sta rendendo la messa insieme senza soluzione di continuità ed espressiva.
Ci sono due grandi ostacoli se vuoi usare questa tecnica per far dire al presidente Obama parole imbarazzanti:
- Devi avere accesso a una vasta raccolta di frasi della voce target, preferibilmente registrate con condizioni di registrazione uniformi e buona qualità. AT&T ha un budget per registrare dozzine di ore dello stesso oratore nello stesso studio, ma se vuoi falsare la voce di qualcuno in soli 5 minuti di registrazione, sarà difficile.
- Vi è una notevole quantità di allineamento manuale e preelaborazione prima che la materia prima registrata sia nel giusto "formato" per essere sfruttata da un sistema concatenativo di sintesi vocale.
La tua intuizione che questa è una possibile soluzione è valida - a condizione che tu abbia il budget per affrontare questi due problemi.
Fortunatamente, ci sono altre tecniche che possono funzionare con meno supervisione e meno dati. Il campo della sintesi vocale interessato a "falsificare" o "imitare" una voce di una registrazione è noto come conversione vocale . Hai una registrazione A1 dell'altoparlante target A che dice la frase 1 e una registrazione B2 dell'altoparlante sorgente B che dice la frase 2, miri a produrre una registrazione A2 dell'altoparlante A che dice la frase 2, possibilmente con accesso a una registrazione B1 dell'altoparlante B che riproduce con la sua voce la stessa espressione dell'oratore target.
Lo schema di un sistema di conversione vocale è il seguente:
- Le funzioni audio vengono estratte dalla registrazione A1 e raggruppate in classi acustiche. In questa fase, è un po 'come se le borse fossero tutte "a" dell'altoparlante A, tutte le "o" dell'altoparlante A, ecc. Si noti che si tratta di un'operazione molto più semplice e approssimativa del vero riconoscimento vocale - non ci interessa riconoscendo le parole correttamente formate - e non sappiamo nemmeno quale borsa contiene "o" e quale borsa contiene "a" - sappiamo solo che abbiamo più istanze dello stesso suono in ciascuna borsa.
- Lo stesso processo viene applicato su B2.
- Le classi acustiche da A1 e B2 sono allineate. Per continuare con l'analogia delle borse, ciò equivale a associare le borse dai passaggi 1 e 2, in modo che tutti i suoni che abbiamo in questa borsa dall'altoparlante A debbano corrispondere ai suoni che abbiamo in quella borsa dall'altoparlante B. Questa corrispondenza è molto più facile da fare se si utilizza B1 al passaggio 2.
- Una funzione di mappatura è stimata per ogni coppia di borse. Dato che sappiamo che questa borsa contiene suoni dell'altoparlante A e che contiene gli stessi suoni ma pronunciati dall'altoparlante B, possiamo trovare un'operazione (ad esempio una moltiplicazione di matrice sui vettori di caratteristiche) che li fa corrispondere. In altre parole, ora sappiamo come far suonare la "o" dell'altoparlante 2 come la "o" dell'altoparlante 1.
- In questa fase abbiamo tutte le carte in mano per eseguire la conversione vocale. Da ciascuna sezione della registrazione di B2, utilizziamo il risultato del passaggio 2. per capire a quale classe acustica corrisponde. Quindi utilizziamo la funzione di mappatura stimata al passaggio 4 per trasformare la sezione.
Insisto sul fatto che questo funziona a un livello molto più basso rispetto all'esecuzione del riconoscimento vocale su B2, e quindi a fare TTS usando la voce di A1 come corpus.
Varie tecniche statistiche sono utilizzate per i passaggi 1 e 2: GMM o VQ sono i più comuni. Per la parte 2 vengono utilizzati vari algoritmi di allineamento: questa è la parte più complicata ed è ovviamente più semplice allineare A1 vs B1 rispetto a A1 vs B2. Nel caso più semplice, metodi come il Dynamic Time Warping possono essere usati per effettuare l'allineamento. Per quanto riguarda il passaggio 4, la trasformazione più comune sono trasformazioni lineari (moltiplicazione di matrici) su vettori di caratteristiche. Trasformazioni più complesse rendono le imitazioni più realistiche ma il problema di regressione per trovare la mappatura ottimale è più complesso da risolvere. Infine, come per il passaggio 5, la qualità della risintesi è limitata dalle funzionalità utilizzate. Gli LPC sono generalmente più facili da gestire con un semplice metodo di trasformazione (prendere il frame del segnale -> stimare il residuo e lo spettro LPC -> se necessario residuo del pitch-shift -> applicare lo spettro LPC modificato al residuo modificato). Usare una rappresentazione del discorso che può essere invertita nel dominio del tempo e che fornisce una buona separazione tra prosodia e fonemi è la chiave qui! Infine, a condizione che tu abbia accesso a registrazioni allineate dell'altoparlante A e B che rechino la stessa frase, esistono modelli statistici che affrontano simultaneamente i passaggi 1, 2, 3 e 4 in una procedura di stima a modello singolo.
Potrei tornare con una bibliografia in seguito, ma un ottimo punto di partenza per avere un'idea del problema e il quadro generale utilizzato per risolverlo è Stylianou, Moulines e Cappé "Un sistema per la conversione vocale basato sulla classificazione probabilistica e un'armonica più modello di rumore ".
Per quanto ne sappia, non esiste un software ampiamente in grado di eseguire la conversione della voce - solo le proprietà di modifica del software della sorgente di origine - come i parametri della tonalità del tono e della lunghezza del tratto vocale (ad esempio il trasformatore IRCAM TRAX) - con i quali devi pasticciare nella speranza di creare il tuo registrando il suono più vicino alla voce target.