2013-04-15 2 views
2

나는 오디오를 바이트 값으로 변환 할 수 있습니다.실제 오디오에

import java.io.BufferedInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 

import javax.sound.sampled.AudioInputStream; 
import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.UnsupportedAudioFileException; 


public class Audio_to_bytes { 

    public static void main(String args[]) throws IOException { 
     File WAV_FILE = new File("/home/cybersecurity/Desktop/scream2.wav"); 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     AudioInputStream in = null; 
     try { 
      in = AudioSystem.getAudioInputStream(WAV_FILE); 
     } catch (UnsupportedAudioFileException e) { 

      e.printStackTrace(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 


     int read, i; 
     byte[] buff = new byte[1024]; 
     while ((read = in.read(buff)) > 0) { 
      out.write(buff, 0, read); 
     } 
     out.flush(); 
     byte[] audioBytes = out.toByteArray(); 


    } 
} 

내가 잊었 사람에 FFT를 적용 할 수 있도록 내가 어떻게이 작업을 수행 할 수 있습니다 도와 실수로 내 오디오를 변환 할 필요가 싸웁에 비명을 포함 오디오를 식별 할

+0

'float []'을 (를) 만들고'audioBytes'의 각 바이트를 float으로 변환 할 수 없습니까? –

+0

이렇게하면 127이 127.0으로 변환 된 것처럼 보일 것입니다. 직접 float 값으로 변환하려합니다. –

+0

버퍼의 각 4 바이트가 부동 소수점 값을 나타내는 것으로 가정합니다. –

답변

1

이 코드 스 니펫을 작성하여 테스트했습니다. 나는 그것이 도움이되기를 바랍니다. 이전에 만들고 바이트로 변환 한 4 개의 부동 소수점을 바이트로 할당합니다. 그런 다음 ByteBuffer의 NIO FloatBuffer View를 사용하여 NIO가 추가 처리없이 4 바이트를 float 번호로 자동 반환합니다.

ByteBuffer bb = ByteBuffer.allocate(4*4); 
    bb.put(new byte[]{64,-112,0,0,66,-10, 22,-68, 66,9, 73, -43, 63,-114, 56, -38}); 
    bb.rewind(); 
    FloatBuffer floatBuffer = bb.asFloatBuffer(); 


    for(int i = 0; i < 4;i++){ 
     System.out.println(floatBuffer.get()); 
    } 
+0

괜찮 았지만 몇 가지 오디오 파일의 경우 일부 값은 NaN입니다. –

+1

아마도 이러한 파일이 손상되어 포함 된 바이트가 유효한 float 번호를 형성 할 수 없습니다. 이런 종류의 파일 처리는 NaN이 이전 값과 다음 값 사이의 평균값으로 바꾸거나 더 나은 파일을 얻으려고하면 프로그램에서 수행해야합니다. p – Khanser

+1

또한 유용한 경우 그리고 당신을 위해 일해, 답변을 확인하십시오 :) – Khanser

관련 문제