フォーラムを開設しました!Raspberry Pi の話題はこちらで!

Speaker pHAT 単体で音楽再生+Bluetoothボタン制御

Speaker pHAT 単体で音楽再生+Bluetoothボタン制御

結構、気に入っているSpeaker pHATを使って、単純な音楽再生機を作りました。
コンセプトは、子供や機械に音痴な女性でも電源を入れてボタン1つで音楽を聴けるデバイスです。

ボタン1つなのであまり多くは制御できません。SDカード内の曲を再生するため大量の曲を聴くにも適しませんし、基本は勝手に再生するデバイスとなります。そういう単機能のデバイスでも惜しくなく使えるのがRaspberry Pi Zero 系の利点かも知れません。でも機能は充分ですし、音もなかなかですよ。

Raspberry Pi のセットアップ

RaspbianOS(今回は2018-04-18-raspbian-stretch-lite)をインストールしました。ちょうどバージョンアップしたばかりですね。

Raspbianのインストールに関して、初期設定などは過去の記事をご参考にしてください。

イメージファイルからRaspbianのインストール

Raspberry Pi 3bのインストールと初期設定[2018年 Raspbian Stretch With Desktop]

Raspberry Pi の初期設定(RASPBIAN JESSIE WITH DESKTOP)

 

Speaker pHATセットアップ

Raspbianが導入されてもそのままではSpeaker pHATは何にもなりません。動かすのに必要なライブラリや設定変更をしてくれるソフトウェアをPimoroniからダウンロードし実行させます。
これらはRaspbian liteですからWi-Fi経由のSSHでRaspberry Pi Zero Wのデバイスにアクセスします。Macからだとターミナルアプリケーションで行います。

Pimoroni公式のSpeaker pHAT専用ソフトウェアは以下、GitHubで公開されています。

GitHub pimoroni/speaker-phat
https://github.com/pimoroni/speaker-phat

SSHで接続したターミナルから以下のコマンド一発です。

途中、Yes/Noの選択が数回出てきます。基本はYESで構いません。

テスト

ダウンロードしたディレクトリ(通常は)ホームディレクトリにPimoroniというディレクトリがあります。
その中にtestディレクトリがあり(~/Pimoroni/speakerphat/test)再生できる音声とシェルスクリプトがあります。
test.m4a test.mp3 test.py test.sh test.wav

test.shでLEDと音声のテストができます。

MPDインストール

MPDはMusic Player Daemonの略でサーバサイドのアプリケーションです。再生にはクライアントアプリケーションが必要です。よくPCで音楽を再生するのはただのプレイヤーですね。音楽を管理するものと再生させるものが別と考えていいです。今回はSpeaker pHAT自体で再生させますが、スマホや他のPCデバイスから再生を指示するイメージですね。そのためMPDとクライアントアプリケーションを同居させます。

mpdとクライアントアプリケーションのmpcのインストール

参考https://www.musicpd.org

mpdが総称としてのMPDと同じなので解りづらいですね・・・。初心者は特にそう疑問に思うでしょう。ソフトウェアの方は小文字のmpdで表現されます。mpcは同じ開発(と言ったらいいか?)で、コマンドラインで利用するクライアントアプリケーションです。
他にもクライアントアプリケーションはたくさんあって、Windows用であったり、iOS、Androidなど多様です。実際に今回も外から制御できます。緊急用にスマホで操作できると便利です。

設定のconfが全てです。それで制御できるようになります。逆に言えばconfファイルで決まるということですね。

参考 http://deviceplus.jp/hobby/raspberrypi_entry_014/

confファイルはnanoなどで開き、編集していきます。長いので、上から順に探してください。

変更する箇所

ここはデフォルトでも構いません。ホームディレクトリの方が作業し易いので変更しました。

