「Season 2 Alexaスキル開発の基礎を学ぼう」を見ながら実際にコーヒーショップスキルを作ってみる(第一回)

はじめに

「Season 2 Alexaスキル開発の基礎を学ぼう」を見ながら実際にコーヒーショップスキルを作ってみようとしましたが、今回は完成まで進まなかったので、理解したところまでを書きます。

やってみたこと

動画を見る

  • Alexa道場 Season 2の動画を見る(途中まで)
    • このSeason 2のゴールは「カスタムスキル、対話モデル、インテントを理解して、ASK SDKでコーヒーショップスキルを作る」ことである
    • Alexaスキルとは、Alexaの機能を拡張するアプリケーションプログラムである
      • Alexaスキルストアからインストールする
    • Alexa Skill Kitを利用して、無料でAlexaスキルを作成することができる
      • 作成したスキルは必ずしもストアに公開する必要はない。
    • Alexaの仕組みはこのようになっている
      • 利用者がAlexaに向かって話しかける。
      • ウェイクワードを検出し、要求部分を認識して録音する
      • 「東京の天気を教えて」の部分を録音データとしてAlexaのクラウドに転送
      • クラウドのAlexaサーバでASR(自動音声認識)が動作し、録音データ→テキストデータに変換
      • 変換したデータをNLU(自然言語理解)処理へインプットする。
      • NLUでテキスト→キーワードを抜き出す。
        • 「東京」「天気」「教えて」みたいに。
      • リクエストをアプリサーバのエンドポイントに送る。入力には目的に応じたものを入れる。例えば天気を出すのに必要な「東京」のようなもの
      • アプリサーバで必要な処理を行う。例えば天気なら「東京」の天気情報を取得する
      • アプリサーバからレスポンスをAlexaサーバに送り返す
        • レスポンスは文字列だったり、画像だったり、音声だったりする
      • Alexaサーバ側で、アプリサーバから受け取ったものをAlexaアプリに送る
      • Alexaが利用者に対して結果を話す
      • 具体的なHTTPリクエストの仕様についてはドキュメントを参照
  • スキルの種類
    • 2019年2月時点では、3種類あるとのことだったが、2021/9/28時点では4種類あるようだ
      • カスタム
        • 汎用スキル
      • フラッシュブリーフィング
        • 予め登録したニュースを読み上げるスキル
      • スマートホーム
        • スマート家電をコントロールするスキル
  • カスタムスキルの場合には、呼び出し名を決める必要がある
  • カスタムスキルの作り方
  • 対話モデルの作り方
    • 対話モデルとは、アプリサーバに適切なインテントをリクエストする仕組みのこと
  • インテントとは、アプリサーバに送る内容のこと。つまり、「スキルが処理できるリクエスト」のこと
  • ユーザが話すフレーズのことを「サンプル発話」という
    • 例えば、「コーヒーを注文して」「コーヒー」「ヘルプ」「ストップ」
  • 「コーヒーを注文して」「コーヒー」「ヘルプ」「ストップ」などを話すと、それぞれの「サンプル発話」は、インテントにマッピングされる
  • インテントには標準ビルトインインテントとカスタムインテントがある
  • 「ヘルプ」「ストップ」は標準ビルトインインテントにマッピングされる。
    • なぜなら、Alexaでは、特定のサンプル発話は最初からどのインテントにマッピングするか決められている。
      • 「ヘルプ」:AMAZON.HelpIntent
      • 「ストップ」:AMAZON.StopIntent
      • その他:標準ビルトインインテント | Alexa Skills Kit https://developer.amazon.com/ja-JP/docs/alexa/custom-skills/standard-built-in-intents.html
  • 「コーヒーを注文して」「コーヒー」はカスタムインテントにマッピングされる
    • なぜなら、それらは、標準ビルトインインテントに含まれないから
  • どのサンプル発話をどのカスタムインテントにマッピングするかは、事前に定義が必要になる
  • 例1
    • サンプル発話:「コーヒーを注文して」「コーヒー」
    • インテント名:OrderIntent
  • 例2
    • サンプル発話:「オススメは何?」
    • インテント名:RecommendIntent
  • 整理すると、4つのユーザ/デバイスがある
    • 利用者
    • Alexa
    • Alexaクラウド
    • アプリサーバ
  • また、6つの処理がある
    • 利用者→Alexaに音声を送る
    • Alexa→Alexaクラウドに音声を送る
    • Alexaクラウドで音声→テキストに変換
    • Alexaクラウドでテキスト→インテントに変換
    • Alexaクラウド→アプリサーバにインテントを送る

最後に

サンプル発話、インテントなどの用語と、どの部分で、どうデータが送られて、何が処理されているのかが初心者には難しい。

ただ、ここを完全に理解する前に、ざっくりと内容を把握して先に進んでしまったほうが効率がよさそう。

参考

  • Alexa Skills Kit: Webinars https://developer.amazon.com/ja-JP/alexa/alexa-skills-kit/get-deeper/webinars