Я пишу аудио-визуализатор со звуковым устройством.Он попробовал это на двух компьютерах - он работает на ПК, но не на 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'