将实时音频流式传输到浏览器 - Web 音频的替代方案 API?

Streaming Live audio to the browser - Alternatives to the Web Audio API?

我正在尝试将实时音频从 iOS 设备流式传输到网络浏览器。 iOS 设备通过网络套接字发送小型单声道 wav 文件(如录制的那样)。一旦客户端收到 wav 文件,我就会对 Web Audio API 进行解码并相应地安排它们。

这让我完成了大约 99%,但我可以听到每个音频块之间的咔哒声。仔细阅读后,我意识到问题的可能来源:音频正在以仅 4k 的采样率录制,并且无法更改。网络音频 API 的 decodeAudioData() 函数似乎无法精确处理 44.1k 以外的采样率,从而导致块之间出现间隙。

我已经尝试了几乎所有的方法我能找到关于这个问题(scriptProcessorNodes,调整时间,创建新缓冲区,甚至手动上采样)并且none其中有工作了。此时我即将放弃Web AudioAPI.

Web Audio API 适合这个吗? 对于我想要完成的事情,有更好的选择吗? 任何 help/suggestions 不胜感激,谢谢!

唉! AudioFeeder.js 创造奇迹。我只是指定 4k 的采样率,给它提供原始的 32 位 pcm 数据,它输出一致的无缝音频流!甚至内置了缓冲区处理事件,因此无需设置任何循环或超时来安排块播放。不过,我确实需要对其进行一些调整,以将其连接到我的其余网络音频节点,而不仅仅是 context.destination。

注意:AudioFeeder 会自动上采样到音频上下文采样率。从 4k 到 44.1k 确实在高端引入了一些相当粗糙的声音伪像,但是 2khz 的 48db 低通滤波器(4 x 12db's)消除了它们。我选择 2khz 是因为,感谢 Harry Nyquist,我知道 4k 的采样率不可能在原始文件中产生高于 2khz 的频率。

所有冰雹 Brion Vibbers