1

我正在尝试使用 ActionScript 3 和 Adob​​e AIR 测量麦克风电平。这个过程应该很简单,但我得到的结果很奇怪。在执行代码时,如果我产生稳定的噪音流(例如,对着麦克风吹气或录制人群),几秒钟后,麦克风报告的电平完全下降。如果我停止本底噪声然后重新启动,麦克风电平会再次飙升。

似乎对麦克风输入进行了一些额外的处理,但我不知道如何将其关闭。我试过了:

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);
}

那么,有人解决这个问题并有解决方法吗?

4

1 回答 1

2

它必须是特定于平台的问题。我刚刚在 Safari 中使用最新的(调试器)Flash 播放器版本 (14,0,0,145) 进行了测试,麦克风使用的是 Logitech C170 网络摄像头;使用稳定的声源,即使在一分钟后,频谱分析仪的电平也没有下降。我建议您检查您的系统偏好设置(在 Mac 上)或控制面板(Windows),然后在音频设置中查找“自动增益控制”(AGC)、“背景噪音抑制”或类似的任何内容,然后打开它关了。

于 2014-07-14T04:04:20.533 回答