Pregunta

La típica FFT para audio se parece bastante a esto, con la mayor parte de la acción sucediendo en el extremo izquierdo

http://www.flight404.com/blog/images/fft.jpg

Lo multiplicó por una onda sinusoidal parcial para llegar al fondo, pero el artículo no es demasiado específico en esta parte. También parece un & Quot; suficientemente bueno & Quot; modificación del conjunto de datos, en lugar de uno basado en alguna propiedad. Entiendo que la audición humana se adapta mejor a las frecuencias más altas, por lo tanto, la mayoría de la música tendrá graves amplificados y agudos atenuados para que ambos nos suenen con una fuerza relativamente igual.

Mi pregunta es ¿qué modificación debe hacerse a la FFT para compensar esta caída estándar?

for(i = 0; i < fft.length; i++){
     fft[i] = fft[i] * Math.log(i + 1); // does, eh, ok but the high
                                        // end is still not really "loud"
                                        // enough
}

EDITAR ::

http://en.wikipedia.org/wiki/Equal-loudness_contour

Me encontré con este artículo, creo que podría ser la dirección a la que ir, pero aún podría haber alguna propiedad de una FFT que necesita ser contrarrestada.

¿Fue útil?

Solución

Primero, ¿estás seguro de que quieres hacer esto? Tiene sentido compensar algunas cosas, como que la respuesta del micrófono no sea plana, pero no la percepción humana. Las personas están acostumbradas a escuchar sonidos con el contenido espectral que tienen los sonidos en el mundo real, no a lo largo de curvas de igual volumen de percepción. Si reproduce un sonido que ha modificado de la manera que sugiere, sonará extraño. Tal vez a algunas personas les gusta que la música tenga frecuencias bajas mejoradas, pero esto es cuestión de gustos, no de psicofísica.

O tal vez está compensando por alguna otra razón, por ejemplo, tener en cuenta la menor sensibilidad a las frecuencias más bajas podría mejorar un algoritmo de compresión. ¿Es esta la idea?

Si desea normalizar por las curvas de igual volumen, se debe tener en cuenta que la mayoría de las curvas y ecuaciones están en términos de nivel de presión sonora (SPL). SPL es el registro del cuadrado de la amplitud de la forma de onda, por lo que cuando trabajas con los FFT, probablemente sea más fácil trabajar con su cuadrado (el espectáculo de potencia). (O, por supuesto, podría compensar de otras maneras, por ejemplo, multiplicando por sqrt (log (i + 1)) en su ecuación anterior, suponiendo que el registro fuera una aproximación de la curva inversa de igual volumen.)

Otros consejos

Creo que el contorno de igual volumen es exactamente la dirección correcta. Sin embargo, su forma depende del nivel de presión absoluta. En otras palabras, la curva de sensibilidad de nuestra audición cambia con la presión del sonido.

No hay & "; normalización correcta &"; si no tienes información sobre niveles absolutos. Si esto es un problema depende de lo que quieras hacer con los datos.

El contorno de volumen está estandarizado en ISO 226, pero este documento no está disponible gratuitamente para su descarga. Sin embargo, debería estar en una biblioteca universitaria decente. Aquí está otra fuente para contornos de sonoridad

¿Entonces está intentando elevar el nivel de las frecuencias altas? Parece que un filtro de paso alto con un multiplicador mínimo podría funcionar, por lo que no atenúa demasiado las señales de baja frecuencia. Elija un buen libro sobre diseño de filtros, tal vez juegue con este applet

En los viejos tiempos de los primeros muestreadores, esto era antes de MOTU Boost people :) no era FFT sino simple (Fairlight o Roland, creo que primero) Normalización realizada en la señal de dominio de tiempo original o resultante (si usted es haciendo cortes de ritmo, estilo de reciclaje); no puedes hacer eso? ¿O solo opta por la FFT después de compensar para contrarrestarla?

Parece un procedimiento de dos fases, de lo contrario, personalmente dejaría FFT como está para la tarea ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top