Tone.js 听不到音频过滤器

Tone.js audio filters not being heard

我正在尝试为我在我的网站上播放的音频流添加滤镜效果。我可以将 Tone.js 库连接到音频流,但我没有听到网站上播放的音频流有任何变化。我在控制台中没有看到任何错误,我尝试将过滤器从 50 调整到 5000,但似乎对音频没有任何影响。我需要设置 new Tone.Player() 才能真正听到音频吗?如果是这样,如果现有音频元素没有 src,您将如何设置播放器。

    $('#testBtn').click(async function () {
        const audioElement = document.getElementById('theAudioStream');
        const mediaElementSource = Tone.context.createMediaElementSource(audioElement);
        const filter = new Tone.Filter(50, 'lowpass').toDestination();
        Tone.connect(mediaElementSource, filter);
        await Tone.start();
        console.log("Started?");
    });

我尝试修改的音频流是通过 JsSip 调用设置的。启动流的代码如下:


    var audioStream = document.getElementById('theAudioStream')

    //further down in code    

    currentSession.answer(options);
    if (currentSession.connection) {
        currentSession.connection.ontrack = function (e) {
          audioStream.srcObject = e.streams[0];
          audioStream.play();
        }
    }

我在通话开始后点击了测试按钮,所以我知道在初始化 Tone.js 过滤器之前存在音频流

工作解决方案:
从应答 JsSIP 调用的地方删除 audioStream.play() 解决了这个问题。
我不知道这解决问题的确切原因(它甚至可能是一种解决方法)但经过多次试验和错误后,这种方式允许音频可供 ToneJS 用于效果。

欢迎任何其他解决方案。