【Python】mp3ファイルを再生して音楽プレイヤーにする(ループ対応)

playsoundライブラリでmp3などの音声ファイルを再生して、音楽プレイヤーにする方法をご紹介します。
PythonでOpenCVを利用して動画を録画、再生できます。
それでは音声はどうでしょうか?実はめちゃくちゃ簡単に実装できます!
シンプルに流すだけのケースと、ループ再生の2パターンでご紹介します。

やること1
・playsoundのインストール
・音声ファイルの再生

やること2
・ループ再生

それでは順に見ていきましょう!

目次

やること

playsoundのインストール

音楽再生用のライブラリをインストールします。

pip install playsound

音声ファイルの再生

次は再生です。

from playsound import playsound
playsound('Morning.mp3')

たったこれだけです。

Morning.mp3は任意の音声ファイルを指定します。
今回はこちらのサイトのフリー音声素材を利用させて頂きました。

フリーBGM DOVA-SYNDROME
フリーBGM(音楽素材)無料ダウンロード|DOVA-SYNDROME フリーBGM音楽素材を無料ダウンロード配布しています。商用や非商用など、用途を問わず連絡不要でご自由にご利用頂けます。[配信BGM素材数 16803曲/SE素材数 1313音 2024/...

今回利用した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でループ再生できました。
シーンに合わせて利用してみてはいかがでしょうか。

今回は以上となります。
この記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次