# Algoritmo di pitch detection

Un algoritmo di pitch detection (PDA) è un algoritmo capace di valutare la frequenza fondamentale di un segnale periodico o quasi periodico, generalmente una registrazione digitale della voce o di una nota musicale. Questa valutazione può essere fatta nel dominio del tempo, nel dominio della frequenza o in entrambi.
Gli algoritmi PDA sono usati in vari contesti (fonetica, codifica vocale, performance musicali, recupero di informazioni dalla musica) perciò ci sono differenti richieste che l'algoritmo deve soddisfare.

## Approcci nel dominio del tempo

Nel dominio del tempo, un PDA solitamente stima il periodo del segnale, quindi lo inverte per restituire il valore della frequenza.
Un primo semplice approccio è quello di misurare i punti di attraversamenti dello zero del segnale. Tuttavia questo metodo non funziona con forme d'onda complesse composte da onde sinusoidali con periodi diversi. Ci sono comunque casi in cui il metodo dell'attraversamento dello zero risulta utile, ad esempio in alcune applicazioni di riconoscimento vocale in cui è presente una singola sorgente. La semplicità di questo algoritmo lo rende di facile ed economica realizzazione.
Approcci più sofisticati comparano segmenti del segnale con altri segmenti pesati durante un periodo di prova per trovare una corrispondenza. L'AMDF (average magnitude difference function), l'ASMDF (Average Squared Mean Difference Function) e altri algoritmi basati sull'autocorrelazione funzionano in questo modo. Questi algoritmi forniscono risultati accurati per segnali altamente periodici, tuttavia possono dare falsi risultati (spesso "errori di ottava"), possono funzionare male con segnali rumorosi e in base alla loro implementazione possono non funzionare con suoni polifonici.
Gli attuali algoritmi basati sul dominio del tempo tendono a implementare i metodi sopracitati. Ad esempio l'algoritmo YIN e l'algoritmo MPM sono entrambi basati sull'autocorrelazione.

## Approcci nel dominio della frequenza

Nel dominio della frequenza è possibile effettuare rilevazioni polifoniche, spesso si usa il periodogramma per convertire il segnale in una stima del suo spettro di frequenze. Questo algoritmo richiede tanta potenza elaborativa quanta più precisione si desidera ottenere, tuttavia la popolarità e l'efficienza dell'FFT (processo chiave dell'agoritmo usato per ottenere lo spettrogramma) lo rendono efficiente in molti ambiti.
Gli algoritmi più popolari operanti nel dominio della frequenza sono: l'HPS (harmonic product spectrum), le analisi cepstral e il maximum likelihood che cerca di associare le caratteristiche del dominio della frequenza con mappe predefinite di frequenze (molto utile per il riconoscimento dell'intonazione di strumenti con accordatura fissa) e riconoscimento di picchi causati da serie di armoniche.
Per migliorare la precisione delle stime basate sulla FFT si possono usare tecniche come il riassegnamento spettrale (basata sulla fase) o l'interpolazione di Grandke (basata sulla grandezza). Un altro approccio basato sulla fase è stato creato da Brown e Puckette.

## Approcci spettrali/temporali

Gli approcci di questo tipo, ad esempio lo YAAPT pitch tracking, sono basati su una combinazione di processi nel dominio del tempo che usano funzioni di autocorrelazione come ad esempio la correlazione incrociata normalizzata, e processi che operano nel dominio della frequenza che utilizzano le informazioni contenute nello spettro per la rilevazione dell'intonazione. Il risultato finale può essere ottenuto usando la programmazione dinamica. Il vantaggio di questi approcci è che gli errori di stima commessi in un dominio possono essere corretti dalle valutazioni ottenute nell'altro dominio.

## Frequenza fondamentale della voce

La frequenza fondamentale del parlato può variare da 40 Hz per voci maschili profonde fino ai 600 Hz delle voci dei bambini o delle donne.
Il metodi basati sull'autocorrelazione necessitano di almeno due periodi per rilevare il pitch. Questo significa che per identificare una fondamentale a 40 Hz devono essere analizzati almeno 50 millisecondi di segnale. Tuttavia durante questi 50 ms la frequenza fondamentale della voce potrebbe non essere la stessa per tutta la durata della finestra.