来自 Mac 上多个 BT 耳机的音频路由,从麦克风频率实时上采样

Audio routing from multiple BT headsets on Mac, with real-time up-sampling from the mic's frequency

我需要接受来自多个蓝牙耳机的音频流,这些耳机只能以 8KHz 或 16KHz 的低频从麦克风采样,将它们录制为 wav 文件,同时将它们与以可接受的速度播放的音乐实时混合44.1KHz 或 48KHz 的采样率,并通过耳机电话播放给用户。理想情况下,这将 运行 在 Mac 上使用 macOS 10.14 Mojave,但我也可以访问 Raspberry Pi 3 和 NUC 运行ning Windows 或 Ubuntu Linux.

如果不是因为需要对麦克风输入进行上采样,我可能会为此使用 Jack。但是,Jack 显然需要让所有声卡的频率相同,而且似乎没有提供重采样功能。

到目前为止,我最接近有效的解决方案是使用 SoX。然而,它会产生大约 1 秒的可怕延迟,而且我无法使用 --buffer 选项来控制它。此外,似乎无法在 Mac 上指定音频输入,基本上只能使用一个耳机。

rec -V -c 1 -r 48000 -p | play -c 1 -r 48000 -p

我一直在尝试使用 PulseAudio 的 module-loopbackmodule-pipe-source 结合 模块-管道-水槽。到目前为止,我没有收到任何音频或音频失真。此外,无论我做什么,PulseAudio 在我 运行 之后大约一分钟就会退出。 PulseAudio 与 macOS CoreAudio 的集成似乎很脆弱。

我无法将耳机连接到 Pi。根据 this post 使用 HSP BT 配置文件的耳机麦克风输入的支持非常差。

一些我一直在考虑但仍然可以尝试的可能性:

如果您能提供解决此音频实时重采样和路由问题的最佳方法,我将不胜感激。

MAC OS X支持CoreAudio框架,AudioToolkit框架,AudioUnit framework.So你可以使用MAC框架来解决你的需求

如果您需要对输入数据重新采样,则必须使用单独的 AudioConverter 单元。

如果您需要混音器,可以使用音频单元来混音。

(Audio Unit)

解决方案一直在我眼皮底下。事实证明 MacOS/X 可以将多个音频设备组合成一个“聚合设备”,如 on Roland's company blog 所述。应注意为来自耳机的音频通道启用漂移校正。