小编zor*_*rqy的帖子

如何使用Web Audio API测量两种声音之间的差异?

我正在尝试使用分析器节点和getByteFrequencyData()来测量两个声音之间的差异.我认为通过总结每个频率箱的差异,我可以得出一个数字来表示两个声音的差异.然后,我将能够更改声音并再次测量数字,以查看新声音是否比之前更多或更少.

getByteFrequencyData()是否完全包含声音的表示,还是我需要包含其他数据来限定声音?

这是我正在使用的代码:

var Spectrogram = (function(){
    function Spectrogram(ctx) {
        this.analyser = ctx.createAnalyser();
        this.analyser.fftSize = 2048;
        this.sampleRate = 512;

        this.scriptNode = ctx.createScriptProcessor(this.sampleRate, 1, 1);
        this.scriptNode.onaudioprocess = this.process.bind(this);

        this.analyser.connect(this.scriptNode);

        this.startNode = this.analyser;
        this.endNode = this.scriptNode;

        this.data = [];
    }

    Spectrogram.prototype.process = function(e) {
        var d = new Uint8Array(this.analyser.frequencyBinCount);
        this.analyser.getByteFrequencyData(d);
        this.data.push(d);

        var inputBuffer = e.inputBuffer;
        var outputBuffer = e.outputBuffer;
        for(var channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
            var inputData = inputBuffer.getChannelData(channel);
            var outputData = outputBuffer.getChannelData(channel);
            for(var sample = 0; sample < …
Run Code Online (Sandbox Code Playgroud)

javascript audio web-audio-api

6
推荐指数
1
解决办法
649
查看次数

标签 统计

audio ×1

javascript ×1

web-audio-api ×1