2013-03-05 4 views
2

오디오를 통해 그래픽 데이터를 "시각화"할 계획입니다. 짧게하기 : 일부 이미지 데이터에서 많은 주파수와 관련 진폭 값을 얻습니다. 이 주파수/진폭 테이블은 - 256 쌍의 데이터를 - 관련된 사인 - 파형으로 변환해야한다고 말합니다.Android 용 표준 FFT 클래스/라이브러리?

하나의 솔루션은 각 테이블 입력에 대해 서로 다른 주파수의 사인 파형을 생성하는 것입니다. 이는 최대 256 배의 사인 파형을 생성하는 것을 의미합니다. 그러나 나는 그것이 아주 느린 것 같아요. 따라서 FFT 변환을 사용하면 더 좋은 해결책이 될 것입니다.

그래서 내 질문 : 거기에 사용할 수있는 안드로이드에 사용할 수있는 빠르고 사용하기 쉬운 일종의 FFT 표준이 있습니까?

답변

3

안드로이드 프로젝트에서 나는 JTranforms을 사용했으며, 안드로이드에서 완벽하게 작동했습니다.

예 번호 :

android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); 

AudioRecord ar = // initialize AudioRecord here; 
ar.startRecording(); 

// Here's the Fast Fourier Transform from JTransforms 
DoubleFFT_1D fft = new DoubleFFT_1D(samples.length); 

do { 
    // Read audio to 'samples' array and convert it to double[] 
    ar.read(samples, 0, samples.length); 

    // Will store FFT in 'samplesD' 
    fft.realForward(samplesD); 

} while (/* condition */); 

ar.stop(); 
ar.release(); 
+0

I는 다른 방향 (오디오 데이터를 생성하는 대신, 기존의 음성 데이터를 분석) FFT를 사용하려는. JTransform도이를 지원합니까? 나는 그들의 페이지에서 문서를 찾을 수 없으므로 다음과 같이 묻고있다. – Elmi

+1

역방향 (IFFT)은 부호와 정규화 인수를 제외하고는 동일하다. 따라서 FFT를 사용할 수있는 경우 출력에 올바른 요소를 곱하여 IFFT로 사용할 수 있습니다. –

+0

@kamituel 또한 내 응용 프로그램 중 하나에서 JTranform을 사용하고 있습니다. Play 스토어에서 MPL/LGPL/GPL 라이선스의 해당 애플리케이션을 판매 할 수 있습니까? – madLokesh