He estado trabajando en una configuración de detección de frecuencia simple en el iphone. El análisis en el dominio de frecuencia utilizando resultados de FFT ha sido poco fiable en presencia de armónicos. Esperaba usar los resultados de Cepstrum para ayudar a decidir qué frecuencia fundamental se está reproduciendo.Limpiar resultados ruidosos de Cepstrum
Estoy trabajando con AudioQueues en el marco de AudioToolbox, y hago las transformadas de Fourier usando el marco Accelerate.
Mi proceso ha sido exactamente lo que figura en el artículo Cepstrum de la Wikipedia para el Real Power Cepstrum, específicamente: señal → FT → abs() → cuadrado → log → FT → abs() → cuadrado → cepstrum.
El problema que tengo es que los resultados de Cepstrum son extremadamente ruidosos. Tengo que soltar los primeros y últimos 20 valores ya que son astronómicos en comparación con los otros valores. Incluso después de "limpiar" los datos, todavía hay una gran cantidad de variación, mucho más de lo que esperaría dado el primer gráfico. Vea las imágenes a continuación para las visualizaciones del dominio de frecuencia y el dominio de quefrency. FFT
Cepstrum
Cuando veo un claro ganador como en el dominio de la frecuencia como en ese gráfico, espero ver un resultado igualmente clara en el dominio quefrency. Jugué A440 y esperaba que bin 82 tuviera la mayor magnitud. El tercer pico en el gráfico representa bin 79, que es lo suficientemente cerca. Como dije, los primeros 20 o más contenedores son de una magnitud tan astronómica que no pueden ser utilizados, y tuve que eliminarlos del conjunto de datos para poder ver algo. Otra cualidad extraña de los datos del cepstrum es que los compartimientos pares parecen ser mucho más altos que los bins impares. Aquí están los contenedores de frecuencia de 77-86:
77: 151150.0313
78: 22385.92773
79: 298753.1875
80: 56532.72656
81: 114177.4766
82: 31222.88281
83: 4620.785156
84: 13382.5332
85: 83.668259
86: 1205.023193
Mi pregunta es cómo limpiar el dominio de la frecuencia para que mis resultados de dominio Cepstrum no son tan salvajes. Alternativamente, ayúdeme a entender mejor cómo interpretar estos resultados si son como uno esperaría en un análisis de Cepstrum. Puedo publicar ejemplos del código que estoy usando, pero en su mayoría usa llamadas vDSP y no sé qué tan útil sería.
Es posible que desee probar la aplicación de una función de ventana antes de la primera FFT. –
Pasé la mayor parte de la mañana tratando de entender por qué tanta gente lo sugiere. No es obvio por qué una función de ventana mejorará las transformaciones. No entendí la fuga espectral hasta ahora, y creo que eso está contribuyendo al desorden. ¡Gracias por el consejo! – brodney