ASR / src /g2p /training_guide.md
MihirRPatil's picture
deploy: CDAC ASR backend with pitch/stress fix and LLM feedback
88a679b
|
Raw
History Blame Contribute Delete
1.99 kB
# G2P Training & Maintenance Guide
This folder contains the **Grapheme-to-Phoneme (G2P)** component of the Pronunciation Correction System.
## 1. The Strategy: Modular Dictionary
We use a **lexicon-based** approach. The `output_full.dict` contains the "Gold Standard" pronunciations for over 2,700 common words in Indian English.
## 2. OOV (Out-Of-Vocabulary) Handling
If a word is missing from the dictionary, the system automatically uses a **Neural Fallback (`g2p-en`)**. This model uses a neural network to "guess" the pronunciation based on English spelling patterns.
Use `test_g2p.py` to verify if a word or sentence is correctly mapped to phonemes.
```bash
python g2p/test_g2p.py "I am going to the CDAC university"
```
Even though "CDAC" is not in the dictionary, the neural fallback will provide a phonetic guess.
## 3. Training / Updating the G2P
To "train" the G2P (add new words), you have two options:
### Option A: Manual Entry (Fastest)
Simply add the word and its IPA phonemes to `output_full.dict` in the following tab-separated format:
`word P H O N E M E S`
### Option B: MFA (Montreal Forced Aligner) Training
If you have a large corpus of text and audio, you can re-run MFA to generate a new dictionary:
1. Install MFA: `conda install -c conda-forge montreal-forced-aligner`
2. Prepare your audio/text corpus (standard MFA format).
3. Run the aligner:
```bash
mfa align corpus_dir english_mfa_dictionary english_mfa_acoustic_model output_dir
```
4. Copy the resulting `.dict` file to this folder and rename it to `output_full.dict`.
## 4. Documentation
For a deep dive into why we chose this modular approach over a joint neural model, see `../docs/g2p_analysis_report.md`.
## 5. Central Management: `g2p_utils.py`
This script provides the `G2PManager` class, which is used by both the training and testing pipelines of the main project. If you want to change how OOVs are handled (e.g., adding a neural fallback), this is the file to edit.