Lo Zero Crossings Rate (ZCR), o tasso di attraversamento dello zero, rappresenta il numero di volte in cui un segnale attraversa l’asse dello zero in un determinato intervallo di tempo o in un frame di segnale.

Il ZCR è particolarmente utile per distinguere suoni con caratteristiche spettrali diverse:

  1. Differenziazione tra voce e musica: I suoni a più alta frequenza, come il rumore e molti strumenti a percussione, hanno un elevato ZCR, mentre le vocali e altri suoni a bassa frequenza tendono ad avere un basso ZCR.
  2. Segmentazione e classificazione dei suoni: Il ZCR è utile per rilevare e classificare differenti tipi di suoni. Ad esempio, nella classificazione delle fricative nella voce (come “s” e “sh”), che hanno un tasso di attraversamento elevato, rispetto a vocali come “a” o “o”.
  3. Riconoscimento del parlato: In combinazione con altre caratteristiche (come MFCC e energia), il ZCR è usato per segmentare e riconoscere il parlato.
def zcr(x):
	return len(np.nonzero(np.diff(np.sign(x)))[0])/len(x)