Google Homeで設定したショートカットやIFTTTコマンドが認識されない時のチェックポイント

Google Home + IFTTTでは好きな音声コマンドに対して様々な動作をさせるレシピを作ることができます。例えばIF側にGoogleアシスタント、出力側(THEN THAT側)にIFTTT赤外線家電コントローラーという組み合わせをすれば、「○○と言ったら家電のスイッチが入る」といったことができてしまうわけです。またGoogleアシスタント側の機能としてショートカットというものがあり、文字通りコマンドワードの短縮形や言い換えを定義することができます。例えば「Netflixでスタートレックディスカバリーを再生」と毎回つっかえずに言うのが大変なら、「スタートレックを見る」をショートカットにしておけば、Google側で自動的に言い換え(聞き換え)てくれるわけです。IFTTTのGoogleアシスタント入力では1つのレシピに3つの言い換えが割り当てられますが、ショートカットを使えばより多くのパターンを指定できます。例えば部屋の照明をつける1つでも「電気をつけて」「照明をつけて」「灯りをつけて」「明るくして」といくらでも言いようがあります。しかもまたGoogleさんの聞き分けが正確なので「電気をつけて」に対して「電気つけて」では反応せずそれぞれ登録しておかなければなりません。設定した自分だけならまだしも機械に疎い家族の言い方もカバーしようと思うと大変です。そんな時にはショートカットが便利です。

さてそんな自由な音声コマンドで様々な操作ができる素晴らしい技術ですが、使ってみるとどうにも上手くいかないことがあります。本記事ではσ(^^)の経験則からそんな時のチェックポイントをまとめてみました。基本は「Google Home(アシスタント)はまず聞き取った音声を“文字”に変換してから登録コマンドを参照する」ということです。

■Googleの聞き取り方に合わせる

例えばテレビのHDMI入力切替をApple TVに切り替えたいと「AppleTVに切り替え」ってコマンドを設定したいとします。しかし「AppleTV」も「切り替え」も文字にすると「アップルTV」「あっぷるてぃーびー」「切り替え」「切換」など様々な書き方ができます。AppleとTVの間にスペースを入れるかどうかということもあります。こういう場合、どういうルールでコマンド文を書けばいいかというと、「それをGoogleに言ってみて聞き取った通り」が答えです。Googleアシスタントアプリなら聞き取った音声を文字にして表示してくれますし、ショートカット設定画面ではわざわざ入力欄の端にマイクボタンがあり声で入力することができます。これらの方法でGoogleがどう書き取るかを調べ、そのままを音声コマンドにするのが無難でしょう。

■マイナーな固有名詞を避ける

もうひとつのポイントとしては単語や文章として一般的ではないものを避けるという点。我が家の猫は「たね」といいます。たねのベッドに敷いたペットヒーターをスマートコンセントで制御し、「たねヒーターをオン(オフ)」というコマンドで制御できるようにしようとしたのですがどうしても上手くいきません。そこでGoogleアシスタントで聞き取りを確認してみると「亀ヒーター」などとなりWeb検索結果を表示しようとします。こうしたSpeech To Text技術では、多少音声入力状態が悪くとも、一般的な会話として意味が通じる日本語文章を成立さえようと寄せてきます。つまり「たね/ヒーターかな?亀/ヒーターかな?」ってなった時に、後者の方が辞書(=ネット)によくある組み合わせだから言葉として正しいに違いない、と判断してしまうわけです。これはショートカットに登録しようとIFTTTでコマンドワードに指定しようと無意味です。それらはすべて一旦テキストに変換されてからマッチするものを探しているからです。順番として言えば、

  1. Speech-To-Text処理でテキスト化
  2. ショートカット設定からピッタリ同じテキストがないか探す
  3. IFTTTのコマンドワードからピッタリ同じテキストがないか探す
  4. Googleアシスタントのコマンドワードからピッタリ同じテキストがないか探す
  5. どれにもマッチしなければWeb検索に投げる

みたいなイメージです(2〜4の順番は実際には違うかも知れませんが)。だから2や3で固有名詞的な単語を登録しても1の段階で一般的な日本語として寄せられてしまうのでなかなか思った通りに認識されないというわけです。

