最近Amazon Alexa界隈で起きたこと(5/31〜6/29)

前回の記事から1ヶ月経って、Amazon Alexa界隈で何が起きたでしょうか。

目次


現時点のSkill数(US)

f:id:sparkgene:20170629214918p:plain

今月は3000個ぐらいのSkillが追加されました。凄いですね!

理由はおそらく、Skillを公開するとDotが1個もらえるってキャンペーンを開催したからと思います。

f:id:sparkgene:20170629215222p:plain

そんなわけで、総Skill数は1.6万を超えました。

f:id:sparkgene:20170629215333p:plain

このグラフを見て分かるように、Games, Trivia & Accessoriesが大きく増えています。


[5/31] Alexa Skill Metrics DashboardにSmart Home SkillとFlash Briefing Skillのメトリックスが見れるように

Use Alexa Skill Metrics Dashboard to Improve Smart Home and Flash Briefing Skill Engagement : Alexa Blogs

今まではCustom Skillのメトリックスしか見れなかったのですが、Smart HomeやFlash Briefing Skillでも利用状況が見れるようになりました。「Flash Briefing skill usage metrics can take up to 28 hours to appear.」と注意書きがあるので、一日ちょっとしてから数字が反映されそうですね。 一般的なアプリでもそうですが、リアルタイムで利用状況を確認したい場合は、Datdogなど他のサービスを利用して自分で数値を収集するほうが良さそうですね。


[6/5] Amazon AlexaのVUIのデザインガイド登場

Introducing the Amazon Alexa Voice Design Guide : Alexa Blogs

通常のアプリケーションを開発するときにも、ユーザーが何を求めてて、サービスはどんな価値を提供できて、といったことを最初に考ええて、UXの設計をすると思います。 音声のUIでも同じで、Skillがどんな価値を提供でき、ユーザーはどんなシチュエーションでSkillを使い、どのように会話を成り立たせるのがUXとして良いのかを考える必要があります。 この資料では、どういった観点でVUI(Voice User Interface)を考え、実際にユーザーとAlexaの会話の例を書き起こして設計する方法についても説明しています。

Google Assistant SDKでも同じようにVoice Designについて解説してるページがあります。

https://developers.google.com/actions/design/

Googleの方はVoice Designの解説に力を入れててすごく良い資料になっているので、そっちも見ながらAlexa Skillを作ると良いものができそうです。もちろん、Google Assistant SDKを使ってGoogle Home向けのAction(Skill)を作るのも良いと思います。


[6/7] Skillで利用するAudioのボリュームを調整しよう

How Loud Is Too Loud? Tips for Setting Your Alexa Skill's Audio Volume Level : Alexa Blogs

ユーザーは色んなSkillを使います。そのなかで、自分が作成したSkillに含めたオーディオの音レベルが他と極端に違うと、ユーザーにとってはものすごくストレスです。 この記事では、そのようなSkillにならない様に、オーディオのマスターレベル推奨値やフォーマットについて紹介しています。 ユーザーの不満はそのままSkillのレビューに反映されるので、こういった気遣いも大事ですね。


[6/8] AlexaついにVideoを操作できるように

How to Control Your Content with the Video Skill API : Alexa Blogs

Amazon Enables Video Providers to Control Content with the Video Skill API - a New Addition to the Alexa Skills Kit : Alexa Blogs

最新のFire TVではAlexaも使えるようになっています。今回発表されたVideo Skill API では、Fire TVで動画サービスを提供しているアプリケーションをAlexaから操作できるようになるというものです。 例えば、「Alexa, Nexflixで進撃の巨人が見たい」みたいに話しかけると、Nexflixのアプリで再生を始めることができるようになります。 現在提供されている操作は、以下のものです。

  • ChangeChannel
    • チェンネルの選択
    • 発話例「Alexa, change channel to 200 on device」
  • PlaybackController
  • RemoteVideoPlayer
    • 検索して再生(SearchAndPlay)
    • 検索して詳細を表示(SearchAndDisplayResults)
    • 自由な検索(Handling Ambiguous Play Requests)
      • この場合は、実装する側の判断で、再生させるのか、リストを表示するのかを返します
  • SeekController
    • 特定のポジションまでのシーク
    • 発話例「Alexa, skip 30 seconds on device」

音声で操作できるアプリケーションは、Alexa.Discoveryインターフェイスに対応しておく必要があり、そのレスポンスで上に書いたどの操作ができるかを返す必要があります。


[6/21] Slotでシノニムが使えるように

Announcing Alexa Entity Resolution : Alexa Blogs

任意の曲を再生するSkillを作っていたとして、ユーザーが曖昧な表現で言ってきても再生させたいとします。 例えば、ユーザーがマイケル・ジャクソンの曲を流してほしい場合は、以下のように言ってくる可能性があります。

  • Alexa, play Michael Jackson
  • Alexa, play MJ
  • Alexa, play Mike
  • Alexa, play King Of Pop

