>100 Views
February 14, 18
スライド概要
Alexa Day 2018 のセッション資料
https://alexaday2018.jaws-ug.jp/session/271/
クラウドで働くIoTおじさん
Alexa Skills Kitで プロダクトの可能性 を広げる Alexa Day 2018
市川 純 (Jun Ichikawa) @sparkgene Recruit Marketing Partners infrastructure engineer
Alexa関連の活動 https://jawsug-iot.connpass.com/
Alexa関連の活動 http://sparkgene.hatenablog.com/ https://qiita.com/sparkgene Alexa Voice Serviceの記事執筆
Alexa Skills Kitでプロダクトの可能性を広げる ▸Amazon Alexaとは ▹Alexa Skills Kitの基本 ▸プロダクトのスキル開発 ▹VUIの設計 ▹開発 ▹運用
Amazon Alexaとは
Alexa Voice Service(AVS)は デバイスからAlexaを簡単に利用する為の ▸API群 ▸ドキュメントリソース ▸SDK ▸ハードウエアデベロップメントキット
AVSを利用したサードパーティーEcho ONKYO スマートスピーカー P3 C by GE Sol Raspberry Pi で自作Echo
Alexa Skills Kit(ASK)は Echo等のデバイスに新しい機能を提供する為の ▸セルフサービスの一連のAPI ▸ツール ▸ドキュメント ▸コードサンプル
USで公開されているサードパーティー製Skill
国内で公開されているサードパーティー製Skill 商品 の 注文 車を 呼ぶ 銀行 の 利用 お店 の 情報 まなび 家電 を 操作 ニュース
Alexa Skills の種類 ▸カスタム対話モデル ▸スマートホームスキル ▸フラッシュブリーフィング ▸ビデオスキル(日本未対応)
国内で公開されているサードパーティー製Skill 商品 の 注文 車を 呼ぶ まなび 家電 を 操作 スマートホームAPI カスタム対話モデル 銀行 の 利用 お店 の 情報 ニュース フラッシュブリーフィ ングAPI
フラッシュブリーフィング ▸HTTPSで利用できるRSSフィードがあれば、5分で作れる ▸オーディオデータを含めることが出来る ▸Echo Showの様にディスプレイがあれば動画も再生可 アレクサ、今日のニュースは? フラッシュニュースです。〜〜〜〜 https://developer.amazon.com/ja/alexa-skills-kit/flash-briefing
スマートホームスキル ▸呼出し名が不要なので、自然な発話でスマートホームの 操作が可能 ▸「アレクサ、リビングの照明をつけて」のような発話で利用 できる ▸デバイスがクラウドで管理されている必要がある アレクサ、リビングの照明をつけて はい https://developer.amazon.com/ja/alexa/smart-home
Alexa Skillの基本 (カスタム対話モデル)
スキルの実行 アレクサ、ゼクシィキッチンを 開いて ゼクシィキッチンへようこそ! どのようなレシピをお探しですか? 和食のレシピ〜〜
開始フレーズ Alexaで定義されている物 ▸を使って ▸を開いて ▸をスタート ▸を始める ▸を始めて ▸を開始 ▸を再生 アレクサ、ゼクシィキッチン を開いて などなど https://developer.amazon.com/ja/docs/custom-skills/understanding-how-users-invoke-custom-skills.html
ゼクシィキッチンでの発話 アレクサ、ゼクシィキッチンで キャベツと牛肉のレシピを教えて キャベツと牛肉のレシピが、7件 見つかりました。最初の3件を〜
発話がどう解釈されるのか アレクサ、ゼクシィキッチンで牛肉とキャベツのレシピを教えて アレクサ ゼクシィキッチン で 牛肉 と キャベツ のレシピを教えて = 起動フレーズ = 呼び出し名 = つなぎの語 = スロット = サンプル発話 = スロット = サンプル発話
呼び出し名 ▸呼び出し名 を言うことで、どのSkillを使うかが決まる ▸呼び出し名 は ウェイクワードや起動フレーズ、 つなぎ語 を含んではならない ▸他にも条件が色々。。 https://developer.amazon.com/ja/docs/custom-skills/choose-the-invocation-name-for-a-customskill.html#invocation-name-requirements
スロット Slotは変数みたいなもので、事前に期待している言葉を定義する Slotには2種類あり ▸ ビルトインタイプ ▸ AMAZON.DATE、AMAZON.NUMBER、AMAZON.Region、 AMAZON.FirstName、・・・・ ▸ カスタムタイプ ▹ 自分で定義する ▹ ex) ▹ slot “RECIPE_TYPE” = 和食、洋食、・・・・ https://developer.amazon.com/ja/docs/custom-skills/slot-type-reference.html
対話モデル
サンプル発話 ▸ OsusumeIntent おすすめのレシピを教えて ▸ SearchIntent {keyword} のおすすめ教えて ▸ SearchMultiIntent {firstkeyword} と {secondkeyword} のレシピを教えて サンプル発話と呼ばれる発話のマッピングを定義します。 上記のような発話をすると、Alexaは一致するインテント名をSkillに対して 送ってきます。 発話の仕方は人それぞれなので、なるべく多くのパターンを網羅することで 認識率は上がる。
インテントスキーマ { "intents": [ { "intent": ”SearchIntent", "slots": [ {"name": ”keyword", "type": ”RECIPE_TYPE" } ] } ] } サンプル発話に定義した発話の構造を定義します。
全体的な流れ アレクサ、ゼクシィキッチンで キャベツと牛肉のレシピを教えて JSON キャベツと牛肉のレシピが、7件 見つかりました。最初の3件を〜 SearchIntent を起動 スロットに firstkeyword=キャベツ secondkeyword=牛肉 ゼクシィキッチン スキル
プロダクトの Skill開発
レシピ動画サービスのSkill対応 https://zexy-kitchen.net/
VUIの設計 ▸目的とユーザーストーリーの設定 ▸台本の作成 ▸対話フローの作成 ▸スキル構築のための準備 https://developer.amazon.com/ja/designing-for-voice/design-process/
今回含めなかったこと ▸アプリのキャラ設定 ・ サービスによっては考えたほうが良い ▸SSMLを使ってより自然な発話を目指す ・ 既存のコンテンツを利用するため、これを全部変換するの は厳しい
目的と ユーザーストーリー の設定
本来は動画でユーザーの負を解決する ゼクシィキッチンはすべてのレシピがプロの解説付きで 動画が見れるのが特徴
動画では解決できない ▸動画を見る ×Echoで動画を見ることは出来ない ▸動画から音声データだけを取り出して再生する ×「これぐらいの焦げ目がついたら〜」のような表現は 音声では余計わからない
スキルの目的 ▸毎日献立を考えるのが大変。そんな時にオススメの料理を 見つけられる ▸料理をつくるのに必要な材料が分かる ▸料理を作るためのおおまかな手順がわかる
ユーザーストーリー ▸毎日献立を考えるのが大変。そんな時にオススメの料理を 見つけられる ・ オススメ、ジャンル、食材などでレシピを探す ▸料理をつくるのに必要な材料が分かる ・ 食材、分量が音声だけではなく、テキストでも確認する ▸料理を作るためのおおまかな手順がわかる ・ 大まかな手順を聞く
台本の作成
レシピを探す台本① アレクサ、ゼクシィキッチンを開いて ゼクシィキッチンへようこそ! どのようなレシピをお探しですか? おすすめのレシピ、和食のレシピ、鶏肉のレシピ おすすめのレシピ おすすめのレシピは全部で5個見つかりました。 レシピを5個紹介します。 1番、ホイコーロー ・・・・・
レシピを探す台本② アレクサ、ゼクシィキッチンでおすすめのレシピを 教えて アレクサ、ゼクシィキッチンでキャベツと牛肉を使 ったレシピを教えて アレクサ、ゼクシィキッチンで栗原心平のレシピを 教えて アレクサ、ゼクシィキッチンで何を作ればいい
対話フローの作成
スキル起動のフロー① アレクサ、 ゼクシキッチンを開いて ゼクシィキッチンへようこそ 前回のセ ッションが ある どのようなレシピをお探しですか? おすすめ、もしくは和食、鶏肉のように 言ってください。 No Yes リジューム {keyword} のレシピは見つかり ませんでした。ほかのキーワード で探してみてください。 キーワード発話 No レシピ見 つかった Yes レシピ一覧
スキル起動のフロー② アレクサ、 ゼクシキッチンで キャベツと牛肉を使った レシピを教えて {keyword} のレシピは見つかり ませんでした。ほかのキーワード で探してみてください。 No レシピ見 つかった Yes レシピ一覧
ユーザーのセッションはどう扱うか ▸Alexaは、repromptを合わせても、十数秒程度しかセッション を維持しない ▸気になるレシピにたどり着いたあと、食材や手順を聞いてい る時に、料理していたらセッションをずっと維持することは出 来ない
ユーザーのセッションはどう扱うか ▸Alexaは、repromptを合わせても、十数秒程度しかセッション を維持しない ▸気になるレシピにたどり着いたあと、食材や手順を聞いてい る時に、料理していたらセッションをずっと維持することは出 来ない 永続的なデータベースに独自の セッション情報として保持する
スキル構築 のための準備
このスキルに必要な機能(インテント)は? ▸レシピの検索 ▸レシピの詳細を聞く ▸手順を聞く ▸食材を聞く
レシピの検索インテント ▸おすすめのレシピを教えて ▸和食のレシピを教えて ▸牛肉のレシピを教えて ▸牛肉とキャベツのレシピを教えて ▸栗原心平のレシピを教えて
レシピの検索 ▸おすすめ のレシピを教えて ▸和食 のレシピを教えて ▸牛肉 のレシピを教えて ▸牛肉 と キャベツ のレシピを教えて ▸栗原心平 のレシピを教えて キーワードだけ違う キーワードの個数が 違う
レシピの検索 ▸{スロット} のレシピを教えて ▸{スロット} と {スロット} のレシピを教えて キーワードをスロットにすることで、様々な キーワードを使った検索に対応出来る
インテントを呼ぶ発話のバリエーションを増やす ▸{スロット} のレシピ ▸{スロット} のレシピを教えて ▸{スロット} の作り方 ▸{スロット} の作り方が知りたい ▸{スロット} はどうやって作るの ▸{スロット} を使いたい ▸{スロット} が余ってる ▸オススメの {スロット} はなに 思いつく限りの発話を登録することで、 ユーザーがどのように話しかけても 反応しやすくなる
開発
Skillの開発 カスタムスキルの場合、2つの方法でスキルを作れます ▸AWS Lambda Functionを使う ▸自分でホストする
AWS Lambda Functionを使う場合 ▸ サーバを立てる必要がない ▸ SSL証明書を用意する必要が無い ▸ Alexaからのリクエストであることを検証する必要が無い ▸ 呼び出しされた時だけ課金される ▸ Alexaから実行されるときTLSが利用されるのでセキュア ▸ 多くのデベロッパーは無料枠の範囲で済むはず https://developer.amazon.com/ja/docs/custom-skills/host-a-custom-skill-as-an-aws-lambda-function.html
自分でホストする場合 ▸ ネット接続されている必要がある ▸ Alexa Skills KitのI/Fに準拠している必要がある ▸ SSL/TSLに対応している必要がある ▸ Alexaからのリクエストであることを検証する必要がある https://developer.amazon.com/ja/docs/custom-skills/host-a-custom-skill-as-a-web-service.html
Skillの開発を楽にしてくれるなど ▸ Alexa Skills Kit SDK for Node.js ▹ https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs ▸ Alexa Skills Kit for Python ▹ https://github.com/johnwheeler/flask-ask
Alexa Skills Kit CLI ▸ Alexa Skills Kitコマンドラインインターフェース(ASK CLI) https://developer.amazon.com/ja/docs/smapi/ask-cliintro.html ▸ ただ、日本語の対応がまだ途中。。
複数の環境を用意 一般ユーザー 開発者 本番用 開発用
テスト ▸ デベロパーコンソール ▹ サービスシミュレータ ▹ テストシミュレータ ▸ Echosim ▹ https://echosim.io
運用
利用状況をチェックしましょう
利用状況をチェックしましょう(インテント)
利用状況をチェックしましょう(キーワード) キーワード 1 ありが 2 鶏肉 3 人気 4 ゼクシィキッチン 5 和食 6 音楽 7 エコー 8 豚肉 9 アマゾン 10 ゼクシィキッチン 今日 11 牛肉 12 もやし 13 夕食 14 とうふ 15 もういい SLOTに無いワードも くることが多い
まとめ
プロダクトのスキル開発 ▸VUIの設計は、実際に台本を書いて、声に出しながら試して みると、使いやすいかどうか見えてくる ▸なるべく多くのサンプル発話を登録しておくことで、ユーザー の発話に対して反応しやすくなる。 ▸利用状況を継続してモニタリングして、使い勝手を改善しまし ょう ▸フラッシュブリーフィング簡単なので、まずはこれからでも
ありがとうございました Question?