首页 > 解决方案 > Webaudio:在响亮的同步声音后录制音频

问题描述

我正在构建一个网络应用程序,它在听到响亮的同步噪音(如拍手声)后直接从麦克风录制音频。我正在寻找一种适用于桌面和安卓上的 chrome 的解决方案。

我尝试了以下方法

  1. 使用一个脚本处理器节点来监听麦克风并检测一个响亮的节点并在之后直接保存原始数据。

这种方法确实有效。但是由于节点在主线程中运行并丢帧,录制的音频很垃圾且有故障。

  1. 使用 audioWorklet 将音频处理放在不同的线程中,并使用端口将录制的数据发送回主线程。

这种方法效果更好。它适用于 chrome 桌面。但是录制的音频在android上听起来很垃圾。我在 chrome 上提出了一个问题,请在此处查看票证

有没有人有其他建议的方法?也许通过某种方式使用 MediaRecorder?但是,我们无法访问原始音频,因此无法判断是否播放了响亮的同步声音,除非有一些聪明的方法。

请注意,我对同步后期录制的方法不感兴趣。

更新

使用脚本处理器节点来监听响亮的拍手声并触发 MediaRecorder 启动是一个很好的解决方案!

标签: javascriptaudioweb-audio-apimediarecorderaudio-worklet

解决方案


@AKX 建议让 scriptprocessnode 监听响亮的声音然后触发 MediaRecorder 似乎是迄今为止最好的。诀窍是将脚本处理器节点的缓冲区大小设置得尽可能低!


推荐阅读