Alexaのスキルを開発する ~その1~ スキルの作成(Amazon Developer Console)※この記事には最新版があります※

こちらは古い記事です。最新版はこちら

先日ようやく招待が届いて購入できたEcho Dot。スキルを自分で開発したい、というのが一番の目的だったので勉強を兼ねて早速スキルを作ってみました。

”アレクサ、計算開いて1プラス2は”と問いかけると”3”と答えてくれる計算スキルです。Alexaは標準で計算のスキルを持っているので必要ないのですが、あくまでもスキル開発の勉強ということで…

スキルの処理の流れ

スキルの処理の流れですが、

  1. ユーザーがEchoに話しかける
  2. Echoが音声データをAmazon Alexaサービスに送る
  3. Alexaが文章を解析、どのスキル・処理が呼び出されたのか判断して該当のスキル・処理を呼び出す
  4. 呼び出されたプログラムが処理を行い、結果を返す

という流れになります。

スキル開発者が作るのはAlexaがどういう言葉を受け取った時に自分のスキルを起動するか、どういうパラメータでどの処理を呼び出すのか、というモデルを定義するところとLambda or HTTPSでの処理の部分です。

今回はAmazon Developer Consoleで前者のモデルの定義の部分を作成します。

Amazon Developer Console

事前準備

スキルを開発するにはAmazon Developer Consoleのアカウントが必要です。自分のAmazonのアカウントに紐づくことになります。

なお今回はスキルは公開せずに自分のEcho Dotのみでテスト的に使用するのでAmazonアカウントはEcho Dotで使用しているのと同じAmazonアカウントである必要があります。

アカウント作成方法については以下等を参考にしてください。

スキルの対話モデル

スキルを作るにあたって決めておくことがあります。

  • どういう言葉でスキルを起動するか→呼び出し名
  • どういう機能を使うか→インテント(機能)とそれを呼び出す文章(発話サンプル)
  • どういうパラメータを渡すか→スロット

今回の場合、呼び出し名は”計算”、インテントは計算スキルなので四則演算くらいはできるようにしたいですがまずは足し算のみ、スロットは数値2つ(〇+〇)、で作成していきます。

”開いて”の部分は使える言葉が決まっているのですが以下に詳しく説明があります。

最初は”アレクサ、計算開いて〇足す〇”で作ってたんですが、どうも聞き間違いが多くて…”アレクサ1足す2”というと何故か1の頭に”万”という言葉がくっついて”万一”になって(スマホのAlexaアプリで確認)、それが”10000”と認識されて、”10002”って答えが返ってきました。

しょうがないので”足す”をやめて”プラス”にしたら、ましになりました。音声認識はまだまだ改善の余地があるんでしょうね…

追記:
結局”プラス”でも誤認識が多いです。今度呼び出し名変えて試してみます。

スキルを作成する

Amazon Developer Consoleにログインして”ALEXA”のタブを選択します。

今回作るのはスキルなので”Alexa Skills Kit”を選択します。もうひとつの”Alexa Voice Service”は自分で作った機器にAlexaを搭載するために使用するので今回は関係ありません。

”新しいスキルを追加する”を押して次の画面に進みます。

スキルの種類は”カスタム対話モデル”、言語は”Japanese”、スキル名は”計算”、呼び出し名は”計算”にしました。”アレクサ、計算を開いて”と話しかけるとこの計算スキルが起動されるようになります。

画面下にある”保存”を押して次に進みます。

”次へ”を押して進みます。

”スキルビルダーを起動する”を押してスキルビルダー画面に進みます。

まずはインテントを作成します。”Intents”の横にある”Add+”を押します。

インテント名”Addition”と入力して”Create Intent”ボタンを押します。

”Sample Utterances”に”{one} プラス {two}”と入力して右にある”+”を押します。

この”Sample Utterances”が実際にユーザーが声で話しかける部分になります。{one}と{two}が引数、”スロット”です。処理するプログラムにパラメータとして渡されます。スロットの前後には半角のスペースを入れてください。

次に各スロットの属性をセットします。

まずは”one”を選択し、以下のようにセットします。

  • ”Slot Type” … ”AMAZON.NUMBER”
  • ”Slot filling” … ”YES”
  • ”Prompts” … ”一番目の数を言ってください。”

Promptsに入力した後は忘れずに右の”+”を押してください。

”Slot Type”はスロットの型を指定します。数値なのでデフォルトで用意されているAMAZON.NUMBER型を選択しました。

必須項目なので”Slot filling”を”YES”にしています。

”Prompts”ではユーザーが{one}を指定しなかった場合に、ここに書かれた文章でAlexaがユーザーに質問してきます。”Prompts”は”Slot filling”が”YES”の場合は必須項目です。

”two”も同じようにセットします。”Prompts”のみ”二番目の数を言ってください。”に変えてあります。

入力が完了したら”Save Model”を押して保存します。

保存が完了すると右上にメッセージが出ます。

次にビルドします。画面上の”Build Model”を押します。

少し時間がかかるよ、とメッセージが出ます。

しばらく待つと完了のメッセージです。

次に”Configuration”を押します。

このスキルが呼び出されたら、どの処理を呼び出すかを指定します。

指定先にはAWS Lambdaか任意のHTTPSのアドレスを指定できるのですが…

今はまだ処理を作ってないのでAmazon Developer Console側は一旦ここで離れて、次はAWS Lambdaで実際の処理を作成していきます。

Labmda側を作成したらAmazon Developer Consoleに戻り、設定画面でARNを貼り付け、”Next”を押します。

これでスキルの作成は完了です。