Edited at

Alexaスキル 入門 & VUI 設計


1. はじめに



自己紹介


  • 所属

    独立系SIer 先端技術事業部(2000年入社)


  • 業務

    Alexaスキル開発&Googleアシスタント開発


  • TAKAHIRO NISHIZONO

    @zono_0




profile image


  • アイコンかえました。(お知らせ)



個人で開発したAlexaスキルの紹介



個人で開発したGoogleHomeアプリ



このスライドを見てできること


  • Amazon Echoが理解できる。

  • Amazon Alexaが理解できる。

  • Alexaスキル開発の基本が理解できる。

  • AlexaスキルのVUI設計が理解できる。

VUI:ボイスユーザインターフェース

→いけてるトークのこと。



2. Amazon Echoについて



Amazon Echoとは


  • Amazon が開発したスマートスピーカ。

  • Amazon が所有する人工知能「Alexa(アレクサ)」を利用し、音声を認識して色々な操作を事項できる「音声認識ユーザインターフェース」。



Amazon Echo & Echo Dot



Amazon Echoの使い方


  • Amazon Echoに対して話しかけるだけ。


トーク(サンプル)

ユーザー:「アレクサ、今日の天気は?」

アレクサ:「〇〇の現在の天気は晴れで、摂氏20度です。」



Amazon Echoの特徴


  • 音声発話に対するレスポンスは1秒以内のこだわり。(byジェフ・ベゾフ氏)


  • 7つのマイクで、音声を正確にひろうことができる。

  • 未来のUIはタッチから音声の時代になる?


  • スマートホームハブの役割を果たす。



Amazon Echoで出来ること


  • 天気、ニュース、スポーツの読み上げ

  • 音楽、ラジオの再生

  • ショッピング

  • デバイスの操作(ライト、テレビ)


  • カスタムスキルの実行(音声アプリ)

  • タイマー(神機能!)



Echo 姉妹製品


  • Amazon Echo Dot 小型($50)

  • Amazon Echo Spot モニタ付き($130)

  • Amazon Tap 屋外用($139.99)

  • Amazon Echo Look カメラ付き($199)

  • Amazon Echo Show モニタ付き($230)



Echo 姉妹製品



類似製品


  • Google Home($130)

  • LINE WAVE(14,000円)

  • Apple HomePod($349)

  • Microsoft Harman Kardon Invoke($199.95)



3. Amazon Alexaについて



Amazon Alexaとは


  • Amazonが提供するクラウドベースの音声認識サービス。

  • 音声Requestは、Alexaに送信され、テキスト変換後、Alexa Skill(AWS Lambda)で処理され、Response結果を音声で応答します。



音声処理の流れ



4. Alexaスキルについて



Alexaスキルとは


  • Alexaが音声から変換したテキスト情報(JSON Request)を処理して応答(JSON Response)する音声プログラム。

  • 一般的に音声プログラムは、AWS Lambda Functionに実装される。



Alexaスキルストアとは


  • Alexaスキルの入手場所。

  • スマホのAlexaアプリからAlexaスキルを入手。

  • Alexaスキルは、スキルを「有効」にすることで利用できるようになる。

  • Alexaスキルには、「アカウントリンク」と呼ばれる個人情報登録が必要なものもある。



5. Alexaスキルの開発について



開発対象


  • 開発対象は、AlexaスキルとLambda部分



6. Amazon Developer Portalについて



Amazon Developer Portalでの開発


  • Alexa Skills Kit(ASK)

    →Alexaスキル(音声アプリ)が作れます。


  • Alexa Voice Service(AVS)

    →独自のスマートスピーカが作れます。

    →Raspberry PiでAVSを利用するとか。




Alexa Skills Kit(ASK)とは

主に3種類のAlexaスキルが作成できる。

- Custom Skills(一般的な音声スキル)

- Smart Home Skills(家電操作のスキル)

- Flash Brifing Skills(ニュース読み上げスキル)



参考:Amazon Developer Portal


  • 開発画面イメージ



7. AWS Lambdaについて



AWS Lambdaでの開発



  • AWS Lambdaで、音声プログラムを開発。

  • Node.js(Javascript)、Pythonが利用可。

  • Lambda関数には、Amazon リソースネーム(ARN)が付与され、一意に識別される。

  • Amazon Developer Portal側でエンドポイントにARNを設定することで、Alexaスキルから、どのLambda関数を呼び出すかを設定。



エンドポイントとARN



参考:AWS Lambda


  • 開発画面イメージ



