为什么从getFloatFrequencyData为负值返回值?

问题描述:

我想从麦克风获取输入并将其传递到分析仪节点以提取频率数据。我探索网络音频ApiGetUserMedia有一段时间,但无法弄清楚为什么控制台中的所有值是。不应该有积极的价值观吗?这些负面价值的意义是什么?为什么从getFloatFrequencyData为负值返回值?

navigator.mediaDevices.getUserMedia({audio: true, video:false}).then(function(stream){    
       aContext = new AudioContext(); 
       analyser = aContext.createAnalyser(); 
       microphone = aContext.createMediaStreamSource(stream); 
       microphone.connect(analyser); 
       analyser.connect(aContext.destination); 
       LoopFunc(); 
      });      

    var LoopFunc = function(){ 
      setInterval(function(){ 
       frequencyData = new Float32Array(analyser.frequencyBinCount); 
       analyser.getFloatFrequencyData(frequencyData); 
       console.log(frequencyData);     
      },100); 
     } 

the spec

getFloatFrequencyData

复制当前频率数据到通过浮点阵列。如果数组的元素数少于frequencyBinCount,则多余的元素将被删除。如果数组的元素多于frequencyBinCount,则多余的元素将被忽略。

频率数据以dB为单位。

然后导致了一个问题:What does negative numbers on the decibel scale mean?