最近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の技術周りの話に絞っていこうかなと思いました。

Microsoft Azureと戯れてみた

AWSは公私共に使う機会が多く、GCPも最近仕事で触るようになってきました。

しかし、ガートナーのレポートによればクラウドIaaSではMicrosoftが2番と書かれているのだけれども、一度も使ったことがなかったのでどんなものかを試してみることにしました。

AWSにもありますがオンラインのトレーニングがAzureにも有り、「AWS の専門家のための Microsoft Azure」と言う、いかにも私みたいな人に向けた物が用意されていたので、これを試してみることに。

AWS の専門家のための Microsoft Azure | Microsoft Learning

今回始めてAzureのアカウントを作ったのですが、初回登録時に20,500円分のクレジットが付与されたので無料で色々と試す事ができました。

このオンライントレーニングは、以下のような複数の章立て(モジュールと書かれているけど)になっていて、段階的に学ぶことが出来ました。

AWSとAzure」ではAWSとのサービスとAzureのサービスの表があり、どのサービスがAzureで代用できるかが確認できました。 想像していたよりも多くのサービスがAzureでも用意されていて、ちょっとしたサイトどころか大規模なサイトを構築する場合でも、不自由しないで構築できそうなことがわかりました。

MicrosoftだからといってWindowsサーバが必須ってこともなく、Linuxの主なディストリビューションを利用してサーバを構築することも可能です。 そのあたりが詳しく書かれているのが「Azure上のLinux」の章。 普段はAmazon Linuxを使うことが多いので、AzureでもLinux系のOSを利用できるのは良いですね。

仮想マシン」の章では実際にAzureのマネージメントコンソールを利用してLinuxインスタンスを立ち上げるラボと言われるセッションも有り、実際に操作しながらAzureを理解できる作りになってました。

このマネージメントコンソールにダッシュボードって機能があって、自分で表示したい情報を選んでデザインすることが出来、実際に起動しているインスタンスの状態とかを俯瞰して見れるようなダッシュボードが作れます。

blogs.msdn.microsoft.com

これすごくいいな〜と思って、AWSにもこんな機能が欲しい。

マネージメントコンソールでもう一ついいな〜と感じたのは、ブレードと呼ばれるUIで、メニューからアイテムを選ぶと右にドンドン追加されていって、使いやすかったです。 f:id:sparkgene:20170622223617p:plain

とは言え、実際に運用し始めたらGUIで操作して環境作るのはそんなに現実的ではないので、それほど使わないかもしれないけど。。

トレーニングの中ではGUIでの構築だけではなく、CLIを使った構築も学ぶことが出来ます。 資料のCLIバージョンが少し古いせいか、最新をインストールして進めようとしたら、オプションとかが違ってそれを調べながら進めるのはちょっとめんどくさかった。(そのおかげで、理解が深まった感はありますがw)

Resource Managerの章では、AWSで言うCloud Formationみたいなテンプレートの使い方を学ぶことになるのですが、GUIでブレードで操作してインスタンスを立てる際の情報もテンプレートとしてダウンロードしたり、ライブラリとして登録できるので、くり返し同じ作業が必要な時などはこれを使えば、簡単に構築ができそうです。 AWSでも同じような感じでGUIの結果をCloud Formationのデータとしてダウンロードできると便利だなと思いました。

最後の章は「Azure Active Directory」について学ぶのですが、オンプレミスのActive Directoryとの連携とかを詳しく学ぶので、現在のオンプレの資産を活かしつつAzureを使ったパブリッククラウドも利用したい人にはすごくいい内容なのではないでしょうか。

一通りトレーニングを終えると、理解度確認の課題が用意されており、Azureについてどれぐらい理解できたかを確認することが出来ます。

f:id:sparkgene:20170623134023p:plain

52%。。すごく微妙な数字。。。70%がボーダーなので、まだ修行が足りないってことですね。 間違えている問題は確認できるので、そこを再度見直せば良さそうです。

あとがき

今までAzureは使ったことが無かったけど、無料枠を使いながら基本的なことを学べたのは良かったです。 コースの概要では16h〜24hかかるってあったけど、12〜13hぐらいで終わりました(だから52%しかいかないんだよというツッコミ)。 業務ではADを使うことはあまりなかったので、個人的にはAzure Active Directoryのパートは別の内容になってたほうが良かったという印象ですが、AWSの知識はあってゼロからAzureを勉強するにはちょうどいい内容じゃないかと思います。

