最近流行のAIスピーカーのひとつGoogle Homeを購入したのでそれに関する雑多な話をつらつらと。あくまでも個人的なメモなので内容の正確さを期待してはいけない。
世の中には物事の本質を理解せず付けられた名前だけで判断してあれやこれやと言い行動する人が多数いる。経済を回すには多くの人を動かす必要があるので実態を伴わない概念が独り歩きしがちである。いわゆるバズワードである。IT業界における現在のバズワードがAIとい言えるだろう。一昔前はクラウドだったの単なるサーバでの処理をクラウドと言い換えるビジネスが流行っていたが、現在は少し複雑な処理をAIと言い換えるビジネスが流行っているということになる。
そういった目で冷静に考えると、Google HomeというのはAIスピーカーではなく、IP接続マイク付きスピーカーと呼ぶのがより適切で中身を理解しやすいと思われる。スピーカー自体にインテリジェンスがあるわけではなく、スピーカーの使い方のモデルをインテリジェンスと称しているのである。より砕いた言い方をすると、Google Homeは音声を録音してサーバに送信し、サーバで作成した音声ファイルをダウンロードして再生しているということである。
御託はそのくらいにしておいて、実際にGoogle Homeを使った感想などを書いていきたい。購入したのは写真のGoogle Home Miniである。

