마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

자바와 안드로이드 스마트폰간 음성통신 중에 하울링문제가 발생합니다

0 추천

제가 지금 pc와 안드로이드 스마트폰간의 음성 채팅을 구현하려고 합니다.

현재 진행사항은 음성 채팅이 이루어지지만 pc부분에서 마이크로 들어간 소리가 pc의 소리로

다시 들리는 현상이 일어나고 있습니다.

 

이 현상에 대한 해결을 위한 노력으로는 queue를 이용하여 버퍼링을 주는 방식을 사용했습니다.

이것에 대한 소스 작성이 잘못된 것인지 다른 해결방안이 있는지좀 알려주세요.

DatagramSocket sock = null;
DatagramPacket pack = null;
SourceDataLine sourceDataLine;
AudioInputStream audioInputStream;
byte[] play_buf;
.......
.......
.......
Queue<byte[]> myQueue = new LinkedList<byte[]>();
sock = new DatagramSocket(AUDIO_PORT);
play_buf = new byte[1600];
while (true) {
  pack = new DatagramPacket(play_buf, BUF_SIZE);
  sock.receive(pack);
  myQueue.offer(pack.getData());
  if (myQueue.size() > 1) {
    play_buf = myQueue.poll();
    sourceDataLine.write(play_buf, 0, BUF_SIZE);
  }
}
 
자바애송이 (140 포인트) 님이 2014년 11월 28일 질문

1개의 답변

0 추천
하울링의 경우 코드 문제라고 보긴 어려운듯 합니다.
마이크에 들어오는 소리가 전송되는 것인데, 스피커 소리도 마이크로 다시 들어가니요...
 
하울링은 및 에코 캔슬러 등을 통해 제거하는데, PC쪽에 마땅한 소스가  있는지는 모르겠습니다.
열심히 구글링 해보셔야 할 듯 하네요..
 
참고로  안드로이드 단말은    AcousticEchoCanceler, NoiseSuppressor  같은 필터를 사용해도 되고 녹음 시  AudioSource를 MIC로 주면 다소 줄어드는 듯 은 했습니다. 
 
사악미소 (65,330 포인트) 님이 2014년 12월 1일 답변
...