FunctionsやIoT Hubなど面白そうなサービスもいっぱいあり、これらも別のコースで学ぶことができるので、そのうちやってみたいと思いました。

最近Amazon Alexa界隈で起きたこと(5/1〜5/30)

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

目次


現時点のSkill数(US)

f:id:sparkgene:20170530231027p:plain 今月も1000ぐらい増えています。 過去のデータをグラフにしてみると、同じぐらいのペースでSkillが増えているのがわかりますね。 f:id:sparkgene:20170530231906p:plain

[5/1] Test Your Smart Home Skill API Responses with Our New Validation Package

Test Your Smart Home Skill API Responses with Our New Validation Package : Alexa Blogs

Smart Home Skillのバリデータをリリースしましたと。 Smart Home Skillの場合、Skillのテスト機能を使うことが出来ないため(Alexa, turn on lightとか、built-inのIntentを利用するので)、Echoの実機もしくはechosimを使う必要があります。しかし、間違ったレスポンスを返したとしても、無言になるだけで何が原因かわかりません。 そこで、このバリデータを利用することで、返すデータをチェックしてエラーがあれば例外が発生して分かるようになっています。 これは、テストのときだけではなく、普段から入れておいて、cloudwatchのアラートを使って検知するようにしておけば、実際のユーザが利用した際に発生した問題もわかりやすくなると思います。

ちなみに、LambdaのpythonでCustom Skillを作成した場合、戻り値はJSON形式ではなくdict型で返す必要があります。過去にそれを忘れてて、何時間もテストツールがうまく動かず、ハマりまくることがありました。Custom Skill向けのバリデータも欲しいですね。

[5/3] Integrate Skills with Alexa Lists–Now Available as Part of the Alexa Skills Kit

Integrate Skills with Alexa Lists–Now Available as Part of the Alexa Skills Kit : Alexa Blogs

Alexaのto-doリストとshoppingリストにアクセスできるようになりました! これによって、今まではこのような機能を実現しようとすると、自分のSkillの中で保持する必要がありましたが、読み書きが可能になったので、ユーザーにとってはAlexa Appをみれば良くなるので利便性が向上することになりました。

[5/4] Conexant 4-Mic Dev Kit Brings Far-Field Voice Recognition Technology to AVS Developers : Alexa Blogs

Alexa Voice Serviceを利用してデバイスを作るメーカーに向けて、マイクを4つ備えたデベロップメントKitを発表しました。 このキットは、以下の機能を持っています

  • Far-field
    • 部屋の向こうからAlexaと話しかけても反応する技術
  • Smart Source Locator
    • ユーザーがどの方向から喋りかけているかを判別する技術。それによりノイズを無視することが出来、より正確に発話を聞きかけることが出来る

商用向けグレードでは、Echoのように音楽を再生していても、「Alexa」に反応出来るAudioSmartにも対応しています。

[5/8] Tips on State Management at Three Different Levels

Tips on State Management at Three Different Levels : Alexa Blogs

[5/9] Introducing the All-New Echo Show

Introducing the All-New Echo Show : Alexa Blogs

ついにスクリーンを搭載したEchoが登場しました!! 例えば、ECサイトのSkillがあったとして、「洗剤が欲しい」と話しかけても、洗剤の種類は大量にあるので、それを一つ一つ読み上げるのは、明らかに使い勝手が悪いです。そこで、このようなスクリーンがあると、その中から目視で選べるようになるので、ユーザーにとっては使いやすくなります。 また、Cardの中で動画の再生が可能となっているようで、youtubeがみれたり、Flash Briefingにも動画が利用できるようになるみたいです。 今後、SkillのTool Kitがリリースされてくるので、実際にどのようなものが作れるか試せるようになります。

[5/15] Cloud-Based Wake Word Verification Improves “Alexa” Wake Word Accuracy on Your AVS Products

Cloud-Based Wake Word Verification Improves “Alexa” Wake Word Accuracy on Your AVS Products : Alexa Blogs

たまにAVSを利用したデバイスは「Alexa」と話しかけていないのに「荒木さん」反応してしまう事もあり、ユーザーの体験を損ねることになってしまいます。 今回追加されたクラウドベースのチェックによって、デバイスでWake Wordを検知したあと、クラウドにその後の発話を送りつつ、再度クラウド側でWake Wordのチェックをすることで、ご検知かどうか判断することが出来るようになりました。 この機能を有効にすることで、ご検知した時は処理を中断させることが出来、ユーザーの体験を損ねないようなプロダクトを作ることが可能となります。

