【勉強会メモ】Alexa Day 2018
- 日時:2018-02-11(日)09:30 - 18:00
- 場所:スペースアルファ三宮
神戸で1日まるごとのAlexa Dayが開催されました。Alexaを冠する日本最大のイベントが開催されるとのことで張り切って行ってきました(少し遅刻して開始には間に合いませんでしたが)。
会場は大きな会議室を2つ使って同時並行でセッションが進みました。立ち見が出るセッションもあるほどで、この分野の盛り上がりを感じることができました。
セッションの中でも話題にあがっていたように音声認識や応答の技術が浸透すれば、既存のIT技術の活用には格差のある子供やお年寄りでも手軽にIT技術を活用する機会が増える可能性があります。一方でVUIという新しいユーザーインターフェースの設計や実装はまだまだ発展途上なので、今回のイベントのように実際に開発に携わった人たちが中心となってユーザーグループ主導でノウハウを共有して盛り上げていくことは今後のためにとても重要な機会だと改めて感じました。
日本ではまだ少し先になりそうですが既にアメリカではtoB向けのAlexa for Businessも始まっており、今後は家庭からオフィスまであらゆる場面にVUIが浸透し対話によるIT技術の利用がますます加速すると思われます。サーバサイド視点で考えると、モバイルの浸透の時と同様でまた1つ新たなインターフェースに対応していかなければならないとも言えるので、レガシーでモノリスなシステムはますますツラみが増すだろうなと感じずにはいられない動向でもあります。
金融機関向けAmazon Echo/Alexaへの取り組み事例紹介
※途中から参加したため後半だけのメモです。
開発について
- 通常アプリとの開発の違いはあまりない
- ローカル環境でテストドライバを使ってLambdaの確認
- ホワイトボックステスト中心
- Node.jsならテストしやすい
- 基本的に手動テスト
- 自動化はほとんどできず今後の課題
- イントネーションや発話の長さをテスト
金融機関向けと一般向けスキルの違い
セキュリティ面が中心
専用PINの発行
- 残高を聞かれる⇒PINコードを要求
- 一度PINコード認証されると数分間はOKのような仕組みも必要
OAuth2.0
- Authentication を使用
- 既存のOAuth基盤を変えずに実現
その他Tips
- アルファベットは極力カタカナで表記すると想定外の発話が返されることはない
- Intentが正しくてもSlotが正しいとは限らない
- キャンドル(カナダドル)をキャンセルと学習してしまう
- Slotのバリデーション
- エラーハンドリングの迷子
- 例)さんの…みや支店⇒Alexa:みや支店?
- ユーザーが次に何をすべきかを明確に応答する
- 8秒でタイムアウト
- ロングランの処理はさせない
今後の取組み
- Push通知(現在日本は未対応)
- どこでユーザーが離脱するかわからない⇒分析
Alexa Skills Kitでプロダクトの可能性を広げる
USでのスキル公開数
- 2016/10⇒4,500
- 2018/02⇒32,000
フラッシュブリーフィング
スマートホームスキル
- 呼び出し名が不要で自然な発話でスマートホームの操作が可能
カスタム対話モデル
開始フレーズ:「○○を開いて」で対話を開始する
- 呼び出し名
- スロット
- サンプル発話
3つの組み合わせ
呼び出し名
- どのSkillを使うかが決まる
- ウエイクワードやつなぎ語を含んではならない
スロット
- ビルトインタイプ
- 主要都市
- 名前
- カスタムタイプ
- 自分で作る
対話モデル
- サンプル発話
- 想像できる発話を登録しておいてインテントに紐付ける
- サンプル発話に定義した発話の構造を定義
プロダクトのSkill 開発
ゼクシィキッチンの事例を中心に
VUIの設計
- アプリのキャラ設定…サービスによっては考える
- SSMLを使ってより自然な発話を目指す
- 既存コンテンツを利用する場合は変換するのは難しい
ユーザーストーリー
- オススメの料理を見つけられる
台本の作成
- どういった使い方をするかを考えてみる
- はじめは使い方を教える
- いろんなパターンで聞いてくるのを想定する
- 前回のセッションをチェックする
- Alexaは一定時間応答がないと切れる
- 次来た時に再開を考える
- 慣れてくるとピンポイントで指定される
スキル構築の準備
開発
- AWS Lambda Functionを使う
- サーバ不要
- SSL証明書不要
- 自分でホストする
- SSL/TSL対応必須
- 既存サービスがある場合
- Node.jsやPythonはSDKあり
- Alexa Skills Kit CLIを使う
- Jenkinsなどで自動化に利用できる
- 日本語化がまだイマイチ
開発環境
- 複数用意(一般ユーザと開発者要)
- デベロッパーコンソール
- サービスシュミレーター
- Alexa Skill Testing Tool - Echosim.io
- ブラウザ上からEchoを試せる
運用
利用状況をチェック
“アレクサ、パルコ をひらいて” 〜ショッピングセンターのAlexa活用のねらい〜
ショッピングセンターでAlexaを活用する。
PARCOスキル
- 池袋PARCOのショップ、レストランの情報、周辺施設の情報を音声で検索可能
- インフォメーションセンターで日々集計している問い合わせ記録の中でよくある質問600種類の質問に応答可能
- PARCOの店頭にEchoを設置する前提で開発
- 最新テクノロジーで接客を拡張する
BtoC(対顧客)
- コミュニケーション手段が変化している
BtoB(テナント)
- 人手不足、業務効率化の必要性
スマートフォンの普及でいつでもどこでも気軽に使える要求の高まり
24時間PARCO
- いつでもどこでもショップスタッフとお客様がコミュニケーション可能
- オムニチャンネルプラットフォーム
PARCOの接客拡張の取り組み
- 2015年〜Pepper導入、多言語化など
- 自走式ナビ…NAViiくん
ロボットは人よりも接客が得意?
1日あたり
- インフォメーションセンター接客⇒134件
- ロボット接客⇒403件
入り口前のインフォメーションセンターで顧客が質問するのはハードルが高かったという気づき⇒接客ロス
ロボット、機械のちからが必要
- お客様から何を聞かれたのかの全データを記録できる
- 今まではスタッフが手作業で集計・管理
ロボットで接客ロスを解消したいがコストの壁
- 2017年AWS Summit Tokyoで相談
- 不特定多数の場所でAlexaを使って何かするのは事例が少ない
↓検討中
- Echoとタブレットを連携させたい
- 店舗の複数箇所に設置する想定
今後やりたいこと
- ロボットとの連携
- 入店時の研修のオンライン化を進めているが、Alexaがマニュアルの指示を出したり質問に答えるようにできないか
課題
- 店舗名をうまく発話してくれない
- Voiceシュミレーターでテスト⇒テキストで修正
- 音声ファイルに録音して修正指示
- 別の言い回し(ゆらぎ)
- 家庭ではなく公共空間への設置を前提とした設計が必要
- 盗難防止策
- 立っている高さに合う台
- 雑音の中で正常に動作するか
- 展示会会場では正常に動作した
- 実際に設置する予定の場所でテスト予定
- 他のスキルを起動されてしまう恐れ
- ⇒Amazon Echoでは制御できない
- 別のハード開発が必要⇒いったん対応保留
- 設置場所によって案内の内容が異なる
- 例)トイレの場所⇒一番近い場所を応答したい
- Echoの端末設定で住所を分けて設置場所に応じた案内をする
- ショップが入れ替わった際のメンテナンス
- Webサイトで持っているショップデータを流用して自動更新を目指す
- インテントの追加ではなくカスタムスロットのデータを更新できるように
- 審査なくメンテナンスしたい
- Amazonから店頭設置のGOはまだ出ていない
メモ
- スロットの定義の数は1,200〜1,300ぐらい
Alexa and Machine Learning on AWS
www.slideshare.net
2つの重要なフレームワーク
- ASK
- AVS
日本で公開されたもの450以上のSkill
- Voice Interfaceは新しい標準
- 全ての検索トラフィックの10%
- 2020年までには毎月2000億回の音声検索が行われる見込み
Alexa for business
- ビジネス環境でも家庭と同じことを
- Voiceで職場を変革
- 受付、会議室など
管理者のコントロール
- 共有デバイスのプロビジョニングと管理
- ビデオ会議室システムの制御
- ユーザー管理
- 個人アカウントを会社管理に紐付け
- スキル管理
- プライベートスキル
- パブリックに公開されない企業内の業務用スキル
- プライベートスキル
Resolve Room
- どのデバイスがどの会議室に置かれているか
- ラスベガスのホテル⇒全ての部屋にEcho Dotが設置されている
Skill Parameters
- スキルに他システムへのインデックスを提供
制限
- 英語のみ
- Roomの住所はアメリカのみ対応
- デバイスの登録がexe⇒Win必須
AI系のAWSサービスについて
Service
Amazon Rekognition
- 画像認識
- ビデオも追加された
- 監視カメラの問題行動検知
- 動画データの検索
Polly
- テキストを音声に変換
- いろいろな声、話し方、スピードなどを調整
Lex
- 8kHzの電話音声に対応
- Webアプリケーションやモバイル・アプリケーションに埋め込み
- コールセンターアプリケーションへの対応
Comprehend
- 自然言語理解
- 文章を分析して重要な部分を抜き出し
- 言語認識、センチメント分析
- ナレッジマネジメント・検索
- ドキュメントの検索、ヘルプデスクなど
Translate
- 多言語間翻訳
Transcribe
- Speech-to-Text
- 通常音声と電話音声の両方をサポート
- 句読点の補完
ML Platform
Kinesis Video Streams
- 動画に対してリアルタイムでアップロード
- リアルタイムで処理しながらS3に保存
- 街の監視カメラの動画をRekognitionと連携
- 工場の自動化
SageMaker
- 機械学習モデルを生み出すのにコストがかかる
- ノートブック(Jupyter Notebook)、学習、推論
- 3つを個別に利用することも可能
- 様々なMLライブラリが入ったDockerイメージを提供
EL Engine
- Deep Learning AMI
- 必要なライブラリ・フレームワークが全てインストールされたAMI
- 東京リージョンでも利用可能
ML Infra
- P3インスタンス…P2の14倍の速度
Amazon ML Solutions Lab
- 機械学習エキスパートのサポート
- シアトルで合宿形式
パルコ様事例にみるAlexaとデジタルサイネージを連携する方法
クラスメソッドとAlexa
- Developers.IO
- 140万PV
- Alexa記事100本以上
- Alexa事業部化
- 北米スキル17本
- 日本向けスキル10本
PARCO様向けSkill
- b池袋PARCOの店舗案内
開発中の課題と解決法
- 店舗名の複雑さ…300店舗ある
- アルファベット・記号が多い
- 略語・通称での発話
⇒Tokenizarに優しいスロットを作る
発話⇒ASR⇒テキスト
の部分に注目
- ノイズの除去
- エコーキャンセル
- 特徴点の抽出
- 音響モデルの作成
- 発音認識
- 言語モデルとのマッチング*
- 単語認識*
- 後処理
*の部分に注目しTokenizarに優しいスロットを作るためには単語モデルに合ったスロットを作る
- 英単語は全てカタカナにする
- ⇒日本語の単語モデルだから
- 単語の区切りにスペースを入れる
- 略語も登録
- Lambdaでマッチングロジックを作る
- トリム処理も必要(ATM⇒A T Mでスロットに入ってくることもある)
インタラクションモデルを使うかダイアログモデルを使うか
- VUI設計時点から意識する
イントネーションが悪い
- SSML職人化
<prosody pitch="xx%">
を駆使
レスポンステキストをより人間っぽく
- 実際の受付係の方に覆面調査を実施
どうしようもできない事
- 音声だけではたどり着けない(フロアが広い)
- 案内図が必要
- 複数ある施設が使いにくい(トイレなど)
- 一番近い場所
タブレット連携要件
- Alexaのレスポンスと同時に画面が切り替わる
- Echoとタブレットは直接接続できない
- 複数セットで配置するがペアで管理はしない
AWS IoT
- MQTT over webSocketを使ってリアルタイム通信
- Cognitoで認証
- Things/Shadowsを使ってデバイスを個別認識
所在地分岐の方法
- Echoデバイスの配置場所によってトイレの場所のメッセージが違う
- Echoは別店舗に移動する可能性、廃棄する可能性(deviceIDはNG)
⇒デバイスの所在地を使う
- 住所3は自由記入
- device address APIで住所を抜き出して住所3で分岐させる
- consent token
- ユーザーの住所情報に対する許可をtokenの形で受け渡し
よくある要望と現在のチャレンジ
- 会議室予約
- 発注を音声で
- 社内システムの検索や参照
⇒alexa for business
- 電話を使いたい
- 音声を聞き取って案内したい
⇒LexとAmazon Connect
- Wake Word以外の呼び出し方
- ノイズが大きい場所
- 住所や社員コードを音声で言うのは面倒
- スマホの機能(Touch IDなど)と連携したい
⇒Alexa Voice Service
Alexaの未来
- ヒューマンインタフェース
- 5年後10年後には音声対話が当たり前になる
- IT技術は世代間の違いが大きい
- 音声のほうが原始的な操作なのでITサービスを受けられやすい
How do we connect VUI to the real services using serverless
VUIデザインの話
音声デザインガイド
Amazon Alexa Voice Design Guide
われわれが作りたいのはIVRではない
- 言葉ではなく意味・文脈を理解するアシスタント
Skill Builderの活用
- インテントの作成
- 対話のパターンを登録
- カスタムスロットの作成
- 別名をたくさんつけてゆれを吸収
⇒VUXデザイナーが必要になる
AWS Lambda
- パラダイムシフト
- コンピューティングリソース調達のリードタイムなど
- FaaSの台頭
- サーバレスエコシステム
- ペインポイントも多い
- サーバレス
- 開発の高速化
- 運用の省力化
サーバレスの分類パターン
- Webアプリケーション
- 運用
- アプリケーション連携
- Alexa Skill Set
事例
エコちっち
- 音声コマンドで妖精を育てる
- Node.jsでalexa-sdkを使う
状態確認してから実行する方式と直接実行する方式
- 対話の流れの制御にはステート管理が重要
- Lambdaのステート⇒Dynamoで永続化
HRアプリ
- 例)
鈴木さん
の給与
を教えて佐藤さん
の人事評価
を教えて- ↑同じ形式
- スロットの内容によってコマンドの分岐が発生する
- 設定したシノニムが全て呼ばれるので全て実装する必要がある
ソースの規模
- 感覚的には150行ぐらい⇒816行
ステートを制するものが対話モデルを制す
Alexa Skill Contest
Nanchen Jiang : 家族全員で楽しめる新感覚クイズタイム
- 1人から5人まで参加
- 1人あたり6問
- だんだん難しくなる
- 採点は奥さんの評価
- 点数を累積
- レベルアップという機能を追加
Ippei Sumida : CoderDojo Hirakata
イベントお知らせスキル
Alexa Skillを作りたかった
- APIの仕様がわからない
- Try&Errorで作成
審査
- リジェクト4回
- 子供向けスキルと誤解
- 子供向けのイベントであるがSkillは子供向けではない
- 保護者向けアピール
Tomoharu Ito : Push and go!
- ビーチフラッグスのようにエコーボタンを使う
Sayaka Ito : リマインダーAPIをハックして、Alexaを積極的なキャラにする
Notificationのデベロッパープレビューに申し込み
⇒まだ来ていない
Alexaに自発的に喋らせる
⇒リマインダー機能を使った
Hidetaka Okamoto : クラウドクイズゲーム
カルタの問題
- 読み手はゲームに参加できない
- カルタは自分で作らないといけない
- クイズモードも作成
- 3択方式
- サポート言語⇒日本語だけでなく英語も
Tomoyuki Tochihira : HELP ME
少子高齢化社会
緊急時には声で
- Alexaで助けを呼ぶ
SMSで通知
- 位置情報が送信される
alexa⇒twilioに連携
Yusuke Morishita : necco Lunch
- 会社で昼食当番制
- WordPressで作った昼食を登録
- あとで経費精算
Alexa Echoで過去のメニューを確認する
- 学校の給食などに応用を想定
Jumpei Nakada : 赤ちゃん体重ロガー
体重1kgあたり160g/日のミルクを飲まなければならない
- 授乳前と後に体重を言うと体重とその時間を登録
- どれくらい飲んだか、次回の授乳予定時刻を応答する
Koichiro Nishijima : うちなーぐちスキル
沖縄のコンビニ⇒ATMが方言を喋る
Alexaに方言をしゃべらせる
投票結果発表
- 3位…Push and go!
- 2位…HELP ME
- 1位…赤ちゃん体重ロガー