playsoundライブラリでmp3などの音声ファイルを再生して、音楽プレイヤーにする方法をご紹介します。
PythonでOpenCVを利用して動画を録画、再生できます。
それでは音声はどうでしょうか?実はめちゃくちゃ簡単に実装できます!
シンプルに流すだけのケースと、ループ再生の2パターンでご紹介します。
やること1
・playsoundのインストール
・音声ファイルの再生
やること2
・ループ再生
それでは順に見ていきましょう!
やること
playsoundのインストール
音楽再生用のライブラリをインストールします。
pip install playsound
音声ファイルの再生
次は再生です。
from playsound import playsound
playsound('Morning.mp3')
たったこれだけです。
Morning.mp3
は任意の音声ファイルを指定します。
今回はこちらのサイトのフリー音声素材を利用させて頂きました。
今回利用した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
でループ再生できました。
シーンに合わせて利用してみてはいかがでしょうか。
今回は以上となります。
この記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!