[レポート] SPL01:SageMakerを使ってAlexa Skillを構築する #Alexa #reinvent

re:Invent 2018レポート。API Gateway, Sagemakerを使ったAlexaスキルの構築を行うワークショップの模様をレポートします。
2018.11.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

せーのでございます。このエントリはSPL-01「Building Alexa Skills with Amazon SageMaker」のセッションレポートとなります。

ワークショップ会場の様子

このセッションはスポットライトラボとして実際に手を動かしながらAlexaスキルを作っていく、というワークショップ形式でした。

会場はこのように席ごとにマシンが用意され、好きな席に座ってワークショップを受けます。

それぞれにWindowsマシンがセットアップされ、デュアルディスプレイにキーボード(英文)、マウス、といったもの。ブラウザはChromeがインストールされているので自分のGoogleアカウントでログインすればパスワードマネージャーなどextensionで普段使用している環境はすぐにセットアップできました。

ワークショップは前半がAlexaについての座学、後半に用意されているページをなぞってスキルを構築していきます。
必要なIDやS3バケットのパス、AWSアカウント、IAMロール、秘密鍵はワークショップ用のページに記されており、コード類はコピペする形でした。

レポート

座学

  • Alexaのワークフローは図のようになる
  • ユーザーが話しかけた言葉にAlecaが反応し、適切なジョブ、タスク、に解釈してバックエンドにわたす
  • バックエンドではビジネスロジックが走り、いろいろなAPIサービスと組み合わせたりしてフロントに戻る
  • フロントにて適切な音声に変換し、Alexaから返答される

  • Alexaにはフロントエンド部でVUIを設計し、バックエンド部でビジネスを構築する
  • フロントエンド部にはASR(Auto SPeech Rekognition)やNLU(Natural Language Understanding), TTS(Text To Speech)という機能があり、それぞれを上手に活用しながらユーザーの話した言葉を理解する。

(例) ASR

  • 通常に読むとこれは「フォータタイムズ」と読む
  • しかしこれだけだと「four times」なのか「for tea time」なのか「for tee times」なのか「four tee times」なのか、区別がつかない

  • これを機械学習を使って解決している

  • ユーザーの発話はwake word、Launch word、Skill Name, Utteranceに区別される
  • それぞれが意味を持つ

ワークショップ内容

「Bootcamp Assistant」という名前のあるカンファレンス会場の案内スキルを作成します。

STEP1

Lambdaを使ってバックエンドを構築します。「この階に○○という部屋はありますか?」「何時からランチなの?」といった単純な質問に受け答えします。

STEP2

STEP1で作ったスキルに「道案内」「ミーティング登録」の機能を追加します。それぞれの機能は既に既存で用意されているものを使用し(ワークショップ内ではLambdaで構築済み)、それをAPI GatewayでAPI公開、スキルのLambdaから叩きます。「北へ行く」「南にまっすぐ」などのフレーズとそれぞれの会場の位置はDynamoDBで管理し、スタート位置と目的の会場から計算して組み合わせてAlexaに回答を話させます。
「Otter会場へはどう行ったらいいの?」「Techミーティングに登録して」といった質問や要望に答えられたらゴールです。

STEP3

最後はこのようなスキルをもとに集まったユーザーのデータをSageMakerを使って学習させ、Alexaに適切な行動をレコメンドさせる機能を追加します。データは既にDynamoDB、CSVファイルに用意されており、今回はそれを使ってXGBoostで学習、エンドポイントをAlexaのバックエンドLambdaから叩いて推測させます。
「Alexa、次何したらいい?」という質問に「コーヒー飲んだらどうでしょう?」などと返せたら成功です。

まとめ

いかがでしたか?座学の部分は基礎的なないようだったものの、ワークショップはAWSのサービスをフルに使った意義あるものでした。特にSageMakerとAlexaの組み合わせは日本でもどんどん実施していきたいユースケースなので大変参考になりました。