Google Homeのスマートデバイスは部屋を割り当てることができます。例えば「たねヒーター」の所在地を「ベッドルーム」にすることで「ベッドルームのたねヒーターをオン」というコマンドが使えるようになります。常識的に考えれば「ベッドルームの」といってる時点で候補が狭まって認識率が向上しそうなものですが、実験してみた感じあまり違いはありませんでした。やはり一旦「ベッドルームの亀ヒーター」などとテキスト化され、結果としてWeb検索にいってしまうことが多いです(100%ダメでもなく上手くいくこともある)。

結局解決策としては「ペットヒーターをオン(オフ)」というように「たねヒーター」ではなく一般語としてありがちな「ペットヒーター」に寄せることでステップ1での認識率を上げるしかありませんでした。好きな固有名をつけられないのは悔しいですが、ステップ1に対してユーザ辞書的なものをもたせる仕組みがないので現状は仕方なさそうです。子供の名前やペット名など固有名をつけてる場合は試しに換えてみてください(強いていえばCMでやってるように「ドレンを呼び出してくれ」で電話帳のドレンさんを指定できるわけなので、電話帳にある名前はステップ1でユーザ辞書的に働く可能性はあります。iOSでもSiriで「おやゆびでお」というマイナーアプリ名がどうしても認識されなかった時、電話帳に登録することでいけたことがあります)。

■スマートホームデバイスは部屋名にも注意

上述のようにスマートデバイスに部屋を割り当てることができます。別の部屋に「照明」のような同じ名前のデバイスを設置した時に「ベッドルームの照明をオン」「リビングルームの照明をオン」などと言い分けるためのもののようです。スマートデバイスの設定手順の中でどの部屋にあるものか指定する画面がでます。ここも適当に流してるといつのまにかトラブルの元になりやすいので注意しましょう。我が家の場合、気付いたら「リビングルーム」が3つくらいあったり、「リビング」があったりしてました。ここもしっかり整理し意図せぬ部屋にデバイスが割り付けられてたり、同名の部屋が複数できてないか確認してみてください。ちなみに部屋名を削除するには割り付けられたデバイスをすべて他の部屋に割り付け直して空にする必要があります。またバグなのかAという部屋のaというデバイスをBという部屋に移動させたい場合、A部屋の一覧から他へ押しつけるような操作だとなぜか適用されません。B部屋の一覧に入って他から横取りするような手順で試してみると良いかも知れません。そしてここでもカスタム名は避けた方が無難なようです。例えば我が家に猫専用の部屋を割り当てられる余裕があったら「たね部屋」とかつけたくなるかも知れませんが、おそらく「たねヒーター」と同じ問題が起きることが想像に難くありません。

 

コマンド、デバイス名、部屋名に使い慣れたあだ名を割り当てたいのは人情ですが、現状の音声認識の仕組み上、一般的な日本語会話に登場しない言葉はなかなか難しいということ、日本語テキストにすることと、そこからコマンドとマッチさせることはかなり独立のプロセスであることを意識しておくと、認識率の高いコマンド設計ができるんじゃないかと思います。

余談ですが、「平沢進(ひらさわすすむ)」というσ(^^)の好きなアーティストをSiriやGoogleアシスタントで検索させた場合、きちんと見つけてくれる一方で、「はい、ひらさわしんを再生します」的なトークバックが返ってきます。こっちが「すすむ」と言ってちゃんとそれを認識してるのに、なぜ「しん」と読むんだ?とツッコミたくなりますよね。これこそがSpeech-To-Textとその後の検索処理、読み上げ処理がまったく独立でなされている証拠といえるのではないでしょうか。認識の辞書と読み上げの辞書が別々なんだろうということです。

さらに余談ですが、こうしたコンピュータが「言葉を理解する」ということについて専門家でなくてもわかる物語仕立ての解説をしている良書を紹介しておきます。σ(^^)もまだ読みかけですが大変オススメです。

海外に行く機会音痴家族の現地SIMを極力国内で準備する

