趣味のプログラム工房

スマートスピーカー

AutoVoiceが止まる。認識しない

AndroidスマホにAutoVoiceを入れて、Googleアシスタントを使わず音声操作をしているのですが、「Control Continuous」をONにしているのですが、1日くらいそのままにしておくと、音声が認識しなくなる現象が。。。

一度、OFFにした後、ONにするとまた認識をし始めるのですが、、イマイチ安定しないです。
何か設定が悪いのかな。。。

ですが、これを解決する画期的な方法を発見。

それは、、、、PC版AutoVoiceを使う、、、です。

私の場合は、サーバとして24時間起動しっぱなしにしているLinuxマシンに、
Chromeのプラグインとして提供されているAutoVoiceを入れています。

PC版のAutoVoiceはスマホのAutoVoiceと連携するものです。
というか、スマホのAutoVoiceをリモートデバイスとして扱うものですね。

とりあえず、これで、スマホ側ではControl Continuousを設定しなくても、Linux側で音声を拾えるので動きは安定しています。
ただ、PCのマイクの性能が重要、、、性能低いと音声認識に支障が出るので。
でも、性能がいいマイクって意外と高いんですよね。。。

ですが、やっぱりスマホで音声認識するより、PCで音声認識するほうが若干遅い気がするんですよね。。。
まあ、一個挟んでいる分仕方ないんですが、、、これ、早くなるのかな?


根本的なところで会議用の好感度マイクは必要だと思った。
これがないと、そもそも音を拾えない!

2018年01月19日


スマホはGoogle Homeを超えた。androidスマホ+AutoVoice > Google Home

Google Homeの不満点
①ウェイクワード(ホットワード)が変更不可
 というか、めんどくさいし、かっこ悪い。
②ローカルデバイス(LAN内)との連携が不便。
 →eRemoteの操作ができない。
 →KODIとかDLNAとか、家電とか操作したい、、、
③オリジナルコマンドを追加したい
 →Actions on Googleを使えばできるけど、スマート家電とかローカルのデバイスを操作するのはやっぱり不便。

だが、androidスマホ+AutoVoiceとLinuxマシンを組み合わせれば、Google Homeを超えるガジェットになります。
まあ、ずっと言っていることではあるのですが。。。

我が家では、AutoVoice+Taskerを使って、スマホで拾った音声のテキストを全てLinuxマシンへ飛ばしています。
Taskerでは、逆に「OK,Google」はスルー(何もしない)して、それ以外のワードをLinuxマシンへ転送しています。
その理由としては、、Google Homeもたまに使うため、明示的にOK,Googleでつなげたコマンドのみ処理させたい為なのですが。
ウェイクワードの有無で動かすデバイスを使い分けることができます。


スマホで拾った音声をAutoVoiceで一番に処理させるため、
AutoVoiceにてControl ContinuousをONにする。(重要)

で、LinuxマシンとのインタフェースはHTTP。
Linux側でWEBサーバ(PHP)を立てて、拾ったテキストをPHPで解析してコマンドを実行しています。
・赤外線リモコン(eRemote)操作は「node broadlinkjs-rm」
・音楽を流す場合は、MPDをインストールしてMPCでローカルの音楽を再生
 →スマホから渡ってくるコマンドから「(.*)を再生して」、「(.*)の曲を再生して」などで曲のタイトルやアーティスト名を拾って、mpc searchコマンドで曲を検索して再生。
 (ポイントとして、、「プレイヤー(.*)を再生して」など、タイトルの区切りを分かりやすくするため、ウェイクワード的なのをつけたほうが良い)

と、こんな感じで、オリジナルのコマンドも作れるし、柔軟なことができるのでかなり気に入っています。
ちなみに、ここまでで、Google Homeは一切使っていない!
Androidスマホがあれば、家電のリモコン操作から音楽の再生までできちゃいます。

あと、「交通状況」というキーワードに対して、yahooの路線の運行情報のページから自分が使う路線状況を抜き出して実況させるとかしています。
この取得した情報を出力する際には、Google Homeを使って、音声で出しています。
これには、「google-home-notifier」というモジュールを使用しています。
こんな感じかな。

次の目標、、何ができるんだろう。


連携させるLinuxサーバにはやっぱりこれがおすすめ。
KODIで一台使っちゃってるから、自分ももう一個買おうかな。。。
この用途ならZEROでもいい気もしますが。

2018年01月08日


Google homeでできることはスマホでできる

