Estou tentando criar um programa de detecção de afinação que extrai as frequências de picos em um espectro de potência obtido de uma FFT ( fftpack
). Estou extraindo as frequências de pico do meu espectro usando o Primeiro Estimador de Quinn para interpolar entre os números dos compartimentos. Esse esquema parece funcionar bem sob certas condições. Por exemplo, usando uma função de janela retangular com um tamanho de janela de 1024 e uma taxa de amostragem de 16000, meu algoritmo identifica corretamente a frequência de um tom A440 purocomo 440.06 com uma segunda frequência parcial de 880.1. No entanto, sob outras condições, produz resultados imprecisos. Se eu alterar a taxa de amostragem (por exemplo, para 8000) ou o tamanho da janela (por exemplo, para 2048), ele ainda identificará corretamente a primeira parcial como 440, mas a segunda parcial será algo em torno de 892. O problema se torna ainda pior para tons inarmônicos como aqueles produzido por um violão ou piano.
Minha pergunta geral é: de que maneira a taxa de amostragem, o tamanho da janela e a função da janela afetam a estimativa de frequência dos picos de FFT? Minha suposição era que o simples aumento da resolução do espectro aumentaria a precisão da estimativa de frequência de pico, mas essa claramente não é minha experiência (o preenchimento zero também não ajuda). Também estou assumindo que a escolha da função da janela não terá muito efeito porque o vazamento espectral não deve alterar a localização do pico (embora, agora que penso nisso, o vazamento espectral possa potencialmente influenciar a estimativa de frequência interpolada se as magnitudes de caixas adjacentes a o pico é artificialmente aumentado pelo vazamento de outros picos ...).
Alguma ideia?