Alexa×obnizでVUI IoTをはじめよう!

1dceaa2dcea41c16004f430c1723b20e?s=47 田中みそ
November 15, 2018

Alexa×obnizでVUI IoTをはじめよう!

「Alexa Salon SP @東京〜秋のNLT(Not LT)大会〜」登壇資料です!
https://classmethod.connpass.com/event/103739/
#alexaSalon

1dceaa2dcea41c16004f430c1723b20e?s=128

田中みそ

November 15, 2018
Tweet

Transcript

  1. Alexa×obnizで VUI IoTをはじめよう! 田中 みそ (田中 大樹)

  2. 自己紹介 田中 みそ (田中 大樹) Qiita: miso_develop Twitter: miso_develop Facebook:

    田中みそ スマートスピーカー購入を機にITに目覚めた 初心者非エンジニア。 好きな食べ物はRaspberry Piとバナナ。 Facebook
  3. None
  4. スマートホーム構成図

  5. 音声アシスタント搭載 バナナパンツ

  6. Tello Controller Tello Controller

  7. None
  8. リリースしたスキル  クロマチックチューナー(Alexa/Google Assistant)  指定の音程の正弦波を流す楽器のチューニングアプリ  相対音感クイズ(Alexa/Google Assistant) 

    Cコードの次に鳴るコードが何のコードか当てる音感クイズアプリ  ギタースケール辞典(Alexa)  知りたいギタースケールをキーと一緒に話しかけると スケール構成音を教えてくれるスキル  ギターコード辞典(Alexa)  知りたいギターコードをルート音と一緒に話しかけると コード構成音を教えてくれるスキル
  9. スキル移植ツール(対話モデル)  Dialogflow2AlexaSkillJson  Dialogflowの対話モデル(zip)をAlexaの対話モデル(json)へ 変換するツール  https://github.com/miso-develop/dialogflow2alexa-skill-json  Alexa2Clova

     Alexaの対話モデル(json) とClovaの対話モデル(tsv)を 相互に変換するツール  https://github.com/miso-develop/alexa2clova
  10. 心 の 音 心 の 音

  11. DEMO

  12. システム構成図 Alexa Skills Kit Alexa

  13. ESP32

  14. ESP32とは 簡単に言えばWi-Fi付きArduino  Arduino IDEやVSCodeで開発できる  安価に入手できる (海外通販で500円、国内だと1500円ほど)  Wi-Fiに繋がる何かを作って

    みたいならまずこれ
  15. ESP32とは  スマートスピーカーに話しかけて お湯はりボタンをプッシュしたり  ハンドスピナーを回したり

  16. つまりは…?

  17. None
  18. M5Stackとかとの違い 最大の違いはプログラムの置き場所 Cっぽい低レイヤー言語で書いた プログラムをマイコンに書き込む マイコンにプログラムを書き込めない(!?) クラウドでプログラムを動かす!! (Node.jsで書ける!!!)

  19. None
  20. None
  21. ユーザーの利用フロー

  22. ユーザーの利用フロー ①obnizをポチる(パーツも一緒に)

  23. ユーザーの利用フロー ②パーツをつなげる

  24. ユーザーの利用フロー ③Wi-Fiにつなげる(obniz単体で可能)

  25. ユーザーの利用フロー ④スキルにobniz IDを伝える 1234-5678

  26. ユーザーの利用フロー これだけ。たったの4ステップ…!! ①買う ②組み立てる ③繋げる ④登録する

  27. ユーザーの利用フロー  ネックになるのはパーツの接続ぐらい  パーツのセット売り、購入先リンクをまとめる  基盤にはんだ付けしといてobnizに挿すだけにする  obnizごとオリジナルのケースに詰めて販売 

    それ以外のフローはスマートスピーカーの セットアップと変わらない
  28. マネタイズの可能性  スキル開発なかなかお金にならない><  Alexaはリワードプログラムあるけど…  Tシャツはそろそろ一週間ローテいける  スマートスピーカー対応ハードウェアは…? 

    赤外線学習リモコンは年度末ぐらいまで ほぼ売り切れ状態だった
  29. obniz ID登録の実装

  30. obniz IDの登録の実装  obnizは8桁の数字で構成されるIDを持つ  これさえあればobnizがどこにあろうと オンライン状態であれば操作可能

  31. obniz IDの登録の実装  スキルの初回起動時に音声で登録を行う  8桁を1度に発話してもらう?  4桁を2回に分けて発話してもらう?

  32. obniz IDの登録の実装  4桁を2回に分けて発話してもらう!  ID登録は基本的に初回のみ  利便性より確実性を重視  8桁数字はユーザーも発話に詰まる恐れあり

     スマートスピーカー自体も聞き間違えが発生しや すくなる
  33. obniz IDの登録の実装  「AMAZON.FOUR_DIGIT_NUMBER」 というビルトインスロットがある…!  けど特に4桁で縛ってるわけじゃない

  34. obniz IDの登録の実装  obniz IDがわかればどこからでも操作できる  悪い人にバレると危険 ☠ ☠ ☠

     アクセストークンがあるけどこれを有効化すると…  IDはDB格納時に暗号化、利用時は複合しよう  プライバシーポリシーを用意しておく
  35. タイムアウトの壁

  36. タイムアウトの壁  センサーからのデータ取得に時間がかかる ケースがある  基本的にはほとんどのセンサーは一瞬で値を 返してくれるはず  今回スキルで使った心拍センサーは 値取得に6~7秒かかる…

     エンドポイントからの応答が8秒超えると タイムアウト!
  37. タイムアウトの壁  対策  スキル起動インテントのLambdaから 心拍取得用に別スレッドのLambdaをキック  ユーザーが次のインテントを呼び出すまでの 間に心拍数をDBに格納する 

    基本的に3秒以内のレスポンスを目指す
  38. センサーの処理→ 「心の音へようこそ…」 センサーから心拍数取得 「心に響く曲教えて」 「現在の心拍数は…」 「心の音を開いて」

  39. ここが 長い…→ 「心の音へようこそ…」 センサーから心拍数取得 「心に響く曲教えて」 「現在の心拍数は…」 「心の音を開いて」 タイムアウト!!!!

  40. 「心の音を開いて」 「心の音へようこそ…」 裏Lambdaキック! ← センサーから 心拍数取得…! (Lambda自体の タイムアウト長め) DBから心拍数取得 DBに心拍数格納!

    「心に響く曲教えて」 「現在の心拍数は…」 ここが 長い…→
  41. タイムアウトの壁  対策(時間稼ぎ)  setTimeoutでwaitする  長くても500msecぐらい  応答メッセージを沢山しゃべる 

    SSMLで発話スピードを遅くする  起動時にオープニングSEを入れる
  42. タイムアウトの壁  UXの悪化とトレードオフ  起動時SEはスキルのタイプによる  SSML: 個人的にはユーザーが発話スピードを 自由に設定できるような実装が理想 

    複数のインテントに少しづつ色んな アプローチをすることでUXの悪化を軽減!
  43. obnizからのアウトプット

  44. obnizからのアウトプット  センサーによるインプット以外にも 様々なアウトプットが行える  モーター  ディスプレイ  LED

     赤外線送信  スピーカー
  45. obnizからのアウトプット  しかしアウトプットをコントロールできる のはobnizのプロセス実行中のみ  例えばスキルの起動から終了までの間 ディスプレイに何か表示したいけど…  Lambdaが終了する(エンドポイントの処理が 終了する)たびに表示が消える

     インテントを跨いで動作してくれない…
  46. 「xxxを開いて」 「(応答)」 ← Lambdaの処理が終わると 画面も消えちゃう… (本当はずっと表示してて ほしい) 「(次のインテント)」 「(応答)」

  47. obnizからのアウトプット  obnizに対しアウトプットを行う場合、 どこかでobnizのプロセスが実行され 続けてないとダメ!  Lambdaは処理を終えたら落ちちゃう > < 

    対策としてはEC2とかにobnizのプロセスを 常駐させておく
  48. 「xxxを開いて」 「(応答)」 「(次のインテント)」 「(応答)」 表示を変えたり ずっと見える!→

  49. 「終了」 「(応答)」 obniz.close()  スキル終了時はobnizをちゃんと落とす  `obniz.close()`で接続解除 ・ ・ ・

  50. さいごに

  51. 様々なAlexaデバイス  echo buttons  アメリカでは発売済み(国内未発売)  echo buttons向けスキルコンテスト開催中

  52. 様々なAlexaデバイス  9/20には電子レンジ、時計、スマートプラグ等、 様々なAlexaデバイスが発表された  Alexa Connect Kit (Alexa対応家電開発キット)

  53.  スマートスピーカーはIoTデバイス  obnizはその機能を拡張する可能性を秘めている…!  何よりスキル開発の楽しさが格段にアップ!!  興味がでてきた方は  まずは公式ページをチェック(https://obniz.io/)

     サンプルやドキュメントがすごく充実! さいごに
  54. 11/23にMA VUI部門決勝戦!

  55. 12/17にスマスピイベントやります!

  56. スマートスピーカーを遊びたおす本  価格: ¥ 2,000  とらのあな  COMIC ZIN

     BOOTH  とらのあな、COMIC ZINにて購入頂くと ちょまどさんイラストのポストカード付き!
  57. スマートスピーカー Advent Calendar

  58. おわり ご清聴ありがとうございました