2012-02-15 2 views
0

2 개의 오디오 바이트 어레이를 믹싱하여 약간의 화이트 노이즈가 발생했습니다.화이트 노이즈 믹싱 2 오디오 바이트 배열

for (int i=0;i<bytes1.getB1().length;i++){ 
     mixBytes[i]=(byte) (bytes1[i]+bytes2[i]); 
    } 

사람은 화이트 노이즈 문제를 해결하는 방법을 알고?

44 바이트를 wav 헤더로 제거하여이 방법으로 바이트를 가져 왔습니다.

private byte[] getISByteArray(InputStream is){ 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    int length; 
    try { 
     while ((length = is.read()) != -1) { 
      stream.write(length); 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    byte[] b=stream.toByteArray(); 
    byte[] b2=new byte[b.length-44]; 
    //System.arraycopy(b, 44, b2, 0, b2.length); 
    for (int i=0;i<b.length;i++){ 
     if (i>44) b2[i-44]=b[i]; 
    } 
    return b2; 

} 로우 패스 Gaussian filter

답변

2

나는 즉시 두 가지 잠재적 인 문제를 볼 수 있습니다

  • 를가 1 바이트 당 샘플 스트림 인 것처럼 당신은 입력을 처리하고 있습니다. 그들은 정말로?
  • 오버플로에 대해서는 아무 것도하지 않습니다. 오버플로는 값 100의 2 바이트를 취하여 예를 들어 음수로 끝납니다. - 후자의 경우

도움이 단지의 평균 복용에 의해 바이트 등 정말 선형 진폭 여부에 따라 달라집니다 있지만 :

mixBytes[i]=(byte) ((bytes1[i]+bytes2[i])/2); 

을 나는 약간 그 만들 것입니다 의심 더 낫지 만, 여전히 훌륭한 혼합 기능은 아닙니다 ...

+0

어떻게 오버플로 문제를 해결할 수 있습니까? 중독의 결과가 부정적인 것이라면 어떤 가치가 있어야 하는가? – Fischer

+0

나는이 방법으로 바이트를 얻고있다. 나는 원래의 포스트를 편집했다. – Fischer

+0

@ 피셔 : 내가 준 평균화 된 코드가 그걸 수정 해 주어야 할까? –

0

에서 Convolve 원래의 신호와 당신은 백색 잡음을 제거합니다.

+0

원본 바이트에는 잡음이 없습니다. 혼합 방법에 문제가 있습니다. – Fischer

관련 문제