[5/16] Amazon Announces ‘Notifications for Alexa' Feature Is Coming Soon—Sign Up to Stay Tuned

Amazon Announces ‘Notifications for Alexa' Feature Is Coming Soon—Sign Up to Stay Tuned : Alexa Blogs

これも待ち望んでいた機能の一つで、ネイティブアプリで言うプッシュ通知が出来るようになりました! Push通知と言っても音を鳴らして、Echoのリングを光らせるだけなので、どのスキルからのお知らせかどうかは、ユーザーがEchoに聞く必要があります。 Skill毎にPushを許すかのパーミッションを設定することが出来、「Do Not Disturb」モードにすることで一律Pushを無視させることが出来ます。

[5/18] スマートスピーカーの「Google Home」年内に日本上陸へ! Spotifyにも対応です

www.gizmodo.jp

Google Homeが年内に日本へ投入されるとのことです!! Amazon Echoは噂レベルでは年内との話はありますが、Amazonからの正式な発表はまだ無いので、いつ出るかはまだ不明です。 アメリカでは70%のシェアを持っているAmazon Echoシリーズですが、投入のタイミングによっては、国内だとそのシェアは変わってくる可能性があります。 Amazonさん、早くして〜。

[5/19] Advertising and Alexa

Advertising and Alexa : Alexa Blogs

Alexa Skillでは現状ネイティブアプリのようなIn App Purchaseの仕組みを持っていません。 その為、デベロッパーに対して簡単にマネタイズする方法はありませんでした。 そんなこともあり、Skillを公開しているデベロッパーに対してAWS料金の$100クーポンが提供されていて、デベロッパーの負担を少なくする方法が取られてきました。 今回の発表により、Skillの音声データにCMの様な広告を含めることが許可されたので、自分のSkillに広告を含めてマネタイズする手段が1つ出来ました。 ただし、Alexaの声を利用した広告は禁止されているので、テキストデータとして含めることはおそらく出来ず、オーディオデータとして用意しなければなりません。

[5/21] Microsoft初となる「Cortanaで動くスマートスピーカー」がAmazon Echoを揺るがすかもしれない

thebridge.jp

2017年秋にアメリカ国内で販売を開始するとのこと。 今年は音声UIが広がる年であると思っていますが、Google Homeと合わせ大手3社のAIホームアシスタントが今年で揃うことになります。 WWDCもあるので、もしかするとSiriのデバイスも出てくるかもしれないですし、目が離せないですね。

[5/23] Define Your Appliance Category for a Better Customer Experience : Alexa Blogs

Smart Home Skillにカテゴリーを指定できるようになりました。 今までは、シーンもデバイスもすべて同じ一覧に表示されていて分かりづらかったのですが、カテゴリーによって分けることが可能になりました。

Smart Homeのトップがこんな感じになり f:id:sparkgene:20170528164806p:plain

これが、デバイスの一覧で f:id:sparkgene:20170528164640p:plain

こちらがシーンの一覧 f:id:sparkgene:20170528164703p:plain

[5/24] Ikeaのスマート電球はAmazon Alexa, Apple Siri, Google Assistantから操作できるようになる

jp.techcrunch.com

PhilipsのHueはAlexa対応しているけど、LED旧個入った物でも$200と結構高いです。 Ikeaが発表したものはコントローラーが$59.99、Led球が$14.99とかなり安いです。元々、IkeaのLED球を家で利用していますが、明るさ的にも問題は感じていないので、この値段であれば家中の明かりをIkeaのものに変えて、全部Echoから操作できるようにすると便利そうですね。


あとがき

スクリーン付きのEchoが登場したのと、Google Homeが年内に日本語対応をするというのが、今月のビッグニュースですね。 また、TVを操作するためのデバイスがAVS対応したり、IkeaのLed球がAlexa Skillで操作できるようになったりと、Alexaを取り巻くエコシステムも出来上がりつつありますね。 今までとは違った体験が今後の生活スタイルを変えていきそうで、すごく楽しみですね。

ちなみに、Back to the future 2で出てくるこのシーンは、すでに30年前にそんな日常を予見していたのかなと。 (この映画を見た世代が、その影響を受けてテクノロジーの開発をしているのかもしれませんがw)

www.youtube.com

