Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alexa Skills Kitでプロダクトの可能性を広げる

243 views

Published on

Alexa Day 2018 のセッション資料
https://alexaday2018.jaws-ug.jp/session/271/

Published in: Software
  • Be the first to comment

  • Be the first to like this

Alexa Skills Kitでプロダクトの可能性を広げる

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

×