最初にAIスピーカーとして目についたのはAmazon Echo dotであったが、なんと招待されないと買えないといういうことで順番を待っていたところ、ちょうどGoogle Homeが半額セールをやっていたので気が変わってしまい、結局順番が回ってきたときにはEcho dotは買わずじまいという流れである。結果としてはEcho dotが買えなかったのが非常に幸運だったのではないかと思う。Chromecastと連携できたこともそうだが、ここに書いていることをいろいろと試せたのもGoogle Homeだったから簡単にできたのではと考えている。(Amazon Alexaについては何も調べていない個人の感想である。)
普通サイズのGoogle HomeとGoogle Home Miniで少し悩んだが、出来ることは同じでMiniの方が小さくて安いということでMiniを購入。Google Homeの方がスピーカーが大きいので音質がよいというメリットがあるが、その程度の差はたかが知れているし1台なのでステレオでもないと考えると、音楽を聴く用途に使うことはないだろうなという判断である。
セットアップはAndroidのHomeアプリで簡単にできる。Chromecastも持っているのでHomeアプリは既に使用していたが、それでGoogle Homeも一緒に管理できる。さっそく使ってみた感想であるが、まず最初に感じるのは音声認識がかなり良く出来ているという感動である。もちろんこれはGoogle Homeに限った話ではないと思われるが、音声認識を使おうと思うきっかけがなかなかなかったので現状の音声認識の出来を実感するいい機会であった。
声を文字として聞き取れているのももちろんだが、ちゃんと単語を認識して意味のある文章として認識できている精度がなかなかのものである。Google Home自体がわりと柔軟に雑談にも答えてくれるが、Google Homeの動作として対応していない文章だったとしても、Homeアプリの履歴で確認することで音声自体はちゃんと意味のある文章として認識できていたことが確認できるなのがなかなかよい。やはりこのあたりの認識能力はGoogleのビッグデータ(一昔前のバズワード(笑))の力なのだろう。
従来の論理学では言語というは物理法則のように美しく整理されるものと考えられていて、チョムスキー標準形のような系統化が行われていた。チョムスキーは全ての自然科学は物理学への劣等感から成り立っているというようなことを本当に言ったかどうかは定かではないが、現実にはコンピュータによる大量のデータのパターンマッチこそが言語処理の道筋だったというわけである。ビッグデータをディープラーニングするという現代的な解法が人間の脳の構造にも近かったということが言えるのかもしれない。
昔読んだライトノベルで記憶容量が一定の量を超えると、つまりクリティカルマスを超えるとコンピュータのブレークスルーが起きて意思を持ち始めるというような話があり、タイトルを忘れてしまって非常に悔しいのだが、当時は小説とはいえ全く的外れなことを言ってるなという感想、つまりは人工知能というのは量の問題ではなく質的なブレークスルーが必要だと感じていたが、時間が経ってみて現実はそちらの方が正解だったともいえるということである。
またまた話が脱線してしまったが、普通に使うにあたって一番重要なことは「オーケー、グーグル」ではなくても「ねぇ、グーグル」でも使えるということである。正直日本語でオーケーグーグルはなかなか使いづらいものがあるが、ねぇグーグルならまだ会話の流れとしても自然で許容範囲ではないだろうか。欲を言えばグーグルの部分を別の名前に変更できればさらに爆発的な人気が出ていたのではと思うが。
Google Home単体でできることとしてはGoogleで検索などがあげられるが、正直音声で検索結果を聞くのは使い勝手としてはそんなに良いものではない。ニュースの読み上げやRadikoによるラジオの再生などもわざわざGoogle Homeで聞くのは微妙かもしれない。一方で、今日の天気や気温などを教えてもらうのは便利かもしれない。確認したい結果自体は非常に短いもので、自分で調べるならパソコンなりスマホなりを使って特定のサイトなりアプリなりを確認する必要があるものが、音声で指示することでその手間を削減できるものが便利なものとまとめられるかもしれない。タイマーや目覚ましでの利用も同様に手軽に便利である。
音声でGmailを送ることも出来るらしいが日本ではまだ対応していないようである。予定表の確認もできるらしいがデフォルトの予定表の内容しか確認できないらしく使い勝手が悪いようだ。このあたりは全然興味がなくいので実際には試していないの。
Google Homeではサードパーティ製のアプリも動作可能である。「〇〇につないで」というアプリが起動する。音声のやり取りとしては起動だけでワンアクション必要になるので利便性は低下する。検索するといろいろなアプリが見つかるが、実用的なアプリは結局音声でリクエストして音声で結果を教えてもらうという作りになるので、わざわざ音声でやりとりするのは面倒だと思われる。ベストティーチャーという英会話練習アプリは興味があれば悪くないかもしれない。
AIスピーカーといえば音楽の再生が目玉機能のひとつとしてあげられる。Google HomeでもGoogle Play Musicの音楽を再生することができる。リクエストに応じていろいろ流すには定額制の聞き放題の音楽サービスと相性がいいのでビジネス的にはそれが売りなのであろう。しかし、わざわざお金を払ってGoogle Homeが選んできた曲を聞きたいかといわれると好みの分かれるところである。Google Play Musicに自分の持っている曲のデータをアップロードしておくと無料で自分の曲をネット経由で再生するプレイヤーになる。この使い方も割と悪くはないと思われる。ただしスピーカーの音質を考えると部屋に他のデバイスがあれば出番がないだろう。
GoogleということでChromecastとの連携も目玉の一つであると考えられる。これはあまりアピールされていない気もするがかなり便利である。「〇〇の動画を流して」などのリクエストで、同じ部屋にある(Homeアプリに登録されている?)ChromecastにYouTubeの動画を再生することができる。正直Chromecastを直接スマホのアプリで操作する利用法だとあまり使っていなかったが、Google Homeとの組み合わせで出番が増えた感じはある。音量の調節も動画再生中はちゃんとChromecastの方の音量が調整される。我が家ではChromecastをテレビではなく液晶モニタにつないでいるのでHDMIの制御で画面の電源を切れないのだけが残念である。
サードパーティ製のアプリは自分で作ることでいろいろな機能の追加も可能と思われる。検索するとFullfilmentやActions on Google、Dialogflowなどのキーワードが出てくるが、そこまでちゃんとしたものを作ることはないだろうし全然理解していない。そもそも、上記のようにサードパーティ製のアプリは「〇〇につないで」と言って一旦起動しないといけないので、Google Homeを気軽に使うにはあまり出番がないと思われる。
もう少しお手軽に機能を追加する方法としてはIFTTTを使うという方法がある。どういう仕組みで実現されているのか知らないがIFTTTを使う場合には「〇〇につないで」と言って起動しなくても、直接音声キーワードでいろいろな機能を実行することができる。IFTTTには多くの機能が用意されているので、例えば音声でtwitterにツイートするというような機能であればクリックだけ作成可能である。ただ、この場合なぜか音声認識した日本語が単語ごとにスペースで区切られた分かち書きの文字列になってしまうので、それをそのままツイートするとちょっとカッコ悪い感じになってしまう。ただプログラムを書いて実行しているわけではないのでそういった細かい部分を修正することはできない。
IFTTTの機能として用意されていないことをする場合、IFTTTのwebhookの機能を使い特定のURLにアクセスすることで、ウェブから操作できるものであれば何でも連携させることが可能である。検索しているとfirebaseであるとかngrokであるとかNode.jsであるとかいろいろなキーワードが出てきて大変そうというイメージを持ってしまいそうだが、Node.jsに便利なライブラリが多数あるのでそれを使うのはそれとして、基本的にはwebhookでウェブから出来ることはなんでもできる考えるとそんなに難しくない。
欠点としてはwebhookで実行した結果をGoogle Homeにしゃべらせることができないということである。もっともこれはwebhookに限ったことではないが、IFTTTでの連携する場合、Google HomeからIFTTTを起動するときの文字を使ってGoogle Homeが答えることは可能であるが、アクションの結果から何かを答えることはできないということになる。IFTTTに用意されていないものをwebhookで起動する場合というのは、例えば自宅の温度計の温度を読むなどのアクションになるのでその結果をしゃべらせることができないというのが特に影響してくる。
この問題の解決方法は、Google Homeのやりとりとしては「お待ちください」などをしゃべらせていったん終了とし、アクションの結果は別途しゃべらせる方法である。Google Homeは音声での操作だけではなく、ネットワーク上がらデバイスを見つけて音声ファイルを送って再生させる機能もあるようである。こういった解決方法を考える人はすごいなと思うと同時に、どこからそんな機能の情報を入手しているのだろうという疑問もある。google-home-notifierのライブラリを使うとmDNSでGoogle Homeを検索してしゃべらせるということが簡単に実装できる。
google-home-notifierでGoogle Homeをしゃべらせたときに最初に悩むのが声のクオリティが低いということである。同じGoogle Homeでしゃべってるのになぜこんなにも別人なのかと思ってしまうが、最初に書いたようにGoogle HomeというのはAIスピーカーではなくただのネットワーク接続スピーカーであることを考えると、Google Homeのサービスとgoogle-home-notifierのライブラリは音声データの作成が同じようにはできないのだなということに思い至る。
google-home-notifierの中を見てみるとgoogle-ttsというGoogleのTTS(音声合成サービス)を使って文字を音声に変換しているようであるが、これは同じGoogleとは言ってもGoogle Homeの音声合成とはクオリティが違うということなのだろう。Google TTSは200文字までは無料のサービスなのでクオリティについてはこんなものなのかもしれない。
AIスピーカーのもう一つの目玉がスマートホームである。照明などの家電がGoogle Homeと連携して声で制御できるというものだ。もちろんうちにはそんな高級な家電はない。PhillipsのHueという照明がよく出てくるが一式何万円もするので試してみるのに気軽に購入できるものではない。
そこで出てくるお手軽な方法が赤外線リモコンを使った制御である。赤外線リモコンを学習してスマホなどで制御する機器は最近流行っているのでいろいろ出ているが、これまたお値段が結構するものが多い。そんな中で写真のRM mini 3はなんと1500円(購入時のセール価格)で売っているという超絶お得商品である。

