😴

GemiMo: AIが見守る、心地よい目覚めを実現するスマートアラーム

2025/02/09に公開

人工知能で睡眠を見守り、最適なタイミングと方法で目覚めをサポートする次世代型スマートアラーム「GemiMo(ジェミーモ)」をご紹介します。

AIが睡眠状態を理解し、最適な目覚めを実現

GemiMoの最大の特徴は、Google製の最新AI「Gemini」による3D姿勢認識技術を活用している点です。カメラを通してユーザーの睡眠状態をリアルタイムで把握し、以下の3つの状態に応じて最適なアラーム制御を行います:

  1. 睡眠中:穏やかな環境音「Moonlight Bamboo Forest」で静かに目覚めをサポート
  2. もがき中:エネルギッシュな「Feline Symphony」で自然な目覚めを促進
  3. 起床時:さわやかな「Silent Whisper of the Sakura」で心地よい朝の始まりを演出

技術的な実装の詳細

1. 睡眠状態の認識(Gemini API連携)

class GeminiService:
    def __init__(self, api_key: str):
        self.client = genai.Client(api_key=api_key)
        self.model = "gemini-2.0-pro-exp-02-05"

    async def analyze_frame(self, frame: Image.Image) -> dict:
        try:
            # Geminiによる3D認識
            response = self.client.models.generate_content(
                model=self.model,
                contents=[
                    frame,
                    """
                    Detect the 3D bounding boxes of bed and person.
                    Output a json list where each entry contains the object name 
                    and its 3D bounding box.
                    """
                ]
            )
            
            # 状態判定と信頼度計算
            boxes = self._parse_response(response.text)
            state = self._analyze_sleep_state(boxes)
            
            return {
                "boxes": boxes,
                "sleep_state": state,
                "confidence": self._calculate_confidence(boxes)
            }

2. 状態管理システム

class SleepState(Enum):
    SLEEPING = "SLEEPING"
    STRUGGLING = "STRUGGLING"
    AWAKE = "AWAKE"

class SleepStateManager:
    def update_state(self, movement_data: MovementData) -> SleepState:
        # 状態判定のロジック
        new_state = self._determine_state(movement_data)
        
        if new_state != self.current_state:
            if self._is_valid_transition(new_state):
                self.current_state = new_state
                
        return self.current_state

3. アラーム制御システム

class AlarmController:
    def __init__(self):
        self.state_settings = {
            SleepState.SLEEPING: AlarmSettings(
                base_volume=0.3,
                frequency=400,  # Hz
                fade_duration=30.0  # seconds
            ),
            SleepState.STRUGGLING: AlarmSettings(
                base_volume=0.5,
                frequency=800,
                fade_duration=15.0
            ),
            SleepState.AWAKE: AlarmSettings(
                base_volume=0.2,
                frequency=600,
                fade_duration=5.0
            )
        }

4. フロントエンドの実装(Next.js)

// リアルタイムカメラフィード処理
export const CameraFeed = () => {
  const ws = useWebSocket('ws://localhost:8000/ws/camera')
  const [analysis, setAnalysis] = useState<any>(null)

  useEffect(() => {
    if (!ws) return

    ws.onmessage = (event) => {
      const data = JSON.parse(event.data)
      setAnalysis(data.analysis)
    }
  }, [ws])

  return (
    <div className="relative">
      <canvas ref={canvasRef} className="w-full h-64" />
      {analysis && (
        <div className="absolute top-0 left-0">
          {/* 3Dバウンディングボックスの表示 */}
        </div>
      )}
    </div>
  )
}

高度な技術で実現する快適な目覚め体験

GemiMoは以下の先進技術を採用しています:

  • リアルタイム3D姿勢認識による正確な睡眠状態の把握
  • 状態に応じた音量と周波数の動的調整
  • スムーズなフェードイン/アウト制御による快適な音声切り替え

アーキテクチャの特徴

バックエンド(Python)

  • FastAPIを使用した高速なAPIサーバー
  • WebSocketによるリアルタイムデータ通信
  • 非同期処理による効率的なフレーム解析

フロントエンド(Next.js)

  • TypeScriptによる型安全な開発
  • TailwindCSSを使用したモダンなUI
  • コンポーネントベースのアーキテクチャ

セキュリティとプライバシーへの配慮

ユーザーのプライバシーを最優先に考え、以下の対策を実施:

  • カメラデータの暗号化処理
  • 個人情報の非永続化(データを保存しない設計)
  • アクセスログの適切な管理

開発環境のセットアップ

# バックエンド
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload

# フロントエンド
cd frontend
npm install
npm run dev

GemiMoは、最新のAI技術とwebテクノロジーを組み合わせることで、従来の目覚まし時計では実現できなかった、個々の睡眠状態に合わせたパーソナライズされた目覚め体験を提供します。オープンソースプロジェクトとして公開されており、開発者の方々の貢献も歓迎しています。

最新のコードやドキュメントはGitHubリポジトリで確認できます。心地よい朝の始まりで、充実した一日をサポートする次世代のスマートアラームとして、新しい価値を提供していきます。

Discussion