이산 푸리에 변환-기본을 빨리 찾는가?


9

첫째, 저는 소프트웨어 개발자이기 때문에 appologize하고 순수한 수학에 뛰어 들지 않은 시간이 너무 길어서 내 질문은 바보처럼 보일 수 있습니다. 내가하지 희망.

맥락은 음악의 피치 인식입니다.

음표를 녹음하고 푸리에 변환을 적용하면 주어진 주파수에 대해 무한한 진폭의 진폭을 갖게됩니다. 예를 들어, 푸리에 변환 후 모든 악기에서 기본이 인 음을 연주하면 고조파가 . 모든 주파수는 악기의 음색 (피아노, 보이스, 트럼펫 등)을 정의하는 지정된 진폭을 갖습니다 (모두이 약자를 따르지만 모든 고조파에 대해 다른 진폭을 갖게됩니다)FF,2F,3F,,nF

이제 내가 원하는 것은 주어진 오디오 신호에서 오는 것입니다 찾으십시오 . 그냥 배경 노이즈 등이 항상 있기 때문에 생각보다 복잡합니다. 더 나아가 는 진폭이 가장 높은 주파수를 필요로하지 않습니다!FF

찾는 내 생각 그래서 DFT에 (속도도 실제로 FFT)를 적용하고 frenquency 찾을 수 있습니다 그래서, 는 FFT 출력에서 최대이다.FFF+2F+3F++nF

당신은 그것이 가능하다고 생각합니까? 아주 짧은 시간 안에 가능하다고 생각하십니까 (<5 밀리 초라고합시다)?


아마도 이것은 답이 될 수 있습니다 : edaboard.com/thread197897.html

글쎄, 그러나 그것은 다른 방법이 아닌가? IMHO, 고조파와 비 고조파를 구별 할 수 없기 때문에 더 쉽고 신뢰성이 떨어집니다 ...
Dinaiz

답변:


6

설명하는 내용은이 스탠포드 CCRMA 논문에 나열된 피치 추정의 고조파 제품 스펙트럼 방법과 매우 유사합니다 .

FFT는 "무한 진폭의 진폭"을 제공하지 않지만 FFT의 길이에 따라 한정된 수의 결과 빈을 제공합니다.

5mS는 200Hz 음표의 1주기에 불과하며 200Hz 미만주기의 일부에 불과합니다. 뮤지컬 피치 인식은 일반적으로 피치 된 사운드의 주기성의 여러주기를 듣고 분석해야합니다. 그리고 많은 음악은 G2 아래의 음표를 사용합니다. 데이터 길이가 충분하면 최신 PC 또는 모바일 장치에서 해당 데이터의 피치 추정값을 계산하는 데 밀리 초가 아닌 밀리 초 정도만 걸릴 수 있습니다.


좋은 지적. 그러나 이미 2F와 3F를 가지고 있다면 실제로 F가 필요하지 않습니까? 귀하의 예에서 2F = 400hz 및 3F = 600hz이므로 5ms 기간 동안 충분한 소리를 들지 않아도 F가 200이라는 것을 알 수 있습니다. 또한 웨이블릿 변환에 대해 들었습니다. 이것이 더 좋은 방법이라고 생각합니까?
Dinaiz

@Dinaiz : 피치 사운드의 소스와 그에 따른 배음 주파수 조각이 실제로 고정되어 있는지 여부에 따라 다릅니다. 웨이블릿은 완전히 별개의 질문입니다.
hotpaw2

따라서이 방법은 "거의 실시간"에서 f0을 찾는 데 적합하지 않습니다. 현재의 최첨단 기술에서, 어떤 계기로든 몇 밀리 초 이내에 f0을 찾을 수 있습니까? 아니면 잃어버린 원인이 되었습니까? : D
Dinaiz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.