python - 如何使用 sounddevice 同时从两台设备录制?

标签 python audio python-sounddevice

我目前有 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 并用克拉“>”表示。

现在我知道如何在默认 channel 上录制 4 秒:
recording = sd.rec(int(4 * 44100), samplerate=44100, channels=1)

我也知道如何更改默认 channel ,例如将其设置为 2:
sd.default.device = [2,0]   

我想做的是同时从 channel [4,0] 和 [2,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() 调用。
  • 创建 输入流 回调用于处理实际记录的功能。
  • 启动流。
  • 如果给定了blocking=True,请等到录制完成。如果没有,请立即返回。

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

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

    关于python - 如何使用 sounddevice 同时从两台设备录制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60572722/

    相关文章:

    python - 如何将点的图形属性添加到最终的点输出中

    python - 对列表的单个元素进行排序

    matlab - 将声音转换为超声波

    android - 通过与 Android 设备配对的蓝牙耳机捕获音频

    python - 为什么使用 WASAPI 和 sounddevice 库录制设备时会出现 "Invalid device"错误?

    python - 如何从 psycopg2 导入 "connection"类?

    python - 当变量变为 True/False 或达到一定次数时,如何跳出 While 循环?

    flash - 检查SoundChannel是否正在播放声音

    python - 停止声音设备音频输出中的循环

    python - 使用声音设备同时在两个不同 channel 上播放两个输入,每个输出