File size: 1,987 Bytes
88a679b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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.