Python RaspberryPi

RaspberryPi3とPythonで就寝中の自分の音声付き動画をmp4で保存する

更新日:

最近、寝起きで体が重いなあと思う日があるのと、たまに妻からいびきがうるさいという話をもらっていたので、もしかしたら体が重い要因としていびきがあるのではと思い、現状をチェックしたくなりました。

スマホで睡眠計測アプリというものはありますが、映像が取れないことと、毎日スマホを置く場所がズレたりで再現性が低いという思いがありベッドに常設する装置を作ることにしました。

 

やりたいこと


就寝中にいびきのような大きい音を出した時に音声付き動画を取得するための装置をラズパイ、カメラ、USBマイクで構成しました。

夜間も取得できるようカメラは赤外線フィルタ無しのタイプを使用。またカメラは上から、マイクは枕元直近で取れるようカメラ・マイクは別体で用意しています。

 

使用するもの


・Raspberry Pi3 ModelB

・Picamera(赤外線フィルタレス) hbvcam

・USBマイク サンワサプライ製 MM-MCU01BK 

 

事前準備


カメラの動作確認

 ラズパイのターミナルで cd /home/pi/ に移動

 以下のコマンドで動画を撮影。10秒間、30fps、test.h264という名前の

 動画ファイルを出力します

 

マイクの動作確認

 arecord -l

    のコマンドを打つと

 カード1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB

   AUdio] 

   といった内容が返ってくるので、今回の場合、カードNo=1、デバイスNo=0と

 分かります。

 音声の録画。10秒間、48kHzサンプリング、ステレオ、test.wav

 ちなみに、-fオプションの例としては以下のようなものがあります。

  -f cd → 44.1kHz ステレオ

  -f 無し →8kHz モノラル

 

・ffmpegのインストール

 今回のプログラムではまず.h264形式の動画ファイルと.wav形式の音声ファイルを作成した後にffmpegというソフトを用いて上記2ファイルを合成しmp4形式の音声付き動画ファイルを作成しています。そのためffmpegをインストールしておきます。

      sudo apt-get install ffmepg

もし出来なければ下記サイトを参考にインストールします。

Raspberry PiでFFmpegを使う

 

プログラム


今回作成したプログラムのフローチャートは以下です。

作成したPythonプログラムは以下です。

   #コマンド実行

  subprocessを使っています。

 動画録画するraspividコマンドと録音するarecordコマンドをパイプでつない

 でいます。

 

  #waveファイル読み込み・最大値を計算

  保存したwaveファイルを読み込み配列に入れています。

  後で行う閾値判定のために配列内の最大値を計算しています。

   

     #閾値を越えたらffmpegコマンドを用いてmp4ファイルを作成します。

 

  #最後にh264とwavファイルは削除します。

 

実験


下の状態で動画を取得してみました

 

取得した動画サンプル

音ズレ等の違和感無く取得できています。

この後、自分の就寝中のいびきも取得できたので対策グッズの効果確認をやっていきたいと思います。

 

以上。

 

 

 

 

 

 

 

-Python, RaspberryPi

Copyright© IT系でないエンジニアの転身 , 2020 All Rights Reserved Powered by STINGER.