javascript - 网络音频分析整个缓冲区

标签 javascript signal-processing web-audio-api

我的应用程序中有一个预先录制的音频文件的音频缓冲区。 我正在尝试获取整个音轨的频域数据,这是我尝试过的:

getAudioDataFromBuffer: function(buf){
    var src = g.audioContext.createBufferSource();
    src.buffer = buf;
    var anal = src.context.createAnalyser();
    src.connect(anal);
    var dataArray = new Uint8Array(buf.length);
    anal.fftSize = 2048;
    anal.getByteFrequencyData(dataArray);
    return dataArray;
},

但这只会给我一个全为零的数组。

我需要这个来比较两个音轨,一个是预先录制的,另一个是在应用程序中录制的。我想我可以测量它们频域之间的相关性。

最佳答案

我看到了解决方案 this answerthis discussion .

基本上您需要使用 OfflineAudioContext。这里的代码从一个已经加载的音频缓冲区开始:

var offline = new OfflineAudioContext(2, buffer.length ,44100);
var bufferSource = offline.createBufferSource();
bufferSource.buffer = buffer;

var analyser = offline.createAnalyser();
var scp = offline.createScriptProcessor(256, 0, 1);

bufferSource.connect(analyser);
scp.connect(offline.destination); // this is necessary for the script processor to start

var freqData = new Uint8Array(analyser.frequencyBinCount);
scp.onaudioprocess = function(){
  analyser.getByteFrequencyData(freqData);
  console.log(freqData);
};

bufferSource.start(0);
offline.oncomplete = function(e){
  console.log('analysed');
};
offline.startRendering();

关于javascript - 网络音频分析整个缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867902/

相关文章:

python - 如何在 python 中表示方波以及如何对其进行卷积?

python - python中连续小波变换图(比例图)中的频率轴

javascript - 使用Web Audio API混合多个音频文件

javascript - jQuery:随机事件选项卡?

javascript - 处理验证邮件

javascript - 在 Javascript 中围绕 Function() 创建沙箱

javascript - 如何获取 webkit-column-count 值和当前页面或列 ID?

c++ - 如何以每秒 44100 次的速度计算用户定义的表达式

sockets - 捕获Web Audio API数据以进行套接字编程

javascript - 迭代不同大小的网格来播放康威生命游戏的音频