車の傷修理

家の駐車場に止める際に、通路を広く取ろうと壁側に寄せ過ぎたら、嫁さんがぶつけてしまい、更に私もぶつけて傷が目立つようになってしまった。。

f:id:sparkgene:20170507154720j:plain

下地まで見える傷も入ってしまったので、このままにしておくと錆びる可能性もある。しかし、板金屋さんに出したら数万かかってしまうので、少しでも目立たなくなるように修理してみた。

f:id:sparkgene:20170507154722j:plain

傷が入ったところを1500番の紙やすりで削ったあと、純正のタッチペンで塗っていきます。
この時点だと、更に傷口を広めてしまった感が出て、やめればよかったと少し後悔するときですね。

f:id:sparkgene:20170507154725j:plain

1500番の紙やすりである程度段差がなくなるまで全体的に表面を慣らしていきます。
今回はパテとかで凹みの補修をしていないため、下地まで削れた部分はどうしても段差ができてしまいます。

f:id:sparkgene:20170507154726j:plain

ホルツのカンタンキズ消しセットのキズ消しを使って、紙やすりでついたキズを消していきます。
紙やすりでついたキズで、全体的に白っぽくなっていたのがなくなりました。

f:id:sparkgene:20170507154729j:plain

ツヤ出しを使って、更に細かい傷を磨いていきます。これぐらいになると離れたとこから見ても、もうわからなくなります。

f:id:sparkgene:20170507154728j:plain

最後にワックスを塗って表面を保護して完成です。
タッチペンで塗りが薄かった部分が、磨きの段階で一部下塗りが見えてしまいました。もう一度最初からやっても良いのですが、元の塗装が今回の補修で薄くなってそうだし、全体的に下塗りが見えてしまいそうなので今回は諦めます。


f:id:sparkgene:20170507154732j:plain

BMW純正のタッチペンを使ったけど、微妙に色が濃くて少し残念な気持ち。
しかも、クリアが付属しているんだけど、筆でクリア塗って綺麗に仕上げるのはかなり難しい気がする、、なんでこんなセットなんだろう。

ダンボーGoogle Home制作メモ

前回のブログではAlexa Voice Serviceを使ってラズパイZeroで自作Echoを作成しました。

sparkgene.hatenablog.com

今回はGW直前に公開されたGoogle Homeを自作できるGoogle Assistant SDKを利用して、ダンボーHomeを作ってみました。

ラズパイの良いところは、SDカードを変えれば違うものとして動かすことが出来るので、AlexaとGoogle Assistant SDKは別のSDカードにセットアップしておくことで、SDカードを差し替えるだけでAmazon Echoになったり、Google Homeになったりすることが出来ます。

SDカードの抜き差しが簡単にできるように、ダンボーの横顔に穴を開けました。

f:id:sparkgene:20170506210825j:plain

セットアップで参考にしたのはこちらのQiitaの記事。

qiita.com

元になっているのはこちらの英語のドキュメントですので、こちらを見ながらAPIキーの発行などを進めてもセットアップは簡単に進められます。

Overview  |  Google Assistant SDK  |  Google Developers

実際にラズパイにインストールする際に必要なコマンドは、githubにあがっているサンプルに細かく書かれているので、こちらを見ながら進めました。

github.com

ラズパイ上でサンプルを動かす際、Google Assistant SDKに対して以下の情報を提供する権限を与える必要があります。

  • Web & App Activity
  • Location History
  • Device Information
  • Voice & Audio Activity

個人のgoogleアカウントに対してこれらの権限を許可するということは結構な情報を提供することになるので、気になる場合はメインではないアカウントを使うのが良さそうです。 ドキュメントにもデベロッパーアカウントではないgoogleアカウントでもOKと記載されています。

Set activity controls for your account

デモ動画

youtu.be

AVSのサンプルと違って、Google Homeのようにウェイクワードに反応することが出来ないようで、コマンドラインでエンターをすると音声を拾い始めるみたいな動きとなっていました。

MagPiの付録としてついてきているキットでもボタンを押して喋りかける使い方なので、Alexaのときと同じでそのうちウェイクワードにも対応するのかなって気がします。

www.raspberrypi.org

使ってみた感想としては、「おっけー、ぐーぐる」と思っきり日本語英語で発音しても、問題なく拾ってくれたので音声認識の精度はAlexaより高い印象です。 時刻や天気を聞いたら勝手に東京の情報を返してきたので、連携しているアカウントの情報に基づいて、回答を返してくる気がします。 ちなみに、「おっけー、ぐーぐる」と話しかけたあとは、音声入力待ちになるので、次のコマンドを言うことが出来ます。

