2012-01-02 12 views
12

平均音の周波数が一定値を下回った場合に、HTML5ウェブオーディオAPIを使用して曲を分析し、マーカーを作成しています。既存のAudioNodeインフラストラクチャを使用して、私はこれを行うことができましたが、サウンドは解析されるのは、曲が再生されたときだけです。私はしかし、欲しいHTML5ウェブオーディオAPIを使用してmp3ファイルの曲の周波数を抽出

は、事前に曲を分析することであるので、私は沈黙マーカーを抽出し、ユーザーが歌を通じて移動するために使用することができますCUEボタン、にそれらを回すことができます。

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

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

提案?アイデア?

答えて

5

私はまさにこのことを説明するプレゼンテーションのスライドを見つけることができた:here

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

は、しかし、私は、これはまさに私が与えることを望んでいた答えではない場合でも、それは完全なるままにするよりも、少なくともこれを共有する方が良いだろうと思いました。

+1

それはあなたがちょうどこの回答にupvoteを持って、それが子どもの遊び:)のように思える今それを読んで、3年間で学ぶどのくらい驚くべきことです。 –

-2

上記畳み込みは、フーリエ周波数に対する強度を経時的に強度からオーディオを移動する、変換記述されています。私は、Googleのフーリエ変換をグーグルグーグルをお勧めします。あなたが探しているものに応じて、私はそのテーマについていくつかの役に立つリンクを見ました。

関連する問題