Primero, me disculpo porque soy un desarrollador de software y ha pasado mucho tiempo sin sumergirme en las matemáticas puras, por lo que mi pregunta puede parecer tonta. Espero que no.
El contexto es el reconocimiento de tono en la música.
Si toma una nota musical y le aplica una transformada de Fourier, tendrá una suma infinita de amplitudes para las frecuencias dadas. Por ejemplo, si toco una nota cuyo fundamental es , en cualquier instrumento, después de la transformación de Fourier, tendré armónicos en . Cada frecuencia tendrá una amplitud dada que define el timbre del instrumento (piano, voz, trompeta, ... todos siguen este tono, pero tendrá diferentes amplitudes para cada armónico)
Ahora lo que me gustaría hacer es partir de una señal de audio dada, busque . Solo eso. Es más complicado de lo que parece porque siempre tendrá ruido de fondo, etc. ¡Además, no es necesariamente la frecuencia con la amplitud más alta!
Entonces, mi idea para encontrar es aplicar una DFT (bueno, en realidad, una FFT para la velocidad) y encontrar una frencuencia , de modo que sea máxima en la salida de FFT.
¿Crees que eso es posible? ¿Crees que eso es posible en muy poco tiempo (digamos <5 milisegundos)?
Respuestas:
Lo que está describiendo es muy similar al método Harmonic Product Spectrum de estimación de tono, como se enumera en este documento de Stanford CCRMA .
Una FFT no le proporciona una "suma infinita de amplitudes", sino un número finito de contenedores de resultados dependiendo de la longitud de la FFT.
5 mS es solo 1 período de una nota de 200 Hz, y solo una fracción de un período por debajo de 200 Hz. El reconocimiento de tono musical generalmente requiere escuchar o analizar un número múltiple de períodos de la periodicidad de un sonido de tono. Y mucha música usa notas debajo de G2. Si tiene una longitud de datos suficiente, calcular una estimación de tono a partir de esos datos podría tomar solo el orden de microsegundos en lugar de milisegundos en una PC o dispositivo móvil moderno.
fuente