减慢速度时使用Web Audio API的机器人语音

时间:2019-06-18 06:48:27

标签: javascript web-audio-api bass

我在网站上使用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中找到相应的属性。

有人对此有任何经验吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

您已经发现AudioBufferSourceNode只是对音频重新采样以使其变慢或加快。此行为由spec定义。

我对Bass .Net库的源代码不熟悉,但是通过查看它公开的选项,我猜想它在后台使用了SOLA algorithm的实现。幸运的是,还有一个JavaScript(soundtouchjs)实现,有望为您带来与上述.Net库类似的结果。