8. テスト方法について



Alexaスキルのテスト方法とは


  • Echoデバイス実機テスト


  • Amazon Developer Portal内のテストシミュレータ(優秀、実機がなくてもスキル申請までもっていける)


  • Reverb(スマホiOSで日本語がつかえたー!)

  • Echosim.io(今はもう使わないかも)



テストツールの紹介


  • ADP内のテストシミュレータ(神ツール)



テストツールの紹介


  • ADP内のサービスシミュレータ(Intent用)



テストツールの紹介



テストツールの紹介


  • Reverb(iOS、Androidアプリ。iOS版は日本語Alexaが使えておすすめ。)



9. 必要な知識について



スキル呼び出し


スキル呼び出し

ユーザー:「アレクサ、ピカチュウトーク を 開いて。」

------- -------------- ------
<wake word> <skill name> <launch phrase>


  • 起動フレーズ(launch)は、起動して。実行して。スタートして。なども使える。

  • 接続詞「で」の使用は原則禁止らしい。



スロット(会話中のキーワード)


スロット

アレクサ:「ご利用の日付と時間をお知らせください。」

ユーザー:「<今日>の<15>時。」
----- --
<slot> <slot>


  • <今日>は、AMAZON.DATE スロット

  • <15>は、AMAZON.NUMBER スロット



インテント(ユーザのお願いごと)


インテント

ユーザー:「ニュースを聞かせて。」

-----------------
<Intent>:例えば、NewsIntent

ユーザー:「運勢を占って。」
-----------
<Intent>:例えば、FortuneIntent




インテントとスロット


インテント&スロット

ユーザー:「<今日>のニュースを聞かせて。」

----- -----------------
<slot> <Intent>:NewsIntent



  • NewsIntentに、AMAZON.DATEスロットが、ひもづく関係。



サンプル発話(呼び出しフレーズ)


サンプル発話

ユーザー:「ニュースを聞かせて。」

ユーザー:「ニュースを知りたい。」
ユーザー:「ニュースを読んで。」
ユーザー:「ニュース!!」
全て、NewsIntent の呼び出しフレーズとなる。



  • 人が言いそうな発話パターンを洗い出し、あらかじめサンプル発話として登録する。



10. 開発用語



開発用語


  • Skill name(スキル名)

  • Invocation Name(スキル呼び出し名)

  • Intent Schema(インテントの定義)

  • Intent(インテント:人間の「意図」)

  • Slot(スロット:変数みたいなもの)

  • Sample Utterances(サンプル発話:インテント呼び出しフレーズ)

  • Endpoint(エンドポイント Lambda のARN)



11. ビルトイン(標準機能)



便利なビルトインインテント

サンプル発話登録不要、標準で使える、ビルトインインテント



  • AMAZON.YesIntent ・・・「はい。/オッケー。/いいよ。」


  • AMAZON.NoIntent ・・・「いいえ。/ノー。」



必須のビルトインインテント

Amazon様仕様により必須となるインテント。



  • AMAZON.CancelIntent ・・・「キャンセル。/取り消し。/やっぱりやめる。」


  • AMAZON.StopIntent ・・・「ストップ。/止めて。/中止。」


  • AMAZON.HelpIntent ・・・「ヘルプ。/どうすればいいの。/使い方を教えて。」



便利なビルトインスロット

スロット登録不要、標準で使える、ビルトインスロット



  • AMAZON.DATE、AMAZON.TIME、AMAZON.NUMBERなど

→Amazonが用意したスロット登録済み用語

→音声認識精度が高く、Good!



12. リクエストとインテント



リクエストの種類

基本のリクエストは、3つ。


  • 'LaunchRequest' ・・・インテント無し起動

  • 'IntentRequest' ・・・インテント指定発話

  • 'SessionEndedRequest' ・・・予期せぬ終了



IntentRequestの種類

IntentRequestには、子供Intentがいる。


  • 必須インテント3兄弟(CancelIntent、StopIntent、HelpIntent)

  • はい/いいえ姉妹(YesIntent、NoIntent)

  • ユーザ定義(NewsIntent、FortuneIntent)



13. VUI音声設計について



VUI設計:トークシナリオ(例)


トークシナリオ(例)

ユーザー:「アレクサ、<新幹線予約>を開いて。」

アレクサ:「新幹線予約へようこそ、このスキルでは新幹線
      チケットをご購入いただけます。ご利用の日付
      と時間をお知らせください。」
