2010-11-21 2 views
2

마이크 앞에서 연주되는 음을 감지하는 프로그램을 만들고 싶습니다. Naudio의 FFT 기능을 테스트하고 있지만 대담하게 테스트 한 결과 FFT가 피치를 올바르게 감지하지 못하는 것으로 보입니다. 나는 C5를했지만, 가장 높은 선택은 E7에 있었다..Net에서 실시간 피치 탐지를 어떻게 수행합니까?

주파수 분석 창의 첫 번째 드롭 다운 상자를 "enchanced autocorrelation"으로 변경 한 후 가장 높은 선택이 C5에있었습니다.

나는 "enchanced autocorrelation"을 봤는데 행운이 없었다.

+0

나는 "실시간 피치 탐지 .net"을 인터넷 검색하고 이것을 얻었다 : http://stackoverflow.com/questions/1466968/real-time-pitch-detection-using-fft –

+1

아마 당신이 (가장 강한 고조파를 제공하는) 가장 높은 진폭을 가진 주파수는 노이즈 플로어보다 훨씬 낮은 최저 주파수 (피치를 연주하게 함)보다 높습니다. – Gabe

+1

http://www.nicholson.com/rhn/dsp.html#1을 보셨습니까? – Gabe

답변

1

오디오 스펙트럼에서 가장 높은 피크는 사람이 인식 할 수있는 음악 피치 일 필요는 없지만 특히 강한 배음이있는 사운드에서 그렇습니다. 이것은 피치가 인간의 정신 지각 현상이기 때문에 뇌는 흔히 파형에 존재하지 않는 주파수를 추론합니다.

주파수 또는 피치 추정의 자동 상관 관계 분석 방법 (일반적으로 우스꽝스러운 파형 및/또는 비 사인파 파형이 시간에 따라 얼마나 멀리 떨어져 있는지 찾아내는 것)은 일반적으로 사람이 피치라고 부르는 것에 더 적합합니다. 자기 상관 알고리즘에 대한 다양한 향상의 이유는 간단한 자기 상관이 거의 ​​무한대의 반복 파장을 발견한다는 것입니다 (예를 들어 1 초마다 반복한다면 2 초마다 두 번 반복됩니다). 그래서 트릭은 상관 관계를 가중시키는 것입니다. 어떻게 든 인간이 같은 파형에 대해 추측 할 수있는 것과 통계적으로 더 잘 일치합니다.

2

당신은 가능성이 고조파에 의해 던져진 얻고있다. NAudio의 FFT가 야구장에 있는지 확인하기 위해 사인파로 테스트 해 보셨습니까?

는 이러한 참조를 참조하십시오 대담 소스 코드 Spectrum.cpp에서 http://cnx.org/content/m11714/latest/

http://www.gamedev.net/community/forums/topic.asp?topic_id=506592&whichpage=1�

라인 (48)은 당신이 원하는에 가까운 것 같다. 그들은 또한 IEEE paper by Tolonen and Karjalainen을 참조합니다.

관련 문제