playsoundライブラリでmp3などの音声ファイルを再生して、音楽プレイヤーにする方法をご紹介します。
PythonでOpenCVを利用して動画を録画、再生できます。
それでは音声はどうでしょうか?実はめちゃくちゃ簡単に実装できます!
シンプルに流すだけのケースと、ループ再生の2パターンでご紹介します。
やること1
・playsoundのインストール
・音声ファイルの再生
やること2
・ループ再生
それでは順に見ていきましょう!
やること
playsoundのインストール
音楽再生用のライブラリをインストールします。
pip install playsound
音声ファイルの再生
次は再生です。
from playsound import playsound
playsound('Morning.mp3')
たったこれだけです。
Morning.mp3
は任意の音声ファイルを指定します。
今回はこちらのサイトのフリー音声素材を利用させて頂きました。
![](https://dova-s.jp/_assets/img/insert/sns/top.jpg)
今回利用したplaysoundライブラリは非常にシンプルです。
一つの関数呼び出しで音声を再生できます。
また、プラットフォームに依存せず、Windows、macOS、Linuxなどで動作します。
複雑な設定や制御が不要で、素早い実装が求められる場合に便利です。
実際に、たった2行で再生できてしまいました!
やること2
ループ再生
あまりに簡単でしたのでもう少しやってみたいと思います。
音楽をループで繰り返し流したいことがあると思います。
ループ再生をやってみましょう。
from playsound import playsound
import time
sound_file = 'Morning.mp3'
loop_count = 2
for _ in range(loop_count):
playsound(sound_file)
time.sleep(2) # 2秒の遅延(再生間のインターバル)
これを実行すると、環境によってはこんなエラーが起きてしまいます。
raise PlaysoundException(exceptionMessage)
playsound.PlaysoundException:
Error 263 for command:
open Morning.mp3
指定されたデバイスが開かれていないか、または MCI で認識されません。
playsound
で開いているmp3ファイルを、ループ再生しようとしてもう一度開こうとして失敗したエラーです。
回避のために遅延を設けてクローズ処理された頃を見計らって実行しています。
しかし、ちょっとしたタイミングの違いでエラーになることがあります。playsound
だと中々回避が難しいです。
そこで別のアプローチをとります。pygame
を使います。
pip install pygame
次のように記述します。
import pygame
import time
def play_mp3(file_path):
pygame.init()
pygame.mixer.init()
try:
pygame.mixer.music.load(file_path)
pygame.mixer.music.play()
# ファイルが再生されるのを待つ
while pygame.mixer.music.get_busy():
time.sleep(1)
except Exception as e:
print(f"Error: {e}")
finally:
pygame.mixer.quit()
pygame.quit()
# MP3 ファイルのパスを指定して再生
loop_count = 2
for _ in range(loop_count):
mp3_file_path = "Morning.mp3"
play_mp3(mp3_file_path)
print(f"{_ + 1}回目終了")
quit動作をして終了して始めることができるため、playsoundで起きたようなエラーを回避することができます。
例えば10000回ぐらいにしておけば、実質whileループと同じ機能になります。
自由に調整することができます。
これで無事にループ再生にも対応することができました。
ちょっとした音楽再生にはplaysound
が便利です。
ただ流すだけで済まない場合は他のライブラリが適しています。例えばpygame
でループ再生できました。
シーンに合わせて利用してみてはいかがでしょうか。
今回は以上となります。
この記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!