ユーザー:「<今日>の<15>時。」
アレクサ:「<〇月〇日>、<15>時ですね、自由席か指定席の
      どちらになさいますか?」
ユーザー:「<自由席>でお願い。」
アレクサ:「<自由席>ですね、購入しますか?」
ユーザー:「<はい>。」
アレクサ:「チケット購入を確定しました、ご利用ありがとうございます。」




VUI設計:スキル呼び出し名

ユーザ発話から、スキル呼び出し名 を決定。


VUI設計解説

ユーザー:「アレクサ、<新幹線予約>を開いて。」

---------
<スキル呼び出し名>

インテント指定なしの初回起動は、
'LaunchRequest' が呼ばれるっぺ。




VUI設計:Intent & Slot

ユーザ発話から、Intent と Slot を抽出する。


VUI設計解説

ユーザー:「<今日>の<15>時。」

---- ---
<slot> <slot>
AMAZON.DATE と AMAZON.NUMBERが使えるっぺ。

Intent名は、DateAndTimeIntent にすっぺ!
サンプル発話は、以下でいけそうだべ。
DateAndTimeIntent {DATE} の {TIME} 時




VUI設計:Intent & Slot

ユーザ発話から、Intent と Slot を抽出する。


VUI設計解説

ユーザー:「<自由席>でお願い。」

-----
<slot>
ビルトインは使えない、カスタムスロットだべ。
LIST_OF_SEATスロットを定義して、
値に「自由席」と「指定席」を入れるべ。
Intent名は、SeatIntent にすっぺ!
サンプル発話は、以下でいけそうだべ。
SeatIntent {SEAT} でお願い



VUI設計:Intent & Slot

ユーザ発話から、Intent と Slot を抽出する。


VUI設計解説

ユーザー:「<はい>。」

----
これはAMAZON.YesIntentだべ。
Slot定義は不要だべさ。

サンプル発話には、以下もついかすっぺ。
AMAZON.YesIntent 購入します




14. 設計例



IntentSchema.jsonの設計例


IntentSchema.json

{

"intents": [
{
"slots": [
{
"name": "DATE",
"type": "AMAZON.DATE"
},
{
"name": "TIME",
"type": "AMAZON.TIME"
}
],
"intent": "DateAndTimeIntent"
},
{
"slots": [
{
"name": "SEAT",
"type": "LIST_OF_SEAT"
},
],
"intent": "SeatIntent"
},
{
"intent": "AMAZON.YesIntent"
},
{
"intent": "AMAZON.NoIntent"
},
{
"intent": "AMAZON.CancelIntent"
},
{
"intent": "AMAZON.StopIntent"
},
{
"intent": "AMAZON.HelpIntent"
}
]
}



カスタムスロットの設計例


LIST_OF_SEAT.txt

自由席

指定席



サンプル発話の設計例

ユーザ発話しそうな可能性を、全て列挙する。


Utterances.txt

DateAndTimeIntent {DATE} の {TIME} 時 

SeatIntent {SEAT} でお願い
AMAZON.YesIntent 購入します
DateAndTimeIntent {DATE}
DateAndTimeIntent {TIME}
DateAndTimeIntent {TIME} 時 {DATE} で
AMAZON.HelpIntent 使い方を教えて
AMAZON.HelpIntent 使い方教えて
AMAZON.HelpIntent 使い方



15. おまけ



スマートスピーカをいますぐ体験


  • iOS(iPhone、iPad)の方は、アプリ「Reverb」と「Alexaスキル」をインストールすると、日本語Alexaが使えます。

  • iOS & Android(スマホ、タブレット)の方は、アプリ「Googleアシスタント」をインストールすると、日本語Googleアシスタントが使えます。



16. まとめ



Alexaスキル開発でおこなうこと



  • Amazon Developer Portalを用いて、Alexaスキルの設定&登録をおこなう。


  • スキル名、スキル呼び出し名、インテント、スロット、サンプル発話等を定義。


  • AWS Lambdaを用いて、定義に沿った音声プログラムを作成する。



さらなる高みへ


  • Amazon Developer PortalのVUI設計としてはこれで十分。

  • ただし、Lambda Function側では、状態遷移(state)を制御しないと、真のトーク上手にはなれない。。。

  • まずは、状態遷移が不要なショートトークのAlexaスキルで、トークの極意を磨くのじゃ!



17. おわりに



おわりに

いかがでしたでしょうか?

いけてるVUI設計が、できそうですか?

いけてなくてもいいので、

まずは、Alexaスキル作り、してみましょう!!



ご視聴ありがとうございました。