LoginSignup
3
2

More than 3 years have passed since last update.

pythonで音声を並列で再生する方法

Last updated at Posted at 2019-08-27

やったこと

今回、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になりました(信号の取得等の処理を入れています)。
もしかしたら、他の方法もあるのかもしれませんが、とりあえず上記で実現できたため投稿します。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2