Web Audio APIのFFTアナライザーを使ってみます。FFTについてはWEB SOUNDERさんのページがとても詳しいので参照して下さい。下のスイッチを押すと、マイクの音をFFTして、結果のパワーを表示します。上が波形、下がFFTの結果をパワーで表示しています。もう一度スイッチを押すと正弦波をFFTして、結果のパワーを表示します。FFTが動作している時には、ピーク情報には、大きなパワーの周波数とレベルを表示しています。波形の振幅が±0.5の正弦波では大体-20dBを示します。
波形
パワー
// --------------------------------------------------------------------------- //Web Audio Initialize var audioContext = new AudioContext(); var mAnalyser = audioContext.createAnalyser(); var audiosource_t; // --------------------------------------------------------------------------- //Mic ON - Get Usermedia navigator.getUserMedia( mConstraints, function(stream){ audiosource_t=audioContext.createMediaStreamSource(stream); audiosource_t.connect(mAnalyser); }, function(e) { // I can't use getUserMedia console.log(e); } ); // --------------------------------------------------------------------------- mFrequencyBinCoun = mAnalyser.frequencyBinCount; mAnalyser.fftsize = 2048; //FFTの対象となった波形 myDataArray = new Float32Array(mFrequencyBinCount); //FFTの結果 mytimeDataArray = new Float32Array(mAnalyser.fftsize); // --------------------------------------------------------------------------- //FFTの結果を取り出す mAnalyser.getFloatFrequencyData(myDataArray); mAnalyser.getFloatTimeDomainData(mytimeDataArray);