멀티 피치 분석에 STFT를 사용하고 싶습니다. 신호에 존재하는 부분을 감지하는 것은 시작에 불과합니다. 여전히 문제가 있습니다.
신호가 'CD'frequency로 샘플링되었다고 가정 해 봅시다 44100Hz
. 1024
샘플 창에서의 주파수 빈 해상도를 얻습니다 22500Hz/512=43Hz
. 이것은 다음 C5 = 523.251Hz
과 같은 높은 피아노 음을 식별하기에 충분합니다
C#5 = 554.365
.
나는 1024
꽤 큰 창 이라고 생각 했었다. 그러나 그렇지 않을 수도 있으며 일반적으로 큰 창문이 부분 탐지에 사용됩니까?
창 크기를 늘리는 것 이외의 다른 방법으로 주파수 해상도를 높일 수 있습니까? 나는 두 가지 방법을 생각했다.
방법 1 :
- 대역 통과 필터를 사용하여 신호를 주파수 대역으로 나눕니다 (예 :
0-11.25Hz
및11.25-22.5Hz
). - 더 높은 대역을 다운 샘플링하여 원래의 높은 주파수가 이제 낮은 주파수가되도록합니다 (두 번째 대역에도 적용
11.25-22.5Hz -> 0Hz-22.5Hz
). 이것이 가능하지는 않습니다. - 조정 된 레이블로 결과 출력 함 세트를 연결하십시오.
방법 2 :
- 한계가 증가하는 일련의 저역 통과 필터를 사용하십시오.
- 증가하는 주파수 범위에서 FFT를 수행하십시오.
- 각 주파수에 대해 최상의 분해능을 사용하십시오 (이 주파수가 포함 된 첫 번째 FFT에서 바인딩).
- 이것은 낮은 주파수가 더 나은 해상도를 갖도록 할 것이지만, 더 높은 음에서는 주파수 차이가 거칠기 때문에 이것이 정상이라고 생각합니다.
이 문제에 대해 언급 해 주셔서 감사합니다.
나는 또한 여기에서 읽습니다 : 윈도우 크기, 샘플 속도는 FFT 피치 추정에 어떻게 영향을 줍니까? 피크 피킹 결과를 개선하는 방법에 대해 설명합니다. 나는 그것을 사용하려고 노력할 것입니다.