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用)
テストツールの紹介
- Echosim.io(https://echosim.io/)
テストツールの紹介
- 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設計:スキル呼び出し名
ユーザ発話から、スキル呼び出し名 を決定。
ユーザー:「アレクサ、<新幹線予約>を開いて。」
---------
<スキル呼び出し名>
インテント指定なしの初回起動は、
'LaunchRequest' が呼ばれるっぺ。
VUI設計:Intent & Slot
ユーザ発話から、Intent と Slot を抽出する。
ユーザー:「<今日>の<15>時。」
---- ---
<slot> <slot>
AMAZON.DATE と AMAZON.NUMBERが使えるっぺ。
Intent名は、DateAndTimeIntent にすっぺ!
サンプル発話は、以下でいけそうだべ。
DateAndTimeIntent {DATE} の {TIME} 時
VUI設計:Intent & Slot
ユーザ発話から、Intent と Slot を抽出する。
ユーザー:「<自由席>でお願い。」
-----
<slot>
ビルトインは使えない、カスタムスロットだべ。
LIST_OF_SEATスロットを定義して、
値に「自由席」と「指定席」を入れるべ。
Intent名は、SeatIntent にすっぺ!
サンプル発話は、以下でいけそうだべ。
SeatIntent {SEAT} でお願い
VUI設計:Intent & Slot
ユーザ発話から、Intent と Slot を抽出する。
ユーザー:「<はい>。」
----
これはAMAZON.YesIntentだべ。
Slot定義は不要だべさ。
サンプル発話には、以下もついかすっぺ。
AMAZON.YesIntent 購入します
14. 設計例
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"
}
]
}
カスタムスロットの設計例
自由席
指定席
サンプル発話の設計例
ユーザ発話しそうな可能性を、全て列挙する。
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スキル作り、してみましょう!!