FFT에서 더 낮은 주파수가 더 강합니까?


15

마이크 입력에서 FFT를 계산하고 있습니다. 저주파는 항상 고주파수보다 더 많은 전력 (더 높은 dB)을 갖는 것으로 보입니다.

  1. 데이터를 24576 바이트 (4096 * 6)의 프레임으로 자릅니다.
  2. 해밍 적용 창 : input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
  3. FFTW를 통해 실행하십시오 Process1D().
  4. 복소수에서 변환 : output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
  5. 4096 바이트의 완전한 FFT를 얻으려면 6 개의 값을 평균화하십시오.
  6. 예쁜 그림을 그립니다 (색상은 팔레트에 매핑 됨).

FFT 노이즈를 낮추기 위해 평균화 (5 페이지)가 수행됩니다.

이미지가 소리와 마이크가 모두 꺼져있는 상태에서 알 수 있으므로 더 낮은 주파수에서 더 많은 에너지 (및 더 많은 노이즈)가 있습니다. 이는 마이크 / 서브 문제 이상을 나타냅니다.

내 질문 :
1. 이것이 예상됩니까? 왜?
2. 이것을 고치는 표준 방법은 무엇입니까? 거의 일부 Math.Tan () 마술이 속한 곳에서 마술을 들어 올릴 수 있습니다.

저의 목표는 기본적으로 낮은 주파수에서 승리하지 않고도 상위 5 개의 주파수를 식별 할 수 있도록하는 것입니다.

FFT


올바른 해밍 창을 먼저 시도하여 깨진 창 조각이이 저주파 노이즈를 일으키는 원인인지 확인하십시오.
hotpaw2

@Tedd Hansen, 어떻게 "낮은 주파수없이 상위 5 개 주파수를 식별"했습니까?
데니스

답변:


12

예, 이것은 매우 기대됩니다. 당신이 보는 것은 " 핑크 "스펙트럼, 즉 절대 대역폭 당 일정한 에너지 인 " 화이트 " 와 비교할 때 상대 대역폭 당 일정한 에너지입니다. 핑크 신호의 경우 1-2kHz 사이의 에너지는 2-4kHz와 동일합니다 (각각은 대역폭의 배가 또는 "옥타브"를 나타냄).

대부분의 자연 오디오 신호 (음성, 음악, 영화 등)는 분홍색과 같은 스펙트럼을 갖습니다. 또한 대부분의 음향 배경 잡음 (마이크 잡음, HVAC 잡음, 기압 변동, 일반적인 배경)은 분홍색이거나 낮은 주파수쪽으로 더 치우친 경향이 있습니다.

인간 청각 시스템도 그렇게 작동합니다. 내이에서, 오디오 신호는 제 3 옥타브 스펙트럼과 대략 동일한 일정한 상대 대역폭의 밴드 ( "임계 밴드 (Critical Band)")로 나뉜다.

오디오 스펙트럼 데이터를 보는 가장 좋은 방법은 로그 주파수 스케일로 플로팅하는 것입니다.


"천연 오디오 신호에는 분홍색과 같은 스펙트럼이 있습니다"라는 말은 시간 척도를 고려하지 않습니다. 오랜 시간 동안 (~ 10 초) 나는 동의하며 확실히 몇 분 동안 그 진술은 사실 인 경향이 있습니다. 그러나 여기서 스펙트럼은 0.55 초에 걸쳐 계산됩니다. 입력이 예를 들어 음악이라면 훨씬 더 색조적인 구조를 기대할 것입니다.
mtrw

2
"tonity"는 스펙트럼의 미세 구조에 영향을줍니다. "삼각형과 충돌 심벌즈를위한 솔로"와 같은 것이 아니라면 음악의 전체 모양 (옥타브 당 에너지 측면에서)은 여전히 ​​대부분 분홍색입니다.
Hilmar

1
@mtrw : 구형파는 확실히 톤이지만 고주파 고조파는 여전히 1 / f 속도로 떨어집니다.
endolith

8

2 단계에서 공식은 다음 input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));과 같아야합니다 . 여기서 N버퍼의 샘플 수는 귀하의 경우 24576입니다.

4 단계와 5 단계에서 dB 값이 아닌 제곱 크기 값에 대해 Bin-wise 평균화를 수행합니다. 당신이 제곱 크기를 가지고 있다고 가정 해보십시오 [4,6]. 이들의 평균입니다 5, 10*log10(5) ~= 6.99. 의 평균 10*log10(4)10*log10(6)입니다 6.90.

첫 번째 문제는 스펙트럼 누설을 유발하는 저주파 바이어스의 원인 일 수 있으며, 저주파는 DC 라인으로부터 더 많은 오염을 가져올 것입니다 (이는 필연적으로 열악한 추정치입니다). 두 번째 문제는 아마도 저주파수에서 차이를 만들지 않을 것이지만, 측정 의도에 더 가까워 질 것입니다.


