使用网络音频API进行峰值检测?

时间:2018-12-25 23:50:39

标签: javascript web html5-audio web-audio web-audio-api

TL; DR-我想使用Javascript检测鼓手的点击声中的每一次点击(只有节拍的mp3),然后将它们替换为其他点击声音的.wav样本。鼓手的喀嗒声不是固定的时间,所以我不能简单地检测BPM并替换其中的样本。

我有一个想用Javascript和网络音频API来完成的任务,但是我不确定使用这两种方法是否真的可行。...

基本上,我会定期使用录制的歌曲曲目作为伴奏,并用自定义的点击采样(一个小节的第一拍为一个.wav采样,另一个为一个采样)替换默认的点击声(鼓手演奏的节拍器声)。任何给定小节中的剩余节拍)。令人烦恼的是,这些鼓手的喀嗒声轨道不是固定的时间-因此从头到尾没有恒定的BPM。

我想检测单击轨道中的每个单击(每个峰值声波),然后将其替换为.wav示例,然后将最终文件下载为MP3。这可能吗?

1 个答案:

答案 0 :(得分:1)

WebAudio中没有内置方法可以做到这一点。您将必须使用ScriptProcessorNodeAudioWorkletNode来实现峰值检测器。一旦确定了每个峰值的位置,便可以安排替换点击以在点击时间开始播放。使用OfflineAudioContext,您可以获得得到的PCM结果。要获得压缩版本(可能不是mp3),我认为您需要使用MediaRecorder