File size: 3,970 Bytes
8c6f2b2
60e7dc6
8c6f2b2
 
 
 
 
 
 
 
 
 
 
60e7dc6
8c6f2b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
---
title: Judgy Reachy No Phone
emoji: 📱
colorFrom: red
colorTo: orange
sdk: static
pinned: false
short_description: Get off your phone! Reachy Mini shames you with snarky comments
tags:
 - reachy_mini
 - reachy_mini_python_app
---

# 📱 Judgy Reachy No Phone 🤖

**A Reachy Mini app that detects when you pick up your phone and shames you with snarky comments.**

Stop checking your phone and get back to work! This app uses computer vision to detect when you pick up your phone and makes Reachy Mini give you a judgmental, snarky comment to shame you back to productivity.

## Features

- 📱 **Phone Detection**: Uses YOLOv8 to detect when you pick up your phone
- 🗣️ **Snarky Responses**: LLM-generated or pre-written judgmental comments
- 🔊 **Text-to-Speech**: Robot speaks the shame out loud with expressive voice
- 🤖 **Expressive Animations**: Different reactions based on offense count
- 📊 **Stats Tracking**: Pickup count, shame count, longest phone-free streak
- 🎮 **Web UI**: Gradio interface for monitoring and configuration

## How It Works

1. **Camera watches you** - Reachy Mini monitors the camera feed
2. **Phone detected** - YOLOv8 detects when you pick up your phone
3. **Shame delivered** - Robot gives you a snarky comment via TTS
4. **Robot reacts** - Expressive animations get more dramatic with repeat offenses

### Robot Reactions

| Offense Count | Animation | Reaction |
|---------------|-----------|----------|
| 1st pickup | Curious head tilt | "The phone? Already?" |
| 2-3 pickups | Disappointed head shake | "Again?" |
| 4+ pickups | Dramatic sigh, looks away | "I've lost count." |
| Phone down | Approving nod | "Good. Back to work." |

## 100% Free Stack

| Component | Free Option | Premium Option |
|-----------|-------------|----------------|
| Detection | YOLOv8 (local) | - |
| LLM | Pre-written lines | Groq (free tier) |
| TTS | Edge TTS (unlimited) | ElevenLabs (10k chars/month) |

## Installation

```bash
pip install .
```

### Optional: Enable LLM Responses

```bash
pip install .[llm]
```

Get free API key at [console.groq.com](https://console.groq.com)

### Optional: Enable Premium Voice

```bash
pip install .[premium-tts]
```

Get free API key at [elevenlabs.io](https://elevenlabs.io)

## Usage

Run the app:
```bash
reachy-mini-daemon
```

Then install and start the app from the Reachy Mini dashboard, or run directly:
```python
from judgy_reachy_no_phone.main import JudgyReachyNoPhone

app = JudgyReachyNoPhone()
app.wrapped_run()
```

The web UI will be available at http://localhost:7863

## Configuration

### Settings (via Web UI)

- **Groq API Key**: Optional, for LLM-generated responses
- **ElevenLabs API Key**: Optional, for premium TTS voice
- **Cooldown**: Time between shames (10-120 seconds)
- **Praise Mode**: Enable/disable praise when phone is put down

### Pre-written Snarky Lines

The app includes 20+ pre-written responses that work without any API:

- **1st offense**: "The phone? Already?", "And so it begins."
- **2nd-3rd**: "Again?", "Back to the phone I see."
- **4+ offenses**: "I've lost count.", "Phone addiction is real."

## Stats Tracked

- **Pickups Today**: Count of phone pickups in current session
- **Total Shames**: Total number of shaming events
- **Best Streak**: Longest period without phone pickup

## Technical Details

- **Detection**: YOLOv8 nano model for fast inference
- **Phone Class ID**: COCO dataset class 67 ("cell phone")
- **Detection Threshold**: 3 consecutive frames to confirm pickup
- **Putdown Threshold**: 15 frames to confirm phone down (avoids flicker)
- **Frame Rate**: 5 Hz for efficient processing

## Requirements

- Reachy Mini robot with camera
- Python 3.10+
- Internet connection (for first-time YOLO model download and TTS)

## License

MIT - Feel free to shame yourself and others!

## Credits

Built for [Reachy Mini](https://huggingface.co/spaces/pollen-robotics/Reachy_Mini) by Pollen Robotics & Hugging Face.