2013-07-30 7 views
2

나는 사용자가 무엇인가 말하고 나서 그들이 말한 것에 대한 빈도 값을주는 버튼을 클릭하는 응용 프로그램을 만들고자합니다. 저는 많은 검색을 해왔습니다. 우선 오디오 레코드 클래스를 사용하여 음성을 녹음 한 다음 FFT를 사용하여 주파수로 변환해야한다고 결론을 냈습니다. 내 주요 질문은 FFT 주파수 그래프를 제공하고, 나는 그것을 필요로하지 않는다, 나는 주파수와 피치 값이 필요합니다. 내가 어떻게 할 수 있니?android에서 오디오 녹음 파일의 주파수와 피치를 얻으십시오.

제발 도와주세요 :)

당신이 (정현파와 같은) 순수한 피치 사운드를 수집하지 않는
+0

참조 : http://en.m.wikipedia.org/wiki/Pitch_detection_algorithm – hotpaw2

답변

3

, 당신의 결과가 실제로는 FFT와 함께 순간에 점점 주파수 범위 될 것입니다 (체크 밖으로 this 설명).

소리의 피치는 피치 추정 알고리즘 (대답 here 참조)을 사용하여 FFT 그래프에서 수집 할 수 있습니다. Here's some links을 오픈 소스 피치 추적 구현에 적용 할 수 있습니다.

확실히 할 수 있습니다!

행운을 빈다.

+0

피치 추정 알고리즘을 사용하여 피치 값을 가져 오는 예제를 제공해주십시오. – Nutan

+0

안녕 누탄, 정말 미안. FFT 값을 처리하는 데 좋은 예제가 있습니다. [여기] (http://stackoverflow.com/questions/9979196/find-voice-pitch-on-android) 및 주파수 대 피치 [여기]의 맵 http://www.codeproject.com/Articles/32172/FFT-Guitar-Tuner). 정말로 내가 더 많은 도움이 될 수 있으면 좋겠다. – CodeMonkey

0

이 과정을 돕기 위해 사용할 수있는 많은 것들이 있습니다. JTransforms는 FFT를 쉽게 사용할 수있게 해주는 라이브러리입니다. 여러 지점에서 FFT를 수행하여 각 지점에서 해당 주파수를 가져와야합니다. 내가 "포인트"라고 말하면, 오디오를 개별적으로 FFT 할 블록으로 분해해야한다는 의미입니다. 이러한 블록은 정확도를 높이기 위해 겹칠 수 있습니다. 또한 정확도를 높이기 위해 FFT를 수행하기 전에 창을 창에 표시 할 수도 있습니다.

그런 다음 결과를 더 정확하게 만들기 위해 FFT 결과를 더 많이 조작해야합니다. 이것은 셉 스트 럼 분석 또는 고조파 곱 스펙트럼 분석 및 다른 방법을 사용하여 수행 할 수 있습니다.

마지막으로 FFT 외에도 다른 솔루션이 있음을 기억하십시오. 자기 상관 방법은 주파수 도메인을 전혀 사용하지 않습니다. 주파수를 결정하기 위해 실제 오디오 파일 샘플을 검사합니다. 이것은 계산 상으로 비쌀 수 있지만 더 정확할 수도 있습니다.