I am on WSL, and when trying to record audio using sounddevice, I get an error saying no device was found: sounddevice.PortAudioError: Error querying device -1
.
I followed sounddevice's instructions and installed libportaudio2, CFFI, and numpy.
I also followed PortAudio's instructions and compiled PortAudio.
As my device is a USB microphone, I also followed this to attach the device to WSL, apparently successfully as when I run usbipd wsl list
in Windows Powershell I get:
BUSID VID:PID DEVICE STATE
1-2 239d:f218 USB Input Device Not attached
1-3 216e:2462 Camera Not attached
1-6 046d:0a38 Logi USB Headset H340, USB Input Device Attached - WSL
1-10 12s1:8543 Bluetooth Adapter Not attached
and when I run sudo usbip port
in the WSL bash I get:
Port 00: <Port in Use> at Full Speed(12Mbps)
Logitech, Inc. : Headset H340 (046d:0a38)
1-1 -> usbip://172.25.96.1:3240/1-6
-> remote bus/dev 001/006
And yet, when my python script calls sounddevice.rec
I get the following:
Traceback (most recent call last):
File "/home/user/project/scripts/recorder.py", line 223, in <module>
main()
File "/home/user/project/scripts/recorder.py", line 203, in main
recording = record(args.sample_rate, args.duration)
File "/home/user/project/scripts/recorder.py", line 54, in record
recording = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=2)
File "/home/user/project/venv/lib/python3.9/site-packages/sounddevice.py", line 276, in rec
ctx.start_stream(InputStream, samplerate, ctx.input_channels,
File "/home/user/project/venv/lib/python3.9/site-packages/sounddevice.py", line 2582, in start_stream
self.stream = StreamClass(samplerate=samplerate,
File "/home/user/project/venv/lib/python3.9/site-packages/sounddevice.py", line 1421, in __init__
_StreamBase.__init__(self, kind='input', wrap_callback='array',
File "/home/user/project/venv/lib/python3.9/site-packages/sounddevice.py", line 817, in __init__
_get_stream_parameters(kind, device, channels, dtype, latency,
File "/home/user/project/venv/lib/python3.9/site-packages/sounddevice.py", line 2660, in _get_stream_parameters
info = query_devices(device)
File "/home/user/project/venv/lib/python3.9/site-packages/sounddevice.py", line 569, in query_devices
raise PortAudioError(f'Error querying device {device}')
sounddevice.PortAudioError: Error querying device -1
Also, running python3 -m sounddevice
in the terminal or sd.query_devices()
in the console return nothing.
What am I missing here? Is there a way to make it work?