Psychoacoustic experiment

In questo esperimento prendiamo due audio, nel primo si passa da 65Hz a 262Hz, e nel secondo da 1568Hz a 1760Hz. La differenza è sempre di 200Hz, ma l'orecchio umano percepirà molta più differenza di frequenza nel secondo caso. Tutto questo perché gli umani percepiscono la frequenza logaritmicamente.

Quindi fino ad ora, tramite i paragrafi precedenti, siamo arrivati a trovare tramite la Trasformata di Fourier il frequency domain. Ma ora come già anticipato vogliamo arrivare al time-frequency domain. Che vengono rappresentati tramite spectogram, e in particolare quello che si occupa di rappresentare le frequenze percepibili dall'orecchio umano, si chiamano Mel Spectogram.

Mel Spectogram

La parola mel deriva dalla mel scale, che è una scala percettiva per l'intonazione. Questa scala non fa altro che mappare i Hz per renderli percepibili nella nuova scala mel. Questo vuol dire che le stesse distanze nella scala equivalgono alle stesse distanze percettibili, quindi l'esperimento di prima con i mels, avrebbe avuto esito uguale all'orecchio umano. Come si può vedere da questa immagine.

Screenshot 2024-05-14 at 16.14.35.png

Ora quello che dobbiamo fare è estrarre il Mel Spectogram.

Estrarre il Mel Spectogram

Questo avviene in 3 passi:

Il punto più importante è proprio l'ultimo e avviene seguendo questi 3 punti:

  1. Scegliere il numero di mel-bands
  2. Costruire i mel-filter banks
  3. Applicare i mel-filter banks allo spectogram

Ora vediamo nel dettagli questi 3 punti.

1. Numero di Mel bands

Questo è un parametro fondamentale, e può variare. La domanda è che numero scegliamo ? 40 ? 50 ? 128 ? La risposta è che dipende dal problema.

2. Mel filter banks

Questo processo è complicato e sussiste in 5 steps.

  1. La prima cosa da fare è quella di convertire la più piccola e la più grande frequenze in Mel. E lo si fa tramite questa formula:

    m=2595log(1+f/500)
  2. Adesso bisogna prendere il frequency range in mel, e poi bisogna mappare in maniera equidistante il numero di mel bands scelto.

  3. Quello che facciamo ora è convertire di nuovo questi punti in Hertz, usando questa formula:

  4. f=700(10m25951)
  5. Adesso arrotondiamo questi punti al bin più vicino che abbiamo a disposizione.

  6. Creare filtri triangoli.

    Screenshot 2024-05-14 at 16.48.35.png

    Come si può notare sull'asse delle x abbiamo le frequenze in basso in hertz e sopra in mel. E poi a sinistra abbiamo i weights che sono espressi tra 1 e 0, cosa sono ? filtri, cercano solo di filtrare il suono e quando hai un peso pari a 1 non si toccherà quel segnale, ma sotto 1 viene filtrato.

    In questo esempio abbiamo 6 mel bands, ad esempio il secondo punto è 1526 mels, che è 2000 hertz. Come si può vedere anche i punti sulla scala mel sono equidistanti numericamente, ma il punto è che non lo sono nella Hertz scale. Le basi della piramide sono date dal punto centrale della mel band precedente e quello della mel band successiva e cosi si costruiscono questi filtri triangolare in grado di mappare le frequenze in mels.

    In termini di algebra lineare si fa una moltiplicazione matriciale per ottenere il Mel-spectogram.