batoo3の備忘録

プログラミング学習のアウトプットをぼちぼち

Alexaスキル「ピアノドレミ」作成時に学んだこと!

ピアノドレミ

6月からちまちま作成をはじめ、8月に個人で初めて公開できたのが「ピアノドレミ」というAlexaスキル。ピアノで何の音が鳴ったかを当てるゲームです。

Alexaスキル ピアノドレミ

https://www.amazon.co.jp/dp/B07G89FYYJ

 

昨年12月にAlexaハンズオンに参加し、スキルの大体の作成方法は学習済み。しかし、それも今は昔の話。すでにAlexa Skills Kit SDK for Node.js(Ver2)が出てきていたため、新しい書き方になれることをメインの目標としてスキルの作成を開始したわけです。

 

今回は、その際に学んだことをまとめてみました。

 

Alexa Skills Kit SDK for Node.js(Ver2)を用意する

まだVer1しかなかった頃は、AWS Lambdaに用意されたテンプレートを使うことで簡単に関数のひな形を作成できていたのですが…。Ver2はテンプレートにはないため、手動で作成してあげなければ。

ASK SDKのセットアップ — ASK SDK for Node.js ドキュメント

 

npmを使うには?

正直な話、npmモジュールとしてインストールとか言われてもわかんないぜ!ということで探していくと、Node.jsをインストールすればnpmコマンドが叩けることが発覚。

npmコマンドをたたくことで、とりあえず必要なパッケージが落ちてきました。もちろん、ローカルに自分で作成したフォルダに。

 

Lambdaにアップロード

このパッケージをスキルで利用するには、発話を受け取るエンドポイントとなるサーバーに移動させないとしょうがない…。何とか本番環境となるLambdaに移動させる方法を探すことに。

 

これは簡単な話でLambda側で関数を作成したあと、zipで固めてアップロードするのが正解でした。

 

ここまでの初動、Visual Studio CodeというエディタとかASK-CLI?ってのを使うと楽になりそうな感じですね。これは次回のスキル作成までに学んでいこうかなと考えてます。(ちょうど、このエントリー書いた次のAlexa道場がASK-CLIの回だったはず。)

 

音を出したい!

Alexaスキルの基本は、会話のキャッチボールを行うことが肝要。ただ今回のスキルを作るにあたっては、加えて何か音を鳴らそうと考えていました。audioタグを用いてmp3を鳴らせることが分かったので、すぐに試してみたのですが…。

 

残念なことに、最初に用意したmp3音源は全く音が鳴りませんでした。

 

mp3ファイルのフォーマットやサイズ等に注意

音が鳴らなかった理由は、Alexaで読み込めるファイルフォーマットではなかったことが理由。正しいフォーマットやサイズにするためには、FFmpegを利用して変換する必要がありました。

正しいフォーマットにすると、それまでが嘘かのように音が鳴るからびっくりですよね。

 

あとがき

今回学んだことはこんな感じです! 

リリース申請の際は、インテントの発話例が不足・重複してるなどの小さなミスだけだったので修正は容易でした。とりあえずはこんな感じで、初めてのリリース完了したというところです。

 

スキル次回作は今のところ未定。思いつき次第ってことで。直近ではAVS(Alexa Voice Service)をラズパイに入れるチャレンジ、Androidアプリ作成方法を思い出す(むしろ新しく開発言語に採用され、iOSにも流用できそうなKotlinを勉強する)方針。