我正在用sounddevice编写音频可视化器。它在两台计算机上进行了尝试-在PC上可以运行,但在ThinkPad上却不能。我在同一台笔记本电脑上的Kubuntu和OpenSuse Tumbleweed上尝试过,但没有用。工作的计算机也是Kubuntu,但这是另一种硬件。
我可以连接到某些设备,但只能得到零。获取一些数字的唯一方法是打开麦克风。这不是我想要的东西-我需要阅读声卡播放的内容(例如,音乐播放器播放一些歌曲)。
我的问题是:是错误还是我做错了什么?
这里正在测试代码,尝试使用sounddevice和pyaudio尝试任何可用的设备。设备的数量有时会无故更改,或者至少我看不到任何原因。
import sounddevice as sd
devices = sd.query_devices()
print("sounddevice")
for i in range(len(devices)):
print("")
print(i, devices[i])
try:
s = sd.Stream(device=(i,i), channels=1)
s.start()
print(s.read(10))
s.stop()
except Exception as e:
print(e)
import pyaudio
p = pyaudio.PyAudio()
print("pyaudio")
for i in range(p.get_device_count()):
print("")
print(i)
try:
rate=44100
format=pyaudio.paInt32
channels=1
s = p.open(rate, channels, format, input=True, input_device_index=i)
print(s.read(10))
s.close()
except Exception as e:
print(e)
这是输出:
sounddevice
0 {'name': 'HDA Intel PCH: HDMI 0 (hw:0,3)', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
Error opening Stream: Invalid number of channels [PaErrorCode -9998]
1 {'name': 'HDA Intel PCH: HDMI 1 (hw:0,7)', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
Error opening Stream: Invalid number of channels [PaErrorCode -9998]
2 {'name': 'HDA Intel PCH: HDMI 2 (hw:0,8)', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
Error opening Stream: Invalid number of channels [PaErrorCode -9998]
3 {'name': 'hdmi', 'hostapi': 0, 'max_input_channels': 0, 'max_output_channels': 8, 'default_low_input_latency': -1.0, 'default_low_output_latency': 0.005804988662131519, 'default_high_input_latency': -1.0, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
Error opening Stream: Invalid number of channels [PaErrorCode -9998]
4 {'name': 'pulse', 'hostapi': 0, 'max_input_channels': 32, 'max_output_channels': 32, 'default_low_input_latency': 0.008707482993197279, 'default_low_output_latency': 0.008707482993197279, 'default_high_input_latency': 0.034829931972789115, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
(array([[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.]], dtype=float32), False)
5 {'name': 'default', 'hostapi': 0, 'max_input_channels': 32, 'max_output_channels': 32, 'default_low_input_latency': 0.008707482993197279, 'default_low_output_latency': 0.008707482993197279, 'default_high_input_latency': 0.034829931972789115, 'default_high_output_latency': 0.034829931972789115, 'default_samplerate': 44100.0}
(array([[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.],
[ 0.]], dtype=float32), False)
pyaudio
0
[Errno -9998] Invalid number of channels
1
[Errno -9998] Invalid number of channels
2
[Errno -9998] Invalid number of channels
3
[Errno -9998] Invalid number of channels
4
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
5
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'