趣味のプログラム工房

スマートスピーカー

Amazon Fire HDをスマートディスプレイ化計画

Show Modeなるものが出てこようとしている昨今ですが、
日本ではまだ使えないので、だったら作ってみようと思います。

ベースとしては、こんな感じの構成。
AutoVoice で音声を取得
Tasker で音声のテキストを自作のWEBサーバへ飛ばす
③サーバで処理した結果のURLをFire HDへ返す(AutoRemoteを使う)
④ ③をAutoRemoteで受け取る
⑤ ④をTaskerで受け取って、そのURLをブラウザアプリに渡す。

主なところではこんなところです。
細かいところとして、⑤はブラウザとして専用のブラウザを作りました。

・専用ブラウザ
要件としては、URLを受け取ったら、そのページをフルスクリーンで表示
別のアプリに移ったら、自動的にプロセスを終了(ホームボタンでも同様)
というだけの非常にシンプルなものです。

Taskerからの連携は、「send intent」で実現。
あと、ブラウザですが、標準のwebviewではうまくいかなかったため、
「XWalkView」というモジュールを利用しています。
詳細は
Android Studio webviewでJavascriptが動かない


あとは、省電力対策として、
いろいろ考えましたが、結局、これも専用のアプリを作ることになりました。
単純に、ディスプレイの輝度を最低まで下げるだけのものです。
ただ、ブラウザと同様、別のアプリに移ったら、自動的にプロセスを終了する機能を入れており、音声起動によりブラウザが立ち上がったら、そちらに制御が移るようにしています。

これで何となく方に担ったので、音声に対応する機能を作りこんでいくだけ!




新型Fire HD 8

android端末最高のコスパです!!

2018年09月30日


Amazon Fire HDがEcho Showに!

ただし、日本非対応。
まあ、よくあるやつです。

早く、日本対応してほしい。
、、、てか、そうしたら、echoいらなくなる気がしますが。


あと、Alexaはスマホのアマゾンアプリでも使えますが、
音声でのWakeワードが使えない(使えないですよね??)みたいなので、
いちいち、ボタンを押す必要がありますが、
これがなくなればいいですよね。



2018年06月30日


Broadlink版RM3 miniがGoogle Homeで利用不可に!?

2018年4月に入ってから、BroadlinkRM3 miniがGoogle Homeのスマートホームで使えなくなりました。。。

改めて設定しなおしてみようと思い、アカウントの連携を解除、その後再度、Broadlink smart homeのアカウントを紐づけしようとしたが、Google Homeに登録されない。

おそらく、LinkJapan eHomeがGoogle Homeで使えるようになったため、Broadlink版が使えないようになったのではないかと予想。

結局のところ、やっぱり、日本正規代理店版の製品じゃないとダメな感じ



あ、いつの間にか、また使えるようになっている。(2018/5/6現在)

2018年04月30日


Google home でbluetoothスピーカーがならせるようになった!

Google home でbluetoothスピーカーがならせるようになったことによって、お風呂で音声操作による音楽が再生できるようになった!!

Google Home対応の音楽プロバイダ未契約の状態で音声操作で音楽を再生する方法は
①google home → IFTTT → webhook → WEBサーバで音楽を再生 → bluetoothスピーカー
②google home → IFTTT → webhook → WEBサーバで音楽をキャスト → bluetoothスピーカー

で今回②ができるようになったわけです。。。
ま、①と違いがあるわけではないですが。


これによって、防水のスマホをお風呂に持ち込むことで、
スマホのgoogle アシスタントを経由して、音声操作で音楽が流せるようになった。
※普通の操作でよければ、スマホで音楽を再生してbluetoothスピーカーで流すほうが早い。

そんな感じです。。。




2018年04月17日


お風呂でスマートスピーカー 音楽再生

Bluetoothの防水スピーカー(マイク付き)を購入したので、これでお風呂で音楽が聴ける!
と思ったのですが、もう少し使いやすくならないものかと。

基本は、スマホを風呂に持ち込んで普通に音楽を再生するのですが、
音声で操作したい!ということで次に考えたのが、Siri

でも、Siriって、外部マイク経由で起動できないんですよね。
これだと便利さ半減。。。

続いて、Androidのtaskerを使った操作。
ただ、これも失敗。。。
操作はできるのですが、、ですが、
スピーカーのマイクが自身のスピーカーの音を拾ってしまい、
常時、音声認識が動いて、無限ループ、、、動作に支障が出てしまっています。
全然使えません。
設定で何とかなるような気もするのですが、うまくいってないです。
hot Phraseの設定とか、、、


というわけで、残念ながら、これだ!という使用方法は見つからず。

普通に防水のスマートスピーカー(≠防水スピーカー)を使うのがよさそう・・・



[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

JBL スマートスピーカー LINK 10(ホワイト)(送料無料)
価格:14610円(税込、送料無料) (2018/3/15時点)




2018年03月15日


eRemoteで「○○から応答がありません」問題

我が家のeRemote Proなのですが、Alexaに登録して、音声操作をしようとすると、「○○から応答がありません」と言われる問題が発生していましたが、解決したのでそのメモ。

結論から言うとネットワークの問題。
LANのFW内に置いていたのを、DMZを構築して、そこに置いたらあっさりと動くようになりました。
まあ、上手くいかないときの対応として、ルータの再起動とかがあったので、きっとUPnP使ってて、、そうじゃないかとは思っていたのですが。。。

普通なら、ルータのUPnP機能を使って、ポート開放とか行うのでしょうが、
我が家の構成ではそれもうまくいかなかったようです。
なので、ルータ2台挟んでるとか、一般的とはちょっとずれた構成だとうまく使えない可能性があるので、工夫するしかないようです。

公式も、開放しなければいけないポートとか、UPnP使ってるからとか書いてくれればもうちょっとわかりやすかったのですが。。。

とりあえずこれで、amazon Alexaでもリモコン操作ができるようになりました。

でも、何なんでしょうね、日本版(日本向けのスキル)のAlexaではLinkJapan製製品しかサポートされていないわけですが、逆にGoogle homeはBroadlink製しか使えないという、、、。
(Alexa 英語圏向けにはBroadlinkのスキルが公開されていますが、日本では使えないようになっています。日本というか登録しているアカウントの問題だと思いますが)


とりあえずご参考まで。



2018年02月11日


eRemoteがgoogle home対応??

スマホのGoogle Homeアプリからスマートホーム設定しない?的な通知が出たので見てみたら、、、
おぉっ!!「Broadlink」が追加されてるではないですか!

これは、「RM mini3」が接続できるようになったか!
ということで試してみました。

ハマったところは3点。
①Broadlinkの「IHC」というアプリが必要です。
Google Playからは国の関係か落とせませんので、Broadlinkのサイトから野良パッケージとしてダウンロードしてインストールしてください。
「e-control」とか、linkjapanの「eHome」アプリではダメなようです。
アカウントも新しく作る必要があります。
「e-control」とか、「eHome」で作ったアカウントは流用できません。

②デバイスの追加ですが、ネットワークにつながっていれば普通にデバイスのところにリストで表示されているのでそこから選択。
デバイスの追加として、リセットボタンを押して設定しなおそうとしてもうまく追加されません。。。なぜか。

eRemote pro(linkjapan版)ば追加できませんでした。
 RM mini3(いわゆる黒豆)は登録できました。
 eRemote miniは不明。(持ってないので)

あと、例によって、照明として登録する必要があります。


で、Google Homeで登録して動かしてみると、、ちゃんと動く!!
先に対応してたAlexaでは動かないのに!(我が家のネットワーク的な問題だと思ってる)




2018年01月31日


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日


次へ