6/25(水)発売! 『Interface 2025年7月号』は暗号技術特集。第1部第1章を執筆しました☆彡
Raspberry Pi / Arduino

New!! SSHでRaspberry Piに音楽ファイルを送信して再生

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と音声はこちらの動画で使用したものです。興味があればご覧ください。

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました