##やったこと
今回、Pythonにおいて、音声を並列で再生する(Aの音声を再生し、再生の終了を待つ前にBの音声を並列で再生する)方法を検討しました。
・環境:
Python3.6.5
Mac OS Mojave
##方法
様々検討したのですが、最終的にはsubprocessを使ってMacのターミナル上での音声再生コマンドであるmplayerを叩く方法で実現しました。
mplayerは
brew install mplayer
でインストールできます。Linuxを利用されている方ですとapt-get、wavならば aplay で良いと思います。
###実際のコード
import subprocess
A = '○○○.mp3'
B = '●●●.mp3'
subprocess.Popen(['mplayer', A])
subprocess.Popen(['mplayer', B])
実行すると、AとBの音声がほぼ同時に再生されます。
これを利用して、aの信号を受け取るとAの音声を流し、bの信号を受け取るとBの音声を流す。
などの処理を実行することができます。
簡潔ですが、以上です。
ご参考になれば幸いです。
##補足
pythonで音声を再生する際はpyAudioを使うのが一般的ですが、これをthreadingなどで並列処理化しても、うまく並列再生されず、しまいにはおそらくメモリーエラーでSegmentation Faultになりました(信号の取得等の処理を入れています)。
もしかしたら、他の方法もあるのかもしれませんが、とりあえず上記で実現できたため投稿します。