13

HTML5 Web オーディオ API を使用して曲を分析し、平均音周波数が特定の値を下回ったときにマーカーを作成しています。既存の AudioNode インフラストラクチャを使用して、これを行うことができましたが、サウンドは曲の再生時にのみ分析されます。

ただし、事前に曲を分析して、無音マーカーを抽出し、ユーザーが曲全体を移動するために使用できる CUE ボタンに変換できるようにする必要があります。

明らかに、特に曲が 50 分のポッドキャストのようなものである場合、分析するために最初に曲全体を再生することに頼るのは非常に遅くなります。私は、playbackRate を 10x にスピードアップしようとしましたが、それは役に立ちません。

解決策は、Web オーディオ API をスキップして生の ArrayBuffer を分析することにあると思いますが、どこから始めればよいかわかりません。

提案?アイデア?

4

2 に答える 2

6

これを正確に説明しているプレゼンテーションのスライドを見つけることができました

API の通常の使用は、オーディオをリアルタイムで処理することです。代わりに、システム全体でオーディオを前処理して結果を得ることができます。

唯一の問題は、オーディオ API についての私の理解が単純すぎて、コード サンプルから「トリック」が何であるかを確認できないことです。

var sampleRate = 44100.0;
var length = 20; // seconds
var ctx = new webkitAudioContext(2, sampleRate * length, sampleRate);
ctx.oncomplete = function(e) {
  var resultAudioBuffer = e.renderedBuffer;
  ...
};

function convolveAudio(audioBuffer, audioBuffer2) {
  var source = ctx.createBufferSource();
  var convolver = ctx.createConvolver();
  source.buffer = audioBuffer;
  convolver.buffer = audioBuffer2;

  // source -> convolver -> destination.
  source.connect(convolver);
  convolver.connect(ctx.destination);

  source.noteOn(0);
  ctx.startRendering();
}

しかし、これが私が望んでいた答えではなくても、完全に放置するよりも、少なくともこれを共有する方が良いと思いました.

于 2012-06-13T07:46:43.730 に答える
-2

上記の畳み込みはフーリエ変換を表しており、音声を時間の経過に伴う強度から周波数の強度に変化させます。JavaScriptフーリエ変換をグーグルで検索することをお勧めします。探しているものに応じて、この件に関する便利なリンクをいくつか見つけました。

于 2012-06-13T14:33:25.743 に答える