PSOLA (acronimo di Pitch-Synchronous Overlap and Add, sovrapposizione e aggiunta a toni sincroni) è un algoritmo usato nella sintesi vocale.
PSOLA, come MBROLA, si basa sui difoni, che sono le unità elementari del discorso che spaziano dal centro di una regione di suono stazionario al centro della regione successiva, ossia rappresentano la transizione da un suono all'altro. Secondo alcuni ricercatori, la classificazione delle transizioni tra suoni costituirebbe l'elemento chiave per il riconoscimento e la comprensione di segmenti del discorso parlato.
PSOLA è una tecnica nel dominio del tempo, ossia elabora il segnale agendo sulla sua forma d'onda nativa e non sulla sua scomposizione in frequenza. L'algoritmo di base consiste in tre passaggi fondamentali.
In primo luogo, il segnale vocale viene suddiviso in segnali più piccoli, di durata inferiore e sovrapposti tra di loro. Questa suddivisione si ottiene marcando i picchi di tonalità del segnale originale e usando tali marcatori per segmentare il segnale. Il meccanismo chiave di PSOLA infatti è la determinazione corretta dei marcatori di tono: da un punto di vista dell'algoritmo ideale, questi marcatori dovrebbero essere spaziati uniformemente in modo periodico, a intervalli uguali al periodo fondamentale del segnale, e allo stesso tempo coincidere con picchi del segnale stesso. Nella pratica queste due condizioni spesso non coincidono, soprattutto per il fatto che nel parlato il periodo fondamentale del segnale non rimane sempre costante. Se ci si basasse solo sui picchi, allora i marcatori non sarebbero più distribuiti in modo periodico. D'altro canto, se si marcasse il segnale solo in base alla periodicità stretta, si potrebbe perdere la necessaria corrispondenza tra marcatori e picchi, rendendo quindi inutile la marcatura stessa. Nella pratica, per approssimare al meglio le condizioni ideali richieste dall'algoritmo si frammenta il segnale in segmenti che contengono da due a quattro picchi (periodi tonali): studi matematici[1] hanno infatti determinato che questo è il compromesso migliore.
Nella fase successiva, i segnali più piccoli vengono modificati o ripetendo o eliminando segmenti di parlato, a seconda che il tono finale debba essere più elevato o più basso rispetto al tono sorgente. Questa operazione modifica la durata del segnale, modificandone quindi anche la frequenza fondamentale.
Nell'ultima fase, i segmenti rimanenti vengono ricombinati tramite sovrapposizione e aggiunta, in modo tale che i marcatori risultino spaziati uniformemente (sincronizzati) come richiesto dall'algoritmo. Il risultato finale è un segnale che ha lo stesso spettro acustico dell'originale ma una frequenza fondamentale differente: questo risulta in un cambio di tonalità della voce, lasciando però inalterati gli altri parametri vocali.