Spaces:
Runtime error
Runtime error
A newer version of the Gradio SDK is available:
6.3.0
metadata
title: Spell Recorder
emoji: ✨
sdk: gradio
sdk_version: 4.44.1
app_file: app.py
pinned: false
Spell Recorder (Gradio)
Collect microphone recordings for a small set of Harry Potter spells and store them in MongoDB for training a classifier.
Spells collected:
- Lumos
- Nox
- Alohomora
- Wingardium Leviosa
- Accio
- Reparo
How it works
- Enter a username (used in metadata; sanitized to safe characters).
- Record with your microphone (preferred) or upload an audio file for any spell.
- Click Submit.
- Audio is resampled to 16 kHz mono and stored in MongoDB GridFS with metadata (username, spell, timestamp).
- A live counter shows how many spells are selected (recorded/uploaded) before submitting.
Run locally
Requirements (see requirements.txt):
- gradio
- numpy
- soundfile
- scipy
On Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python app.py
Then open the printed local URL in your browser.
- Create a new Space (Gradio) in your account.
- Upload
app.py,requirements.txt, and optionallyREADME.md. - Spaces will auto-build and run the app.
- Submissions are stored directly in your MongoDB (GridFS), not in the Space filesystem.
Notes:
- Microphone recording is enabled in the browser; no need to upload.
- Ensure MongoDB secrets are configured; otherwise the app will display that DB is not configured.
MongoDB configuration (Spaces secrets)
Set these in your Space → Settings → Variables and secrets:
MONGO_URI: your MongoDB connection string (e.g., from MongoDB Atlas)MONGO_DB: database name (default:spells)MONGO_BUCKET: GridFS bucket/collection prefix (default:recordings)
Locally (PowerShell) you can set temporarily for a session:
$env:MONGO_URI = "mongodb+srv://user:pass@cluster.mongodb.net/?retryWrites=true&w=majority"
$env:MONGO_DB = "spells"
$env:MONGO_BUCKET = "recordings"
python app.py
Privacy and consent
- Only collect voices from people who consent to being recorded.
- Consider informing contributors how their audio will be used and stored.
- Do not collect sensitive information in the username.
Why 16 kHz mono?
Standardizing sample rate and channels simplifies downstream model training and reduces storage.