このような場合は、それぞれのワードをカスタムSlotに登録して、Skill側でどの発話でもマイケル・ジャクソンをリクエストしてきているんだなと判断する必要がありました。 今回の機能によって、事前に以下のようなSlotを定義しておくと、これらの判定はSkill側で行う必要はなくなり、Alexa側で判断して mj と送ってくれるので、Skill側のハンドリングを減らすことが出来ます。もちろん、実際に King Of Pop と発話していたらその情報も送ってきます。

{
  "types": [
    {
      "name": "artist",
      "values": [
        {
          "id": "MJ",
          "name": {
            "value": "mj",
            "synonyms": ["Michael Jackson","MJ","Mike", "King Of Pop"]
          }
        }
      ]
    }
  ]
}

[6/22] Smart Home Skillでカメラが使えるように

Introducing Smart Home Camera Control with Alexa : Alexa Blogs

Echo Showで外部のカメラからの動画を再生できるようになりました。 この動画を見ると「Alexa、show me the front door」と話しかけることで、カメラのリアルタイムな映像がEcho Showに表示されているのがわかります。

www.youtube.com

Echo Showにリアルタイム動画を表示させる要件として以下のことが要求されています。

分類 仕様
Media streaming and transport RTSP controlling media transmission over RTP
Underlying transport protocol Interleaved TCP on port 443 (for both RTP and RTSP)
Feed encryption TCP socket encryption on port 443 with TLS 1.0
RTSP 1.0 Command support implementation DESCRIBE, SETUP, PLAY, and TEARDOWN commands are required although a full RFC compliant implementation of RTSP 1.0 is recommended
Video format H.264
Audio format AAC/G711
Feed authentication HTTP Digest authentication

Alexaから動画の表示を要求された際のレスポンスは以下のフォーマットです。

{
      "header": {
          "namespace":"Alexa.ConnectedHome.Query",
          "name":"RetrieveCameraStreamUriResponse",
          "payloadVersion":"2",
          "messageId":"ABC-123-DEF-456"
      },
      "payload": {
          "uri": {
              "value":"rtsp://link.to.video:443/feed.mp4"
          },
          "imageUri": {
              "value":"https://link.to.image/image.jpg"
          }
      }
}

特定のURIを渡すと、Echoの方から直接カメラ(もしくは中継器)にリクエストが行くみたいですね。 ということは、ラズパイのカメラで撮影したものをEcho Showで表示するみたいなこともできそうです。 これは、実験してみたいですね〜〜、はやくEcho Show日本に来ないかな。


[6/28] Echo Showで使えるVideoとDisplayの仕様が追加されました

Build Skills for Echo Show: New Alexa Skills Kit Features for Display and Video Interfaces : Alexa Blogs

Echo Showが発表されてからずっと気になっていた機能の仕様がでてきました。 Showの画面に表示されるのはCardの拡張かと思っていましたが、Displayという新しいインターフェイスが追加されました。 既存のEcho AppなどにはCardでUIを表示し、Echo Showのようなディスプレイを持ったデバイスにはDisplayとtemplateを使って表示します。

Display Interface Reference - Amazon Apps & Services Developer Portal

Displayでは複数のtemplateが用意されています。

テンプレート 表示できるもの
BodyTemplate1 タイトル、詳細、アイコン、背景画像
BodyTemplate2 タイトル、詳細、アイコン、背景画像、画像(右側)
BodyTemplate3 タイトル、詳細、アイコン、背景画像、画像(左側)
BodyTemplate6 詳細、背景用のフルスクリーン画像
ListTemplate1 タイトル、アイコン、背景画像、テキストのリスト表示(縦)、リストのサムネイル
ListTemplate2 タイトル、アイコン、背景画像、サムネイルのリスト表示(横)、サムネイルの下にテキスト

詳細ではプレーンテキストとリッチテキスト(一部のHTMLタグが利用可能)が利用できます。

VideoApp Interface Reference - Amazon Apps & Services Developer Portal

Echo Showでのビデオ再生はGUIによるビデオ操作と、音声による操作が可能です。 利用できるビデオは、HLSとH.264の2種類。

以下のように再生する動画のURLを指定するので、自分が用意した動画を再生させることも可能です。

"videoItem":
  {
    "source": "https://www.example.com/video/sample-video-1.mp4",
    "metadata": {
      "title": "Title for Sample Video",
      "subtitle": "Secondary Title for Sample Video"             
   }
}

期待していた仕様が満たされているので、実際に使うのが楽しみです。


あとがき

待ちに待った、Show向けの仕様が出揃ってきましたね。数日前からUSでEcho Showの出荷が始まったようなので、それに合わせて出してきたようです。 デバイス側がだんだんリッチになってきており、Skillを開発する際も実機じゃないと動作確認できないので、Echo Show向けのSkillを開発するのも段々大変になってきたように思えます。

今回は新しく追加された機能を中心に紹介したので、あんまりAlexa界隈で起きたことはないですね。 というのも、最近は日本語の記事で海外のAlexaネタが多く出るようになったので、タイムリーなやつはそっちにお願いして、ここはAlexaの技術周りの話に絞っていこうかなと思いました。