Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

やったこと

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした