在浏览器中以低延迟捕获声音输入
Posted
技术标签:
【中文标题】在浏览器中以低延迟捕获声音输入【英文标题】:Capturing sound input with low latency in the browser 【发布时间】:2013-07-19 12:55:58 【问题描述】:是否可以在浏览器中捕获低延迟的声音输入?主要用于录制吉他。 (我知道这也取决于硬件,但我们假设硬件足够好)。 我尝试使用 Web Audio API,但它的延迟有点差。是否还有其他技术可以在浏览器中提供高性能的声音输入捕获?是否可以为此使用 Unity3D?
谢谢。
【问题讨论】:
你在做任何处理吗?我发现延迟在录制吉他的可接受范围内,即使是现场效果也是如此。也许尝试减少您可能正在使用的任何ScriptProcssor
s 上的bufferSize
。
用铬?有机会发布一些对您有用的示例吗?
这在 Chrome 中对我来说很好用:gist.github.com/kevincennis/6043052
【参考方案1】:
“Web Audio API 延迟很糟糕”忽略了很多潜在问题。低延迟几乎总是需要一些调整。
1) 在 OSX 上的延迟(通常为 3 毫秒左右)比在 Windows 上的延迟要低得多(通常为 10 毫秒左右)。它在 Linux 上可能非常高,主要是由于硬件调整问题。
2) 可以在大多数系统上调整延迟,但您总是会在数字音频中遇到延迟。
3) 至少在 OSX 上,您还可以通过提高采样率来减少延迟 - 在 44.1kHz 时约为 3ms,但如果您以 88.2kHz 录制,则只有一半。 :)
我通过 Mac 上的网络音频弹奏和录制吉他,我发现它完全可以接受。 YMMV。
哦,ScriptProcessorNodes 对保持低延迟非常不利 - 如果您可以将它们从音频路径中消除,那无疑是最好的。
【讨论】:
我还发现 Linux 有很高的延迟。使用那个最小的例子gist.github.com/kevincennis/6043052 我仍然有太多的延迟来舒适地弹吉他。但是,绕过浏览器,在 alsa 级别连接源和接收器时,我得到了低延迟。这不会使其成为实施问题而不是硬件/驱动程序问题吗? 我在 Windows 10 Chrome 和 Firefox 上都有 200ms 的延迟,简单的例子 (jsfiddle.net/zlelik/xfq3ykp7/49) 没有任何处理。如何使其达到 20-50 毫秒?是否有任何指导,如何调整它并达到20ms?我认为 20 毫秒对我来说是完美的。我也需要它来做吉他:)以上是关于在浏览器中以低延迟捕获声音输入的主要内容,如果未能解决你的问题,请参考以下文章