2018年8月19日日曜日

Raspberry Piでジュークボックス:(1)準備

iPhoneでYoutubeから曲を選ぶと、Raspberry Pi経由で室内のスピーカーから流れるようにしました。

何をしたいのか

私よりも自宅にいることの多い顧客(家族)からのリクエストだったものの、
本人もどうなっていれば良いのか分からなかったようで試行錯誤しながらのヒアリングになりました。
結局のところ次のことを言っていたようです。
  • スピーカーでリビングに音楽を流して欲しい。
  • 楽曲指定は基本的にキーワード指定。お気に入りとかプレイリストとか要らない。
  • 簡単に再生開始したい。音声操作でもスマホでもどちらでも良いがハードウェアボタンを押しに行くのは嫌だ。
  • 再生中にスマホで他の操作をしたいので占有されたくない。
  • 1曲終わったら関連楽曲を連続再生して欲しい。
  • 途中、気に入らない楽曲が再生されたらスキップ or 他の関連曲に変えたい。
  • レスポンスが良いに越したことはないが、再生開始に時間がかかっても許容可能。(どうせ再生しっぱなしだから)
  • 再生時に余計な家電が動いてしまうのはNG。
  • コンテンツに定額が発生しても構わないが、気に入った曲が無いならダメ。

できるようになったこと


iPhoneでSiriに「Youtubeで◯◯を検索」と頼んで、検索結果からworkflowに共有するとRaspberry PiのNode-REDにリクエストが飛ぶようにしてあります。
最初からWorkflowにキーワードを入力してもOK。

Node-REDはリクエストされたYoutubeコンテンツIDまたはキーワードをShellScriptに渡します。
ShellScriptでは内部でmps-youtube(mpsyt)を呼び出して、Youtubeの楽曲を検索して再生。

その際、Raspberry Pi Zero Wを使うと再生開始まで非常に時間がかかる(1分くらい)ので、
Open JTalkで音声案内を入れるようにしました。

ここまでできてしまうと、mpsytの関連検索コマンドなどを駆使すれば連続再生なども簡単にできます。
処理が重すぎて、再生中のコマンドはうまく受け付けてくれないことがあるので、
停止やスキップについてはShellScriptから強制終了させるなどの対応にしました。

ついでにAmazon Echoに「ジュークボックスを消して」と言うとNodeREDから停止するようにしてあります。

試したこと

今回の構成に至るまでの試行錯誤の経緯。。。

Amazon Echo Dot + Amazon Music Unlimited

・選曲操作:Amazon Echo Dot
・音楽配信:Amazon Music
・再生端末:Amazon Echo Dot
・音声出力:Amazon Echo Dot

声を掛けるだけで再生されるしレスポンスも良く、再生デバイスとしてはGood。
ところが「Amazon Music Unlimitedが対応している曲がイマイチ」ということでお客様としてはNG。

Google Homeも買おうとしましたが、顧客から「なんでやねん」というツッコミが入って断念しました。

iPad + Youtube + AirPlay + Amazon Fire TV Stick

・選曲操作:iPad + Youtubeアプリ
・音楽配信:Youtube
・再生端末:iPad + AirPlay
・音声出力:Amazon Fire TV Stick

それで良いのか?と言いたくなりますが、Amazon MusicのコンテンツがイマイチならYoutubeで。。。
ちなみに、Apple Music は宗教的理由により見送りました。
死んだ爺さんから「月額課金はAmazon大明神の思し召しのままに」と言われているので。

Amazon Fire TV Stick にAirPlayのアプリを入れてiPadからYoutubeの音声を飛ばしました。
コンテンツ的にはOKらしいのですが、Fire TVにAirPlayを繋いだ瞬間にHDMI経由で画面(プロジェクター)が起き上がってしまいNG。
いや、だって、映像再生デバイスなんだから仕方ないじゃん。。。

また、iPadだとYoutubeが関連楽曲を連続再生してくれずご不満とのこと。
ふーん。

iPhone + Youtube + AirPlay + Raspberry Pi + スピーカー

・選曲操作:iPhone + Youtubeアプリ
・音楽配信:Youtube
・再生端末:iPhone + AirPlay
・音声出力:Raspberry Pi + スピーカー

Fire TVが画面出力してしまうならRaspberry Piでヘッドレスにしてみよう、ということで。
具体的な方法は以前説明した通り。
iPhoneであればYoutubeの連続再生も可能です。

しばらく良い感じに使っていたのですが、iPhoneで他の操作をしようとしてYoutubeアプリをバックグラウンドにすると音が切れてしまい、微妙なイライラが残ります。
ブラウザを駆使するとバックグラウンドで再生できるようですが、毎回この操作をするのは耐えられないとのことでNG。

iPhone + workflowアプリ + Raspberry Pi + Node-RED + Youtube + mpsyt + OpenJTalk + スピーカー

・選曲操作:iPhone + workflowアプリ(キーワード指定のみ)
・音楽配信:Youtube
・再生端末:Raspberry Pi + mpsyt
・音声出力:Raspberry Pi + スピーカー

最終的にたどり着いた構成がこれ。
結局、楽曲検索から再生から何から全部をRaspberry Piに詰め込んでしまい
「それミュージックプレイヤーやないかい」という状態。


前置きが長くなったので続きは次回。

0 件のコメント:

コメントを投稿