##最初に
もうすぐ子供が生まれ、とうとう父になるようです。
夜泣きとかすごいと思うので、赤ちゃんが泣いた時に、一時対応として、
「泣き声がすごかったら、ア●パ●マ●とかの曲を流す」ということをさせようと思っています。
(要件:センサーで音を検知したら、音楽をランダムで再生する)
この仕組みを作るためには、以下のことができなければなりません。
1.Rasberry Piで音楽を鳴らす
2.音センサーで検知させる
3.センサー検知後に、ランダムな曲を選択する
などなど
今回は、「1.Rasberry Piで音楽を鳴らす」ということを主眼に記事を書いていきます。
##環境
Python
Rasberry Pi
USBミニスピーカ(DAISO製)
##音楽を再生させてみる
■参考にさせていただいたURL
https://qiita.com/goowaSystemTeam/items/95525dae25dee270087b
基本的に、上記のURLを参考にすると、Pythonでの音楽の再生方法と停止の方法がわかります。
参考にしたURLだと、10秒で音楽を停止するようにしているので、
「音楽の長さを取得して、音楽の終了時に停止する」という処理に変えてみたいと思います。
ここで、mutagenというモジュールをインストールします。
以下の公式サイトに記載がありますが、オーディオのメタデータを操れるモジュールのようです。
https://mutagen.readthedocs.io/en/latest/
・mutagenのインストール
pip install mutagen
##コード
# -*- coding: utf-8 -*-
import subprocess
import time
from mutagen.mp3 import MP3
#以下の音楽ファイルのパスは、環境に応じて変更してください
audio = MP3('/path/to/music/music_test.mp3')
print (audio.info.length)
#動画を再生する
#以下の音楽ファイルのパスは、環境に応じて変更してください
command = 'omxplayer /path/to/music/music_test.mp3'
proc = subprocess.Popen(command,shell=True,stdin=subprocess.PIPE)
#-- なんからの処理(音声の長さ分の停止) --
#time.sleep(10)
time.sleep(audio.info.length)
#-------------------------------------
#終了処理
print("Fiininish")
proc.stdin.write("q")
これで、音楽終了時に、プレーヤーを停止させる、というロジックができました。
##実行
python playOmxplayer.py
##実行結果
192.574693878 #←再生する音楽の長さ(秒表示)
Audio codec mp3 channels 2 samplerate 44100 bitspersample 16
Subtitle count: 0, state: off, index: 1, delay: 0
Fininish
Stopped at: 00:03:12
無事にスピーカーからも音声が出力されました
※DAISOさんのスピーカは、USBで給電して、イヤホンジャック部分にプラグを挿すようです。
さて、次回はRaspiの配線の先にある、音センサーとの接続をやっていきたいと思います。