ただこの商品には罠があって、日本の代理店が販売しているeRemoteという同じ製品を7000円程度で売るために海外版はスマホのアプリで操作できなくするという制限がかかっているのである。値段の差もひどいし、制御アプリもGoogle Playで検索するとリダイレクトされるというひどいものであるが、スマホの言語設定を一時的に英語にすると普通につかうことができた。今回の場合は最初のWi-Fiの接続さえできれば普通に使える必要は特にないのでこれで充分である。
これもまたGoogle Homeと同じであるが、装置自体には赤外線リモコンを学習する機能があるわけではなく、IP接続の赤外線送受信機である。同じネットワーク内からmDNSでデバイスを検索し、赤外線の受信をすることでネットワーク経由でデータを制御側に保存(スマホアプリで操作する場合はアプリに)、保存したデータをネットワーク経由で送信することで赤外線リモコンの操作をするというものである。全てのものがデバイスとインテリジェンスに分割されてく美しい世界の方向性である。
我が家では照明が赤外線リモコンでつけたり消したりすることができるのだが、これがわりと原始的な仕組みでボタンは一つしかなく、推すたびに強・弱・豆球・消灯と変化するものである。これだとGoogle Homeに「電気を消して」と頼んで消すというコマンドを送信することはできないという問題点がある。今回の解決策としては、現在の部屋の明るさを確認してある程度明るければ赤外線のコマンドを送るという処理を行った。これは豆球がついているときは判別が難しいがその辺はあきらめることにする。
もうひとつ問題があってこのRM mini 3は一応全方向に赤外線を出しているらしいのだが、我が家の照明は受信に指向性があるようで特に明るいときはうまく赤外線を受信してもらえないという事態が発生した。いろいろと角度を調整してみると、RM mini 3を横にするとわりとましになるということがわかったのでとりあえず寝かせておいてあって見た目はいまいちである。
さらに我が家ではエアコンも赤外線リモコンで操作ができるのだが、こっちは逆にリモコンが賢いので学習が難しいという問題がある。エアコンのリモコンでは一般的なようだが、エアコンをつけるというコマンドはなくて、運転モードや温度や風向きなど全てのデータを含めて毎回送信するらしい。それをいちいち学習させるのは困難があるので、今回はよく使うひとつの設定内容だけ学習させてつけたりけしたりはできるということでお茶を濁した。
おまけとして、スプラトゥーンのガチマッチの今のルールをGoogle Homeに教えてもらえるようにした。ガチアサリならスプラトゥーンをやりたい時などにとても便利である。世の中にはスプラトゥーンのステージ情報をJSON形式のデータで配布しているサイトがあるらしい。さすが現代という感じで言われてみれば当然という気もするがそういうものがあるとは今まで全く調べてみようとも思いつかなかった。普通にやるにはスマホのアプリを起動してステージ情報を見るのだが今のルールを見るだけのためにわざわざ調べるのは結構面倒なのでこの機能は大変便利である。