期待のネット新技術
Alexaが一歩リードするSkill数が鍵、問いへの返答を返すクラウドサービスの内部構造
【スマートスピーカーの裏側に迫る】(第2回)
2018年3月13日 06:00
スマートスピーカーは“AIスピーカー”とも呼ばれ、声で呼び掛けて質問すると、応答を返してくれるもの。AmazonやGoogle、LINE、Appleなどが発売しているが、その裏側では、どうやって質問に対して音声で応答しているのだろうか? 今回は、スマートスピーカーにさまざまな機能を提供するクラウドサービスの状況について解説する。(編集部)
スマートスピーカーが特定のクラウドサービスしかサポートしない理由は?
さてそのスマートスピーカーであるが、現時点ではほぼすべてのスマートスピーカーが、「特定のクラウドサービスのみとつながる」方式となっている。
具体的には図の上段のような構成が考慮されており、下段のように複数のクラウドサービスとつながる方式は考慮されていない。もちろん技術的には“不可能ではない”が、そのためにはスマートスピーカー自身が相当賢くならない限り難しい。そんなわけで、クラウドサービスとスマートスピーカーの現状における組み合わせとしては、以下のようなところだ。
クラウドサービス | スマートスピーカー |
Amazon Alexa | Amazon Echo/Echo Dot/Echo Plus |
Cortana | Windows 10搭載デバイス |
Google Assistant | Google Home/Home Mini(/Android搭載デバイス) |
LINE Clova | Clova Friends/Clova WAVE |
Siri | Apple Home Pod(/iOS・mac OS Sierra搭載デバイス) |
ちなみにCortanaに関しては、Microsoftそのものはデバイスを出していないが、Harman Internationalが「Harman Kardon」ブランドで「Invoke」をすでに発表しているので、くくりとしては、スマートスピーカー向けのクラウドサービスの中に名前を連ねていても問題はないだろう。この記事にもあるように、Harman KardonブランドではCortana対応の「Invoke」」とAlexa対応の「Allure」、JBLブランドからGoogle Assistant対応の「LINKシリーズ」と、それぞれのクラウドサービスに対応するスマートスピーカーが個別にリリースされるため、現状では図の下段のような構成は難しいことが分かる。
何が難しいかというと、実は命令を出す方ではない。例えば以下の図のように、あるキーワード(ニャーニャー)の後に命令をしゃべると、それをクラウドサービス別に“Alexa”、“OK, Google”、“Cortanaさん”などと置き換え、それぞれのクラウドサービスに送り出すシステムは、それほど難しくない。
コストは若干上がるにしても、昨今の組み込み音声認識システムなら、それが「ニャーニャー」かどうかはともかく、特定のキーワードを検出するのは容易ではある。そのキーワードの後の音声を録音し、あらかじめデータで持っている“Alexa”などの呼び出しキーワードとつないで、それぞれのクラウドサービスに送り出すだけだからだ。
問題は返事を受け取る側だ。例えば今日の天気を尋ねたとする。それぞれのクラウドサービスは、それぞれのフォーマットで返事をするから、これらに対応するスマートスピーカーがあるとするなら、「“Alexaは『XXXXXX』、Google Assistantは『YYYYYY』、Cortanaは『ZZZZZZ』と言っています」とだらだら喋り続けることになり、あまりスマートとは言えない。
だからといって、この返事を1つにまとめようとすると、それこそフロントエンドのクラウドサービスと同等の言語認識機能が必要になるから、到底スマートスピーカーには収まり切らない。結果をまとめるために、もう一度クラウドサービスに投げるという荒業もあるにはあるが、これは本質的に何かが間違っている気がする。
おそらく現実的なソリューションというのは、以下の図のように、複数のクラウドサービスのプロキシとして動作するような別のクラウドサービスを手前に置き、ここから各クラウドサービスに対してリクエストを出し、その結果をやはりプロキシとして動作するクラウドサービスで受け取って返すということになると思われる。
ただし、この場合には「誰がそんなサービスを立ち上げるのか?」という問題点がある。そんなわけで当面は、特定のクラウドサービス1つのみをサポートするスマートスピーカーが山ほど市場に出てくる、という状況に大きな変化はないと思われる。
「天気は?」の問いに返答を返すAmazon Alexaの内部構造
ということで、長い枕の後で本題に入りたい。すべてのクラウドサービスを網羅していると、内容が長大になる上に執筆途中でサービスがアップデートされてしまうことが目に見えている。スマートスピーカーの動作の概要は前回にも解説しているので、ここではとりあえずAmazon Alexaに関してだけ解説していく。
2016年6月に開催されたAmazon Web Services(AWS)のカンファレンス「AWS Summit Tokyo 2016」における講演「クラウドとマイクロサービスによる音声操作の新時代 - Amazon Echo & Alexa」(Amit Jotwani, Senior Evangelist, Amazon Alexa)の資料をベースに、Amazon Alexaの内部構造を紹介していこう。
Alexaの場合、外から見ると「AVS(Alexa Voice Service)」というREST APIが用意されており、これを叩くだけである。ただし内部的には、まず「ASR(Automatic Speech Recognition)」で音声を認識し、英単語の組み合わせを返す。その英単語は「NUL(Natural Language Understanding)」という自然言語認識エンジンに送られ、単語の組み合わせから“意図”を検出して返す。
この“意図”をSkillsに送った後で、クラウドサービスの内部で実際の処理が行われる。例えば“意図”が時刻の問い合わせなら、現在地での時刻をほかのサービスから取得して“返答”を作成し、会話の指示として返す。この指示を「TTS(Text To Speech)」が受け取って音声に変換する。これが最終的にスマートスピーカーに「It's 8 PM」として戻され、音声で出力されるわけだ。
使えるサービスの鍵を握るSkill数はAlexaが現時点で一歩リード
ここでキーになるのが「Skills」である。前回は“ジョブ生成・管理”として説明したが、これをどれだけ豊富に持てるかが、どこまで使えるサービスになるかの鍵となる。
例えば2017年末、以下のMentionが筆者のTwitterタイムラインに流れてきた。極端なことを言えば、“場を盛り上げる”というルール(Alexaで言えばSkill)を追加すれば、「何か盛り上げて」と言う問いに対して、例えば軍艦マーチが流れ出す、という形での解は提供できる(最適解とは言っていない)。
母「おっけーグーグル、何か盛り上げて」
— Shuhei Fujiwara (@shuhei_fujiwara)2017年12月11日
というのを聞いて、我々エンジニアがいかにGoogle Homeに配慮して話しかけていたかがよくわかった
このルールにあたるものは、各クラウドサービスが自前でも提供するが、機器ベンダーあるいはユーザー自身でも作成できる。例えばAmazon Alexaで言えば、「Alexa Skill Store」にさまざまなSkillが登録されており、原稿執筆時点では28550ほどのSkillが登録されている(が、抹消されているとおぼしきものもあるので、実数は2万程度だろうか)。ここから自分に必要なSkillを登録することで利用可能となる。
似たような仕組みは、当然ほかのクラウドサービスにもあり、例えば「Cortana Skills」にあるSkillの総数は242(原稿執筆時点)と、やや出遅れている。Googleであれば「Actions on Google」で、Googleアシスタントの機能として日本語で公開されているものは、現時点ではそう多くないが、英語版にはかなり多く用意されている。
一方、LINEのClovaにもSkillは用意されているが、これを自分で開発するための「Clova Extension Kit」は現状まだベータ版で、広く登録されているSkillを利用できるという状態ではない。Siriは「SiriKit on HomePod」の提供が開始されているが、こちらもまだ広く利用できるとまでは言えない状況だ。
ただ注意しておきたいのは、これが現時点での話でしかないことだ。クラウドサービスのよい点は、どんどん改良してバージョンアップや追加ができることで、その際にいちいちローカルデバイスのファームウェアをアップデートしたりOSを入れ替えたりする必要はない。
冒頭の話に戻れば、スマートスピーカーの内部にあれこれ組み込んでしまうと、組み込んだ機能のバージョンアップや、機能を追加・変更した瞬間にアップデートが発生することになってしまう。この点からもスマートスピーカー単体を複数のクラウドサービスに対応させるスタイルは悪手と言える。
現時点では、あくまでも“フロントエンドに関して”であれば、各社のクラウドサービスの中でAlexaが一番進んでいて、これをGoogle Assistantが追従する、という図式である。“フロントエンドに関しては”と書いたのは、バックエンド側の様相が、まったく異なっているからだ。
今回は、スマートスピーカーの裏側に必須となるクラウドサービスのフロントエンド側について解説しました。次回はデバイスからクラウドサービスへのコネクティビティと、その標準化など、バックエンド側の現状について解説する予定です。