読者です 読者をやめる 読者になる 読者になる

RaspberryPi(python)で音声ファイル再生

RaspberryPi(python)で音声ファイル再生

以前のエントリで折角スピーカーの設定を行ったにもかかわらず、音声を鳴らすところをやっていなかったのでやってみることにしました。

RaspberryPiのpythonパッケージにはpygameというパッケージがデフォルトでインストールされているので、これを使うことにします。pygameはどちらかというとゲームを作るために作成されたパッケージなのでループ再生などが標準的に実装されています。

pygame

まずは対話型で実験。

~ $ python
Python 2.7.9 (default, Mar  8 2015, 00:52:26)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame.mixer
>>> pygame.mixer.init()
>>> pygame.mixer.music.load('Cat.mp3')
>>> pygame.mixer.music.play()

これでCat.mp3という音声ファイルが再生されます。

処理の流れは

  1. モジュールの読み込み
  2. ミキサーデバイスの初期化
  3. 音楽ファイルの読み込み
  4. ファイルの再生

となります。一度音声ファイルをロードしているのでもしかしたらサイズの限界があるのかもとおもったのですが、pygame.mixer.music()はオブジェクトを生成せずに再生を行うことができるようです。そのため大きなファイルであってもメモリの圧迫をしないようになっているようです。

メモリにロードするパターンはpygame.mixer.Sound()を使用します。

pygame.mixer.Soundの例

hoge = pygame.mixer.Sound("hoge.WAV")
hoge.play()

Soundの方は効果音、musicの方はBGM(比較的長い音楽の再生)という使い分けができそうです。

#!/usr/bin/env python

import pygame.mixer

pygame.mixer.init()
pygame.mixer.music.load('Cat.mp3')
pygame.mixer.music.play()

これでRaspberryPiから音声を簡単にならすことができそうです。