Help us understand the problem. What is going on with this article?

AWS 認定 Alexa スキルビルダー取得にむけて、全然わからんので用語を整理してみる

はじめに

AWS認定資格としてAWS 認定 Alexa スキルビルダーが気がつけば追加されていた。
Amazon Lexならともかく、AlexaってAWSの仲間なの? 的な疑問はさておき、AWSなのにBlackbeltに説明もなく仕様も良くわからん。というのが正直なところ。
資格取得はまあ置いといて、とりあえずカスタムスキルの概略まで頑張って理解した時のメモ。

アカウント管理

AWSな人たちが触れる最初の壁。
Alexa開発視点でまとめると、こうなる?

  • AWS 開発者コンソール(Amazon Developer)
    • 2019.11現在「Alexa Skills Kit(ASK)」「Alexa Voice Service(AVS)」の開発に対応。
    • ASKがAlexaスキルの設定の要となるもの。
    • AVSは今回は省略。
  • AWSアカウント
    • (AWS使いには)おなじみアカウント
    • Alexaスキルのバックエンドのリソースを構築・設定するところ。
      • 基本はAWS Lambda、EC2/Fargate等でいい感じに処理すればOK。
      • AlexaとJSONの受け渡しが出来れば、ぶっちゃけHerokuとかでもOK。
        • もういよいよAWSじゃないじゃん

Alexaスキル

Alexaのスキルは大きく分けて、下記の3つが代表的。

  • スマートホームスキル
    • 対応機器を操作する為のAlexaスキル
    • 要は、声でのリモコン操作
    • スキル名(呼び出し名)を言わなくても使える
    • 例:テレビつけて、今日の天気は?
  • フラッシュブリーフィングスキル
    • 在りもののコンテンツを読み上げ/再生する為のAlexaスキル
    • RSSをAlexaに読み上げさせたり、音声を再生したり?
  • カスタムスキル
    • バックエンドにAWS LambdaやWEBサーバなどの処理部分を開発者が用意し、柔軟な動作をするAlexaスキル。
    • Alexaスキルを作りこみたい時は、コレ!
    • Alexa スキルビルダー対策としてはこの辺の知識が必要なのかな。

カスタムスキルの利用例

カスタムスキル周りでは用語がたくさん出てくるが、用語の示す概念を理解するのが難しい。
実例に即して理解を試みたい。結果としてごちゃついたが……

  • ユーザーが「アレクサ俺の寿司予約くん起動してマグロづくしセット注文して。」とAlexa対応デバイス(Echo)に話しかける
    • アレクサ = ウェイクワード
      • Alexaを起動させるためのワード。いわゆる「鏡よ鏡」。
    • 起動して = 起動フレーズ
      • Alexaスキルを起動させるためのワード。後述するスロットや注文フレーズが決まってなくても、起動フレーズさえあればとりあえずAlexaスキルは動く。
  • Echoがデバイス内のAlexaに音声を渡す。
    • Alexaは文脈を解析し、呼び出し名呼び出しフレーズスロットを抽出する。
      • 俺の寿司予約くん = 呼び出し名
        • Alexaスキルを呼び出す際の名前。スキル名とは別の概念なので、呼び出し名とスキル名は同じでも別でもいい。
        • この例でもわかる通り、家族・来客等の前で呼べる名前にしましょう。
      • 注文して。 = 呼び出しフレーズ
      • マグロづくしセット = スロット
    • 呼び出し名に対応するカスタムスキルが以下を行う。
      • 呼び出しフレーズに対応するインテント(発話意図)にスロットを渡す。
        • インテントは例えばMySushiReserver-Intentと定義する。
      • (インテントの)呼び出しフレーズ:例えば予約するんだ注文してと定義する。
        • この設定の場合、呼び出しフレーズ外の内容を言ってもインテントは呼び出されない
          • OK例:「マグロづくしセットを予約するんだ」「マグロづくしセットを注文して
          • NG例:「マグロづくしセットを注文するんだ」「マグロづくしセットを頼んで
    • インテントのインテントスキーマ(対話シナリオの定義のようなもの)に、以下を設定する。
      • 標準ビルトインインテント
        • ストップ、キャンセル、ヘルプなどの一般的なアクション。
        • スロットは一部()を除いて非対応。
          • 一部=AMAZON.SelectIntent等。スロットの変更は不可。
      • カスタムインテント
        • スロットを引数として、バックエンドプログラムの関数(dialogue関数?)を呼び出すアクション。
          • スロットは名前、タイプ(型)を指定する。
          • 定義するのが面倒ならカスタムスロット設定することで、定義していない言葉をいい感じにスロット化する。
          • ただ、カスタムスロットはファジーな作りなのでAmazon的には非推奨っぽい?オウム返しスキルとか有名ですが…
  • カスタムインテントではAlexaから受け取ったJSONを、Lambda等のバックエンドが処理。レスポンスをAlexaへJSONで渡す。

    • バックエンドの詳細は割愛。
  • インテントスキーマに沿ってAlexaが発話する。

ざっくりこんな感じ、カスタムスキルは絵で描かないと大変ね。

おまけ

  • 個人的に用語が混在しやすいと感じた箇所にも簡単に触れる。
    • スキル名呼び出し名
      • 前者はスキルの名前。カスタムスキルを公開する時に、この名前で公開される。
      • 後者はスキルを呼び出す時の名称。
    • インテント周り
      • インテントのインテントスキーマには標準ビルドインインテントやダイアログインテントを設定する。と書いて一発でわかる人は大丈夫。
      • 英語苦手な人には正直ハードル高いと思う。
  • ちなみに公式はBlackbeltではなく、こちらこちらなので、私もあなたも、お互いしっかり読みましょう。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away