Dada una grabación, necesito detectar si se ha producido algún recorte.
¿Puedo concluir con seguridad que hubo recorte si alguna (una) muestra alcanza el valor máximo de la muestra, o debería buscar una serie de muestras posteriores al nivel máximo?
La grabación se puede tomar de convertidores A / D de 16 o 24 bits, y se convierten en valores de coma flotante que van desde . Si esta conversión toma la forma de una división entre o , entonces, presumiblemente, los picos negativos pueden ser algo menores que -1, y las muestras con el valor -1 no se recortan.2 15 - 1 2 23 - 1
Obviamente, siempre se puede crear una señal específica para vencer el algoritmo de detección de recorte, pero estoy viendo grabaciones de voz, música, ondas sinusoidales o ruido rosa / blanco.
fuente
Respuestas:
Estaba escribiendo una respuesta exactamente igual que la de Yoda . Probablemente sea el más confiable, pero le propondré una solución diferente para que tenga algunas opciones.
Si toma un histograma de su señal, lo más probable es que tenga forma de campana o triángulo, dependiendo del tipo de señal. Las señales limpias tenderán a seguir este patrón. Muchos estudios de grabación agregan un efecto de "sonoridad" que causa un pequeño golpe cerca de la parte superior, pero aún así tiene un aspecto suave. Aquí hay un ejemplo de una canción real de un músico importante:
Aquí está el histograma de señal que Yoda da en su respuesta:
Y ahora el caso de su recorte:
Este método puede ser engañado a veces, pero es al menos algo para tirar en su bolsa de herramientas para situaciones en las que el método FFT no parece funcionar para usted o son demasiados cálculos para su entorno.
fuente
La respuesta más simple si se trata de grabaciones cortas es escucharla y detectar "pops" (sonido corto con pinchos) en la reproducción. Sin embargo, una solución más robusta es analizar el espectro de frecuencia de la grabación.
Recuerde que cuando una señal se recorta en algún umbral, localmente se parece a una onda cuadrada en las regiones recortadas. Esto introduce armónicos más altos en el espectro de frecuencia que no hubieran estado allí originalmente. Si su señal es ilimitada (la mayoría de las señales del mundo real lo son) y está muestreando muy por encima de la tasa de Nyquist, entonces esto se destaca bastante claro como el día.
Aquí hay un breve ejemplo en MATLAB que demuestra esto. Aquí, creo una señal de banda ilimitada de 1s de duración, muestreada a 1000Hz, y luego la recorto entre
±0.8
(vea la gráfica superior en la figura a continuación)Puede ver claramente que el espectro de frecuencia de la forma de onda original, sin recortar, está limpio y llega a cero fuera del ancho de banda (abajo a la izquierda), mientras que en la señal recortada, hay una distorsión menor general del espectro (esperada si se recorta) y la mayoría Es importante destacar que los armónicos / picos / contribuciones distintas de cero en el espectro fuera del ancho de banda de la señal (abajo a la derecha).
En general, este podría ser un mejor enfoque, porque la detección de recorte al observar los valores generalmente no es precisa a menos que haya diseñado el equipo usted mismo y conozca con precisión el valor del umbral.
fuente
Un poco de esto depende del método de registro. Parece que está usando solo 1 convertidor, lo que simplifica un poco las cosas.
Debe buscar cualquier cosa por encima de algún umbral, y específicamente por más de un punto uno al lado del otro. Por lo general, los convertidores A / D en realidad no leen su valor máximo a menos que lo pruebe exactamente, así que tenga en cuenta que el valor máximo puede ser más bajo de lo que parece posible.
Dados sus parámetros, buscaría señales consecutivas por encima de .98 o por debajo de -.98, con algunos ajustes para determinar cuál debería ser el umbral óptimo (no lo pondría por debajo de .9). Sería aconsejable detectar uno al máximo y otro cerca de algo como .8.
La razón para ignorar 1 medición específica es que es común que ocurran picos que no tienen nada que ver con la señal. Esto se reducirá en el caso de que esté utilizando un convertidor A / D bueno conocido. Es probable que si está utilizando una variedad de detectores, o una imagen, algunos de los detectores sean malos, posiblemente se corten con frecuencia.
fuente
MLS (secuencias de longitud máxima) son particularmente difíciles de analizar para el recorte. Su factor de cresta (= pico / rms) está muy cerca de 1, que es incluso tres dB más pequeño que el de una onda sinusoidal. Muchos convertidores D / A están diseñados para tomar una onda sinusoidal como el peor de los casos y un MLS jugado a una amplitud completa puede acortar fácilmente el circuito de interpolación de salida de un D / A.
El siguiente problema es que un MLS recortado se ve casi idéntico a uno no recortado ya que las amplitudes son casi todas + -pico en primer lugar. Además, el análisis de PDF no funciona ya que el PDF de un MLS es simplemente dos picos grandes en los bordes.
En una medición de respuesta de impulso de habitación típica, el punto de recorte más probable es en realidad el D / A, el amplificador o el altavoz. Una vez que atraviesa la sala, se parece mucho menos a un MLS y, por lo tanto, es más fácil evaluar el recorte con los métodos descritos anteriormente.
En casi todas las mediciones acústicas, el ruido de fondo está determinado por el ruido propio del micrófono o los ruidos de fondo y no por el A / D. Por lo tanto, no es muy importante optimizar la ganancia de entrada en el A / D y dejar suficiente espacio para la cabeza antes del recorte (aproximadamente 10 dB) está perfectamente bien.
Por lo general, es una buena idea medir con varios niveles de excitación diferentes y observar la SNR de la medición. En niveles bajos, el ruido de fondo acústico domina y en niveles altos algo limitará, comprimirá o recortará. El truco para hacer una buena medición es encontrar un buen punto intermedio.
fuente