簡體   English   中英

使用HTML5網絡音頻API提取mp3文件的歌曲頻率

[英]Extracting the song frequency of an mp3 file using HTML5 web audio API

我正在使用HTML5網絡音頻API來分析歌曲,並在平均聲音頻率低於某個值時創建標記。 使用現有的AudioNode基礎設施,我設法做到這一點,但只分析聲音,並且僅在播放歌曲時。

然而,我想要的是提前分析歌曲,這樣我就可以提取靜音標記,並將它們變成CUE按鈕,用戶可以使用這些按鈕在整首歌曲中移動。

顯然,首先依靠播放整首歌來進行分析是很慢的,特別是如果這首歌是50分鍾的播客。 我嘗試將playbackRate加速到10倍,但這沒有用。

我認為解決方案在於跳過Web音頻API,並分析原始ArrayBuffer,但是,我真的不知道從哪里開始。

建議? 想法?

我已經能夠在其中找到確切地描述了這個演示幻燈片: 在這里

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

但我認為至少要分享這個比完全放棄它更好,即使這不是我希望給出的答案。

上面的卷積描述了傅里葉變換,它將音頻從強度隨時間移動到頻率上的強度。 我建議谷歌搜索javascript傅里葉變換。 根據您的需求,我看到了有關該主題的幾個有用鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM