웨이브 파일을 16 비트 PCM 형식으로 가지고 있습니다. byte[]
에 원시 데이터가 있고 샘플을 추출하는 방법이 있는데,이를 푸리에 변환을 수행하려면 float 형식 (즉, float[]
)으로 사용해야합니다. 여기 내 코드가 있는데,이게 맞습니까? Android에서 작업 중이므로 javax.sound.sampled
등을 사용할 수 없습니다.올바른 방법으로 16 비트 PCM 웨이브 데이터를 float으로 변환합니다.
private static short getSample(byte[] buffer, int position) {
return (short) (((buffer[position + 1] & 0xff) << 8) | (buffer[position] & 0xff));
}
...
float[] samples = new float[samplesLength];
for (int i = 0;i<input.length/2;i+=2){
samples[i/2] = (float)getSample(input,i)/(float)Short.MAX_VALUE;
}
참조 : http://stackoverflow.com/questions/15087668/how -to-convert-pcm-samples-in-byte-array-as-the-range-of-the-range – Brad