ASR / README.md
MihirRPatil's picture
deploy: CDAC ASR backend with pitch/stress fix and LLM feedback
88a679b
|
Raw
History Blame Contribute Delete
3.14 kB
---
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
```