Google Homeが予想通り使えない。
何ができるかというと、、、単体では何もできないというのがほぼほぼ正解かも。
できることがあるとしても、、、それって別のものでも出来るんですよね。

Google Homeで最近やってみたこと。
①eRemoteでの家電の操作
⇒不可能!!

結局、スマホのAutoVoice/Taskerで音声をPCに飛ばして
node broadlinkjs-rm経由で捜査してます。

②任意のローカルで持っている音楽再生(Google Play Musicではない)
これも、結局、スマホのAutoVoice/Taskerで音声をPCに飛ばして
PCからCast(Chromecast)すれば可能。
DLNAには対応していないのでちょっと苦労しましたが、Chromecastと同じ要領で操作可能。
ただ、これについては、別にGoogle Homeで鳴らす必要性は全くなく、ローカルで鳴らせるw
あと、DLNAが使える機器なら同じことはできる。

③そのほか、、、
⇒基本スマホのGoogleアシスタントでもできる

うーん、、あんまり使い道がないな。

素でeRemoteが使えて、Amazon Music(プライム会員なので)も使える
Amazon Echoのほうが使えるなぁ。
あと、言葉への反応も早い気がする。



2017年12月30日


Google homeで家電を操作

楽天スーパーセールでつい、Google homeを購入してしまいました。
あとこれも、ついついeRemoteを購入してしまいました。
ただ、、これが成功なのか失敗なのか、、、

