I have realized a little script in Python, using sounddevice as library. I’ve created this bash script using venv, so the script runs correctly on its virtual environment.
To run using script, I have used this bash script:
#!/usr/bin/env bash
cd /home/user/lab/python/infinityrec
source /home/user/lab/python/infinityrec/venv/bin/activate
python3 ./recorder.py
Even if I don’t active the virtual environment, I can run this software correctly. The problem is when I want to run this script as a bckground service, using systemd daemon or supervisord. When I run script in background mode, I got this error:
File "/home/user/lab/python/infinityrec/venv/lib/python3.11/site-packages/sounddevice.py", line 569, in query_devices
raise PortAudioError(f'Error querying device {device}')
sounddevice.PortAudioError: Error querying device -1
2024-05-20 10:39:36.926 | INFO | __main__:main:87 - Starting recording...
Traceback (most recent call last):
File "/home/user/lab/python/infinityrec/./recorder.py", line 100, in <module>
main()
File "/home/user/lab/python/infinityrec/./recorder.py", line 90, in main
recordChunk()
File "/home/user/lab/python/infinityrec/./recorder.py", line 40, in recordChunk
recording = sd.rec(int(config["chunk_duration"] * config["freq"]),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/lab/python/infinityrec/venv/lib/python3.11/site-packages/sounddevice.py", line 276, in rec
ctx.start_stream(InputStream, samplerate, ctx.input_channels,
File "/home/user/lab/python/infinityrec/venv/lib/python3.11/site-packages/sounddevice.py", line 2582, in start_stream
self.stream = StreamClass(samplerate=samplerate,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/lab/python/infinityrec/venv/lib/python3.11/site-packages/sounddevice.py", line 1421, in __init__
_StreamBase.__init__(self, kind='input', wrap_callback='array',
File "/home/user/lab/python/infinityrec/venv/lib/python3.11/site-packages/sounddevice.py", line 817, in __init__
_get_stream_parameters(kind, device, channels, dtype, latency,
File "/home/user/lab/python/infinityrec/venv/lib/python3.11/site-packages/sounddevice.py", line 2660, in _get_stream_parameters
info = query_devices(device)
^^^^^^^^^^^^^^^^^^^^^
Is there a way to resolve this issue? The alternative is to run script manually and leave Terminal window active, and I don’t think this is the best solution.