コメントを外して(先頭の#を消す)audioと編集します。

コメントを付けて(#を先頭に追加)してコメントアウト(非設定)します。これで外からもアクセスできます。今回の趣旨とは別ですが不便なので。

ライブラリの自動更新設定。

ライブラリをスキャン更新する階層の深さです。入れ子のディレクトリで3つまでということです。

ここはspeaker phatならこれでいいと思います。mixer_type “software”にすることで音量を制御できます。

 

これ以外の部分は好みで変更してください。基本はこれだけでOKだと思います。

sambaインストール

外から音楽ファイルを転送できるようにsambaをインストールしておきます。

confファイルの編集

共有名[pi]で以下のように追記します。

sambaサービスのリスタート

sambaだけではなく他のサービスも現在はsystemctlでリスタートしますね。

合成音声の追加

せっかくスピーカーが付いているpHATなので、任意の言葉を喋らせようと思います。
音声合成のソフト?サービス?は無償・有料で様々増えてきました。ここでは有名な2つのうち、Open JTalkを使います。AquesTalk Piというのもあります。AquesTalkPiの方よりOpenJTalkの方がPythonで扱うには適しているなと感じただけですので、お好みでどうぞ。

OpenJTalkのインストール

OpenJtalkはパッケージになっていて使いやすいですね。

参考https://qiita.com/lutecia16v/items/8d220885082e40ace252

男性の声の追加

以下で男性の声をインストールできます。

音声を使って喋らせるにはコマンドで指定するのですが、長くて煩わしいです。そこでシェルコマンドにしてそれを利用します。

今回、ファイル名は jvoice-m.shとします。

以下の内容で保存します。

この.shに実行権を与えます。

実際の利用は以下の書式をコマンドで実行します。

jvoice-m.shがある同じディレクトリでのコマンドなので、別の場所なら絶対アドレスで記載してください。

これなら短い指定で済みます。これをうまく利用するには別途、Pythonなどの実行ファイルで短いプログラムを組むと楽です。簡単な形式なら.shのシェルスクリプトでもOKです。

女性の声も追加

同じく女性の声も追加します。

記事執筆時点で最新verは1.7でした。

圧縮ファイルを解凍して、以下のように/usr/share/hts-voice/へコピーします。

先程の男性の声と同じようにシェルスクリプトにします。変更する箇所は男性の声を指定していた部分を女性の物にアドレスを変更します。

-m /usr/share/hts-voice/mei/mei_normal.htsvoice \

これを新規で保存します。

実行は以下のコマンドです。

男性用のmを外したファイル名にしてあります。お好みで。

男性用 jvoice-m.sh
女性用 jvoice.sh

 

これらを使い、ボタンのON/OFFのタイミングで喋らせようと思います。

100円ショップのBluetoothボタン

実際は300円ですw
ダイソー系の100円ショップでしたが、300円です! 以前から増えたちょっと良い物300円みたいなコーナーにありました。んー。安いけれど、100円ショップで買うと高いと思うのはなぜ?w

参考https://qiita.com/vimyum/items/8b7548ca8cf45383c5b0

これを使用できるようにBluetooth関連のライブラリなどもインストール(以下、現在のRaspbianでは必要無いものもありますが念のため確認も含めて実行しても構いません)

次に、参考サイトで知ったbluebuttonというプログラムをそのまま利用します。(プログラムを書いてくれた人、紹介してくれた人、ありがとうございます)

なんか、gemというコマンドはrubyのパッケージ管理らしく(?)先にrubyもインストールします。

300円Bluetoothボタンとペアリングするため対話式bluetoothctlを実行します。

[bluetooth]#に変わります。ここでNo default controller availableと出る場合、管理者権限での実行にしていないからだと思います。ここでだいぶハマった・・・。sudoを付けてbluetoothctlは実行してください!初歩的なことでした・・・。

スキャンします。

すると、

[NEW] Device FF:FF:3F:F6:48:42 AB Shutter3

このように出ていればOK。適当な時間でctrl+Cで中断します。検出できない場合は、もう一度 scan on のコマンドを叩けば出てくると思います。(Bluetoothボタンの電源スイッチを確認してください)

 

FF:FF:3F:F6:48:42がMACアドレスです。このMACアドレスをコピーしてペアリングで指定してください。順番にコマンドしていきます。

なぜかconnctしてからでないとpairできませんでした。最後にtrustすれば再起動後やデバイスのON/OFFをしても繋がります。

このようになっていればOKです。(例)

最後はquitまたはexitで抜けます。

次の記事でシェルスクリプトまたはPythonプログラムでボタン押下の挙動と合成音声の再生をしてみます。
続きはこちら→ Bluetoothボタンで動作と合成音声の再生

フォーラムでお待ちしています!

CTA-IMAGE 記事を読んでご指摘をはじめ、質問などございましたらフォーラムにご記入ください。(スマホなどMobile環境では利用できません)
話題は何でも構いません。Raspberry Pi の情報交換ができたら私も勉強になります!よろしくお願いいたします。

設定(setting)カテゴリの最新記事