pythonで音声を再生するのこと
pythonで音楽を再生したくなったので、やり方を調べてみた。
まずあたったのが、pyAudioというライブラリ。
PyAudio: PortAudio v19 Python Bindings
ページにはpipで入れよと書いてあったけど、
ubuntuならapt-getでもインストールできる。
sudo apt-get install python-pyaudio
けれども、ライブラリのサンプルを眺めてみると
どうやらこれはwave再生のようで、MP3が再生できるかはわからない。
コードを書いて調べるのも面倒だったので、
次に行くことにした。
MP3が再生できそうなライブラリにpygameが当たった。
ダウンロード&リファレンスサイト
http://pygame.org/download.shtml
その日本語訳。
pygame - Pygameドキュメント 日本語訳
これもapt-getでインストールできる。
sudo apt-get install python-pygame
ゲーム制作用のライブラリのようだが、
それなら当然、音声再生もできる。
というわけでこれを使ってみることにした。
音の出し方は意外と簡単だった。
import pygame import time if __name__ == '__main__': # ライブラリの初期化 pygame.mixer.init() # MP3ファイルのロード pygame.mixer.music.load(u"MP3ファイルパス") # 再生回数の指定。-1ならリピート pygame.mixer.music.play(1) # 音楽再生の間、スレッドを止めるためにスリープ。 # これでは中断のために割り込みとかできないから、 # 本当に使うときは色々と作りこみをする必要がある。 time.sleep(300) # 再生の停止。 pygame.mixer.music.stop()
これはストリーム再生なので起動も早く、負荷も少ない。
ただし、音声ファイルの再生時間が取得できない。
ストリーム故にバッファに読み込んだデータの再生時間は取得できるが。。。
とはいえ、waitする時間の根拠値としても、音声の再生時間はどうしても取得したい。
なんとかならないかと探してみた。
mutagenというライブラリでMP3の再生時間が取得できるらしい。
インストールはやはりapt-getでいける。
sudo apt-get install python-mutagen
使い方は簡単で、ファイルを読み込んで該当のプロパティを叩けばいい。
import mutagen.MP3 sound = mutagen.MP3(u"MP3ファイルパス") print sound.info.length
といわけで、これらのライブラリを使うことでMP3の再生はできた。
いやぁ、楽しいなぁ、こういうの。