あとがき

Alexaのサンプルが出てきたときよりもドキュメントがしっかりしていて、セットアップでハマるところはほぼありませんでした。

ハマったのはGoogle Assistant SDKの部分ではなく、ラズパイでオーディオを再生すると音が割れる現象が何故か発生して原因がわからずだいぶハマりました。 ダンボーEchoと同じ2017-04-10-raspbian-jessie-lite を利用したのに、.asoundrcの設定を同じにしてもダメでした。 結局、OSを再インストールしても状況は変わらなかったので、.asoundrcのspeakerの方にレート rate 44100 を指定することで音割れしなくなりました。

pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "hw:2,0"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:1,0"
    rate 44100
  }
}

ダンボーEcho制作メモ

GWの工作ということで、Raspberry Pi Zeroを手に入れたから、前からやってみたかったダンボーEchoを作ってみました。

Raspberry Piで自作のEchoを作る方法は、JAWSDAYS 2017でAlexaハンズオンを一緒にやったharuharuharubyさんの資料が分かりやすいので参考にしました。 qiita.com 資料との違いは、pyenvを利用しないでそのままインストールされているpythonを利用したのと、OSはGUIは使わないので「RASPBIAN JESSIE LITE」を使っています。 LITEを使っているのでSDカードは4Gでも容量的に問題はありません。

使ったダンボーAmazon限定の箱仕様。 f:id:sparkgene:20170504164350j:plain amzn.asia

顔の横にスイッチがあって、目に内蔵されているLEDが点灯します。 f:id:sparkgene:20170504164351j:plain

これをバラして、頭の中にRaspberry Pi Zeroを突っ込んで、自作Echoに改造します。 f:id:sparkgene:20170504164353j:plain

サイズがギリギリ入らないぐらいなので、使わないカメラ用のコネクタを限界まで削りました。 f:id:sparkgene:20170504164356j:plain

ウェイクワードに反応したら目のLEDで分かるようにしようと思ったので、配線とGPIOのテストをしてLEDがプログラムから光るのを確認。 f:id:sparkgene:20170504164359j:plain

LEDとラズパイの配線はこんな感じでやってます。 f:id:sparkgene:20170504174619p:plain

目を元の位置に戻して、ラズパイを後頭部の内側にネジ止めでしました。 f:id:sparkgene:20170504164400j:plain

首にあたる部分はラズパイを少しはみ出る形で固定しているため(コネクタ挿せるように)、少し加工しないと入りません。 f:id:sparkgene:20170504164401j:plain

後頭部部分を7mmぐらい切って、元々ボタン電池が入っていた部分もラズパイに干渉するので切ります。 f:id:sparkgene:20170504164402j:plain

無事完成したので、ラズパイ3で使っていたマイクとスピーカーで試すと、マイクは大丈夫だけどスピーカーの出力が全然足りなくて、音がかすかにしか聞こえない。 f:id:sparkgene:20170504164404j:plain

そんなわけで、USBスピーカーを新しく買って、USBハブにUSBマイクを刺して完成です。 f:id:sparkgene:20170504161644j:plain

デモ動画

youtu.be

入力待機中は右目だけ光って、ウェイクワードに反応すると左目が光ります。 元々のソースではウェイクワードに反応すると「ピン!」って音がなるのですが、視覚的に分かるようになるとより使いやすいと思います。

GPIOを利用したソースはこちら

github.com

あとがき

前に作ったラズパイ2の自作Echoと違って、ダンボーが喋ってくれるので何か癒やされますね。

qiita.com

次はソラコムに対応して、持ち運べるダンボーEchoにしたいところですが、そろそろUSBの出力が足りなくなりそうな気がしなくもないです。。

最近Amazon Alexa界隈で起きたこと(3/31〜4/30)

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

今月は新機能が色々と発表されたので、それらを中心に紹介していこうと思います。

目次


現時点のSkill数(US)

f:id:sparkgene:20170430092319p:plain 毎月、約1,000個ずつ増えているので、もうすぐ、13,000を超えそうですね。 ゲーム・トリビア、ニュース関連のSkillだけで5000を超えています。


[4/5] Leverage the New Metrics Dashboard to Deepen Skill Engagement, Drive Retention

