Você pode aumentar a resolução de frequência da FFT sem aumentar o tamanho da janela?


12

Eu gostaria de usar o STFT para análise multipitch. Sei que detectar as parciais existentes no sinal é apenas o começo. Ainda tenho problemas com isso.

Digamos que eu tenha um sinal de amostra com a frequência 'CD' 44100Hz. Com uma janela de 1024amostras, obtenho uma resolução de bin de frequência de 22500Hz/512=43Hz. Isso é suficiente apenas para discernir notas altas de piano como: C5 = 523.251Hze C#5 = 554.365.

Eu costumava pensar que 1024é uma janela bastante grande. Mas talvez não seja, e normalmente janelas maiores são usadas para detectar parciais?

A resolução de frequência pode ser aumentada com outro método que não seja o aumento do tamanho da janela, o que piora a resolução do tempo? Pensei em dois métodos:

Método 1:

  1. Divida o sinal em bandas de frequência com filtros de banda (por exemplo 0-11.25Hze 11.25-22.5Hz).
  2. Reduza a amostragem de bandas mais altas para que as altas frequências originais agora sejam baixas (assim como na segunda banda 11.25-22.5Hz -> 0Hz-22.5Hz) - não tenho certeza de que isso seja possível.
  3. Concat conjuntos de caixas resultantes com etiquetas ajustadas.

Método2:

  1. Use uma série de filtros passa-baixo com limite crescente.
  2. Execute a FFT aumentando as faixas de frequência.
  3. Para cada frequência, use a melhor resolução possível (caixas da primeira FFT na qual essa frequência foi incluída).
  4. Isso fará com que as frequências baixas tenham melhor resolução, mas acho que isso é bom, porque para notas mais altas a diferença de frequência é maior.

Serei grato por quaisquer comentários sobre essas questões.

Também li aqui: Como o tamanho da janela e a taxa de amostragem influenciam a estimativa do tom da FFT? sobre o método de melhorar os resultados de picking de pico. Eu acho que vou tentar usá-lo.


Se você souber que há apenas um componente senoidal, poderá ajustar uma parábola aos compartimentos vizinhos do pico e interpolar para encontrar o pico "verdadeiro". Não sei como isso se compara ao método de fase descrito por @pichenettes.
Endolith 3/10

Respostas:


9

Se você realmente insistir em usar a FFT (em vez de métodos paramétricos, que não sofreriam trocas de tempo / frequência), poderá obter uma resolução muito melhor usando as informações da fase para recuperar a frequência instantânea de cada compartimento da FFT. Os parciais podem ser detectados procurando-se platôs na função que fornece frequência instantânea em função do índice do compartimento da FFT. A implementação comum dessa técnica, conforme descrita neste documento , "custará" um STFT extra (a frequência instantânea é recuperada por operações no STFT do sinal e STFT da derivada do sinal).

Veja, por exemplo, a função ifgram nesta implementação do Matlab de modelagem sinusoidal de sinais de áudio.

Observe que isso não ajudará a resolver duas parciais que caem em compartimentos FFT adjacentes. Ele fornecerá apenas uma estimativa de frequência muito mais precisa do que apenas converter em uma frequência o índice bin da FFT de um pico espectral.


O que você quer dizer com métodos paramétricos? Além disso, foi você que, há alguns meses, mencionou um algoritmo semelhante à FFT, mas que tinha uma escala de oitava de frequência em vez de uma escala de frequência uniforme?
Jim Clay

Métodos paramétricos são métodos estatísticos de análise de sinal que pressupõem que o sinal seja gerado por um processo específico descrito por um conjunto de parâmetros e que calcule uma estimativa do quadrado mínimo desses parâmetros a partir das observações. Por exemplo, se você assumir que o sinal é uma soma de N sinusóides exponencialmente amortecidos + ruído, algoritmos como ESPRIT ou MUSIC podem ser usados ​​para inferir as amplitudes e pulsações do complexo N.
Pichenettes #

2
Você provavelmente está se referindo à transformação Q-constante. A ressalva é que não é tão eficiente em termos computacionais quanto a FFT; e que a inversão dessa transformação é um problema de otimização não trivial.
Pichenettes # 3/12

@ JimClay: Talvez isso deva ser migrado aqui?
Endolith 03/10/12

1
Dizer que métodos paramétricos não sofrem trocas de tempo / frequência é enganoso. Na sua essência, os métodos paramétricos modelam o sistema e usam o modelo para extrair dados significativos. Mas o desempenho é tão bom quanto o modelo. Supondo que o modelo "melhor" seja escolhido (número de polos ou número de vetores próprios do espaço de sinal), o desempenho desses métodos ainda é muito sensível ao comprimento do registro de dados.
1155 Bryan #

2

O termo "resolução" tem vários significados. Em geral, você não pode aumentar sua capacidade de separar (ou "resolver") picos espectrais estreitamente espaçados por interpolação usando o mesmo tamanho de dados da janela. Mas você pode estimar a frequência de picos espectrais estacionários isolados que estão bem acima do piso de ruído com resolução mais fina (às vezes muito mais fina) do que o espaçamento da caixa da FFT por vários métodos de interpolação.

Os métodos comuns de interpolação de resultados da FFT para estimativas de resolução mais alta incluem interpolação parabólica, interpolação Sinc, preenchimento zero dos dados em uma FFT muito mais longa e métodos de codificação de fase usando vocais (ligeiramente) sobrepostos.

Uma FFT é essencialmente um banco de filtros passa-banda, cada um com uma transição muito acentuada, mas toneladas de ondulação de banda de parada para um determinado comprimento de núcleo do filtro FIR. Como tal, esses filtros não apresentam uma grande rejeição de ruído não periódico na janela. Se você suspeitar que esse tipo de interferência seja um problema, uma FFT com janelas ou um banco de filtros personalizado poderá ter um desempenho melhor.


1

Depois de mais pesquisas invocadas pela pergunta de Jim Clay e as pichenettes responderem nos comentários, descobri que meu Method2 é reinventado Transformada Q vinculada, descrita por exemplo por Kashima e Mont-Reynaud (não tenho certeza se posso vincular a este artigo, o arquivo parece rasgado ) .

A abordagem deles é algoritmicamente mais eficiente, pois eles começam na maior faixa de frequência e diminuem a amostragem iterativamente em 2 até chegarem à oitava mais baixa.

Os benefícios das transformações Q também foram explorados por Brown, por exemplo, aqui . Pode não ser tão eficiente quanto a FFT única, mas tem a vantagem de não calcular a FFT espessa em bandas de alta frequência que não exigem isso.

Obrigado por todas as respostas, comentários e links.


O que você está descrevendo parece muito com uma transformação wavelet, que parece ser confirmada por isso . Sei que esse é um post antigo, mas os futuros leitores também podem querer ver as wavelets. Embora, como apontei na minha resposta, você não possa alterar o princípio da incerteza de tempo e frequência, mas o conhecimento dos dados pode permitir que você trapaceie um pouco.
Orodbhen

1

Se você mantiver um "histórico" de entradas e usá-lo para sobrepor seus DFTs, forneceria mais informações para extrair conteúdo espectral. Obviamente, isso depende da natureza variável do tempo do seu sinal. Seria semelhante em forma a uma função de distribuição de probabilidade.

Isso daria a você as DFTs mais espaçadas no tempo. No entanto, ainda aumentaria a incerteza temporal de cada DFT, o que é limitado pelas leis da natureza: o valor exato do comportamento temporal e espectral não pode ser determinado simultaneamente.

Se o conteúdo da frequência não variar muito dentro da janela, então tudo bem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.