Logo
17 Dec 2017 | 1 min. (63 words)

Amazon Echoで浦ラジを聴く

これはラブライブ!アドベントカレンダー17日目のエントリです。

先日、ついに日本でも発売されたスマートスピーカAmazon Echo。自分も早速入手して、いろいろ遊んでいます。

音楽をかけたりニュースを読むだけでなく、他にも「アレクサ、買い物リストに卵を追加して」で、買い物リストへの追加ができたり、日常生活で役立ちそうな機能がいっぱいあります。

で、我々ラブライバーにとっては毎週水曜に浦ラジをチェックするのは当然なわけですが、毎度PCをひらいて再生するのが面倒だなーということがありますよね?

そこでAmazon Echoの出番です。

ただ、いまのところ響ラジオステーションの公式スキル(一般的にいうところのアプリ)に相当するものはリリースされていません。

なので、早速Amazon Echoで浦ラジを再生するスキルを、自作してみたいと思います。

(当然、これは響ラジオステーション公式のアプリではないので、自己責任でお試しください・・・

スキルのアーキテクチャ

まずはアーキテクチャを考えます。

Alexa Skillには既に、外部のmp3やm3u8などを再生できる機能が備わっていますので、これを利用すれば再生できそうです。

しかしここで1つ問題があります。それは響ラジオステーションのストリーミングには暗号化がされており、これを復号化しながらAmazon Echoで直接再生する方法は現状ではない、と思われます。

なのでAlexaからの応答を受け付けるLambdaとは別に、ストリーミングを別のLambdaでダウンロードしS3に配置。そしてこれAmazon Echoで再生する方式にします。

浦ラジは毎週水曜日の正午くらいに配信されるようですので、ストリーミングをダウンロードするLambdaは水曜の14時くらいにに定期的に実行するようCloudWatchに設定すれば、いい感じにできそうです。

アプリの配備

今回作成したコードはこちらです。

https://github.com/zephiransas/alexa-llss-skill

はじめに.envrc.origをコピー&リネームで.envrcにします。環境変数の管理にはdirenvを使っています。

つぎに.envrcのBUCKET_NAMEを設定しておきます。これはダウンロードしたストリーミングファイルの保存先になるS3バケット名です。

APP_IDについては、まだ設定しなくても大丈夫です。

次にAlexaから呼び出すLambdaを配備します。serverless frameworkを使っていますので

$ sls deploy

のコマンドだけで、デプロイできます。

このコマンドで2つのLambdaがデプロイされます。

1つ目のLambdaはAlexaから呼び出され、環境変数BUCKET_NAMEのS3を参照し、このなかにあるllss[配信回数].mp4というファイルのうち、配信回数がもっとも大きいファイルをAlexaで再生するLambdaにしています。

もう1つがCloudWatchから定期的に実行され、ストリーミングをffmpegで変換しつつS3に保存するLambdaです。 Lambda内で通常はインストールされていないffmpegを実行できるようにする方法は、こちらのエントリで別途、解説しています。

いますぐダウンロー

ドしておきたい場合は、Lambdaのコンソールからテスト実行すれば、3分程度でダウンロード処理が完了し、S3にmp4が作成されます。

Alexa Skillを設定

次にAmazon Developer Consoleから新しくスキルを追加します。

設定内容の一部をスクショで掲載します。

llss1

「スキルの名前」はスキルの呼び出し名になりますので、この場合だと

「アレクサ、浦ラジを開いて」

と発音するとstatehandler内のLaunchRequestインテントが実行され、そこからPlayAudioインテントが実行されることで、S3上のmp4をAmazon Echoで再生できるというわけです。

llss2

あとはSkill Beta Testingから、自分のアカウントで動かせるようにすれば、Amazon Echoで浦ラジを再生する環境のできあがりです!

やっと思ってた形になったわー pic.twitter.com/s5xtHtgVkN

— Takafumi Yoshida (@zephiransas) 2017年12月13日

うまくいけば上記のようになります。

残念ながらAmazon Echoはまだ招待メールを受け取った人しか買えない状況ではありますが、お手元にAmazon Echoがある人は是非お試しください!

alexa nodejs lambda S3
Twitter Facebook

株式会社リゾームを退職しました

…

AWS Lambdaにコマンドを追加する

…

Theme Bleak by zutrinken Published with Hugo
Menu
  • スキルのアーキテクチャ
  • アプリの配備
  • Alexa Skillを設定