Leverage the New Metrics Dashboard to Deepen Skill Engagement, Drive Retention : Alexa Blogs

Alexa Skillののデベロッパーコンソールに新しくMetrics Dashbordが追加されました。 詳しくはqiitaに書いたのでそちらを参考にしてもらえれば。

qiita.com


[4/5] Build More Engaging Skills with Device Address API and Gain Insights with the New Metrics Dashboard

Build More Engaging Skills with Device Address API and Gain Insights with the New Metrics Dashboard : Alexa Blogs

Device Address APIと言うものが追加されました。 今までAlexaでユーザの位置情報を取得しようとしても、Alexa Appで登録できる郵便番号しか存在しませんでした。(アカウント連携を利用する方法を除いて) 今回追加された機能は、Alexa AppでEchoデバイスに住所を登録でき、これをSkill側から取得できるというものです。(パーミッションの許可は必要) これにより、Uberを呼ぶとかDominoピザを注文するといったSkillがあったとした場合、ユーザーに別途位置情報を入力させること無く、配車したり配達することが可能になります。 詳しくはqiitaに書いたのでそちらを参考にしてもらえれば。

qiita.com


[4/6] Look Under the Hood with Echosim’s New Developer Console

Look Under the Hood with Echosim’s New Developer Console : Alexa Blogs

Alexaの新機能というよりも、Skillの開発ではかかすことが出来ない Echosim.io が、AVSでやり取りしている情報を見れる様に、デベロッパーコンソールが追加されました。

AlexaでAudioデータを再生させたいときなど、今までだと実際にどのURLにアクセスしに行っているか分かりづらかったですが、これらのAVSとやり取りしているJSONデータが見れるので、デバッグがすごくやりやすくなりました。

[4/7] Daylight or Incandescent? Announcing Tunable Lighting Control for Smart Home Skills

Daylight or Incandescent? Announcing Tunable Lighting Control for Smart Home Skills : Alexa Blogs

Smart Home Skillに新しいメッセージが追加されました。 今まではphilips Hueなどの電球は、Sceneの指定で照明の色を変えることが出来ましたが、これは事前にHue側でSceneを登録しておく必要があります。 今回追加されたメッセージでは、 Alexa, set the living light to blue とEchoに話しかけると、以下のようなリクエストがSkillに送られてくるので、この情報を元に電球の色を変えるというものです。

{
  "header": {
    "payloadVersion": "2",
    "namespace": "Alexa.ConnectedHome.Control",
    "name": "SetColorRequest",
    "messageId": "aaaaaaaaa"
  },
  "payload": {
    "color": {
      "hue": 240.0,
      "saturation": 1.0,
      "brightness": 1.0
    },
    "appliance": {
      "additionalApplianceDetails": {},
      "applianceId": "my-living-light"
    },
    "accessToken": "zzzzzzzzz"
  }
}

色は、hue(色相)、saturation(彩度)、brightness(輝度)で表されますので、デバイス側がRGBにしか対応していない場合は変換する必要があります。 試しに色を midnight blue で指定してみると、HSBは以下の様になりました。

"color": {
  "hue": 240.0,
  "saturation": 0.7768,
  "brightness": 0.4392
}

他には、

  • SetColorTemperatureRequest
  • IncrementColorTemperatureRequest
  • DecrementColorTemperatureRequest

が追加されており、 明るくして とか、 涼しい感じ みたいに話しかけることで色合いを変更できるようです。 ちなみに、存在しない色(適当な言葉)を指定すると、Skillを呼び出さずに失敗するみたいです。

最近家で映画を見たりする時は、Hueで照明をいい感じにすることが多いので、DVDが映画に合う色をAlexaに教えてくれると、面白いかもしれないですね。


[4/18] Improve Skill Quality with the New Beta Testing Tool for Alexa Skills (Beta)

Improve Skill Quality with the New Beta Testing Tool for Alexa Skills (Beta) : Alexa Blogs

Skillを一般公開する前に、βテストを行いたい時があるかと思いますが、これはそのための機能です。

特徴としては

  • 最大2,000名を招待できる
  • βテスト期間は90日
  • メールを送ることで招待可能
  • フィードバックをもらうことが可能

今までも、他の開発者にまだ公開していない自分のSkillを利用可能にする事はできましたが、これはどちらかと言うと数名での開発時の共有みたいな物で、今回のは一般のユーザーを招待することが出来ます。


