ラズベリーパイで音声再生のしかた

ラズベリーパイでMP3の音声ファイルをPythonプログラムで再生し、スピーカーから音を出す方法の紹介です。小型のアンプとスピーカーを組み合わせた方法も紹介します。
ラズベリーパイの音声出力ポート
まずはどんな音声出力ポートがあるか確認しましょう。
オーディオポート(3.5mmステレオミニジャック)
通常のRaspberry Piシリーズには3.5mmのイヤフォンジャックがあり、ここから音声出力ができます。ただし、そのままスピーカーにつないでもかすかな音が鳴るだけですので、まずはアンプをつなぎ、それからスピーカーに接続します。
HDMIポート
通常のRaspberry Piシリーズ、Raspberry Pi ZeroシリーズにはHDMIポートがあり、スピーカー付きのHDMIモニターに接続すると音声出力ができます。音声だけ使用したい場合、HDMI音声分離機が必要になります。
GPIO
GPIOを使う方法もあるのですが、音質が悪かったりしますのであまりおすすめしません。

Raspberry Pi 4 Mode Bの音声出力ができるところ
接続パターン
オーディオポート + アンプ内蔵スピーカー
スピーカーユニット内部にアンプが内蔵されている、ダイソーの300円のミニスピーカーや、ロジクールの1,500円のPCスピーカーなどを用意します。あとは電源用のUSBケーブルをラズパイのUSBポートに、3.5mmイヤフォンジャックをラズパイのオーディオポートに接続します。
オーディオポート + アンプ + スピーカー
アンプとスピーカーを自分で用意して組み合わせて使う方法です。例えば、秋月電子の以下を組み合わせると、アンプとスピーカーを小さくまとめられます。
・PAM8012使用2ワットD級アンプモジュール
・ブレッドボード用ダイナミックスピーカー
HDMIポート + 外部ディスプレイ
この方法で1番簡単なのは、HDMI入力があるテレビにつなぐことです。そのほか、ラズパイ用の小型液晶ディスプレイがいくつもありますので、スピーカーが内蔵されているものであれば音声が出力されます。
オーディオポート + アンプ + スピーカーの実際のやり方
必要なもの
まずは必要なパーツを揃えましょう。
・PAM8012使用2ワットD級アンプモジュール x 1
・ブレッドボード用ダイナミックスピーカー x 1
・3.5mmステレオミニジャックDIP化キット x 1
・ミニブレッドボード x 1
・3.5mm ステレオミニプラグケーブル 10cm x 1
・ピンヘッダ 1×40(40P) x 1
・ジャンパーコード(オス-オス) x 3
・ジャンパーコード(メス-オス) x 1
はんだづけ
アンプモジュールとミニジャックDIP化キットははんだ付けが必要なので、はんだづけします。
アンプモジュールにはピンヘッダが付属していないため、ピンヘッダを4ピンに分割したものを2つ用意して使用します。
DIP化キットはピンヘッダが付属しています。4ピンに分割したものを1つ、1ピンに分割したものを2つ用意して使用します。
接続
以下のように接続します。
Pythonで音を鳴らす
プレイヤーソフトのインストール
以下のコマンドを実行し、mpg321というCLIで操作できるプレイヤーをインストールします。
sudo apt install mpg321
インストールしたmpg321が正しく動くか、以下のコマンドでチェックしま す。この時、test.mp3などの適当なMP3ファイルを用意しておきます。
mpg321 test.mp3
サンプルプログラム
Pythonのプログラムから音声ファイルを再生したい場合、以下のようにします。
import subprocess
subprocess.Popen(['mpg321', 'test.mp3'])
おわりに
いかがだったでしょうか? ラズパイから音が出るようになると、カメラで写真を撮る時にシャッター音を鳴らしたり、できることの幅がひろがりますのでぜひやってみてくださいね😊