料理をする時なにが一番難しいかって言うと『味付け』だと思うんですよね。
合わせ調味料を作るための分量とかついつい忘れがちで、毎回適当になってしまうのですが(レシピを見直すのもめんどいし…)、これ何とかならないかと。
で、作ってみたのがこちら↓
音声認識を使っていて、作る料理名をしゃべると、その料理に使う調味料を適切な分量で調合してくれるっていうマシーンです。
ネーミングは、超有名オープンソースソフトウェアと被ってますが、単純にいい名前が思いつかなかっただけです…(混ぜるからブレンダー)
システム構成
・RaspberryPi3
・I2Cのサーボドライバボード(Adafruit 16-Channel Servo Driver)
・マイクロサーボ×6(SG92R
・Webカメラ(logicool C270)
フレームはNICを使用。その他の部品(調味料ボトル、漏斗など)は100均で揃えました。
仕組み
基本的なユースケースは次のとおりです。
1.ユーザがカップを置く
2.「何を作りますか?」とアナウンス
3.ユーザが喋った料理名を聞き取る
4.サーバに料理名のレシピを問い合わせる
5.レシピに従い調味料を混ぜる
6.最後に一言w
※コンテスト用に作ったので完成度は低めです
1.ユーザがカップを置く
カップが置かれたは、後ろに付いているWebカメラを使って判断しています。
Webカメラ画像に底の模様(黒丸)のパターンマッチングをかけて、見つかればカップが置かれていない、見つからなければカップが置かれている、という簡易的な判断。
ソフトウェアはOpenCVを使用。
2.「何を作りますか?」とアナウンス
docomo Developer supportの音声合成APIを使用しました。
NTTアイティのRESTで使えるやつ。
3.ユーザが喋った料理名を聞き取る
こちらもdocomo Developer supportの音声認識APIを使用しました。
マイクはWebカメラに付いているものを使用し、録音はpyaudioを使っています。
4.サーバにレシピを問い合わせる
料理名のリクエストに対し、そのレシピを応答するWebアプリを、NIFTY Cloud C4SA上に、Flaskを使って構築しました。
http://ccw7zwy-ay8-app000.c4sa.net/
リクエスト例:
http://ccw7zwy-ay8-app000.c4sa.net/get?title=卵とじ
ここは超適当ですwww(C4SAは無料期間が15日間しかないので、そのうち使えなくなるし)
5.レシピに従い調味料を混ぜる
ここが一番苦労したところ。液体を扱うのがこんなに難しいとは…
仕組みとしては、サーボモータの先に下画像にあるような、「先端にゴム栓を付けた棒」を取り付け、このゴム栓を上下することで、ボトルの開閉を行っています。
本当は、サーボモータじゃなくてソレノイドを使いたかったところですが、値段が高かったために今回は断念しました。(時間もなかったし)
サーボを動かすのをほんの少しに制限すれば一応大丈夫でした。
でもやっぱり使ってると漏れる(´・ω・`)ショボーン
水槽に使うような小型のポンプでも良かったのかもしれませんが、こちらも安いポンプが見つけられなかったので断念。
どうしても安く実装出来そうな方に行ってしまうのは貧乏性だからなんだろうな。
6.最後に一言
「好みで砂糖を入れてね」とか、料理の一言アドバイスを最後に喋らそうかなと。
こちらも、レシピ同様にサーバで喋らす言葉を管理しています。
LEDを光らせよう!
動作テストをやっていて気付いたのですが、動作状態が分かり辛かったので、最後にLEDを追加しました。
ブレッドボードを本体に括りつけるという超お手軽実装です(^^ゞ
LEDを付けると、かなり家電っぽくなるなと思いました。
で、出来上がったのが冒頭の動画です。
これで料理が捗る!!!!!とか思ってたのですが、液漏れが酷くて辛い…実用にはもっと改良が必要そうです。
あとがき
ここ数年参加しているMashupAwardsネタとして作ってみました。
正直、もうちょっとおもしろくなるようなアイデアを入れたかったのですが思いつかなかった。
それに、本来の目的であるスキルアップが図れてない気がして、もっと新しい技術に挑戦した方が良かったかなと反省。
とは言え、今年はこれで応募します。あとは結果を待つのみ。
ではでは〜。