harry_potter_spells / README.md
Sulitha's picture
Bump Gradio sdk_version to 4.44.1
e124ecc

A newer version of the Gradio SDK is available: 6.3.0

Upgrade
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.

  1. Create a new Space (Gradio) in your account.
  2. Upload app.py, requirements.txt, and optionally README.md.
  3. Spaces will auto-build and run the app.
  4. 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.