Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

213
Vistas
El resultado de la función FFT de audio hace que sea casi imposible inspeccionar las frecuencias medias y bajas

Estoy tratando de construir un analizador gráfico de espectro de audio en Linux. Ejecuto una función FFT en cada búfer de muestras/fotogramas PCM alimentados al hardware de audio para poder ver qué frecuencias son las más frecuentes en la salida de audio. Todo funciona, excepto que los resultados de la función FFT solo asignan algunos elementos de matriz (contenedores) a las frecuencias medias y bajas. Entiendo que el audio es logarítmico y la FFT funciona con datos lineales. Pero con tan poca asignación a las frecuencias bajas/medias, no estoy seguro de cómo puedo separar las cosas limpiamente para mostrar gráficamente la distribución de frecuencias. He probado con tamaños de ventana de 256 a 1024 bytes, y aunque las ventanas más grandes dan más resolución en el rango bajo/medio, todavía no es tanta. También estoy aplicando una función de Hann a cada fragmento de datos para suavizar los límites de la ventana.

Por ejemplo, pruebo usando un archivo de audio mono que reproduce tonos a 120, 440, 1000, 5000, 15000 y 20000 Hz. Estos deberían estar distribuidos de manera algo uniforme en todo el espectro al interpretarlos logarítmicamente. Sin embargo, dado que FFTW funciona de forma lineal, con una matriz de 256 elementos o 1024 elementos, solo alrededor del 10% de la matriz de retorno contiene valores de hasta aproximadamente 5 kHz. El resto de la matriz de FFTW contiene frecuencias por encima de 10-15 kHz.

Aquí está más o menos el resultado que busco:

ingrese la descripción de la imagen aquí

Pero esto es lo que realmente estoy recibiendo:

ingrese la descripción de la imagen aquí

Nuevamente, entiendo que esto probablemente funcione según lo diseñado, pero aún necesito una forma de obtener más resolución en la parte inferior y media para poder separar mejor las frecuencias.

¿Qué puedo hacer para que esto funcione?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo que está viendo es, de hecho, el resultado esperado de una FFT (Transformada de Fourier). El eje f logarítmico que espera se logra mediante la transformación Constant-Q .

Ahora, la implementación de la transformación Constant-Q no es trivial. La Transformada de Fourier se ha vuelto popular precisamente porque tiene una implementación rápida (la FFT). En la práctica, la transformación de Q constante a menudo se implementa mediante el uso de una FFT y la combinación de múltiples contenedores de alta frecuencia. Esto descarta la resolución en los contenedores superiores; no le da más resolución en los contenedores inferiores.

Para obtener más resolución de frecuencia en los contenedores inferiores de la FFT, simplemente use una ventana más larga. Pero si también desea mantener la resolución de tiempo, deberá usar un tamaño de salto que sea más pequeño que el tamaño de la ventana. En otras palabras, sus ventanas FFT se superpondrán.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda