Alexa Skills Kitでしりとりスキルを作ってみる①:アカウント作成~対話モデル設定

はじめに

こんにちは。データサイエンスチームのmotchieです。
Amazon Echoシリーズの日本語対応が発表されてから1ヶ月が経ちました。
当チームではまだまだ「招待メールが来ない泣」「来る気配すらない」といった報告が飛び交っていますが、みなさんのお手元にはもう届きましたでしょうか。
Alexaデバイスでは、スキルという形で好きな機能を追加していくことができ、また開発者はAlexa Skills Kitを使って様々なスキルを簡単に作ることが出来ます。
この記事では、Alexa Skills Kitでスキルを作る手順を見ていきましょう。実際に、アレクサと簡単なしりとりが楽しめるスキルを作ってみます。
今回は①として、必要なアカウント作成、スキルの作成、対話モデルの設定まで行ってみます。
Lambda関数の設定からスキルのテストまでの手順は、こちらの記事をご覧ください。
Alexa Skills Kitでしりとりスキルを作ってみる②:Lambda関数の設定~テスト
この記事は、NHN テコラス DATAHOTEL:確率統計・機械学習・ビッグデータを語る Advent Calendar 2017 15日目の記事です。

Alexa Skills Kitとは

  • Alexa Skills Kitを使うことで、様々なスキルを簡単に作成できます。照明を操作するスマートホームスキルから、クイズゲームが楽しめるスキルまで、自由自在です。
    スキルの種類は、カスタムスキル、スマートホームスキル、フラッシュブリーフィングスキルの3つに分けられています。
  • ゲームなど汎用スキルはカスタムスキルとして作成します。カスタムスキルでは、カスタム対話モデルを通じて、アレクサとの会話を細かく設定することが出来ます。
  • この記事では、しりとりスキル作りを通じて、カスタムスキル作成の手順を見ていきます。

「しりとりスキル」のイメージ

さっそくスキルを作っていきましょう

1. アカウントの作成

Amazon DeveloperアカウントAWSアカウントの作成が必要です。

1.1 Amazon Developperアカウント作成

Amazon開発者コンソールを開き、右上の「サインイン」をクリックします。
Alexa日本語版リリースに伴い、Amazon.co.jpのアカウントで開発者アカウントに登録できるようになりました。Echoで使いたいAmazonアカウントでサインインし、開発者登録を行います。
「Amazon Developerアカウントを作成」を選択すると、Amazon.comのアカウントが作成され、開発者アカウントに登録されます。Amazon.co.jpのアカウントとAmazon.comのアカウントは別物なので注意してください。Echoで使うAmazonアカウントとAlexaスキルを開発しているAmazonアカウントが異なる場合、開発者コンソールでテストを有効にしてもスキルが認識されません。

1.2 AWSアカウント作成

AWSアカウント作成の流れのサイトの手順に従い作成します。

2. スキルの作成


Alexa Skills Kit – Build for Voice with Amazon – Amazon Developer
Alexa Skills Kitのページを開き、「スキル開発を始める」をクリックします。Amazon Developerアカウントを使ってログインします。

2.1 スキル情報の設定


スキル情報のタブでは以下の値を入力し、ページ下部の「保存」をクリックします。

スキルの種類 言語 スキル名 呼び出し名
カスタム対話モデル Japanese しりとりスキル しりとりスキル

保存完了すると「次へ」ボタンが現れるので、クリックして対話モデルのタブに移ります。

2.2 対話モデルの設定


対話モデルのタブでは、「Skill Builderを起動する(ベータ)」をクリックします。
例えば、アレクサがユーザーに足りない情報を尋ねる必要があるスキルなど、複数回にまたがる会話を設計するためには、スキルビルダーを使ってダイアログモデルを生成していきます。

2.2.1 インテント・スロットの設定


Intentを追加します。アレクサは、ユーザーの発話内容に対応するインテントを呼び出すことで、ユーザーが意図した処理を実行します。例えば、「スキルを止めて」といった内容の発話が入力されると、アレクサはAMAZON.StopIntentを呼び出し、それに紐付いた処理を行うことで、スキルを停止させます。
ユーザーから単語を受け取って次の単語を返す、というしりとり処理のインテントを作成しましょう。左側のIntentのタブを開き、ADDをクリックします。インテント名としてSiritoriIntent入力し、「Create Intent」ボタンをクリックしてカスタムインテントを作成します。

発話例
しりとり
答えは {SiritoriWord}
じゃあ {SiritoriWord}
次は {SiritoriWord}

