音量計測による睡眠時間自動記録Androidアプリの開発

音量計測による睡眠時間自動
記録Androidアプリの開発
石川工業高等専門学校 専攻科 1年
発表者 中村竜規
指導教員 越野亮
自動記録
ライフログ
ライフログ
...
記録方法
• 定期的にAndroidに搭載されたマイクから
音量を取得
• 取得した音量データから睡眠時間を推定
し、記録
推定方法
• 音量がある閾値を長時間下回ったところ
を睡眠時間と推定
緑帯は睡眠中
青線は音量
赤線は閾値
を表す
• 横軸:時間[hour]
• 縦軸:音量[dB]
ヒストグラム
60
データ数
ベース音量VB
40
20
0
-45
-40
-35
音量[dB]
-30
-25
-20
• 閾値V はベース音量に余裕値M
を加えることで求める
• M はマイクの感度で異なる
• 複数の端末で動作させた
V
VB
M
20
y = 0.1585e0.0713x
余裕値M [dB]
15
R² = 0.9998
DROID
10
Xperia
SO-01B
5
HTC
Desire
0
0
10
20
30
40
50
最大音量とベース音量の差VM-VB [dB]
60
70
• 閾値V はベース音量に余裕値M
を加えることで求める
• M はマイクの感度で異なる
• 複数の端末で動作させた
M = 0.1585 exp {0.0713(VM-VB)}
M:余裕値
VM:最大音量
VB:ベース音量
V
VB
M • 最終的に閾値V は以下の式とな
る
V= VB +M
閾値の変化
• 閾値は年中一定とは限らない(環境音)
– 夏場に窓を開けたまま睡眠する
– 冬場に窓を開けないで睡眠する
• 閾値もそれに合わせて変化する必要がある
• 異常な閾値が計算される場合がある
– 台風など長期間は続かない雑音
現在の閾値と計算値の平均をとって
更新していくことで緩やかに対応
改良
• 音量が閾値を長時間下回ったところを睡
眠と推定
• 睡眠時間はユーザによって異なる
• 具体的に何時間以上、閾値を下回ったと
ころを睡眠とするか
• 最小の睡眠時間を求める必要がある
最小睡眠時間
T
T
TA
TS
• 最小睡眠時間T には以下の関係が必要
TS >T >TA
• 上記の関係を満足させるため、T は以下の式で求める
T=(TS+TA)/2
TSとTAを求める必要がある
TS
TA
• 最終的に睡眠時間を求めようとしているので睡眠時間である
TS を求めることは不可能
• TS は最も長時間閾値を下回っていた時間と仮定し、 TA はTS
の次に最も長時間閾値を下回っていた時間として最小睡眠時
間を求める
最小睡眠時間の変化
• 閾値同様、最小睡眠時間も年中一定とは限ら
ない
• 異常な最小睡眠時間が計算される場合がある
閾値同様、現在の値と計算値の平均をとって
更新していくことで緩やかに対応
アプリ紹介
ホーム
• 睡眠時間の自動記録を
開始、停止できる
• 今日の睡眠時間を確認
できる
一覧表示
•
•
•
•
就寝時刻:Sleep
起床時刻:Wake
睡眠時間:Length
などのデータを数値で
確認できる
• 表示する日にちの範囲
を指定することができ
る
日別表示
• 横軸:時間[hour]
• 縦軸:音量[dB]
• 1日の音量の変化、睡眠
時間などを確認できる
月別表示
• 横軸:日にち[day]
• 縦軸:睡眠時間[hour]
• 1月ごとに日々の睡眠時
間を棒グラフで確認で
きる
マーケットに公開
• 開発したアプリを今年
の1月13日、国内向け
にマーケットに公開
• 現在、18000件を超え
るダウンロード
• 42人の方に評価、5段
階評価で平均評価2.5
レビュー
• 評価して頂いた42人の内17人のレビュー
• 「記録できません」が多数
• 原因:機種の違いによるマイクの仕様の
違い
• 他にも、風の音が記録に影響を及ぼす
• 以上は昨年度の研究
• 現在は異なる研究
• 現在の研究は発表可能な状態に出来るか
不明だったため申込の段階で発表を断念
• 現在は発表可能な状態
服薬状況確認システム
きっかけ
• ある病院の先生から、「患者の服薬状況
を記録するシステムを作ってほしい」と
依頼
• 当初はアルバイトとして依頼
• 学校の研究内容として魅力的
• 学校の研究として開始
病院からの要望
• 患者はAndroidを携帯する
• 1日に10回ほど服薬時刻を設定でき、時間
になったら、アラームを鳴らし、患者は
服薬したら、確認のボタンを押す
• 服薬状況を1日1回、医療機関側のサーバ
に送る
• 医療機関側では、各患者の服薬状況を個
別に監視できる
サーバ側の開発方法
• サーバには無料で使えるクラウドアプリ
開発環境Google App Engine (GAE) を使
用し、データの管理などを行う
服薬状況の管理
服薬状況の送信
服薬状況の閲覧
服薬日程の更新
服薬日程の更新
服薬状況のお知らせ
Android
病院
患者
服薬状況の入力
服薬時刻のお知らせ
動作説明
(デモ画面)
Android(クライアント)側
Android(クライアント)側
GAE(サーバ)側
GAE(サーバ)側
GAE(サーバ)側
現状と今後
• 現在、テスト版が完成し、試用段階
• 今後、試用に伴い発生した問題の改善