2010-12-16 7 views
1

필자는 FFT를 사용하여 특정 주파수의 톤 (또는 톤 쌍)이 오디오 스트림에 존재하는지 (잡음 플로어보다 충분히 위의 경우) 결정하는 작업음 검출기를 가지고 있습니다. 그 음색의 시작 시간과 지속 시간을보다 정확하게 찾으려면 어떤 방법을 사용할 수 있습니까? 나는 FFT 프레임 지속 시간 (약 50ms)보다 훨씬 더 정확한 것을 찾고있다. 톤은 FFT 프레임보다 훨씬 긴 것으로 가정합니다.정확한 톤 온셋/지속 시간 측정?

답변

0

미리 특정 주파수를 알고있는 경우 해당 주파수를 중심으로 한 대역 통과 필터를 설계 한 다음 출력에 에너지 검출기 만 사용할 수 있습니다. 필터를 통한 벌크 지연과 정상 상태 응답의 상승 및 하강 시간을 고려해야합니다.

실제로 톤을 감지하기 위해 FFT 출력을 사용하고 있고 최근의 샘플을 유지할 수있는 충분한 메모리가 있다면 FFT에서 대략적인 시작을 얻을 수 있습니다. 검출 된 주파수에서 사인파에 의해 샘플들을 혼합하기 시작한다. 그런 다음 혼합 샘플을 저역 통과 필터를 통해 실행하십시오. 톤 감지, 믹서 및 LPF 주파수 해상도/대역폭이 일치해야하며 다시 LPF 특성을 고려해야합니다.

+0

LPF의 상승 (및 하강) 시간은 FFT 조리개의 너비와 거의 같은 정도입니다. 시간 분해능은 어디에서 얻을 수 있습니까? – hotpaw2

+0

필터의 대역폭을 더 넓게 설정하면 상승 시간을 줄입니다. FFT가 차단하는 필터 대역폭을 훨씬 더 효과적으로 제어 할 수 있습니까? 직접 폼에서 필터를 구현하면 FFT의 블록 크기 대기 시간이 하나도 없습니다. – mtrw

3

DTMF 감지와 같은 소리가납니다. 이를위한 표준 기술은 Goertzel algorithm입니다. 관심있는 각 주파수마다 하나의 Goertzel 검출기가 필요하므로 주파수는 , 선험적 설명은입니다.

+0

AFAIK는 표준 Goertzel 필터가 주파수 검출이나 시간 추정을 위해 FFT 빈보다 정확하지 않습니다. 나는 FFT bin보다 더 정확한 것을 찾고있다. – hotpaw2

+0

@ hotpaw2 : "정확한"의미에 따라 다릅니다. 주파수 해상도 대 시간 해상도를 교환해야합니다. 둘 다 가질 수는 없습니다. 어쨌든, Goertzel 필터의 출력은 고정 된 창 크기를 가진 FFT와는 달리 샘플별로 샘플링 기준으로 적절한 온셋/오프셋 시간 측정을 제공 할 수 있도록 정류되고 부드럽게 처리됩니다 (로우 패스 필터링 됨). –