第一回「Raspberry Pi PicoでTensorFlow Liteで緊急地震速報検知」

本ブログ最初の製作予定ブツは「Raspberry Pi PicoでTensorFlow Liteで緊急地震速報検知」です。

ラジオの音声等から緊急地震速報のチャイムを検出したいと考え、色々調べてみましたが

①緊急地震速報/緊急警報放送検出ICを使う

②音声に含まれる周波数で検出する


①について、

https://www.kyastem.co.jp/products/ews430-ipw/

検出用の高機能なICがあるようですが、いったいどこで入手したらいいのかわかりません。

https://www.switch-science.com/products/2428

別のICがスイッチサイエンスで販売されていたようですが、在庫切れですし、3千円越えは少々高いです。

②について

https://toragi.cqpub.co.jp/tabid/256/Default.html

緊急地震速報のチャイムに含まれる4つの周波数を用いて検出するようです。

ただ、相当複雑そうなのでハードルは高めですね。


そんなこんなでもっと手軽に緊急地震速報を検知できないか模索した結果、機械学習でできないかなぁと思ったわけです。マイコンで機械学習するならTensorFlow Liteになるかと思いますが、実際マイクの入力からYes Noの発言を検出するサンプルがあり、精度はあまりよくないようですが、特徴的な音をもつ緊急地震速報のチャイムなら何とか検出できないかなと。

https://docs.arduino.cc/tutorials/nano-33-ble-sense/get-started-with-machine-learning


マイコンはお手軽なRaspberry Pi Picoを使いたいです。

となると、音声入力はRP2040のADCを使うわけになります。

FMラジオは15kHzまで聞けるそうなので↓

https://jocr.jp/raditopi/2021/04/25/280895/

元の音声信号を正確に読み込むには、サンプリング定理より30kHzのサンプリングレートがあれば十分です。

RP2040は12bit、500kサンプル/sのADCを搭載しているのでかなり余裕がありそうです。

https://blog.boochow.com/article/rpi-pico-spec-4.html

3.3vの12bitなので、1mVくらいの分解能になるわけですが、マイコンに搭載されるADCは大抵ノイジーな偏見があるので、多分アンプは必要でしょう。


サンプリングレートに関しても実際に使用するボードライブラリでそこまでの性能が引き出せるかは、ドキュメントに記載がないので今のところ不明です。

https://arduino-pico.readthedocs.io/en/latest/adc.html#


SGがあれば確かめられるんですが、あいにくもっていないのでもし入手出来たら実験しようと思います。


さて、そんなこんなである程度道筋は見えてきたところでいったん終了。

次回はアンプの設計と実際にPicoで音声を読めるのかをやっていこうと思います。


コメントはお気軽にどうぞ!

コメント