Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

167
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!