2014-07-07 1 views
0

ActionScript 3 및 Adobe AIR을 사용하여 마이크 레벨을 측정하려고합니다. 과정은 아주 간단해야하지만, 결과는 기괴합니다. 코드를 실행하는 동안 잡음이 꾸준히 발생하면 (예 : 마이크를 불거나 군중을 녹음하는 경우) 몇 초 후에 마이크에서보고 된 레벨이 완전히 떨어집니다. 노이즈 플로어를 멈추었다가 다시 시작하면 마이크 레벨이 다시 올라갑니다.AS3 시간이 지남에 따라 마이크 레벨이 감소합니다 - 내장 노이즈 보상?

마이크 입력에서 추가 처리가 진행된 것처럼 보입니다. 그러나 마이크 입력을 끄는 방법을 모르겠습니다. 나는 시도했다 :

setSilenceLevel(0) 
setUseEchoSuppression(false) 

심지어

codec = SoundCodec.SPEEK 
enableVAR = false; 
noiseSuppressionLevel = 0; 

이러한 현상은 기본 microphone.activityLevel뿐만 아니라 샘플 데이터이 ByteArray의보다 포괄적 인 분석을 모두 발생하는 것 같습니다입니다.

이 코드 예는 http://www.audiostretch.com/spectrum/이며 내 코드는 아니지만 현상을 설명합니다. 약 2 초 동안 꾸준한 볼륨을 유지하면서 마이크에 불어 넣어보십시오. 갑자기 스펙트럼이 떨어집니다. 불기 중지하고 다시 시작하고 다시!

업데이트 아래의 경우처럼 정기적으로 silenceLevel을 변경해 보았습니다. 이것은 초기 테스트의 문제를 해결하는 것으로 보였으 나 후속 테스트에서는 그렇지 않습니다.

var resetTimer = new Timer(2500); 
resetTimer.addEventListener(TimerEvent.TIMER, resetMicrophone); 
resetTimer.start(); 

// later... 
private function resetMicrophone(event:TimerEvent):void { 
    trace("Microphone OFF"); 
    microphone.setSilenceLevel(100); 

    setTimeout(function() { 
     microphone.setSilenceLevel(0); 
     trace("Microphone ON"); 
    }, 250); 
} 

그래서, 누군가는이 문제를 해결하고, 해결 방법이 있습니까?

답변

1

플랫폼 관련 문제 여야합니다. 방금 Mike를 위해 Logitech C170 웹캠을 사용하여 최신 (디버거) Flash Player 버전 (14,0,0,145)으로 Safari에서 테스트했습니다. 안정된 음원을 사용하면 1 분 후에도 스펙트럼 분석기의 레벨이 저하되지 않았습니다. 시스템 환경 설정 (Mac) 또는 제어판 (Windows)으로 이동하고 오디오 설정에서 "자동 이득 제어"(AGC), "배경 잡음 제거"또는 그와 같이 막연하게 보이는 항목을 찾아 회전하십시오. 떨어져.

+0

Gerry에게 답변하기 위해 스윙 해 주셔서 감사합니다. 내 생각 엔 당신이 맞다. 바탕 화면과 iOS 및 iOS에서 동일한 코드를 실행 중이며 Mac/Win AIR에서는 설명하는 드롭 아웃이 표시되지 않습니다. 하드웨어/OS와 관련이 있어야합니다. –

관련 문제