Domanda

Esiste un algoritmo o qualche euristica per decidere se i dati audio digitali sono presenti ritaglio?

È stato utile?

Soluzione

Se mai ricevi valori al massimo o al minimo, allora stai, per definizione, ritagliando.Tali valori rappresentano il loro valore particolare così come tutti i valori oltre, e quindi sono meglio utilizzati come rilevatori di limiti esterni.

-Adamo

Altri suggerimenti

La risposta semplice è che se un campione qualsiasi ha il valore massimo o minimo (-32768 e +32767 rispettivamente per campioni a 16 bit), puoi considerarlo clippato.Questo non è del tutto vero, poiché quel valore potrebbe effettivamente essere il valore corretto, ma non c'è modo di dire se +32767 avrebbe dovuto davvero essere +33000.

Per una risposta più complicata:Esistono rilevatori di ritaglio per il conteggio dei campioni che richiedono che x campioni consecutivi raggiungano il valore massimo/minimo affinché possano essere considerati ritaglio (dove x può arrivare fino a 7).La teoria qui è che il ritaglio di pochi campioni non è udibile.

Detto questo, ci sono apparecchiature audio che registrano un clip abbastanza udibile anche a valori inferiori al massimo (e superiori al minimo).Per questo motivo il consiglio tipico è quello di masterizzare la musica fino al picco a -0,3 dB anziché a 0,0 dB.Potresti considerare che qualsiasi campione al di sopra di quel livello sia in ritaglio.Dipende tutto da cosa ti serve.

Per i dati audio digitali, il termine "clipping" non ha molto significato oltre a "ampiezza massima".Nel mondo analogico, i dati audio provengono da un hardware che di solito contiene un "registro di ritaglio", che offre la possibilità di un'ampiezza massima che non viene ritagliata.

Ciò che potrebbe essere più adatto all'audio digitale è impostare una soglia basata sulle limitazioni del D/A di uscita.Se stai utilizzando VOIP, scegli una soglia tipica dei ricevitori o dei telefoni cellulari e chiamala "clipping" se l'audio digitale supera tale soglia.Se stai trasmettendo a sistemi home theater di fascia alta, probabilmente non avrai alcun "ritaglio".

Ho appena notato che ci sono anche alcune belle implementazioni.

Ad esempio dentro Audacia:
AnalizzareTrova ritaglio...

Quello che ha detto Adamo.Potresti anche aggiungere della logica per rilevare i valori di ampiezza massima in un periodo di tempo e contrassegnarli solo, ma l'essenza è determinare se/quando il segnale raggiunge l'ampiezza massima.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top