DB를 값을 평균하는 것은 매우 가능성이 할 수있는 가장 좋은 것은 아니지만, 평균 내게 즉시 명확하지 않다 크기하는 것이 훨씬 낫다. 나는 평균 건의 할 것 제곱 크기 내가 생각하는 대신에, 이다 를 통해 이미 계산 된 (내가 제대로 코드 조각을 이해한다면)를 fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]. 나는 하는 라고 생각합니다.4610log10(5)(10log10(4)+10log10(6))/2OP
가하는 것처럼

위의 설명에서 나는 적용되는 FFT의 너비이기 때문에 4096의 창 너비 (N)를 원한다고 생각합니다. 이 윈도우는 각 fft 전에 변환되는 4096 개의 샘플에 적용되어야합니다.
Jacob

@Jacob-OP는 6 * 4096 포인트의 FFT를 계산 한 다음 6 개의 인접한 빈을 평균하여 4096 포인트로 줄입니다.
mtrw

5

1 / f 노이즈는 많은 물리적, 생물학적 및 경제 시스템에서 발생합니다. 일부 연구자들은 그것이 어디에나있는 것으로 설명합니다.

분홍색과 흰색 소음

선형 주파수 수직 축이있는 FFT 스펙트로 그램의 핑크 노이즈 (왼쪽) 및 화이트 노이즈 (오른쪽)


6
왼쪽의 소음은 확실히 분홍색이지만 오른쪽의 소리는 약간 주황색으로 보입니다 :-)

1 / f 잡음이 어디에나 존재하는 것은 사실이지만, 오디오를 위해 잘 설계된 아날로그 프론트 엔드는 일반적으로 10Hz와 같이 낮은 수준의 1 / f 잡음을 가지고 있습니다. 관심 대역에서 백색 잡음이 우세합니다.
mtrw

4

이것이 예상됩니까? 왜?

많은 자연 음에는 고조파 가 있으므로 기본 주파수가 높을수록 기본 주파수가 낮아지고 에너지가 줄어 듭니다. 가장 왼쪽에 많은 에너지를 의미하는 DC 바이어스가있을 수 있습니다. 또 다른 영향은 주파수 응답을 왜곡하는 윈도우 기능 입니다.

이것을 고치는 표준 방법은 무엇입니까? 거의 일부 Math.Tan () 마술은 그것이 속한 곳에서 그것을 들어 올릴 수 있습니다.

고역 통과 필터를 사용하여 DC 바이어스를 처리 할 수 ​​있습니다. 간단한 구현은 모든 샘플에서 장기 평균을 빼는 것입니다 (편집 : 또는 더 단순하면 더 낮은 주파수를 버립니다 (예 : FFT 결과에서 <50Hz)). 다른 창 기능을 시험해 볼 수도 있습니다. @mtrw가 지적한대로 창을 올바르게 적용하고 있는지 확인하십시오. 이상적인 입력을 측정하고 해당 곡선을 정규화하여 응답의 다른 비선형 성을 수정할 수 있습니다.


윈도 잉 기능은 주파수 응답에 영향을 미치지 않아야합니다.
endolith

@endolith : 데이터를 윈도우 기능과 곱하고 결합 된 기능은 다른 응답을 갖습니다. 이에 대해 자세히 설명하는 링크 된 Wikipedia 기사를 읽으십시오. 실제 샘플을 처리하는 현실은 일반적으로 몇 개의 윈도우 (예 : 사각형)가 있고 그 때문에 (무한) 소스 신호의 주파수 응답 만 근사 할 수 있다는 것입니다.
Guy Sirton

아마도 우리는 "주파수 응답"을 다르게 생각하고있을 것입니다. 신호가 정지 상태이고 윈도우 기능을 적용하는 경우, 사용하는 윈도우 기능에 관계없이 스펙트럼은 동일한 주파수에서 동일한 진폭을 가져야하며 모든 주파수에 동일하게 영향을 미치는 스케일 팩터 만 다릅니다. 각 주파수 스파이크의 너비는 다르지만 스파이크의 높이는 서로 동일합니다. 윈도 잉 기능은 일부 주파수를 다른 주파수보다 더 많이 감쇠시키는 필터처럼 작동하지 않습니다.
endolith

@endolith : 무한 사인파에 cos ^ 2 윈도우를 곱한 것을 상상해보십시오. 여전히 원래 주파수의 구성 요소가 있지만 진폭이 "꺼짐"상태이고 창에서 새 주파수 구성 요소가 나타납니다. 첫 번째 단락은 여기를 참조하십시오 : en.wikipedia.org/wiki/Spectral_leakage
Guy

예, 그러나 "사인"진폭은 무한 사인파의 주파수에 상관없이 동일합니다.
endolith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.