1

私はFirefoxのAudioAPIを試して、オーディオの無音を検出してきました。(ポイントは、半自動の文字起こしを有効にすることです。)

驚いたことに、この単純なコードは、多かれ少なかれ、無音と一時停止を検出するのに十分です。

var audio = document.getElementsByTagName("audio")[0];

audio.addEventListener("MozAudioAvailable", pauseOnSilence, false);

function pauseOnSilence(event) { 
  var val = event.frameBuffer[0];
  if (Math.abs(val) < .0001){
    audio.pause();
  }
}

不完全ですが、概念実証として、私は確信しています。

私の質問は、WebkitのAudio APIで同じことを行う方法はありますか?私が見たところ、それはサウンド処理よりも合成に向いています(しかし、おそらく私は間違っていますか?)。

(Webkitチームが、Mozillaが作成したのと同じインターフェースを実装してから、より洗練されたものに移ることを望んでいます...)

4

1 に答える 1

2

このようなことは、AnalyzerNode を使用して行うか、JavaScriptAudioNode を使用してしきい値を探すことができるはずです。

例えば:

meter.onaudioprocess = function(e) {
  var buffer = e.inputBuffer.getChannelData(0); // Left buffer only. 
  // TODO: Do the same for right.
  var isClipping = false;
  // Iterate through buffer to check if any of the |values| exceeds 1.
  for (var i = 0; i < buffer.length; i++) {
    var absValue = Math.abs(buffer[i]);
    if (absValue >= 1) {
      isClipping = true;
      break;
    }
  }
  this.isClipping = isClipping;
  if (isClipping) {
    this.lastClipTime = new Date();
  }

};

クリッピングするのではなく、十分に低いレベルをチェックするだけです。

このチュートリアルから大まかに適応。具体的なサンプルはこちら

于 2012-06-15T20:09:34.217 に答える