metadata
title: ASR Annotation Progress
emoji: π
colorFrom: yellow
colorTo: blue
sdk: docker
app_port: 7860
pinned: false
ASR Annotation β Team Progress Dashboard
A small FastAPI service that collects counts-only progress reports from the ASR labeling webapp and shows per-annotator and aggregate stats on a live dashboard.
Reports are persisted as one file per annotator (reports/<slug>.json) inside a
private HF Dataset repo, so progress survives Space restarts/rebuilds (the Space
filesystem itself is ephemeral). No transcripts or audio are ever sent β only tallies.
Endpoints
| Method | Path | Purpose |
|---|---|---|
GET |
/ |
Live HTML dashboard (auto-refreshes every 15s). |
GET |
/api/stats |
JSON: all reports + aggregate. |
POST |
/report |
Submit a report. Requires X-Report-Token header. |
POST /report body
{
"annotator": "Asha",
"folder": "Folder_19",
"total": 500,
"counts": { "pending": 120, "delete": 30, "correct": 300, "to_correct": 25, "edited": 25 },
"updatedAt": 1719300000000
}
One-time setup
- Create a private Dataset to hold the reports, e.g.
shaanilmo/asr-annotation-progress(the Space also auto-creates it on first boot if yourHF_TOKENhas write access). - Create this Space with SDK = Docker and push these files (
app.py,requirements.txt,Dockerfile, thisREADME.md). - Add the following Space Secrets (Settings β Variables and secrets):
HF_TOKENβ a write access token for the account owning the Dataset.DATASET_REPOβ e.g.shaanilmo/asr-annotation-progress.REPORT_TOKENβ any shared string; the webapp must send the same value.
- In the webapp (
webapp/app.js), setPROGRESS_ENDPOINTtohttps://<your-space-subdomain>.hf.space/reportandREPORT_TOKENto the same value.
Run locally
cd hf_space
pip install -r requirements.txt
export HF_TOKEN=hf_xxx
export DATASET_REPO=shaanilmo/asr-annotation-progress
export REPORT_TOKEN=some-shared-string
uvicorn app:app --port 7860
# dashboard: http://localhost:7860/