見出し画像

PythonでMP3ファイルを再生する機能

(Windows環境の)Python 3.11.0で、文章読み上げツールを作るにあたって、まずMP3ファイルを再生する機能を確認したい。anaconda環境にpygame2.2.0を導入。
テスト用ファイルtest.mp3を用意して

from pygame import mixer
mixer.init()
mixer.music.load("test.mp3")
mixer.music.play(loops=1)

VisualStudioCodeで実行すると、エラーメッセージは出ないのだけど音も出ない。ぐぐってこちら

を参考に

import time
from pygame import mixer
mixer.init()
mixer.music.load("test.mp3")
mixer.music.play(loops=1)
time.sleep(10)

としたら、とりあえず音が出ました!!
出ることは出たんですけどね、最後のとこ、time.sleep(1)とやると、再生が途中で切れちゃいます。つまり、再生時間があらかじめ決め打ちになってしまう。これいやだなぁ。再生時間が長いファイルは切れちゃいそうだし、短いファイルは無駄な待機の時間が増える。
 そこで、さらにググっていたら、

の回答にあったコードにsleepの時間をコントロールする方法があった。

while pygame.mixer.music.get_busy():
   time.sleep(0.1)

これでうまく行きました。
そして、最終的には

import time
from pygame import mixer
mixer.init()
mixer.music.load("test.mp3")
time.sleep(1)
mixer.music.play(loops=1)
while mixer.music.get_busy():
  time.sleep(0.1)

・・で自分としても納得できる動作になりました。
(playの前にtime.sleep(1)を置いているのは、音声再生で頭が切れる場合があったため、loadで読み込み時間を確保する意図で置いています。)

この記事が気に入ったらサポートをしてみませんか?