我想捕捉计算机输出,通过神经网络运行,然后实时回放音频。到目前为止我已经找到BlackHole:
import sounddevice as sd
sd.default.device = 'BlackHole 2ch'
这非常适合捕获输出。问题是我想用 BlackHole 捕获音频,然后将音频实时反馈到扬声器输出。设置
sd.default.device = "MacBook Pro Speakers
不会改变系统音频输出(它仍然是 BlackHole)。如何以编程方式更改设备音频输出?
你可以做到
print(sd.query_devices())
打印出您可能使用的所有设备,例如
> 1 Mikrofon (3 — Urzadzenie zgodne, MME (2 in, 0 out)
2 Mikrofon (3 — Urzadzenie zgodne, MME (2 in, 0 out)
3 Mapowanie dzwieku Microsoft - Output, MME (0 in, 2 out)
< 4 Sluchawki (3 — Urzadzenie zgodn, MME (0 in, 2 out)
5 Glosniki (3 — Urzadzenie zgodne, MME (0 in, 2 out)
现在你可以看到,有一个索引为 1 的输入设备和一个索引为 4 的输出设备。
您现在可以通过输入来设置一对输入/输出设备
sd.default.device = [index_of_input_device,index_of_output_device]
default_speaker = sc.default_speaker()
print("start - ", default_speaker)
print(sd.query_devices())
sd.default.device = [1, 5]
print(sd.query_devices())
在终端中,我们看到声音输出已经切换,但实际上声音继续通过Speakers (GS3), M (0 inputs, 2 outputs)。 Windows 11.
开始-
1 麦克风 (GS3), MME (2 in, 0 out) 2 Переназначение звуковых устр。 - 输出,MME(0 进,2 出) < 3 Динамики (GS3), MME (0 in, 2 out) 4 Realtek Digital Output (Realtek, MME (0 in, 2 out) 5 LG HDR WFHD (NVIDIA High Defini, MME (0 in, 2 out)
0 Переназначение звуковых устр。 - 输入,MME(2 进 0 出)
1 麦克风 (GS3), MME (2 in, 0 out) 2 Переназначение звуковых устр。 - 输出,MME(0 进,2 出) 3 Динамики (GS3), MME (0 in, 2 out) 4 Realtek 数字输出 (Realtek, MME (0 in, 2 out) < 5 LG HDR WFHD (NVIDIA High Defini, MME (0 in, 2 out)