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 1024
amostras, 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.251Hz
e 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:
- Divida o sinal em bandas de frequência com filtros de banda (por exemplo
0-11.25Hz
e11.25-22.5Hz
). - 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. - Concat conjuntos de caixas resultantes com etiquetas ajustadas.
Método2:
- Use uma série de filtros passa-baixo com limite crescente.
- Execute a FFT aumentando as faixas de frequência.
- Para cada frequência, use a melhor resolução possível (caixas da primeira FFT na qual essa frequência foi incluída).
- 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.