About connecting the dots.

data science related trivial things

echo dot から Fire TV で Radiko を再生する方法

少し変化球ですが,広義の技術ネタと考えてここに記します.合計 4 時間くらい四苦八苦してたので,レアだと思いますがもし参考になる人がいればということで.内容はタイトルの通りですが,図に示すと以下の通りです.

要するに,echo dot にボイスコマンドを投げて,Fire TV の Radiko を操作して,サウンドバーから音を出したいということです.

実際に達成した方法としては,ターゲットデバイスを Fire TV として (1) Fire TV をオンにする,(2) 「アレクサ、ラジコでnhk fm」をまとめた Alexa の定型アクションを作成し,これを普段よく聞くラジオ放送局ぶんだけ作成する,です.

背景

こんな面倒なことをせずに,直接 echo dot で Radiko の音を出せばいいのではと思うかもしれませんが,echo dot の音がしょぼいので,もう少し良い音が出るサウンドバーから鳴らしたかったというのが理由です.その場合,echo dot とサウンドバーを Bluetooth で直接繋ぐほうが直接的なやり方なんですが,自分の環境だとうまくいきませんでした.理由は (1) サウンドバーの音声インプットは,基本 HDMI でつないだテレビが優先される形になっており,入力を Bluetooth に切り替えるためには,明示的にサウンドバーのリモコン操作が必要になります.(2) かつ HDMIBluetooth でベース音量が大きく違っており,音量変更のリモコン操作も併せて必要なのもストレスでした.(3) さらにこれが一番致命的なのですが,Bluetoothサウンドバーに繋いでいると,普段はテレビからの HDMI を優先しているので,echo dot からの音声出力が基本聞こえないという点です.そのため通知の確認やタイマーのセットとかが一切使えなくなります.これらの理由から,直接接続は断念せざるを得ませんでした.

そこで考えられるのが,(1) echo dot 自体を買い替えて,そもそも良い音質で聴けるようにする,もしくは (2) Fire TV を購入して,そちらをサウンドバーにつないで Radiko の音を鳴らす,です.前者は echo studio が思い浮かびますが.単品で 3 万近くしますし,この時点ですでにサウンドバーを持っていた自分にとっては,魅力的な選択肢にはなりませんでした.そこで後者を選択しました.これなら Fire TV Stick で 3000 円ほどで済みますし,すぐに設定できるとたかを括っていました.しかし,これが思いのほか難儀でした.

Radiko 再生が意外と難しい

Fire TV で Radiko を再生するには,大きく分けて 3 つのやり方があります.(1) Alexa の Radiko スキルを使う,(2) Fire TV にある Radiko アプリを使う,(3) Fire TV 上の Silk Browser などで Radiko のデスクトップ版ウェブサイトを開いて再生する,です.

(1) について,Alexa スキルでは,基本的にデバイス単位での機能の有効化/無効化はできません.そのため echo dot に対して Radiko の再生コマンドを投げると,基本的に echo dot 上で再生してしまいます.そこで明示的に「アレクサ、Fire tvでradikonhk fmを再生」といったコマンドをいろいろな言い方で投げてみましたが,うまく認識してもらえませんでした.結局うまく機能させるためには,Fire TV のリモコンで「アレクサ、radikonhk fmを再生」のようなコマンドを打つ必要があり,当初の目的からは遠ざかってしまいした.

(2) については,Fire TV の Radiko アプリがくせもので,自分には正直うまい使い方がよくわかりませんでした.そもそも立ち上げてもそのままでは再生されず,別途ボイスコマンドが必要となる仕様のようで,そのボイスコマンドも Fire TV のリモコンから実行する必要があるみたいです.echo dot から「アレクサ、Fire tvでradikoつけて」と実行すればアプリ自体は立ち上げてくれるものの,そこでラジオの再生はされないというなんとも意味のない状態になってしまいます.

(3) について,こちらは特に問題なく動作しタイムシフト再生まで可能なのですが,そもそもボイスコマンドだけで操作できず,リモコンでのカーソル移動操作が求められるため,手間が大きすぎて断念しました.

ということで,正攻法ではにっちもさっちもいかない状況に陥ってしまいました.echo dot と Fire TV のリンクだったり,グループやスピーカーグループなど試してみたものの,特に状況は改善しませんでした.Youtube とか Prime Video だと,echo dot から再生できないこともあってか,ボイスコマンドで echo dot から Fire TV 操作は問題なくできたんですけどね...

定型アクションというソリューション

上記の 3 つの案だと,(2) と (3) はどう転んでもボイスコマンド一発では実現できない仕様のように思われるため,(1) を軸に考えることになります.ここで (1) の課題を思い返してみると,Radiko の再生コマンドを実行するデバイスを強制的に指定できさえすれば問題が解決することがわかります.そこで出てくるのが定型アクションです.以下に具体的な設定例を示すのですが,一番下のところに「デバイス」とあるように,コマンドを実行する対象のデバイスを指定することができます.ということで,最終的にこれで問題解決となりました.ちなみに Firetarou というのが Fire TV のデバイス名です*1.一点だけ問題があるとすると,一つのコマンドでは一つの放送局の再生しかできないので,よく聞く放送局分だけ登録しておく必要があることですが,まぁこれは最初ちょっと手間がかかるだけなので,特に問題はないと判断しました.


おまけ

ということで,ぶじやりたかったことが実現できたんですが,最後にもうひとつ欲をいえば達成したかったのが,画面をオフにした状態での Radiko の再生です.Fire TV は基本的に TV と連動するデバイスなので,上記の定型アクションを実行すると必然的にテレビの画面がついてしまいます.まぁこの構成を取ろうと思った時点で
これに関しては許容するつもりだったのですが,可能なら上記のオプションも持ちたいと考えました.こちらもいくつか検討した結果,テレビ側の HDMI 連動設定で,テレビ → 連動機器電源オフを「連動しない」設定にすることで,定型アクション実行後にテレビリモコンからテレビ電源を切っても,Radiko がそのまま再生し続ける状態を作り出すことができました*2.まぁこれは結局リモコン操作が入るので,あまりスマートではないですが,長時間 Radiko を聞きたいときにはまぁやってもいいかなくらいのオプションです*3

あと少し離れた別の話として,個人的には操作リモコンの数を可能な限り増やしたくなかったので,上記のソリューションによって Fire TV / サウンドバーのリモコンを基本的に使わずに済み,TV リモコンに統一できるようになったのが朗報でした.

そんなわけで,たいしたことない Alexa まわりの試行錯誤でしたが,似たような記事が Web 上に見当たらなかったので,どこかの誰かに参考になることもあるかもしれないと思って書いておくことにしました.

*1:この名前のセンスについては触れないでください.

*2:自分の使っている REGZA には画面表示オフ機能がないので,この手を取るしかなかったんですが,SHARPSONY のテレビだと,画面表示オフ機能があるみたいなので,そちらの活用もできそうです.

*3:本当は定型アクションに REGZA の電源オフも入れたかったのですが,定型アクションはカスタムコマンドが最後に来なければいけないという制約があるようで,含めることができませんでした...