我正在做关于声学射线追踪的硕士论文,使用WebGL作为GPU功能的访问点,并使用WebAudio驱动声卡。假设实现了raytracer,使得它每帧提供更新的脉冲响应,而图形渲染引擎以每秒30帧的速度运行。因此,一个房间会显示在屏幕上,并且可以在其中移动实时图像和声音信息。

我知道,要播放的脉冲响应(IR)和音频信号(x)必须分成块进行圆形卷积。这需要扩展到动态卷积内核。

现在出现一个令人困惑的部分:在当前帧中开始的音频信号x的声音块从当前IR开始。在下一帧中,有可用的更新的IR,因此此新IR的一部分需要与x的第一个块进行卷积(因为它仍在该房间中响铃),并且x的第二个块也必须与x的卷积进行卷积。新IR的开始。 (插图将很快出现)

该框架在浏览器(Chrome)中运行,因此这种卷积工作需要使用javascript完成。我是WebAudio的新手,但是由于对AudioWorkers的支持仍然非常出色,因此我需要以其他方式实现它。既然这是一项繁重的处理任务,有没有人有办法在javascript中解决此问题以实时呈现音频链?

最佳答案

在Audio Workers联机向Web Audio添加线程之前,浏览器javascript的单线程性质严格限制了任何实时繁重的工作-当我要求浏览器使用Web Audio渲染,同时与Web Socket通信协商时,我遇到了这种情况。 Node.js服务器提供流音频-自从使用Web Worker(WW)解决以来-查找称为Transferable Objects的WW风格,该风格允许将大量类型的数组传输到WW /从WW传输-如果需要,我可以发布示例用法呐喊...祝你好运

关于javascript - 用快速更新的脉冲响应实现卷积混响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28141038/

10-12 12:30
查看更多