Spaces:
Sleeping
Sleeping
| title: CDAC ASR Pronunciation Coach | |
| emoji: π€ | |
| colorFrom: yellow | |
| colorTo: red | |
| sdk: docker | |
| app_port: 7860 | |
| # Phoneme Pronunciation Correction System | |
| An advanced phoneme-level pronunciation correction system based on **Wav2Vec2** and **Contrastive CTC Alignment**. Designed for high-fidelity feedback and optimized for Indian English (NPTEL2020 dataset). | |
| ## π Key Features | |
| - **Embedding-based Acoustic Model:** Uses cosine similarity for robust phoneme identification. | |
| - **Micro-Diagnostic Feedback:** Identifies precise phoneme-level errors (Substitutions, Deletions, Insertions). | |
| - **Audio Cleaning pipeline:** Integrated FFT spectral subtraction and Silero VAD (Voice Activity Detection). | |
| - **Streaming Training:** Optimized for low-disk environments (50GB limit) using direct Zenodo/HuggingFace streaming. | |
| - **Local Portability:** Easily export GPU-trained models for inference on standard laptop CPUs. | |
| ## π Project Structure | |
| - `phoneme_embedder.py`: Core model architecture. | |
| - `train_streaming.py`: Training pipeline with HF Hub integration. | |
| - `test_model.py`: Real-time inference and scoring script. | |
| - `audio_utils.py`: VAD and FFT preprocessing utilities. | |
| - `ScoreCalcs.py`: Phoneme alignment and scoring logic. | |
| - `export_for_local.py`: Script to prepare models for CPU/local use. | |
| - `processor_dir/`: Configuration for the Wav2Vec2 processor and tokenizer. | |
| - `g2p/`: Grapheme-to-Phoneme component (Dictionary, Utilities, Tests). | |
| - `docs/`: Technical reports and implementation details. | |
| ## π οΈ Getting Started | |
| ### 1. Installation | |
| ```bash | |
| pip install -r requirements.txt | |
| pip install soundfile | |
| python3 -c "import nltk; nltk.download('averaged_perceptron_tagger_eng')" | |
| ``` | |
| ### 2. Training (Streaming) | |
| ```bash | |
| python train_streaming.py --hub_model_id your-repo/nptel-embedder --batch_size 8 --steps 50000 | |
| ``` | |
| ### 3. Testing & Evaluation (Automated) | |
| Run this to calculate the **Phoneme Error Rate (PER)** on a portion of the dataset the model hasn't seen: | |
| ```bash | |
| python3 evaluate_model.py --model_dir trained_models/20k_steps --num_samples 100 --skip 50000 | |
| ``` | |
| ### 4. Interactive Live Test (Microphone) | |
| Run this for a friendly CLI menu to test with your own voice: | |
| ```bash | |
| python3 cli_test_menu.py | |
| ``` | |
| ### 5. Local Export | |
| ```bash | |
| python export_for_local.py --checkpoint path_to_checkpoint --output my_local_model | |
| ``` | |
| ## π Documentation | |
| For deeper technical insights, check the `docs/` folder: | |
| - [Architecture Overview](docs/architecture_overview.md) | |
| - [G2P Analysis Report](docs/g2p_analysis_report.md) | |
| - [Implementation Plan](docs/implementation_plan.md) | |
| - [Walkthrough](docs/walkthrough.md) | |
| - [G2P Training & Maintenance Guide](g2p/training_guide.md) | |
| ## π‘ Hardware Requirements | |
| - **Training:** Recommended NVIDIA GPU with 24GB+ VRAM (optimized for H100). | |
| - **Inference:** Runs on standard Laptop CPUs or modest Cloud server GPUs. | |
| ## To run the training model use | |
| ```bash | |
| python train_streaming.py \ | |
| --hub_model_id your-repo/nptel-embedder \ | |
| --batch_size 16 \ | |
| --grad_accum 2 \ | |
| --num_workers 32 \ | |
| --prefetch 256 \ | |
| --steps 85000 \ | |
| --save_steps 2000 \ | |
| --push_hub | |
| ``` |