妹と小学生の姪が年末年始アメリカに旅行に行くことに。現地での通信費を抑えたいという相談を受ける。街中のWi-Fiにすら自分でつなげたことがない妹が調べて挙げて来たのはグローバルWi-Fiのようなルーターレンタル方のもの。まぁ費用面では悪くないんですが、それならこっちで現地SIMを手配して余ってるMR04LNにつっこんで渡してやれば更に安く付くのでは?と考えました。実家のWi-Fiと同じSSIDと暗号鍵に揃えておけば、もうWi-Fiの設定すらいりません。出発日までに実家に帰れるか微妙なので完全遠隔で設定を済ますにはよさげ。しかしルーター方式は色々考えると、

  • (レンタルの場合)Wi-Fiの設定できるの?(空港受け取りならやってもらえる?)
  • バッテリー管理をする機器が増える
    • バッテリー節約しようと待機モードを使うと着信が受けづらくなる
  • 万一子供とはぐれた時にルーターをもっていない方は通信手段がなくなる

などが不安になってきました。結局色々調べた結果、AT&TのMVNOであるH2O Wirelessのが姪のiPhoneも含め2回線契約してもさほど高くないと思い、姪が心配で仕方ない母の安心料としても各iPhoneが通信できるようにすることに。

アメリカSIM KDDIxh2o 標準SIM+MicroSIM+ナノSIM全対応

アメリカSIM KDDIxh2o 標準SIM+MicroSIM+ナノSIM全対応

501円(05/06 15:07時点)
Amazonの情報を掲載しています

