tshimba’s blog

このサイトの掲載内容は私自身の見解であり、所属する組織とは関係ありません

Alexa の MP3 を再生するスキル開発・申請から認定結果・フィードバックの受信まで

Alexa のスキル開発から申請までをやってみました。 簡単に開発ができ、アプリを Alexa スキルストアで配布するための申請ができます。

今回は申請してみたところ拒否されたのですが、一緒に丁寧なフィードバックも返ってきました。

Alexa スキルとは

Amazon Echo のような Alexa 対応デバイス向けのアプリのことを Alexa スキルといいます。
スキルの作成方法としては、【保存版】開発部長が102時間かけてまとめたAlexaの落とし穴と習得方法という記事が一番よくまとめられています。

qiita.com

基本的な開発の流れは上記記事を読むのが一番わかりやすいですが、プログラムを書いたことがある人であれば、以下の記事中にある動画を見るだけでだいたいイメージが掴めると思います。

開発の流れとしては、Amazon 開発者ポータルでアプリの基本的な情報を設定します。そこで呼び出し先の Lambda 関数を設定しておき、呼び出し後は指定した Lambda 関数内ロジックに処理が移ります。

Lambda 関数のコーディングが不要でスキル開発が不要な Storyline などのサービスがあるようですが、本エントリーでは対象外です。

今回開発するスキル

今回開発するスキルは Pelco the cat (猫のペルコ) です。
「アレクサ、猫のペルコを開いて」というと猫の鳴き声が流れるというだけのアプリです。
※ペルコに関しては Instagram 参照。

www.instagram.com

スキルの開発

今回のアプリのポイントとしては、MP3 音声ファイルの再生です。
Alexa SSML などで検索すると日本語記事もあるかも知れませんが、今回は Adding MP3 Sound to Alexa という記事を参考にしました。

www.apcp.biz

音声ファイルの準備

音声ファイルのダウンロード

まずは MP3 の音声ファイルを準備します。制約としては、長さが90秒以下ということくらいです。
ポケットサウンドというサイトから、猫の鳴き声の MP3 を複数ダウンロードしました。

音声ファイルを FFmpeg で変換

Alexa で使用できる MP3 の周波数などが細かく決められているので、FFmpeg で指定されている設定に MP3 を変換します。

ffmpeg -y -i input.mp3 -ar 16000 -ab 48k -codec:a libmp3lame -ac 1 output.mp3

FFmpeg は音声変換などで昔からよく使用されているもので、インストールされていない場合はインストールしてください。

音声ファイルを S3 にアップロード

S3 に Bucket を作成して、FFmpeg で変換した MP3 ファイルをアップロードします。このとき、誰でもファイルが閲覧できるようにバケットポリシーやオブジェクトの設定をしておきます。アップロードした各 MP3 の URL は Lambda 関数のコーディング時に使用するためメモしておきます。

開発から申請まで

後は【保存版】開発部長が102時間かけてまとめたAlexaの落とし穴と習得方法に紹介されている記事などを参考に作成していきます。

大まかな流れとしては、

  • Amazon 開発者ポータルでアプリの基本的な情報を設定
  • スキル呼び出し後の処理は、上記で設定した Lambda 関数に実装する
  • Lambda関数を作成時に生成されたARNを開発者ポータルの設定画面で入力する

具体的な手順は、AlexaのHelloWorldに当たる Alexa 豆知識スキルがとてもわかりやすいです。この手順に従い、入力項目を適宜作成するアプリに合わせて変更し申請まで行います。

今回は、言語は English (U.S.) と Japanese だけ作成し、申請時も対象は U.S. と Japan を選択しました。

github.com

テストには、上記で紹介されている echosim.io というシミュレータを使用しました。

Lambda 関数の実装

今回使用した Lambda 関数の実装は GitHub にアップしています。

github.com

申請結果・フィードバック

今回申請した結果スキルの申請を拒否されましたが、同時に丁寧なフィードバックももらえました。

フィードバック内容

主なフィードバックは説明文と実装に関してです。
今回はスキルは起動するだけで終わりなので、3つ入力しなければいけない Example phrase の2,3個目を適当に書いていたのですが、これが正しくないと指摘を受けました。
以下のように指摘をもらえます。

Second example phrase:
Actual example phrase: Alexa, where is Pelco the cat?
Expected example phrase: Alexa, start pelco the cat

Third example phrase:
Actual example phrase: Alexa, tell me Pelco the cat's voice
Expected example phrase: Alexa, launch pelco the cat

Please see our documentation for more information about the words included in our supported launch phrases.
Please also see our blogpost for more guidance on creating example phrases.

Open の他に、Start や Launch でもいいそうです。
また、スキル呼び出し時にホームカードにコード参照が表示される点を指摘されました。

SessionSpeechlet - Pelco meow

SessionSpeechlet -

想定される動作については、申請チェックリストのテストケース3.3を参照してください。