[4/18] Announcing New Alexa Skill Builder (Beta), a Tool for Creating Skills

Announcing New Alexa Skill Builder (Beta), a Tool for Creating Skills : Alexa Blogs

Interaction Modelの設定がGUIを使ってIntent Schema、Custom Slot、Sample Utterancesが開発できるようになりました。 ちょっと使った感じだと、直感的になった印象です。IntentとSample Utterancesがわかりやすく連携していたりとするので、初めて作る場合はこのGUI使うと分かりやすいのではないかと思います。 また、以前に追加された Built-in Intent Library の指定が検索&チェック付けるだけで追加できたりするので便利そうです。 (ただ、開発する側からすると、APIJSONを簡単に登録できたりする方が、CIと連携できて便利なんじゃないかな〜と思うので、速く全部API化してくれないかなと)

[4/21] グーグル・ホーム、複数ユーザー対応、個人を識別する音声認識機能を追加

iotnews.jp

Alexaで欲しかった機能がGoogle Homeで先に実装されてしまいました。 先日、バーガーキングのCMでGoogle Homeを一斉に起動させるって事案がありましたが、すぐにCMに反応させないように改修が行われたそうです。声紋識別ができれば簡単にできる物なので、Googleさんとしてはちょうどいいタイミングだったのかなと思ったり、もしかするとバーガーキングGoogleが裏で共謀してたとかあるのかな。どちらも話題になったので、マーケティングとしては成功だったりしてとか、想像してしまいます。


[4/26] Echo Look発売

gigazine.net

$200という低価格でAlexa、深度を検出できるカメラ、動画撮影ができる新しいEchoが登場しました。 動画ではファッションのアシスタント的な位置づけみたいで、機械学習で自分が似合う洋服を選んでくれたりと、今までのスピーカーとは違う立ち位置のEchoとなっています。 Amazonが出してきたということで、将来的には洋服の購入に結びつける機能が今後追加されてきそうです。 Lookの登場でスピーカーにとらわれない、音声UIを搭載した家電の可能性を更に広げることになるのではないかと思います。


[4/26] Voice-enabling Your Home and Devices with Amazon Alexa and AWS IoT

https://www.slideshare.net/AmazonWebServices/voiceenabling-your-home-and-devices-with-amazon-alexa-and-aws-iot-level-200www.slideshare.net

AWS Summit Sydneyで行われたAlexaのセッションで、AWS IoTとSkillを連携させて家電を操作しようという内容です。 ガレージのドアを(海外らしいなというイメージ)AlexaのSmart Home SkillとAWS IoTを連携する方法について解説しています。

前にRaspberry Piを学習リモコンにして操作する物も作ったことがあるので、こうやって家をどんどんスマートホーム化するのは今後も増えていくかなと思います。

www.hackster.io


[4/27] New SSML Features Give Alexa a Wider Range of Natural Expression

New SSML Features Give Alexa a Wider Range of Natural Expression : Alexa Blogs

Alexaで利用できるSSMLに新しい機能が増えました

  • Whispers
    • ヒソヒソ声みたいに喋らせる
  • Expletive beeps
    • 途中から「ピー」って音を出して発話を隠すような効果(Fワードとか消すのに良いのかな)
  • Sub
    • <sub alias="aluminum">Al</sub> のように書くと、ALという略語に対して、aluminum と発話してくれる
  • Emphasis
    • 発話を部分的に強調したいときに音量を上げてゆっくり喋らせたり、音量を下げて早く喋らせるといった効果
  • Prosody
    • 音量、ピッチ、レートを変更できる。(これ使えばEmphasisを実現できそうだけど、Emphasisはすでに3種類のパターンが用意されているもの)

Webから拾ってきたような普通のテキストをそのままAlexaに渡して喋らせることは可能ですが、意外と聞きづらかったりする問題が有ります。 今後、音声UIが主流となっていく場合、SSMLを使ってテキストをより自然な形で発話できるようにするのは大事だなと思っています。こういったテキストを自動的にSSMLに変換してくれるようなサービスも今後増えてきそうですね。


あとがき

色々と機能が追加されてきてますね。流石に1万Skill越えただけあって、開発者の声を色々と反映しているって感じでしょうか。 また、AWSと同じで新しい機能は最初から全部の言語で利用可能!って感じでもないので、日本語対応したときにどこまでの機能が使えるかも気になりますね。早く日本に来ないかな〜。