用 AudioWorklet 替换 scriptProcessorNode

Fil*_*kan 6 audio-recording voice-recording web-audio-api

我正在努力记录用户的麦克风输入并对其进行处理。问题是我正在使用 scriptProcessorNode 来处理数据,但这里说它已被弃用并替换为AudioWorklet。问题是没有明确的方法可以用 AudioWorklet 替换此功能,并且从所有示例项目中都可以看到来自 Google 的AudioWorklets,它们都没有对麦克风输入执行任何操作。有没有办法用 Audio Worklet 替换此代码?这是“应该”替换的代码。

    // Connect analyser
    this.options.source.connect(this.analyser);
    // Create ScriptProcessorNode
    this.scriptProcessorNode = this.options.context.createScriptProcessor(this.options.bufferLen, numChannels, numChannels);
    // Connect scriptProcessorNode (Theretically, not required)
    this.scriptProcessorNode.connect(this.options.context.destination);
    // Create callback to update/analyze floatFrequencyData
    var self = this;
    this.scriptProcessorNode.onaudioprocess = function (event) {
        self.analyser.getFloatFrequencyData(self.floatFrequencyData);
        self.update();
        self.store(event);
        self.monitor();
    };
    // Connect scriptProcessorNode
    this.options.source.connect(this.scriptProcessorNode);
Run Code Online (Sandbox Code Playgroud)

Alv*_*eda 1

我有一个创建 AudioWorkletProcessor 的简单示例。您可以在这里查看。它仅适用于 Chromium,Firefox 尚不支持 AudioWorklet。

这是我准备展示我遇到的 webpack 错误的示例,因此请仅检查源代码。如果您运行该项目,除非您注释audio-meter.js第8行并取消注释第11行,否则它将失败。文件audio-meter.worker.js是重复的,内容相同。