はじめに
こんにちは、mori (@morimori) です。
先日、Raspberry Pi 5 をヘッドレスでセットアップする記事 を書きました。SSH でログインできるところまで来たので、次は何か動かして遊んでみたい。
そんな折、JAWS-UG IoT専門支部 のハンズオン第2回に参加してきました。
- JAWS-UG IoT専門支部「IoT Core ハンズオン 第2回 (全3回)」(2026/07/14)
今回は AWS IoT Device Shadow をハンズオンで触ってきました。ハンズオンの合間に、AWS の SA の方から「USB スピーカーをつなげば、簡単に音を出して遊べますよ」と教えてもらいました。これは面白そう。というわけで、さっそく実践してみます。
本記事では、Raspberry Pi 5 に USB オーディオデバイスをつないで音を鳴らすまでをやっていきます。
イヤホンジャックがない問題
Raspberry Pi 5 にはイヤホンジャック(3.5mm)がありません。従来モデルのアナログ音声出力は 5 で省かれました。音を出す選択肢はこのあたりです。
| 方法 | メモ |
|---|---|
| HDMI | モニター/テレビ側のスピーカーから鳴らす |
| USB | USB スピーカー・USB DAC・USB ヘッドホンをつなぐ |
| Bluetooth | Bluetooth スピーカー・ヘッドホンをつなぐ(ペアリング設定が必要) |
家にあるスピーカーはイヤホンジャック接続でした。しかたないので、リモートワークで使っている USB ヘッドホンをつないで代用します。
デバイスを認識しているか確認する
つないだら、まずラズパイがオーディオデバイスとして認識しているかを確認します。aplay -l で再生デバイスの一覧が出ます。
morimori@mori-pi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: II [Jabra EVOLVE 30 II], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0 と card 1 は HDMI 出力(vc4hdmi)です。今回つないだヘッドホンは card 2: II [Jabra EVOLVE 30 II] の USB Audio として認識されていました。
大事なのは カード番号とデバイス番号です。ここでは card 2・device 0 なので、次のテストコマンドで plughw:2,0 と指定します。
speaker-test で音を鳴らす
いよいよ音出しです。Raspberry Pi OS に最初から入っている speaker-test コマンドを使います。440Hz(ラの音)のサイン波を、左右 2 チャンネルで鳴らしてみます。
speaker-test -D plughw:2,0 -t sine -f 440 -c 2
-
-D plughw:2,0… 出力先デバイス(plughw:カード番号,デバイス番号) -
-t sine… サイン波を再生 -
-f 440… 周波数 440Hz -
-c 2… 2 チャンネル(ステレオ)
実行するとこうなりました。
morimori@mori-pi:~ $ speaker-test -D plughw:2,0 -t sine -f 440 -c 2
speaker-test 1.2.14
Playback device is plughw:2,0
Stream parameters are 48000Hz, S16_LE, 2 channels
Sine wave rate is 440.0000Hz
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 96 to 96000
Period size range from 48 to 48000
Periods = 4
was set period_size = 12000
was set buffer_size = 48000
0 - Front Left
1 - Front Right
Time per period = 4.985336
0 - Front Left
^C 1 - Front Right
Time per period = 2.250094
morimori@mori-pi:~ $
0 - Front Left → 1 - Front Right と表示が切り替わっているのがわかります。止めるときは Ctrl + C です。
そして肝心の音。健康診断の聴力検査のように、右耳・左耳と交互に「ピー」という音が聞こえてきました。ちゃんと左右のチャンネルが分かれて出力されています。感動……よりも先に、簡単すぎでしょw
発展編:MP3 を再生してみる
サイン波が鳴っただけで満足……とはいかないので、もう少し発展させて MP3 を鳴らしてみます。コマンドラインの MP3 プレイヤー mpg123 を使います。
1. mpg123 をインストール
sudo apt install -y mpg123
2. 再生する MP3 を用意
流す曲は、YouTube のオーディオライブラリでよく使われている(らしい?) 「Cliffsides」(Dan Lebowitz) をダウンロードして、ラズパイのホームディレクトリにアップロードしました。
3. デバイスを指定して再生
speaker-test と同じく、出力先を -a plughw:2,0 で指定します。
morimori@mori-pi:~ $ mpg123 -a plughw:2,0 Cliffsides\ -\ Dan\ Lebowitz.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.32.10; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Terminal control enabled, press 'h' for listing of keys and functions.
Playing MPEG stream 1 of 1: Cliffsides - Dan Lebowitz.mp3 ...
MPEG 1.0 L III vbr 44100 j-s
[0:33] Decoding of Cliffsides - Dan Lebowitz.mp3 finished.
ファイル名にスペースが含まれる場合は、バックスラッシュ(\ )でエスケープするか、"..." で囲みます。ファイル名を途中まで打って Tab キーを押せば、シェルが残りを補完してくれる(候補が複数あれば一覧表示される)ので、長いファイル名でも楽です。
ヘッドホンからカントリー&フォークが流れてきました。
今度こそ感動です!
陽気な音楽に、テンションもぐっと上がります。
まとめ
イヤホンジャックのないラズパイ5 でも、USB オーディオをつなぎ aplay -l でデバイス番号を確認すれば音は出せます。speaker-test でサイン波、mpg123 で MP3 まで再生できました。
AWS の SA の方に教えてもらったとおり本当に簡単にできました。「音」が出せるようになると、やってみたいことが一気に増えます。
- LLM と連携してしゃべらせる: Claude などに文章を作らせ、Text-to-Speech で音声化すれば、ラズパイが受け答えする音声アシスタントに
- Device Shadow と組み合わせて遠隔操作: 先日学んだ Device Shadow で「再生/停止」の状態を持たせれば、クラウド越しに音を鳴らす操作もできそう
- IoT Core からの通知を音で知らせる: センサーの異常やイベントを、画面ではなく音(アラートや音声)で通知する
- センサー × 音声: 人感センサーと組み合わせて、人が近づいたらしゃべる、みたいな仕掛け
音が出せるだけで、こんなに妄想がふくらむとは。まずは手を動かして一歩ずつ試していきます。