H2Oの特徴として、

  • AT&TのMVNOであり、auのiPhoneならSIMロック解除していない端末でも利用できる(無保証)
  • SIMはAmazonで179円で購入でき、日本にいながらWeb経由で開通手続きが済ませられる
  • KDDI系列で日本語サイトがある(しかしまぁauに比べれば日本語やリンクが怪しかったりで正直わかりづらい)
  • 継続プランの他に都度チャージプランでもそこそこ安い(プランはこちら
  • 追加チャージもWebで日本からできる
  • アメリカ国内通話が無料
  • 日本の固定電話も無料(携帯への通話は不明)
  • SIMカードは標準、マイクロ、ナノの3サイズ好きなサイズで切り取れる(写真。これは便利。日本でも流行るといいのに)

などなど。惜しいのはアメリカ専用なので、今回の乗り換え地の上海では使えません。そこはauの世界データ定額(1日980円)でしのいでもらうこととしました。

auのSIMロック端末でも使える、というこが今回大きかったです。ちなみに姪の端末はSoftbankのiPhone5cだったんですが、ちょうどガラス割れでセルフ交換したタッチパネル不具合が出ていたので、妹が以前使っていたiPhone6(こちらもauロック)に機種交換しました(国内SIMもU-mobile SからUQ mobileに変更、ほぼ同じ月額料金で1GB->3GBとアップグレード)。

実際の手順はこんな感じ。

  1. AmazonでSIMを購入
  2. (H2O本家ではなく)KDDI Mobile x H20 Wirelessの日本語サイトでユーザー登録
  3. SIMに記載されているコードを使ってアクティベート(アメリカの好きな市外局番で電話番号が取得できる
  4. 都度チャージプランを選択してクレジットカードで課金(もちろん日本国内のクレカでOK)
  5. 国内MVNOの場合はAPN設定プロファイルを削除(auの場合は不要)
  6. SIMを刺し替える
  7. H2OのAPN設定プロファイルをインストール
  8. 現地で通信
  9. 帰国後、H2Oのプロファイルを削除し、SIMを入れ替えMVNOの場合は再度APN設定をインストール

という流れになります。小学生の姪はもちろん妹ですら「SIMカードって何?」と自分で見たことも触ったことないレベルだったので、動画で手順を録ってあらかじめ2人のiMessageに送っておきました。また手順書もオリジナルで作成しPDFで送っておきました。これらはキャッシュされているので現地でオフラインなままでも閲覧可能となります。

問題はステップ7.のAPNプロファイルです。通常は現地でSIMをさして電波を掴むと、SMSが送られて来て、そこにダウンロードURLが書かれているのでタップしてインストールします。この時点でインターネット接続が必要なので、ニワトリとタマゴ状態になります。空港のフリーWi-Fiや現地スタバやマックにかけこんでつなげられれば問題ないんですが、そのスキルを100%信頼できないからこんな苦労をしているわけです(笑)。最終的にどうしたかというと、まずこちらのサイトにPC/Macからアクセスし、署名付きのAPNプロファイルをダウンロードします。非公式サイトのようですが署名付きなので警告が出ないのは良いです。Macをお使いの方はApple Configurator 2で自作してもいいでしょう。APN設定は公式サイトを探せば書いてあります。アクセスポイントだけの簡単な内容です。これをiMessageで2人の端末に送ります。以前はiMessage上でプロファイルが認識されて、添付ファイル表示をタップすればインストールに進めたはずなんですが、最近はそれができず。テキストファイルとして表示されてしまいます。そこでそれを左下の共有ボタンから「ファイルに保存」->iCloud Driveとして「ファイル」アプリ(iOS11以上)に保存させておきます。H2Oの場合は「Prodata」という名称がつきました。こうしておけばオフラインで利用可能な状態で保存され、かつ「ファイル」アプリのトップ画面からタップ一発でインストール画面に進ませることができます。つまり妹達に指示した手順としては、

  1. 「設定」アプリでプロファイルを消去(MVNOな姪端末のみ)
  2. 電源を切ってSIMを交換する(動画で解説、SIMピンも一緒に送った)
  3. 再度電源を入れたら「ファイル」アプリを開いて「Prodata」タップしインストール

てな感じです。これらをスクショを交えたPDFにしたためて送っておきました。

結果として昨日現地から開通報告が届きました。妹の場合、海外データ定額を上海で使うことを視野に入れてデータローミングをONにさせといたんですが、職場の知人に「ローミングONだと大変な請求が来る」と言われてまたOFFに戻していったせいでもたついたようです。しかし自力でそこをいじったことを思い出してONにしたらつながった、とのことです。正直、現地SIMを現地で使う分にはローミング設定関係ない気もしますが、まぁ設定をかえたことで再接続が発生したとかそんなことかも知れません。もしくは空港でAT&Tの電波が悪くローミングで他社につながった?

あと、妹は$40で高速通信8GBのプラン、姪は$30で4GBのプランにしておきましたが、こちらで高速通信残量をチェックして不足しそうなら追加チャージしてやろうと目論んだものの、開通後にMy Pageにアクセスしてみたところデータ使用量欄は「Unlimited」とだけ書かれてました。確かに低速では無制限だけども!くそぅ、本人達から「遅くなった」という報せが来たらチャージ、ということになりそうです。

まとめると、ポイントは必要な情報(APN設定、解説書、解説動画)をオフラインで参照できるよう端末内にキャッシュさせておくことですね。SIMの交換手順はきっとYoutubeとかにもあるんでしょうけど、それだと先にネットがつながっていなければ見られません。解説書は実家のプリンターに遠隔出力もしておきましたがもっていったかどうかは定かではありません。一応代表的なフリーWi-Fi(空港、スタバ、マクロナルド)のSSID情報なども載せておきました。

ちなみに、現地から接続の報せが来てから時計のことを思い出す。現地SIMで本体時計は現地にあうはずですが、「世界時計」に東京を設定するくら、機種交換で預かった時にやっといてやれば良かったと思って、仕方なく後からLINEで姪に手順をメッセージしたんですが、「それは出発前にやった」ですって。今時の小学生スゲーな!あとGoogle翻訳は入れといてやりました。

最悪、世界データ定額のアクティベートボタン押して980円払って連絡しろ、と言っておいたんですが、まぁともあれH2Oでつながったようでなによりでした。

あー、自分もたまには海外旅行とかいって現地SIMとか使ってみたいわー(そっちが主目的?)。

Google Home/Alexa/IFTTTで使えて千円台で買えるスマートコンセント

ネコの寝床を温めるペットヒーターを時間で制御していたプログラムタイマーを今年も使おうとしたら壊れてました。どうも内部電池が完全に放電してしまうとダメになるらしい。

節電エコタイマーET55D

節電エコタイマーET55D

2,027円(05/06 15:07時点)
Amazonの情報を掲載しています

そこでどうせ買い直すならとスマートフォン/スマートスピーカーなどから制御できるスマートコンセントにしようと物色。なんと単価でいえば上のタイマーとたいして変わらない値段でありました。

それがこれ。2つセットの値段(1つでも買えます)。全く同じ見た目の類似商品がAmazonだけでも山ほど出てきますが、とりあえずIFTTT対応が明記されていたのでこれにしてみました。どのみちON/OFFしかない機器なので、IFTTTにさえ対応していれば最悪単純な制御はGoogle Homeからでもできるし、時間による制御もIFTTTからすればプログラムタイマーの代替になるはず、と踏んだからです。

ただし残念ながら日本で使うにはちょっとした追加投資が必要になります。その理由がこれorz。

3ピン仕様なのです。だから3ピン型のタップや壁コンでない限り、変換アダプタやシャトルコードが別途必要になる上、壁から浮き上がって邪魔&格好悪いことになりますね。そしてアダプタは別売りです。私はAmazonにオススメされるまま変換アダプタを買ってしまいましたが、ショートコードにして見えないところに転がしておく方が良いかも知れません。

サンワサプライ 3P→2P変換アダプタ TAP-AD1BKN

サンワサプライ 3P→2P変換アダプタ TAP-AD1BKN

380円(05/06 15:07時点)
Amazonの情報を掲載しています
ELECOM 電源ケーブル 延長コード 0.1m ホワイト T-ADR1WH

ELECOM 電源ケーブル 延長コード 0.1m ホワイト T-ADR1WH

417円(05/05 22:31時点)
Amazonの情報を掲載しています

その他、ハードウェアの仕様としての注意点は11ooWまでの対応であること(暖房器具などでは注意)と、Wi-Fiが2.4GHzオンリーな点くらいです。

アプリはSmart Likeというものを使います。タイマーもこれ単体で設定できました。曜日別設定もできるのでプログラムタイマーとしては下手はハード製品より操作が楽で良いです。また試してないですが天気や気温、湿度、空気品質、日の出日の入り時間、そして他の同機種デバイスのON/OFFに連動して自動制御することもできるようです。IFTTTまかせでなく自社アプリ内で色々できるようにしているところがなかなかに立派。

←こんな感じの画面です。

 

せっかく2台セットで買ったので、他にコンセント制御できる家電としてコタツを見つけ、コタツをIoT化してみましたw。朝布団から出る前にあらかじめコタツを温めておけるとか素敵じゃないですか?

そしてGoogle Homeアプリで直接認識して音声制御もできます。個人的にはタイマー動作と音声制御ができればとりあえず満足なので標準アプリとGoogle Homeで事足りました。IFTTTはレシピが出せることだけ確認して設定はしてません。

 

■Google Homeで上手く制御する為のTips

ちょっとだけ手こずったのでいくつかコツをまとめておきます。

標準アプリ側で「こたつ」とか名前をつけてGoogle Homeアプリで認識はしてもすぐには「こたつをオン」で認識するようにはなりませんでした。Google Homeアプリ上では名前がありません。一覧では「こたつ」と出てますが、「デバイス情報」を開くとそれは「Smart Lifeからの名前」であり、ニックネーム欄が空になってる状態です。一応ニックネームを同じ内容ですが書いてやったら動いた気がします。

ただこれでも「こたつをオン」ではワードが短いので、誤認識されまくります。もっと長くてレアな名前にしてやればいいんでしょうけど、「こたつ」は「こたつ」にしておきたい。そこで「部屋」を割り当てます。ここでは「リビングダイニング」をアサインしました。これで「リビングダイニングのコタツをオン」が制御ワードになります。たぶん単体で長い名前にするよりも、部屋名スタートにすることでスマートホームデバイスの操作だと気付かれやすくなるんじゃないかなという期待もあり。

で、これを毎回言うのは面倒くさいので、「ショートカット」で再び「コタツをオン」とか「コタツを入れて」といった制御ワードを登録します。ショートカットは最も優先して認識されるはずなので、結局一回りして最初と同じじゃん!と言われそうですが実際これで認識率が上がりました。「たね(ネコの名前)ヒーター)」も「亀ヒーター」になってオススメの爬虫類飼育ヒーターを紹介されたりしまくってましたが、まともに認識するようになりました。

ちなみに前にも書きましたがこれらの調整は「Google アシスタント」アプリ上で試行錯誤すると、相手方がなんと認識した上で反応してるか見てとれますし、こちらもテキスト入力で正確なワードを入れてそれでちゃんと反応するかどうか試せるので捗りますよ。

 

背面にストラップがありQi充電もできるiPhoneXケース

iPhoneXのケースが壊れたので買い換え。iPhone 7 Plusを使ってた頃のように背面に指を入れるストラップがついたものが良かったのですが、iPhoneX入手当時には見付かりませんでした。以前使っていたsimplism製のものもX対応版は出す気配がなく。

しかし今回は何製品か見つけ、結局これにしました。


カラフルで良いデザインだと思います。また非接触充電も、効率とかまでは比較してないですが、ちゃんとできているようです。バンカーリング的な金属のリングがついたものはたくさんあるのですが非接触充電ができなかったリングが発熱するなどあって手を出せずにいました。またど真ん中固定のリングは実際使い勝手もあまりよくありません。

それに対し、今回のケースは縦位置をある程度変えられますし、ストラップの材質がゴムバンドなので伸縮性もなかなか。またLightningポート部分も広めで、前のケースで干渉していたコネクタ(実はApple純正のディスプレイアダプタ)も大丈夫そう。

こちらのベルトケースにいれる際、ストラップ部分が多少引っかかるのが惜しいけどまぁ仕方なし。

安いし予備でもうひとつ位買っておいてもいいかも。

今回見つけた他の候補も挙げておきます。

色の選択肢も様々なレザー製ケース。ストラップをピンと伸ばした時にボトム側が全長を超えそうだったり、全体に厚みが出そうで、ベルトケースと相性が悪そうで見送りました。

明確にQi充電対応を謳っているのが良かったです。ストラップを出すのに2アクション必要そうなんですが実際に使ってみないと使い心地がわからないですね。

 

こちらは楽天。機能は上のものと似ていますが、ストラップに加えスタンドも展開するというギミックです。ただ厚みが出そうなのと、お届け日数が長めだったので見送りました。

RTX1210でGoogle Home(やAndroid)のIPアドレスを固定できなかった話

Google HomeをIPアドレスで叩いてしゃべらすスクリプトを運用している関係で、IPアドレスを固定したかったんだけど、いつもどおりRTXで

してもダメ。何度再起動してもmanual releaseしても意図せぬIPアドレスが割り振られてしまう。

結局、

と「ethernet」句を抜いたらいけた。公式マニュアルにある書式2、設定例Dにあたるが理由はよくわからない。ない方が汎用性高いのかと思って試しに全部ethernet句ぬいてみたらWindows機が固定されなくなり、結局Google Home/miniの3台分だけethernet句無しにした。

ちなみに、

設定(これなんでだっけ?)。普通にonの方がいいのかな?

マニュアルによると、DHCPクライアントはMACアドレスとは別にクライアントIDという値をリースの際に使う。Macなんかだとこれを自分で書き換えて任意の文字列にすることができる。しかしデフォルトでは「0x01+MACアドレス」となっている。マニュアルのtype指定の表によると、ethernetは0x01、textは0x00とあるので、なるほど、ethernetは「MACアドレスを使う」という意味ではなく「クライアントIDに書いてある0x01で始まるMACアドレス相当の文字列を使う、ということなわけか。ethrenet句=0x01と読み替えてもいいかも知れない。そしてGoogle HomeのクライアントIDが「0x01+MACアドレス」形式ではなに何かをもっているので、「ethernet (MACアドレス)」ではマッチしない、とということ?

すると、各クライアントがどっちを使ってリースしてるかわかる。ざっとみるとクライアントIDを使ってる(が中身は0x01+MACアドレス)のものが多い。なるほどこれだとethernetがあってもなくても大丈夫なわけだ。

そういえば前にもAndroidTVなBRAVIAがどうしても固定割り当てできなかったな。Google製品(Androidベース製品)はクライアントIDに独特のルールがあるのかしら?

結果としてガチにMACアドレスを使いたい場合はむしろethernet句を書かない方がよさげ。ただしウチでWindowsが固定されなくなったのは謎。Windowsの場合はコマンドプロンプトからクライアントID(DHCPクラスID)を変更できるぽいけど、特に指定はされてなかった。