An AI-powered Attendance Management System that leverages Face Recognition, Voice Verification, and QR Code Authentication to provide a secure and intelligent attendance tracking solution.
Built using Python, Streamlit, Supabase, Dlib, Resemblyzer, and PyTorch, this project demonstrates how multiple biometric authentication methods can be combined into a single attendance platform.
- Register users with facial data.
- Detect and recognize faces in real time.
- Prevent duplicate attendance entries.
- Store attendance records securely.
- Speaker authentication using Resemblyzer.
- Voice embedding generation and comparison.
- Additional security layer beyond face recognition.
- Students scan the QR code to access the attendance portal instantly.
- Eliminates the need for manually sharing class links.
- Secure login system.
- Password hashing using bcrypt.
- Role-based access support (Teacher/Student).
- Attendance history tracking.
- User-friendly Streamlit interface.
- Supabase backend for:
- User management
- Attendance records
- Authentication data
- Biometric metadata storage
βββββββββββββββββββββ
β Streamlit UI β
βββββββββββ¬ββββββββββ
β
ββββββββββββββββββΌβββββββββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββββββ βββββββββββββββ ββββββββββββββ
β Face Moduleβ β Voice Moduleβ β QR Module β
βββββββ¬βββββββ ββββββββ¬βββββββ βββββββ¬βββββββ
β β β
βββββββββββββββββββΌβββββββββββββββββ
βΌ
ββββββββββββββββββ
β Supabase DB β
ββββββββββββββββββ
- Streamlit
- Python
- Supabase
- Face Recognition
- Dlib
- PyTorch
- Resemblyzer
- Librosa
- Scikit-Learn
- bcrypt
- Pandas
- NumPy
- Pillow
- Segno (QR Code Generator)
βββ src/
βββ Ui/
β βββ __init__.py
β βββ base_layout.py
βββ __init__.py
βββ assets/
β βββ __init__.py
β βββ logo.png
β βββ student.png
β βββ teacher.png
βββ screens/
β βββ __init__.py
β βββ student_screen.py
β βββ teacher_screen.py
β βββ home_screen.py
βββ components/
β βββ __init__.py
β βββ footer.py
β βββ dialog_share_subject.py
β βββ dialog_create_subject.py
β βββ attendence_result_dialog.py
β βββ subject_card.py
β βββ enroll_dialog.py
β βββ auto_enroll_dialog.py
β βββ add_photos_dialog.py
β βββ voice_attendence_dialog.py
β βββ header.py (1300 tokens)
β βββ Student_screen_layout.py
β βββ teacher_screen_layout.py
βββ database/
β βββ __init__.py
β βββ config.py
β βββ db.py
βββ pipelines/
β βββ __init__.py
β βββ voice_pipeline.py
β βββ face_pipeline.py
βββ .gitignore
βββ .streamlit/
βββ config.toml
βββ requirements.txt
βββ app.py
git clone https://github.com/YourUsername/AI-Attendance-System.git](https://github.com/BhupatiNadar/Ai-Attendence-System.git
cd AI-Attendance-Systempython -m venv venv
venv\Scripts\activatepython3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCreate:
.streamlit/secrets.toml
Example:
SUPABASE_URL="your_supabase_url"
SUPABASE_KEY="your_supabase_key"Create required tables:
create table teachers(
teacher_id bigint generated by default as identity primary key,
username text unique not null,
name text not null,
password text not null
);create table students(
student_id bigint generated by default as identity primary key,
name text not null,
face_embedding jsonb,
voice_embedding jsonb
);create table subjects(
subject_id bigint generated by default as identity primary key,
subject_code text not null,
name text default 'unknown',
section text default 'N/A',
teacher_id bigint references teachers(teacher_id) on delete set null
);create table subject_students(
subject_id bigint references subjects(subject_id) on delete cascade,
student_id bigint references students(student_id) on delete cascade,
primary key(subject_id, student_id)
);create table attendance_logs(
id bigint generated by default as identity primary key,
timestamp timestamptz default now(),
subject_id bigint references subjects(subject_id) on delete cascade,
student_id bigint references students(student_id) on delete cascade,
ispresent boolean default true
);You can extend the schema based on project requirements.
streamlit run app.pyDefault URL:
http://localhost:8501
- Register face samples.
- Capture webcam image.
- Generate face encoding.
- Match with stored embeddings.
- Mark attendance.
- Record user voice.
- Extract speaker embeddings.
- Compare against stored embeddings.
- Verify identity.
- Mark attendance.
- Generate unique QR code.
- Scan QR using camera.
- Validate QR data.
- Join class.
streamlit
numpy
pandas
matplotlib
seaborn
scikit-learn
dlib-bin
git+https://github.com/ageitgey/face_recognition_models.git
setuptools
supabase
bcrypt
segno # for qr code generation
pillow
librosa
torch --index-url https://download.pytorch.org/whl/cpu
webrtcvad-wheels
# resemblyzer --no-deps
git+https://github.com/resemble-ai/Resemblyzer.git
# ngrok http 8501
pyngrok
- Password hashing using bcrypt
- Biometric authentication
- Secure cloud database storage
- Attendance duplication prevention
- Mobile application
- Multi-camera support
- Liveness detection
- Anti-spoofing mechanisms
- Face mask recognition
- Voice anti-replay detection
- Email notifications
- Attendance export to Excel/PDF
- Admin analytics dashboard
- Real-time monitoring
Contributions are welcome.
- Fork the repository.
- Create a new branch.
git checkout -b feature/new-feature- Commit changes.
git commit -m "Add new feature"- Push branch.
git push origin feature/new-feature- Open a Pull Request.
Bhupati Nadar
GitHub: https://github.com/BhupatiNadar
If you found this project useful:
β Star the repository
π΄ Fork the project
π’ Share it with others