読者です 読者をやめる 読者になる 読者になる

Masaponto's Blog

お勉強メモ

MESHでラズパイにお天気情報をしゃべらせた話

MESHのボタンを押すとRaspberry Pi 3 model Bがその日の天気をしゃべるようにした。本稿はその作業メモである。

構成

<MESH>--<iPad>--<ラズパイ>--<スピーカ>

Rasberry Pi 3

OSはRASPBIAN JESSIE LITEにした。 ローカルサーバにしようと思ったのでGUI環境はいらないからである。 ddコマンドでmicroSDに焼いて終わり。
また、ラズパイの電源確保のためAnkerのUSB充電器を買った。

Open Jtalk

ラズパイに日本語をしゃべらすのにOpen Jtalkを使った。 Open Jtalkで日本語の文字列をしゃべる音声ファイルを生成し、aplayで再生する。 「Raspberry pi Open Jtalk」でググると多くの記事が見つかる。
以下のページを参考にした。
クラゲのIoTテクノロジー
メイちゃんの声にした。

Python2で天気情報をしゃべらせる

以下のページを参考にした。
Raspberry Piにしゃべらせてみた(OpenJTalk 1.08、.htsvoiceファイル対応): Raspberry Piでやってみた
Raspberry Piに現在時刻と、天気をしゃべらせてみた(Python): Raspberry Piでやってみた

天気情報にはWeather Hacksを用いた。 Python bottle, BottleDaemonでサーバを立ててリクエストがきたら天気情報を取得してしゃべるようにした。
実際のコードは以下のとおり。
MESHボタン押すとラズパイが天気喋るよ · GitHub

BottleDaemonにより

$ python app.py start

これでデーモンとして動く。

MESHとの連携

MESHを使用するにはMESH用iOS/Androidアプリと連携させる必要がある。 MESHとiOS/Android端末はBluetoothで接続する。 筆者はiPad 4thを使うことにした。 MESH用iOS/AndroidアプリではMESHからのイベントを取得し、音声再生やメール送信、Javascriptの実行等をGUIプログラミングすることができる。ただし、Javascriptのコードは、別途に書いてMESH SDKに登録する必要がある。なお、アプリはバックグラウンドにしていても動作する。
以下のページを参考にした。
KB_1506/developLog_Software_MESH_Tag.md at master · jphacks/KB_1506 · GitHub

実際のコード以下のとおり。 f:id:masaponto:20170421231707p:plain MESHボタン押すとラズパイが天気喋るよ · GitHub

作業は以上である。

おわり

このページの動画を見て作りたくなった。偶然MESHのボタンタグを入手できたので、今回のことをやろうと思った。これで毎朝、画面を見ることなく天気情報が得られる。今後アイデアがあれば機能を増やしていきたい。

Python3による機械学習(数値解析)の実験を助けるツール -- Aizu AdC 2016

この記事はAizu advent calendar 2016 9日目の記事です。

前の人 @innocent_mame
次の人 @RomTin

ギリシャ-アテネからの投稿です!!! masapontoです。
今年は主に何をやっていたかって振り返ると、アニメを見てた 研究(機械学習)のためのPython3コードを書いてた気がします。 今回はその研究での実験を行うのために使っているツールやライブラリを紹介しようと思います。 なにか便利ツールやより良い使い方があれば教えてください。

Numpy、scipy、scikit-learn

Python機械学習といえば、こいつらなしには語れないでしょう。(深層学習だとTensorflow, Keras, Chainerもありますね) 自分で学習器を実装する場合はNumpy, scipyをを使ってます。scikit-learnの分類器にしたがって実装する(fit(X, y)に学習、predict(X)に分類を行う関数を実装する)と、scikit-learnで実装されている交差検定が使えて便利です。 こんな感じです。(こういう使い方するもんなのか、不安なのだが)
https://github.com/masaponto/Python-ELM
https://github.com/masaponto/Python-MLP

Anaconda3 on pyenv-virtualenv

pyenv-virtualenv
anaconda
これも有名ですね。anaconda3の環境だと数値解析に必要なライブラリ(僕がほしいNumpy、scipy、scikit-learn, pandas)は大体そろってます。

pandas

pandas
pandasは今のところ、あまりつかってません。 実験スクリプトで吐いたcsv形式の結果を、グラフにするのに使ってます。(with matplotlib) pandas.read_csvして、dataflame.plotすると楽です。
こんな感じ
graph.py · GitHub

参考
numpy/scipy/pandas/matplotlibメモ | mwSoft

Tabulate

tabulate

みなさんも実験結果の資料を作成するのには主にmarkdownを用いると思います。 tabulateを使えば、実験結果をかんたんにmarkdown table にできて良いです。
こんな感じ。
tabulate_sample.py · GitHub

doctest

doctest
さらっと雑なテストをするのに便利です。

slacktee

slacktee

実験スクリプトの実行が終わったら、ぼっちslackの実験チャンネルに結果を通知するようslackteeを使ってます。 以前kamebotなる、slackに投げるやつをを作ったりしてましたが、投げるのにコード書くのがめんどうなので最近はこちらをつかってます。

最後に

この記事を書いている間にJupyter notebookでいいんじゃね?って気持ちになってきました。 使っていた時期もあったのですが、さっとコードを書いて、試して、やり直して、というサイクルがやりにくくて、使わなくなってしまいました。(使い方が悪いのか) で、今は上で列挙したものを使ってやっています。なにか便利なツールがありましたら、教えてください!!

最近は、powerpoint(などのofficeソフト)スライドに実験結果の表を出すのが面倒なので、markdown -> tex -> pdf (or png via texclip)で貼り付けてやってます。 この辺を楽にできたらいいなーと感じています。(なんか作るか)

おまけ

f:id:masaponto:20161207094445j:plain f:id:masaponto:20161208022544p:plain

次の人は @RomTinです。よろしくお願いします。

ぼっちslack

某所でLTをしました。
その発表資料を公開しましたので、お知らせします。
https://masaponto.github.io/slides/bocchi_slack/index.html