通过Mac上的多个BT耳机进行音频路由,并根据麦克风的频率进行实时上采样

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

如果不是需要对麦克风输入进行上采样,我可能会使用Jack来实现。但是,杰克显然需要所有音频卡具有相同的频率,并且似乎不提供重采样的功能。

到目前为止,与功能性解决方案最接近的是使用SoX。但是,它造成了大约1秒钟的可怕延迟,而且我还无法使用-buffer 选项来控制它。另外,在Mac上似乎没有办法指定音频输入,这实际上使我只能使用一个耳机。

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

我一直在尝试使用 module-loopback module-pipe-source module-pipe-sink 结合使用PulseAudio的方法。到目前为止,我还没有听到任何音频或音频失真。无论我做什么,PulseAudio都会在运行大约一分钟后退出。 PulseAudio与macOS CoreAudio的集成似乎很脆弱。

我无法将耳机连接到Pi。根据{{​​3}},使用HSP BT配置文件从耳机输入的麦克风非常受支持。

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

  • 在Raspberry Pi上或Docker容器内运行Pulseaudio,并使用this post通过RTP在Mac上来回发送音频
  • 将来自麦克风的音频混合到Mac的内置AUX输出中。并从附有USB的声卡的AUX输入中对其进行采样。
  • 使用Windows或Linux而不是Mac。
  • 用Python编写自定义的实时代码。

感谢您提出的解决音频实时重采样和路由问题的最佳方法的建议。

weiweisenge 回答:通过Mac上的多个BT耳机进行音频路由,并根据麦克风的频率进行实时上采样

MAC OS X支持CoreAudio框架,AudioToolkit框架和AudioUnit框架。因此,您可以使用MAC框架来满足您的要求。

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

如果需要混音器,可以使用音频单元来混音不同的参与者。

Audio Unit

,

解决方案一直困扰着我。事实证明,MacOS / X可以将多个音频设备组合为一个“聚合设备”,如on Roland's company blog所述。请注意对来自耳机的音频通道进行漂移校正。

本文链接:https://www.f2er.com/3012456.html

大家都在问