eRemoteってGoogle homeから操作できないんですよね!(爆

というか、対応端末が少ない??

それはさておき、Google homeでeRemoteによる家電の操作です。
結論から言えば、、、まあ、可能です。
やり方は↓
https://qiita.com/miso_develop/items/204b2e16b1e58e52dc07

ただ、ここで注目すべくは、IFTTTと連携できる話ではなく、
nodeから家電を操作できる点です。

これがあれば!!
Autovoice→tasker→http get→Linux(webサーバ)→node broadlinkjs-rm
→eRemote→家電(赤外線)
ということができる!!
というか、実際我が家ではできました。
前回の記事の通り、OK googleを言わなくてもいいので便利です。

、、、あれ?
Google homeいらなくね?
正直、現時点でAndroidスマホよりGoogle homeが勝っている点は、ピカチュウトークができるくらい
というわけで、別に、Google homeいらないよね。。。
[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Google Home Mini チョーク(グーグル ホーム ミニ チョーク)
価格:6480円(税込、送料無料) (2017/12/13時点)




2017年12月13日


androidのOK googleを変更

Gooogle Nowの起動させる言葉「OK Google」を変更する方法。
所謂Hot wordを変更する方法を発見しました。

まあ、Tasker+AutoVoiceの組み合わせなんですが、
これ、AutoVoiceの設定が難しすぎ、すごいはまりました。


この設定をすると、AutoVoice→Tasker→Google Nowという連携ができます。
これのメリットとして、本日のメインである、OK Googleの変更ができます。
二つ目に、Google Nowで作ることができないオリジナルコマンドを作ることができます。
Google Now→AutoVoice→Taskerという流れだと、Google Nowでコマンドとして登録されているキーワード(例えばテレビというワードが入るとか)はGoogle Nowで処理されてしまい、Taskerが動かないんですよね。。。それ解決できるのは大きいです。


ポイントは下記
Android
①ユーザ補助にて、TaskerとAutoVoiceを有効にする。
②音声入力のアプリをGoogleであることを確認。

AutoVoiceの設定
②AutoVoiceでGoogle Nowの項目を有効(enable)にする
③Personal Assistantの設定で、Replace Google Assistantで音声入力のアプリをAutoVoiceに”設定しない”。
Googleのままにする必要がある。
正直よくわかんないのですが、これをAutoVoiceに設定しちゃうと、なぜか、AutoVoiceで受けてくれないんですよね。なぜか。
普通なら逆っぽい気がするんですけど
④Google NowのAdvancedでAlways Cancel Ok Googleを有効
⑤General SettingsでAutoVoice ContinuousのControl Continuousを有効←一番重要
重要そうなのはこれくらい。
あとは適度にオプションを調整してください。
あと、AutoVoiceのバージョンによって、メニュー構成が違うので、違う場所にオプションがあったりするので適当に読み替えてください。

Taskerの設定
⑥Profilesを追加
Event - plugin - Autovoice - Recognized
その設定画面では、Configurationを開いて、希望のHot Wordを設定。
(私は、設定にはHard Wayをよく使います。)
→これで、設定したキーワードを受けると、Google Nowが起動するという仕組み。
⑦タスクでは音声検索、もしくは、Googleを起動するのを設定。

あと、⑦でGoogle Nowに渡さなくても処理するものは個別に設定できるので結構便利。
オリジナルコマンドはGoogle Nowで処理しないので、そのほうが便利ですよね。


ちなみに、いろいろ調べたのですが、家電を操作するなら、Alexaのほうが優秀そう。。。
Googleは対応するのが少ないみたい。
SeriならSeriでHomekitとか使えるのに。

2017年12月10日


【KODI】テレビを音声操作 詳細

Kodi自体には音声で操作するインタフェースはもちろんありませんが、
androidのスマホを使いGoogle NowとTasker + AutoVoiceを組み合わせることで、Kodiを操作するためのコマンドラインを実行することができます。
とは言っても、androidからKodiへ直接コマンドを投げるのはちょっと難易度が高いので、間にLinuxのWebサーバを立てるのですが、、、

今回はandroidのスマホを使いGoogle NowとTasker + AutoVoiceでWEBサーバへPOSTを投げ、そのPOSTを受け、Webサーバ側でKodiへのコマンドを実行するという処理方式です。
で、問題のWEBサーバからKodiへのコマンドには、texturecache.pyを使います。

texturecache.pyの使い方は、
まず、Pythonは必須なのですが、必要なのはそれだけ。
あとは、同一フォルダにある「texturecache.cfg」という設定ファイルの設定を行います。
といっても、KodiのIPアドレスくらいなのですが。

肝心の、Kodiの使い方。
chinachu+harukazeのテレビを再生する場合、
./texturecache.py play pvr://channels/tv/全チャンネル/pvr.chinachu_1072.pvr
こんな感じ。
「1072」はSIDが入ります。1072だとテレビ東京ですね。
停止の場合は、「stop」のコマンド。
番組を切り替える際は、新しいチャンネルを投げる前に、stopで停止しておいたほうがよさそうです。

我が家のテレビは古いため、結構動作が遅い。
テレビつけて、番組表出して、チャンネル選んで、、、とするのに割とストレス。
これが、Kodi上で操作できるのはちょっと便利かも。
もう、テレビにチューナーなくても致命的に困らないかも。




2017年11月05日


【KODI】テレビを音声操作 概要

我が家では、KODI+chinachuの組み合わせで、スマートテレビ?
まあ、何でもできるテレビ化しております。
音楽再生できるし、録画もできるし、WEBやスマートフォン、普通のテレビのリモコンから操作もできるし。

さて、最近Google Homeなんかも出てきていますが、このテレビ KODIが音声操作できれば面白いのではないかと思った次第。

というわけで、数時間かけて(意外と簡単)、音声操作システムを作りました。これで我が家もスマートホームです。



Google NowとTasker + AutoVoiceはandroidの音声操作においては比較的ポピュラーな組み合わせのようです。

今回はこれを利用し、
①Androidで音声を認識(Google Now)
②音声が登録済みのコマンドと一致したら、登録しているタスクを実行
 (Tasker + AutoVoice)
③登録済みのタスクとして、Linuxサーバに登録してあるコマンドを実行するためのPOSTを実行(Tasker + AutoVoice)
④LinuxサーバでPOST(phpへのアクセス)を受け取り、それに基づいたphpスクリプト→Pythonを実行
 ・KODIへのインターフェースとして、texturecache.pyを利用
 ・LinuxサーバにはWEBサーバ、pho、Pythonをインストール済み
 ・WEBをインタフェースとして、php→Pythonを実行
⑤KODIを操作するPythonスクリプトtexturecache.pyを実行
⑥テレビが操作できてめでたしめでたし

という具合です。

texturecache.pyのマニュアルは完全に英語(ネット上にも日本語の情報は一つもなし)
Tasker + AutoVoiceも英語(ネット上にもあまり情報なし)

言語の壁のせいで意外と苦労しました。。。
でも、ほぼそれだけ。楽勝ですね!

次回以降で詳細説明予定

ちなみに、Kodiはraspberry piを利用。
Amazon Echoとか、最近はAIスピーカーキットとかも出ているようですが、お金がかかるので、無償で実現できる方法として。(Taskerに数百円かかるのは無視)
スマホを利用することが肝ですね。




2017年11月02日