AI要約
PCからRaspberry PiへSSH接続し、音楽ファイルを転送して再生する手順を詳しく紹介。LANケーブル直結での実践方法をわかりやすく解説しています。wavファイルとmp3ファイルの両方に対応しています。
やること
PCとRaspberry Pi(ラズパイ)をLANケーブルで繋ぎ、SSH接続でラズパイから音楽再生してみます。
前回の記事でラズパイのIPアドレスを固定して、SSH接続するところまで確認しました。その続きです。
手順1|ラズパイにモジュールをインストール
ラズパイを起動してモニター、キーボード、マウスを繋げます。画面右上のところから自宅のWi-Fiに接続します。

ターミナルを開いてインターネット接続できることを確認します。
ping google.com
アップデートしておきます。
sudo apt update
音声再生に必要なモジュールをインストールします(2セット)。
sudo apt install mpg123 alsa-utils
sudo apt install sox libsox-fmt-all
これでラズパイ側の設定は完了です。
余計なインターネット通信はしてほしくないので、画面右上のところから「Turn Off Wireless LAN」で無線LANを切りました。モニター、キーボード、マウスは引っこ抜いて大丈夫です。
手順2|PCからSSH接続できることを確認
PCとラズパイをLANケーブルで繋ぎます。ラズパイのIPアドレスを固定してあるので、まずは通信の確認を。
ping 192.168.1.10
よければ、SSHでラズパイに入ります。
ssh pi@192.168.1.10
適当なフォルダを作ります。
mkdir mysound
SSHは終了して大丈夫です。
exit
手順3|Pythonで音楽ファイルを転送して再生
PC側で、必要なパッケージをpipします。
pip install paramiko scp
音楽ファイルの転送
こちらのPyhtonコードで音楽ファイルをラズパイに送ることができます。
import paramiko
from scp import SCPClient
#設定
pi_ip = '192.168.1.10'
pi_user = 'pi'
pi_pass = '1234'
local_audio_file = '公式の手順通りに.wav'
remote_audio_folder = '/home/pi/mysound/'
#SSH接続
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(pi_ip, username=pi_user, password=pi_pass)
#SCPでファイルを送信
with SCPClient(ssh.get_transport()) as scp:
scp.put(local_audio_file, remote_audio_folder)
#SSH接続終了
ssh.close()
もう一つ、拡張子がmp3のも送っておきました。
local_audio_file = 'be_free.mp3'
できれば、ラズパイ側にファイルが保存されているかSSHで確認しておくといいでしょう。
wavファイルの再生
wavとmp3では再生方法が異なります。
wavファイルを音量指定して再生するにはこちら。
import paramiko
#設定
pi_ip = '192.168.1.10'
pi_user = 'pi'
pi_pass = '1234'
remote_audio_folder = '/home/pi/mysound/'
#設定2
volume_percent = 100
audio_file = '公式の手順通りに.wav'
#SSH接続
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(pi_ip, username=pi_user, password=pi_pass)
#システム音量を変更
ssh.exec_command(f"amixer sset Master {volume_percent}%")
#再生
ssh.exec_command(f"nohup aplay '{remote_audio_folder}/{audio_file}' > /dev/null 2>&1 &")
#SSH接続終了
ssh.close()
「amixer sset Master 100%」でシステム音量を変更してから再生しています。Masterのところは環境によって違うかもしれないので注意(Masterだからマスター音量のはず)。
mp3ファイルの再生
mp3ファイルを音量指定して再生するにはこちら。
import paramiko
#設定
pi_ip = '192.168.1.10'
pi_user = 'pi'
pi_pass = '1234'
remote_audio_folder = '/home/pi/mysound/'
#設定2
volume_percent = 100
audio_file = 'be_free.mp3'
#SSH接続
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(pi_ip, username=pi_user, password=pi_pass)
#音量を指定して再生
volume_value = int(32768 * (volume_percent / 100))
ssh.exec_command(f"nohup mpg123 -f {volume_value} '{remote_audio_folder}/{audio_file}' > /dev/null 2>&1 &")
#SSH接続終了
ssh.close()
複数の音楽を重ねて再生することもできます。
再生の終了
どちらも、再生の終了はこちら。
ssh.exec_command("pkill mpg123; pkill aplay")
おわりに
自動運転車のプロジェクトで、走行しながら音楽を流す必要が出てきたので開発しました。音楽を流しながら「右に曲がります」とかですね。こちらの進捗もいずれ報告したいと思います。
ちなみに、今回のBGMと音声はこちらの動画で使用したものです。興味があればご覧ください。