(レポート) AWS Summit Berlin 2016: Enabling New Voice Experiences with Amazon Alexa and AWS Lambda #AWSSummit

2016.04.16

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

ベルリンの半瀬です。
4月12日のAWS Summit Berlin 2016 セッションレポートをお届けします。

はじめに

Alexaのデモを見てみたかったので、本セッションを聴講しました。 20160415-01

スピーカーは、David Isbtiski氏(AWS Chief Evangelist Alexa and Echo)
2016-04-12_14_43_23

セッション内容

公開されたスライドでざっとご紹介いたします。
まずは、echoとAlexaについて
Amazon Echoは据え置き型の音声認識デバイスです。
屋内に配置し、話しかけて色々な命令に対応してくれるもの。
20160415-02

Skills are how you as a developer make alexa smater...

Alexaに担わせる機能は「Alexa Skill」と呼ばれます。
「Skill」によってAlexaをよりスマートに開発できる
「Skill」は顧客に新しい経験を与える
「Skill」はAlexaのためのvoice-firstなアプリである
20160415-03

Alexa skills kit (ASK)

Alexa Skills Kitで様々なSkillを作成/登録します。ASKはAPIツールやコードサンプルを提供しています。
20160415-04

Creating your own Alexa Skills

さて、Alexa Skillを登録していってみましょう。
Alexa Skill には2つのパートがあります。
1. Amazon Developer Portalでのコンフィグ設定
2. リクエストに反応するためのホストサービス設定
20160415-05

Alexa Skills Kit Architecture

Alexa Skill の概要です
20160415-06

Building an Alexa Skill Hosted Service

Hosted ServiceとしてのAlexa Skillの説明
* サービスインターフェースとASKとの密接した関係
* SSL/TLS
* インターネットにアクセス可能であること
* ドメイン名に一致する信頼された証明書の提供
20160415-07

  • IntentによるAlexa Skillの定義
  • 個々のIntentは2つのフィールドをもつ。"Intent名"と"Slot(このIntentと関連するslotがリスト形式で格納)"である
  • Slotsは 様々な内部タイプをもつ。例えば、 "AMAZON.LITERAL","AMAZON.NUMBER"といったもの。あるいは新しく定義してもよい
    20160415-08

Implementing Bulit-In Slot Types

ビルトインされた"Slot"タイプ
20160415-09_
20160415-10

Incresing Accuracy with Custom Slots

カスタムSlotを新しく定義し、アクションの精度を向上させる
20160415-11

Building on Alexa Skill Hosted Service (2)

Hosted ServiceとしてのAlexa Skillの説明(2)
Intentと、Intentを呼び出すAlexaへの発声との間のマッピングは、タブ区切りのテキストで提供されています。発声音はシンプルなもの。
20160415-12

The Amazon Alexa Service WILL POST EVENTS

主なPOST EVENT
* LaunchRequest: onLaunch()にマッピング
* IntentRequest: onIntent()にマッピング
* SessionEndedRequest: OnSessionEnded()にマッピング
20160415-13

Handling Amazon Alexa Service REQUESTS

Alexaのリクエストの扱い
* 443ポートを経由してJSONパースをPOSTリクエストする必要があります
* セッション変数をチェックし新しいセッションがスタートされたのか、既存セッションをリクエストしたのかを把握する必要がある
* リクエストは typeとrequestIdとtimestampからなる
* requestIdは LaunchRequest, IntentRequest あるいは SessionEndedRequest に直接マッピングされる
20160415-14

Increasomg Acciracy with Built-In Intents

ビルトインIntentによって、アクションの精度を向上させる * 全てのAlexa SkillとAlexaのコア機能から随時コールされる
* いくつかのビルトインIntent はIntentがKillされた場合に備える
* CancelIntent, HelpIntent, YesIntent, NoIntent, RepeatIntent, StartOverIntent, StopIntent
20160415-15

Changeing Alexa's inflection with SSML

Alexaはピリオドなどの句読点の後には間をおき、疑問文にも対応します。
* Speech Synthesis Markup Language (SSML) を利用して、テキストを合成音声の生成に変換する * サポートされるタグは "speak", "p", "s", "say-as", "phoneme", "w", "audio"
参考引用
20160415-17

Existing Customer with ACCOUNT LINKING

20160415-18

Testing your Skill Service Simulator

JSON形式のリクエストで、サービスシミュレータでのテストを行う。
Lambdaユニットとの結合テストをクライアントおよび、Alexaエンドポイントで確認する。
20160415-19

Testing your Skill Voice simulator

ボイスシミュレータでSSMLを飛ばし、Alexaに反応させるテストを行う。
20160415-20

Demoをして終了

スライドは半分くらい残っていましたが、だいたい以上までが設定のキモということで、
話の内容をデモで確認して終了。Alexaが正しく動いた時は会場から拍手がおこりました。
※ 補足: カスタムSkillの作成方法はコチラ
20160415-21

最後に

デモの流れはコチラにある内容と同じ
当ブログでもご紹介がされています。
AWS Lambdaを使ってAmazon Echoに機能追加してみた - Developers.IO

私も時間を見つけて遊んでみようかと思います。(いい感じにしてオフィスに置けるといいなあ)

それではー。