{"id":32861138,"url":"https://github.com/sakshampainuly/grammar-scoring-engine","last_synced_at":"2026-05-08T07:35:00.233Z","repository":{"id":322956847,"uuid":"1091545770","full_name":"SakshamPainuly/grammar-scoring-engine","owner":"SakshamPainuly","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-07T08:12:36.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-07T09:21:41.385Z","etag":null,"topics":["asr","fastapi","gradio","grammer-checker","machine-learning","nlp","scoring-engine","speech-recognition","whisper"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SakshamPainuly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-07T06:57:10.000Z","updated_at":"2025-11-07T08:12:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SakshamPainuly/grammar-scoring-engine","commit_stats":null,"previous_names":["sakshampainuly/grammar-scoring-engine"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/SakshamPainuly/grammar-scoring-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SakshamPainuly%2Fgrammar-scoring-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SakshamPainuly%2Fgrammar-scoring-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SakshamPainuly%2Fgrammar-scoring-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SakshamPainuly%2Fgrammar-scoring-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SakshamPainuly","download_url":"https://codeload.github.com/SakshamPainuly/grammar-scoring-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SakshamPainuly%2Fgrammar-scoring-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283418034,"owners_count":26832617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-08T02:00:06.281Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asr","fastapi","gradio","grammer-checker","machine-learning","nlp","scoring-engine","speech-recognition","whisper"],"created_at":"2025-11-08T21:00:40.554Z","updated_at":"2025-11-08T21:02:00.514Z","avatar_url":"https://github.com/SakshamPainuly.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎙️ Grammar Scoring Engine  \n### **SHL Research Intern – Technical Assessment Submission**\n\nA lightweight speech-to-score system that analyzes spoken English responses and outputs:\n\n- **Transcript**\n- **Grammar score**\n- **Fluency score**\n- **Overall communication score**\n- **Diagnostics \u0026 feedback**\n\nThe system includes a **REST API (FastAPI)** and a **demo UI (Gradio)**.\n\n---\n\n## ✅ Features (Quick Summary)\n\n- **ASR:** Faster-Whisper (tiny, CPU-optimized)  \n- **Grammar Scoring:** Heuristics (capitalization, punctuation, repeated words, structure)  \n- **Fluency:** Words/minute + filler penalty  \n- **Aggregation:** Weighted scoring  \n- **UI:** Gradio interface for audio scoring  \n- **API:** FastAPI with `/score` endpoint  \n\n---\n\n## ✅ Tech Stack\n\n- Python  \n- FastAPI  \n- Gradio  \n- Faster-Whisper (ctranslate2 backend)  \n- ffmpeg (optional)  \n- Uvicorn, Requests  \n\n---\n\n## ✅ How It Works (Pipeline)\n\n```\nAudio\n → Preprocessing\n → ASR (Faster-Whisper)\n → Grammar Heuristics\n → Fluency Scoring\n → Weighted Aggregation\n → JSON Output\n```\n\n---\n\n## ✅ API Usage\n\n### **POST /score**\n\nUpload `.wav` or `.mp3`:\n\n```\ncurl -X POST http://127.0.0.1:8000/score \\\n  -F \"audio=@sample.wav\"\n```\n\nExample output:\n\n```\n{\n  \"overall\": 90.3,\n  \"grammar\": 90,\n  \"fluency\": 94.4,\n  \"transcript\": \"The stale smell of old beer lingers...\",\n  \"diagnostics\": [\"Contains double spaces.\"]\n}\n```\n\n---\n\n## ✅ Run Locally\n\nInstall dependencies:\n\n```\npip install -r requirements.txt\n```\n\nStart backend:\n\n```\nuvicorn api.main:app --reload\n```\n\nStart UI:\n\n```\npython demo/app.py\n```\n\nBackend Docs → http://127.0.0.1:8000/docs  \nUI → http://127.0.0.1:7860  \n\n---\n\n## ✅ Project Structure (Minimal)\n\n```\napi/          ← FastAPI backend\nsrc/          ← ASR, grammar, fluency, scoring modules\ndemo/         ← Gradio UI\nmodels/       ← Scoring config\n```\n\n---\n\n## ✅ Scoring Logic (Brief)\n\n- Grammar: heuristic rule violations  \n- Fluency: WPM + filler detection  \n- Pronunciation: placeholder constant  \n- Final score = weighted sum (`scoring_config.json`)  \n\n---\n\n## ✅ Why This Approach (For SHL Reviewers)\n\n- Lightweight and deployable  \n- Cross-platform (Windows/Linux/Cloud)  \n- Fast inference (CPU-only)  \n- No heavy dependencies like Java  \n- Research-friendly modular design  \n- Complete pipeline: **ASR → NLP → Scoring → API → UI**  \n\n---\n\n## ✅ Future Enhancements\n\n- Transformer-based grammar scoring  \n- Pronunciation scoring via CTC alignment  \n- Improved VAD (Silero/WebRTC)  \n- Multi-speaker support  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakshampainuly%2Fgrammar-scoring-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsakshampainuly%2Fgrammar-scoring-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakshampainuly%2Fgrammar-scoring-engine/lists"}