しりとり処理のインテントを呼び出す発話例を設定しましょう。SiritoriIntentは、ユーザーから与えられるこれらの発話に反応して起動します。Sample Utterancesに上の発話例を一つずつ追加していきます。
{}で囲まれた要素はスロットと呼ばれ、インテントによって呼ばれる後続の処理に渡したい値を指定します。
例えば、「答えはリンゴ」とユーザーが言った場合、アレクサは「リンゴ」という情報が{SiritoriWord}というスロットの値だと認識して値を保持してくれるので、Lambda内で取得して使うことが出来ます。
スロットと文字の間({SiritoriWord}の前後)には半角スペースが必要です。半角スペースがない場合、ビルド時にエラーになります。
右側のIntent SlotsタブのREQにチェックを入れて、ペンマークをクリックしてダイアログモデルの設定を行います。

2.2.2 ダイアログモデルの設定

ダイアログモデルは、必要なスロットの値が足りない場合や、認識したスロットの値が正しいものか確認する用途等で使われます。
例えば、飛行機の予約スキルでは, 出発地{fromCity}と到着地{toCity}のスロット値が必要なため、値が足りない場合には予約処理に行かずに再度スロット値を尋ねる、といった対話をダイアログモデルで設定することが出来ます。

Dialog Modelの設定では、Slot fillingYESになっていることを確認します。Promptsに何も設定しないとビルドに失敗するため、「次の単語を入力してください」という発話例を追加します。

2.2.3 スロットタイプの設定

スロットにはスロットタイプを割り当てる必要があります。それにより、スロットが取り得る値をある程度コントロール出来ます。
日付(AMAZON.DATE)や人の名前(AMAZON.FirstName)など、あらかじめ用意されたビルトインスロットタイプを使うことも出来ますが、用途に合うスロットタイプがない場合等は、独自にカスタムスロットタイプを作成して使うことになります。今回は、しりとりで使われる単語用のカスタムスロットタイプを作成します。

SiritoriIntentのIntent Slotsが右側に表示されています。「choose a slot type」をクリックして設定を開き、スロットタイプ名(SiritoriWordType)を入力し、カスタムスロットタイプを作成します。

左側のSlot Typesタブで作成したスロットタイプを選択します。Slot Valuesの「Enter a new value for this slot type」に下のスロット値を追加していきます。

value
リンゴ
リス
スイカ
カメ
メダカ
カラス
ゴリラ
ラッパ
パイナップル
メロン

ここで追加した値は、アレクサが{SiritoriWord}のスロット値として認識できる主な単語リストになります。
英語(US)ではAMAZON.LITERALというスロットタイプを使うことで自由な入力単語を受け取れますが、現状AMAZON.LITERALは英語(US)以外では使えないようです。
今回は、スロットタイプの設定の前に力尽きたのでしりとり頻出単語だけに絞って追加してみましたが、Slot Valuesにお好みで単語追加していくことで、アレクサが認識できる単語が増えていき、より多くの単語を使ってしりとりを楽しめるようになります。カスタムスロットタイプの設定については、次回以降の記事で詳しく扱う予定です。
また、注意点としては、カスタムスロットタイプへの入力はリストの値に偏重されますが、リストの項目だけに限られるわけではありません。リストにない値でも認識されることがあります。そのため、リストに含まれない値を受け取った場合でも適切に処理できるコードが必要になります。

2.2.4 モデルの保存とビルド


ここまでの手順が終わったら、画面上部の「Save Model」でモデルを保存、「Build Model」でビルドを行います。

ビルドが成功すれば、上のメッセージが現れます。画面上部の「Configuration」をクリックするとスキルとLambdaの設定画面を開くことができます。

まとめ

この記事では、Alexa Skills Kitによるスキル作成のうち、アカウント作成、スキルの作成、対話モデルの設定までを行いました。
Lambda関数の設定~スキルのテストについては、こちらの記事をご覧ください。
Alexa Skills Kitでしりとりスキルを作ってみる②:Lambda関数の設定~テスト

参考

Alexaスキル開発トレーニングシリーズ 第2回 対話モデルとAlexa SDK
スキルビルダー(ベータ版)によるインテント、スロット、ダイアログの定義
Amazon.comアカウントが優先してAlexaアプリに入れない問題の解決法
Amazon Echo (Alexa) 用に音声対話クイズのスキルを作成してみた
Why a Custom Slot is the Literal Solution: Alexa Blogs- Amazon Developer

AWS移行支援キャンペーン

あなたにおすすめの記事