When I run play_audio()
it works without any problem and I can hear the audio playing.
from multiprocessing import Process
from pydub import AudioSegment
from pydub.playback import play
name = "audio.wav"
def play_audio():
wavf= AudioSegment.from_wav(name)
play(wavf)
if __name__ == "__main__":
print("Test without process")
play_audio()
print("Test with process")
s_task=Process(target=play_audio)
s_task.start()
print("starting")
s_task.join()
But running the function in a process gives an error, here is the output:
Test without process
Test with process
starting
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/marvin/git/mmi/src/yumi/yumi_motion_api/scripts/stackoverflow.py", line 9, in play_audio
play(wavf)
File "/home/marvin/.local/lib/python3.8/site-packages/pydub/playback.py", line 53, in play
playback = _play_with_simpleaudio(audio_segment)
File "/home/marvin/.local/lib/python3.8/site-packages/pydub/playback.py", line 43, in _play_with_simpleaudio
return simpleaudio.play_buffer(
File "/home/marvin/.local/lib/python3.8/site-packages/simpleaudio/shiny.py", line 60, in play_buffer
play_id = _sa._play_buffer(audio_data, num_channels, bytes_per_sample,
_simpleaudio.SimpleaudioError: Error opening PCM device. -- CODE: -5 -- MSG: Input/output error
This link contains the .wav
file that I am using.
Replacing
from multiprocessing import Process
s_task=Process(target=play_audio)
with
from threading import Thread
s_task=Thread(target=play_audio)
works just fine