Raspberry PiとSiriで家電の音声制御 前書き

 siri-raspberry

最近いろいろ遊び過ぎたので、しばらくは真面目というか、比較的実用的な記事を書いていこうと思います。

Amazon EchoやらGoogle Homeやら、最近だとAppleまで同じような端末を開発しているという噂もあったりして、なんだか音声アシスタント端末?が盛り上がっているようです。でも結構お値段もするし、そもそも日本だとまだ全然モノ自体がないので、ここは一発自作して、「音声アシスタント端末」とやらがある生活を先行的に評価してみたいと思います(既にやっている人はたくさんいそうですが)。

電子工作における音声認識だと、一昔前はRaspberry Pi+Juliusがよくある手段だったかなと思います。スタンドアロンで動くし無料だし、というのはとても魅力なのですが、過去に自分も使ってみた感じでは、なかなか使いこなすのは難しいなあという印象でした。安定して認識させようと思ったら、おそらく相当にチューニングしないといけないと思います。

そんなわけなので、過去には別の手段として、Web Speech APIを使ったWebアプリに音声認識を任せる、というのもやってみました。音声認識は天下のGoogle様のサーバに任せてしまう、というアプローチです。これは、Web Speech APIを叩くJavaScriptを書くのに慣れが必要だと思いますが、少なくとも認識精度という面では悪くないと思います。

ただいかんせん、自分の普段使いのiPhoneでは利用できません。SafariもiOS版Chromeも、ブラウザとしてWeb Speech APIをサポートしてくれていません。Siriと競合する可能性があるからサポートしないのかねえ。。。

となると、iPhone使いの自分としてはなんとかSiriを使わせて欲しくなるのですが、残念ながらSiriは現状、developerには公開されていません(サードパーティに公開されるという噂もあるけれど)。仮に公開されたとしても、イチからiOSのアプリ開発を勉強する元気は今のところありません。

 

さてどうしたものかなーと思っていたところで、以下のような記事を見つけました。

ふむ。これならiOSのアプリ開発は一切することなく、これまでの工作の延長線上でなんとかやれそうです。要はRaspberry PiをHomeKit機器としてSiriに認識させると。

これはHomebridgeという、Homkit機器のエミュレータ(ECHONET LiteでいうOpenECHOみたいなものか)を利用して実現しているのですが、これが結構人気なようで、様々なプラグインがすでに存在している模様。その中には自分も所有しているIRKitのプラグインもあるので、それを使えばサクッと家電制御は出来てしまいそうですが(上の記事がまさにそれ)、個人的にはこちらのHTTPリクエストを投げるプラグインの方に惹かれています。これなら、Siriからの指令を受けたRaspberry Piが任意のHTTPリクエストを投げる中継機として働く形になるので、実際に制御したいデバイスにWeb APIを用意できれば、その機器はSiriで操作できるようになる。。。ハズ。理屈では。

 IRKitやPhilipsのHueは元々Web APIを用意してくれているのでこのやり方で制御できるでしょうし、またRaspberry PiとPythonのBottleフレームワークを組み合わせれば、Web APIによって制御できる機器を簡単に自作することができます。うん、この方が楽しそう。

 

思ったより前置きが長くなってしまったので、次回から実際に作業していきます。以下のようなものを作ります。

siri-raspberry

まずはWeb APIを持ったデバイスとして、Raspberry Piに接続したirMagicianをWeb APIで制御できるようにして、それからHomebridgeを導入して実際にSiriで制御できるようにしていきたいと思います。

あ、絵の雰囲気で”Turn on the light!”とか書いてますが、実際には思いっきり日本語で「電気つけて!」と言うつもりです。

 


「Raspberry PiとSiriで家電の音声制御 前書き」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>