0

我在我的网站中使用 Web Audio API。可以说我有这个代码:

var audioContext = new Audiocontext()
var audio = new Audio()
audio.src = "someaudiofile.wav"
var mediaSourceNode = audioContext.CreateMediaElementSource(audio)
mediaSourceNode.connect(audioContext.destination)

audio.playbackRate = 0.5

当我设置 0.5 的播放速率时,音频变得有点机器人/失真。

我们还有一个基于 Bass .Net 库的旧 .Net 音频播放器,它通过根据新节奏设置属性 Bass_attrib_tempo_option_sequence_ms 解决了这个问题,但我没有在 Web Audio api 中找到相应的属性。

有人有这方面的经验吗?谢谢!

4

1 回答 1

0

正如您已经发现的那样,AudioBufferSourceNode 只是重新采样音频以减慢或加快速度。此行为由规范定义。

我不熟悉 Bass .Net 库的源代码,但通过查看它公开的选项,我猜它使用了SOLA 算法的实现。幸运的是,在 JavaScript ( soundtouchjs ) 中也有一个实现,它有望为您提供与上述 .Net 库类似的结果。

于 2019-10-06T18:34:26.943 回答