A lightweight, CPU-only lip reading toolkit for command recognition from video.
No GPU required — runs efficiently on Intel i5 and similar systems.
- CPU-only: No GPU or deep learning dependencies.
- CLI & API: Use via command line or import as a Python library.
- Trainable: Learn custom lip motion patterns from your own videos.
- JSON-based: All data stored in human-readable JSON format.
- Real-time ready: Optimized for low-latency inference.
Install in development mode (recommended):
pip install lipreaderRequires: Python 3.7+, OpenCV, NumPy
lipreader train --video start.mp4 --word startYou can train the same word multiple times with different videos:
lipreader train -v start1.mp4 -w start
lipreader train -v start2.mp4 -w startlipreader predict --video test.mp4Sample output:
🎯 Prediction: start
📈 Probabilities:
start: 86.3%
stop: 13.7%
| Flag | Description |
|---|---|
-v, --video |
Path to input video (MP4, AVI, etc.) |
-w, --word |
Label for training (e.g., "start", "stop") |
-d, --data |
Path to JSON data file (default: lip_data.json) |
Use LipReader directly in your code:
from lipreader import LipReader
# Initialize
reader = LipReader("commands.json")
# Train
reader.train("start.mp4", "start")
# Predict
predicted_word, probabilities = reader.predict("unknown.mp4")
print(f"Detected: {predicted_word}")All trained patterns are saved in lip_data.json:
{
"start": {
"samples": [
{
"avg_ratio": 1.28,
"ratio_std": 0.25,
"min_ratio": 0.78,
"max_ratio": 1.88,
"frame_count": 120,
"video": "start1.mp4"
}
]
}
}- Works best in good lighting with front-facing video.
- Accuracy depends on clear lip motion (silent articulation works).
- Not designed for full-sentence lip reading — optimized for short commands.
MIT License