오디오 신호의 대수 푸리에 변환 (LFT)


9

가능한 한 정확하게 음악을 분석하려고합니다. 물론 FFT를 시도했지만 몇 가지 문제가 있습니다.

저주파는 인간의 청각보다 해상도가 매우 낮습니다. 나는이 문제를 해결하기 위해 매우 오랜 시간 FFT를 시도했지만 44100Hz 샘플 속도 (시간 분해능이 부족함)에서 8192 샘플 / s로 분석하더라도 저주파수에서 충분한 해상도를 얻지 못했습니다.

나는 해결책이 거의 없다는 것을 알았습니다.

먼저, FFT 빈에 대한 2 차 보간.
그러나 완벽한 방법은 아닙니다. 이 방법의 문제점은 다음과 같습니다.

1. '주파수 빈 사이의 주파수를 결정하려면 보간을 위해 어떤 빈 3 개를 선택해야합니까?'
2. '이 작업을 수행하더라도 결과에 대한 실제 추가 정보는 없습니다. 보간법은 까다로운 방법이라는 것을 알고 있습니다. '

둘째, 원하는 주파수로 각 freq 빈을 추출하므로 빈을 로그로 추출 할 수 있습니다.
그러나 중요한 계산 비용 문제가 있습니다. (아마도) N ^ 2.

셋째, LFT (Logarithmic Fourier Transform).
이것은 로그 간격의 샘플을 필요로하며 엄청나게 빠른 속도로 원하는 결과를 정확하게 제공합니다. /programming/1120422/is-there-an-fft-that-uses-a-logarithmic-division-of-frequency

그러나 나는 그 알고리즘에 대해 전혀 모른다. 나는 종이를 이해하고 구현하려고 노력했지만 영어와 수학 기술이 부족하여 불가능했습니다.

따라서 LFT 구현에 도움이 필요합니다.

답변:


8

가장 간단하고 실용적인 솔루션은 가장 낮은 관심 주파수에서 필요한 해상도를 얻을 수있을 정도로 충분히 큰 크기의 일반 FFT를 사용하는 것입니다. 예를 들어, 가장 낮은 관심 주파수에서 1Hz 분해능을 원하면 1 초 FFT 창이 필요합니다. 즉 FFT 크기는 샘플 속도 (예 : 44100)와 같아야합니다.

대수 FFT를 구현할 있더라도 여전히 물리 법칙 (정보 이론)에 구속되며 여전히 비슷한 길이의 샘플 창이 필요합니다. ) 성능을 희생합니다.


이상하다. 이론적으로 더 이상 데이터가 없다는 것을 알고 있습니다. 큰 크기의 FFT를 사용하면 악기의 매우 빠른 시작을 분석 할 수 없다는 것이 사실입니다. 저주파에서 더 높은 해상도를 얻을 수 없다는 것도 사실입니다. 그러나 인간의 청각 시스템은 어떻습니까? 그 시스템이 시간과 주파수 모두에서 어떻게 더 높은 해상도를 얻고 있습니까?

3
아마도 연속적인 각 옥타브를 2 배로 줄인 계층 적 접근 방식을 고려해야합니다. 그래서 더 높은 주파수에서 짧은 시간 창을 사용하고 더 낮은 주파수에서 더 긴 시간 창을 사용할 수 있습니까? 이것은 주파수에 따라 대역폭이 증가하는 청각 필터 뱅크와 다소 유사합니다.
Paul R

훌륭한 접근 방식. 저주파에서는 장시간 고 르트 젤, 고주파에서는 짧은 시간 고 르트 젤? 맞는 말이다. 그러나 많은 계산 비용이 필요합니다.

더 복잡하더라도 하나의 큰 FFT를 수행하는 것 보다 더 효율적일 수 있습니다. 예를 들어 4 옥타브 계층의 경우 x2 다운 샘플링을 위해 4 x 2048 포인트 FFT와 3 개의 저역 통과 필터를 원할 수 있습니다. 가장 낮은 FFT의 분해능은 전체 샘플 속도에서 단일 16384 포인트 FFT만큼 좋을 것이지만 FFT가 O (n log n)이므로 총 계산 비용은 훨씬 낮습니다.
Paul R

aha, FFT 2048, 다운 샘플 x2, FFT 2048, 다운 샘플 x2 .... 16384 FFT보다 훨씬 적은 비용으로 시간 및 주파수 분해능을 갖습니다. 큰. 그리고 지금은 또 다른 해결책이 있습니다. 16384 샘플에서 매 32 분마다 goertzel입니다. 따라서 누적하면 저비용과 고주파수를 더 적은 비용으로 추출 할 수 있습니다. 고마워 :)

0

수행하려는 분석에 각 빈의 신호 주파수가 필요한 경우 단시간 푸리에 변환 을 사용하여 이를 달성 할 수 있습니다 .

FFT의 각 빈은 실제 및 가상의 구성 요소를 나타내는 복소수를 생성합니다.

연속 STFT 스펙트럼 쌍에서 해당 빈을 가져 와서 주파수 = dPhi / dt (Phi == 위상)로 주파수를 계산할 수 있습니다.

DSP Dimension 은 프로세스에 대한 좋은 기사를 가지고 있습니다.


더 복잡한 문제를 고려하고있는 것 같습니다. FFT를 사용할 수는 있지만 오디오 신호 분석에서는 적합하지 않습니다.

3
단시간 푸리에 변환의 "일정한 Q"버전을보십시오. STFT의 이러한 배열은 다른 주파수 범위에 대한 요구 사항을 수용하도록 로그를 조정하는 주파수 분해능을 제공합니다.
user2718

내가 볼게 fft 결과에 적용된 단순한 필터 뱅크 변환 작업이라고 생각했습니다.
Laie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.