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

赤ちゃんのマジ泣きアナライズ

作ってみた・やってみた

赤ちゃんがマジ泣きしたときの声が頭にキンキン響くので、
泣き声をスペクトルアナライズしてみた。

昔はMatlabでやっていましたが、
個人だとライセンスが高いのでpythonでやってみました。

取得方法

Macbook airの標準搭載のマイクを利用
python3 pyaudioモジュールでストリーミングを取得
ストリーミングのデータを高速フーリエ変換
pyqtでグラフを高速表示させることで、リアルタイムスペクトルアナライザを実現

スペクトル結果

テレビの砂嵐のとき

赤ちゃんが聞くと泣き止むというアナログテレビの砂嵐音。
この音はホワイトノイズに似ていて各周波数ある程度スペクトルが立っています。
一番高い周波数が1500Hzぐらいなので聞いていても不快感はない。
f:id:cyamax:20170311102336p:plain
横軸:Hz、縦軸:強さ

「shi」のとき

口で「shi」の音を出した時のスペクトル。
この音もホワイトノイズに近いかなと思い測定してみました。
赤ちゃんにこの音を聞かせると落ち着いてくれるので、最近はずっと「しーっ」と言っている。
誰かが「しーっ」と言うと自然と静かになるのは、大人でも子供でも外国でも共通だと信じています。
2500Hzとその倍音の5000Hzにピークがあるようです。
日本語の中でだいぶ高い周波数。※これよりも高い五十音はあるのかな
f:id:cyamax:20170311102342p:plain
横軸:Hz、縦軸:強さ

赤ちゃんのマジ泣きのとき

はい、スペクトルが振り切れました。
音量もすごいですが、高音帯域のスペクトルが高いので耳鳴りのように聞こえる。 f:id:cyamax:20170311102355p:plain
横軸:Hz、縦軸:強さ

まとめ

赤ちゃんの泣き声は高周波満載。
日常会話で使う周波数は250Hz〜4000Hzなので、それと比べるととても高いのがわかる。

感想

マイクデバイスにリアルタイムで処理する方法がわかったので、いろいろ発展したものができそう。 ただグラフはpythonpyqtを使ってみましたが、対数表示にしたかったけどスケール調整の方法がわからなかったので見づらくなってしまった。

学生時代に研究室で教授の話し声がうるさかったので、
マイクから拾った音の逆位相をイヤホンから出し、声を打ち消すノイズキャンセラを作ろうとしたことがありますが、
当時は処理速度が間に合わなくてただイヤホンからも教授の声がする声増幅器になってしまいました。 今のPCスペックならお手製のノイズキャンセラを作ることができるかもしれないですね。

「やっぱりすいかTシャツ」作ってみた

作ってみた・やってみた

GMOペパボのサービス「suzuri」を使ってTシャツ作ってみた。

suzuri.jp

今年の夏はこれで決まり。

安価なホームルータを高性能ルータに改造する

作ってみた・やってみた

経緯

Debianの対応アーキテクチャを眺めていたら、様々なCPUに対応していることに気がつく。
無線ルータのCPUアーキテクチャにOSが対応していたらLinuxをインストールできて面白そう。

DD-WRTとは

調べると「DD-WRT」 というものを発見。すでにあるのね。
無線ルータのファームウェアを書き換えることで安価なホームルータも
ハイエンドモデルの機能ができるようです。

DD-Wrtは、ゲートウェイ無線LANアクセスポイントなどの組み込みシステム用ファームウェアとして開発されているLinuxディストリビューションの一種である。OpenWRTを元にして作られている。組み込みシステムはパソコンとは違い、規格が統一されていないため、各製品毎に対応が図られている。各製品毎の対応状況は、公式サイトの"Router Database"で型番から検索して確認することが出来る。家庭用ルーターの非公式ファームウェアの中では最も有名である。

DD-WRT - Wikipediaより

DD-WRT公式ページ

www.dd-wrt.com

どんなことができるのか

以下のページにまとまっていますが、
OpenVPNサーバ
イーサネットコンバータ
DDNS
・VLAN
などなど

DD-WRTとは何ですか? - DD-WRT Wiki

8年前に3000円で買った眠ってたバッファロールータが超高性能になりそうな予感。

ファームウェアを書換える

やり方はルータによって異なる&調べたら色々出てくるので割愛しますが、
バッファロー製ルータなどがやりやすいようです。

私のバッファロールータ(WHR-HP-GN)はDD-WRTからファームウェアをダウンロードして、
既存の設定ページからファームウェアのデータを上書きするだけでできました。

注意

ダウンロードしたファームウェアを適応すると初期設定では出力電波が最大になっています。
日本では電波法違反になったりと色々注意することがあるので、ちゃんと調べてから実施しましょう。

やったこと

公式ページで自分のルータを検索してダウンロード
f:id:cyamax:20170310152301p:plain

既存のバッファロールータの管理画面 f:id:cyamax:20170310152344p:plain

ファームウェア更新画面でダウンロードしたファームウェアを選択 f:id:cyamax:20170310152352p:plain

再起動後、無線が繋がらなくなる。
そして知らないdd-wrtというSSIDが鍵なしで出てきた。 f:id:cyamax:20170310152406p:plain

デフォルトで192.168.1.1.にアクセス。 先ほどとは違う管理画面が出てくる。
f:id:cyamax:20170310152539p:plain

日本語化や電波強度など設定を終えて、接続してみる。
元々sshtelnetできないルータだったのでこれだけでも面白い。
ルータなのでメモリや容量は小さめ。 f:id:cyamax:20170310152556p:plain

CPUを確認してみる。

cat /proc/cpuinfo

f:id:cyamax:20170310152602p:plain

最近のルータはMIPSのSoC(System on Chip)構成が多いようです。
SoC構成だと汎用的なCPUが使われることが多いのかな?
Linuxがインストールできるものが増えてきそうですね。