0

我目前有 2 个适合输入的音频编解码器,我想同时录制它们而不是顺序录制。

这就是我看到我的设备的方式:

import sounddevice as sd
sd.querydevices()

输出:

< 0 DisplayPort, Core Audio (0 in, 2 out)
  1 USB AUDIO  CODEC, Core Audio (0 in, 2 out)
  2 USB AUDIO  CODEC, Core Audio (2 in, 0 out)
  3 USB AUDIO  CODEC, Core Audio (0 in, 2 out)
> 4 USB AUDIO  CODEC, Core Audio (2 in, 0 out)
  5 USB Advanced Audio Device, Core Audio (0 in, 2 out)
  6 USB Advanced Audio Device, Core Audio (1 in, 0 out)
  7 MacBook Pro Microphone, Core Audio (1 in, 0 out)
  8 MacBook Pro Speakers, Core Audio (0 in, 2 out)

目前我一次只能从一台设备录制。上面的输入音频设备是 2 和 4,默认选择 4 并用克拉“>”表示。

现在我知道如何在默认频道上录制 4 秒:

recording = sd.rec(int(4 * 44100), samplerate=44100, channels=1)

我也知道如何更改默认频道,例如将其设置为 2:

sd.default.device = [2,0]   

我想做的是同时从通道 [4,0] 和 [2,0] 录制。

4

1 回答 1

0
sounddevice.rec(frames=None, samplerate=None, channels=None, dtype=None, out=None, mapping=None, blocking=False, **kwargs)
#Record audio data into a NumPy array.

这是交互式使用和小型脚本的便利功能。此函数在内部执行以下步骤:

  • 调用 stop() 以终止任何当前正在运行的 play()、rec() 和 playrec() 调用。
  • 创建一个InputStream和一个回调函数来处理实际录制。
  • 启动流。
  • 如果给定了blocking=True,请等到录制完成。如果没有,请立即返回。

如果您需要更多控制(例如,逐块无间隙录制、重叠录制……),您应该自己显式创建一个 InputStream

所以也许解决方案是创建另一个InputSream

于 2020-03-07T02:02:14.430 回答