오디오 파일에서 PCM 데이터를 찾는 코드를 작성했습니다. 이 데이터를 고속 푸리에 변환 알고리즘에 어떻게 적용해야합니까? 바이트 배열을 FFT 알고리즘에 적용하기 전에 고려해야 할 사항이 더 있습니까?피치 검출을 위해 WAVE PCM 바이트 배열을 FFT로 전달
public static void main(String[] args) throws FileNotFoundException, IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedInputStream in = new BufferedInputStream(new FileInputStream("adios.wav"));
int read;
byte[] buff = new byte[1024];
while ((read = in.read(buff)) > 0)
{
out.write(buff, 0, read);
}
out.flush();
byte[] audioBytes = out.toByteArray();
for(int i=0; i<audioBytes.length;i++){
System.out.println(audioBytes[i]);
}
}
첫 번째 코드는 adios.wav의 내용을 방금 배열에 저장했지만 코드를 숫자 배열로 성공적으로 변환 한 것은 아닙니다. 그러려면 파일 헤더를 먼저 읽은 다음 헤더 데이터 유형 (int, float, 8-16 비트) 및 최종 압축을 사용하여 파일 내용을 적절하게 디코딩해야합니다. 둘째, 사용하려는 FFT 클래스는 무엇입니까? 먼저 그것을 사용하려고 시도한 다음 그것이 어떻게 잘못되었는지 설명하십시오. – lCapp