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

问题描述 投票:0回答:1

我需要接受来自多个蓝牙耳机的音频流,这些音频流只能以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-pipe-sinkmodule-pipe-sink使用module-loopback

module-pipe-source

的PulseAudio。到目前为止,我还没有听到任何音频或音频失真。无论我做什么,PulseAudio都会在运行大约一分钟后退出。 PulseAudio与macOS CoreAudio的集成似乎很脆弱。

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

    我一直在考虑但仍可以尝试的某些可能性:
  • 在Raspberry Pi上或Docker容器中运行Pulseaudio并使用Roc通过RTP在Mac上来回发送音频>
  • 将来自麦克风的音频混合到Mac的内置AUX输出中。并从附有USB的声卡的AUX输入中对其进行采样。
  • 使用Windows或Linux而不是Mac。
  • 在Python中编写自定义实时代码。

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

audio-streaming macos-mojave resampling pulseaudio headset
1个回答
0
投票
< [

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

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

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

Audio Unit

© www.soinside.com 2019 - 2024. All rights reserved.