2010-08-09 6 views
3

HPS 방식을 사용하여 아이폰에서 음성 피치 감지 기능을 구현하고자했습니다. 그러나 감지 된 톤은 정확하지 않습니다. Performous은 피치 감지의 일을 잘합니다.능동태 코드의 피크 감지

코드를 살펴 보았지만 계산에 대한 이론을 완전히 이해하지 못했습니다. 그들은 FFT를 사용하고 봉우리를 찾습니다. 그러나 FFT 출력 단계를 사용하는 부분은 혼란 스러웠습니다. 음성 주파수에 대해 몇 가지 휴리스틱을 사용한다고 생각합니다.

그럼, Performous에서 피치를 감지하는 알고리즘을 설명해 주시겠습니까?

답변

1

[Performous] [1] 마이크에서 피치를 추출합니다. 또한 코드는 오픈 소스입니다. 다음은 알고리즘을 코딩 한 사람의 알고리즘에 대한 설명입니다 (irc.freenode.net # performous의 Tronic).

  • FFT (한번에 1024 개 샘플은 이후 버퍼의 전면에서 200 개 샘플 삭제) (200 개 샘플 이전에 있던 이전 FFT에 대해)
  • 재 할당 방법 (버퍼링)

    • PCM 입력 피크의
    • 필터링
    • 은 (우리는 조합에게 톤 전화) 고조파의 집합으로 톤의
    • 시간 필터링 (업데이트 톤 감지가 세트를 피크를 결합 (이 부분은 훨씬 더 수행하거나 생략 할 수있다) 에드 이전 대신 단순히 새로 감지 된 것)
    • 최고의 보컬 톤을 선택 (주파수 제한 가중치를 사용, 또한 고조파 배열을 사용할 수 있지만) 우리가

    생각하지 않습니다 I '아직 얻지 못한 이 정보를 통해 그것을 파악하고 구현할 수 있습니다. 누군가가 이것을 관리한다면, 여기에 결과를 게시하고, SO가 나를 알리도록이 응답에 댓글을 달아주세요.

    이 코드를 중심으로 최소한의 C++ 래퍼를 만드는 것이 과제입니다.

  • +1

    자세한 정보는 http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/에서 어떤 훌륭한 코드가 기반으로되어 있는지 (i 생각) 참조 할 수 있습니다. 대답의 세 번째 단계는 결정적인 결과이며 결과의 정확성에 영향을 미칠 수 있습니다. – Shreesh

    +0

    환상적입니다! 그 기사가 얼마나 도움이되었는지 당신은 모릅니다! 나는 그 정보를 1 주일 이상 찾고 있었다. 감사!!! –

    +1

    나는 performous의 iOS 용 분석기를 포장했습니다. 관심있는 사람이 있으면 전자 메일 sunfish7 | gmail | c0m을 보내주십시오. –