# Grapheme-to-Phoneme Conversion for Cyrillic Mongolian Using a Speech Corpus 

Bilguun Ochirbat $\textcircled{1}$ and Altangerel Chagnaa $\textcircled{1}$ 

# 1 Introduction 

Converting text to pronunciation (sequence of phonemes) is a crucial part of speech processing technology, and for the Cyrillic Mongolian script, this poses signi!cant challenges. When analyzing the Cyrillic Mongolian script according to proper orthographic rules, many ambiguities arise, and there are also numerous irregular cases. Additionally, the written language does not perfectly align with the spoken language. For example, the word “з ргаа” can either mean the number “6” or “picture $^ +$ possesive af!x,” and its pronunciations are different depending on its sense. Although previous research [1] has been conducted on word-level conversion of Cyrillic text to pronunciation, there hasn’t been much work done on distinguishing words that have identical spelling but different pronunciations. We aim to improve this limitation by developing a sentence-level grapheme-to-phoneme conversion approach that can better handle such cases by utilizing contextual information. 

Currently, a sentence-level grapheme-to-phoneme conversion model for English [2] evaluated on the TIMIT [3] speech recognition dataset has achieved results of $\mathrm { P E R } = 1 5 . 5 6 \%$ and $\mathrm { W E R } = 4 6 . 5 \%$ . Internationally, Mongolian language research is primarily conducted by researchers from Inner Mongolia, China, who focus on traditional Mongolian script. They trained a machine learning-based word-level grapheme-to-phoneme converter [4] on a pronunciation dictionary containing 39,000 words, achieving results of $\mathrm { P E R } = 1 . 5 \%$ and $\mathrm { W E R } = 6 . 5 \%$ . In this work, we aimed to align Cyrillic text with its corresponding pronunciation in real speech recordings, analyze various pronunciations of text, and generate a pronunciation dictionary. Furthermore, to enable future improvements and comparisons, we trained and evaluated a sentence-level grapheme-to-phoneme conversion model using this phoneme labeled speech corpus. 

# 2 Dataset and Tools 

# 2.1 Speech Corpus 

We used a speech dataset consisting of 25,791 sentences prepared for the purpose of text-to-speech task, recorded by a female speaker in a studio with a $2 2 \mathrm { k H z }$ samplingrate and mono channel. This dataset builds upon and extends a previous 6-h TTS corpus [5] by incorporating additional recordings. The total duration of the speech dataset is $6 0 . 2 8 \mathrm { h }$ , with the shortest audio being $1 . 2 \ : \mathrm { s }$ and the longest $3 1 . 8 \mathrm { ~ s ~ }$ . 

# 2.2 Pronunciation Dictionary 

The $2 5 \ \mathrm { k }$ sentences in the speech dataset contained 39,186 unique words, totaling 333,623 words. The shortest sentence had 1 word, the longest had 36 words, with an average of 13 words per sentence. After processing the text, we used a grapheme-tophoneme (g2p) [1] tool to perform the conversion and generated a pronunciation dictionary consisting of 73,676 word-pronunciation pairs. 

# 2.3 Montreal Forced Aligner 

We used the Montreal Forced Aligner [6] (MFA) tool to perform audio-transcript alignment at the phoneme level for the speech pronunciations. This tool generates an acoustic model and aligns the corresponding phonemes from our generated pronunciation dictionary with the audio and transcripts. 

# 2.4 Transformer-Based Grapheme-to-Phoneme Converter 

For the machine learning baseline model to convert Cyrillic script to phonetic transcription (or the grapheme-to-phoneme converter), we used an open-source neural machine translation system OpenNMT [7], based on its default transformer architecture. This is an encoder-decoder architecture with 6 layers each for both the encoder and decoder, using 8 attention heads, a hidden size and word vector size of 512, position encoding enabled, and a feed-forward network with a dimension of 2048 (Fig. 1). 

![](images/d7a9dafaea687c0de7970ea18b83af5f931d0df9d143ccd403488a06fb89d6d4.jpg)



Fig. 1 Overview of the sequence-to-sequence model (OpenNMT [7]) 


# 3 Pronunciation Corpus 

# 3.1 Extended Pronunciation Dictionary 

To align all possible pronunciations of words, present in the speech corpus, we needed to create an extended dictionary containing all possible pronunciation cases for each word and morpheme. Thus, the pronunciation dictionary was enriched using three main methods: !nding words with the same written form but different stems, adding pronunciations of stems with dropped vowels added back, and adding word-!nal vowels for words ending with consonants. We then used the Montreal Forced Aligner (MFA) to align the pronunciations with the actual phonemes, resulting in a pronunciation corpus (Fig. 2). 

# 3.2 Homograph 

Words with the same written form but different pronunciations can be distinguished by !nding their stems. For this, we !nd all possible stems of a given word, and from those, select the stems that are likely to be present in the text corpus (Fig. 3). 

To !nd the word stems and part of speech, we used natural language processing tool [8, 9]. In cases where multiple stems were found for a single word, we selected the appropriate stems based on the following criteria: 

1. Stem should belong to the same part of speech as the word. 2. If no stem is found that matches the previous criteria, choose the most frequently used stem. 3. If the previous two requirements are not met, the longest stem is considered. 

![](images/2164a63cec741296be1e84b2ca9bf5f03663a61f609021e9bca62ebc25cd3530.jpg)



Fig. 2 Overview of creating phoneme corpus from a speech text corpus 


![](images/2228886c28c63fd13040e6bc09bc52ff52276bd0d2b3b5486b8da7143c2c3521.jpg)



Fig. 3 Finding lemmas of homograph 


After including words with multiple stems, our word list totaled 39,441 words, with 254 words having two or more possible variants, which is an increase of 255 words compared to the original word list. 

# 3.3 Convert to Phoneme Sequence 

All words in the list are converted into phoneme sequence with the help of the grapheme-to-phoneme converter. However, to distinguish words with the same spelling, they were separated into “stem $^ +$ suf!x,” and the pronunciation of each was created and joined together (Fig. 4). 

Also, when compared with the stem, the words that have dropped vowels from the stem of the word have been added as an additional version in the form of “stem $^ +$ suf!x.” This resulted in a phonetic dictionary of 42,413 distinct word and phoneme pairs. 

# 3.4 Add Word-Final Vowels to Words Ending in Consonants 

A vowel sound is pronounced at the end of some words ending in consonants. To !nd these words, all consonant-ending words in the vocabulary are marked by adding a special vowel phonetic symbol to the end of the pronunciation. 

In terms of symbols, we extended 7 vowel phonetic symbols and used them according to the vowel of the !rst syllable of the word (Tables 1 and 2). 

A total of 31,263 words ending in consonants were found and added to the phonetic dictionary by adding a vowel to the end as a variation. This completes the creation of the pronunciation dictionary, and the dictionary speci!cations are shown below: 

![](images/d4c45961479478260642bbdcd7a1bbf017802b3287a95852b5fb00bfe1e0d850.jpg)



Fig. 4 Example of different pronunciations of homograph 



Table 1 Special ending vowel phonetic symbol for words ending in consonants 



Table 2 Example of different pronunciations of homograph 




<table><tr><td rowspan=1 colspan=1>a</td><td rowspan=1 colspan=1>э</td><td rowspan=1 colspan=1>M</td><td rowspan=1 colspan=1>0</td><td rowspan=1 colspan=1>y</td><td rowspan=1 colspan=1>ө</td><td rowspan=1 colspan=1>Y</td></tr><tr><td rowspan=1 colspan=1>a2</td><td rowspan=1 colspan=1>e2</td><td rowspan=1 colspan=1>i2</td><td rowspan=1 colspan=1>02</td><td rowspan=1 colspan=1>u2</td><td rowspan=1 colspan=1>ou2</td><td rowspan=1 colspan=1>uo2</td></tr></table>





<table><tr><td rowspan=1 colspan=1>Word</td><td rowspan=1 colspan=1>Phoneme sequence</td></tr><tr><td rowspan=2 colspan=1>баримталдаг</td><td rowspan=1 colspan=1>b a1 R i0 m t a0 1 d a0 g</td></tr><tr><td rowspan=1 colspan=1>b a1 R i0 m t a0 1 d a0 g a2</td></tr><tr><td rowspan=2 colspan=1>үйлдэж</td><td rowspan=1 colspan=1>uoy1 1 d e0 w</td></tr><tr><td rowspan=1 colspan=1>uoy1 1 d e0 w uo2</td></tr></table>



• Total pair of word and pronunciation: 73,676   
Unique words: 39,186   
• Unique phoneme sequences: 73,368 

Number of words with multiple pronunciations: 

Words with 1 pronunciation: 9502 Words with 2 pronunciations: 27,290 • Words with 4 pronunciations: 2386 • Words with 6 pronunciations: 7 • Words with 8 pronunciations: 1 

# 3.5 Phoneme Alignment 

An acoustic model was trained using the prepared pronunciation dictionary and speech corpus with the MFA tool, and textgrid !les with phoneme alignment were generated using this model. Out of a total of 25,791 audio !les, 20,433 were successfully aligned. 

# 4 Analysis 

# 4.1 Pronunciation Corpus 

With the help of the MFA tool, we were able to extract the pronunciations actually used in the speech corpus from the generated pronunciation dictionary. 

Final pronunciation corpus after alignment: 

• Total pair of word and pronunciation: 41,783   
• Unique words: 33,757   
• Unique phoneme sequences: 41,704 

Number of words with multiple pronunciations: 

Words with 1 pronunciation: 25,893 • Words with 2 pronunciations: 7735 • Words with 3 pronunciations: 96 • Words with 4 pronunciations: 33 

The number of pronunciations in which a vowel phoneme is added after words ending in a consonant: 16,004. 

# 4.2 Homograph 

Out of the 255 words with multiple stems in the pronunciation dictionary, after performing forced alignment with MFA, only 9 words were left with two different pronunciations associated with them. We provide examples of these in Table 3. 

The different pronunciations were mostly distinguished by the phoneme “g” and “G.” As an example, we show the phonemes for the word “з ргаа” (six/picture) in Fig. 5. 

Sentences containing the example word “з ргаа”: 

• z u1 r G ah0 (number) − энэхүү үзэсгэлэнгээс өндөр гэгээний тавин з ргаа гар й дүрийг үзэж сонирхох боломжийг олгож байгаа юм. (english: this exhibition provides an opportunity to view and appreciate over !fty-six characters of Undur Gegeen) z u1 r a0 g ah0 (picture) − т хайлбал металл хавтан дээр лаак нэлэнхүйд нь түрхэж дээр нь нарийхан зүүгээр з ргаа з рна. (english: for example, they would cover the thin metal sheets with a varnish and draw picture on top with a !ne needle.) 



<table><tr><td rowspan=1 colspan=1>Spelling</td><td rowspan=1 colspan=1>Phonemes variant 1</td><td rowspan=1 colspan=1>Phonemes variant 2</td></tr><tr><td rowspan=1 colspan=1>apraa</td><td rowspan=1 colspan=1>a1 r G ah0</td><td rowspan=1 colspan=1>a1 r a0 g ah0</td></tr><tr><td rowspan=1 colspan=1>багууд</td><td rowspan=1 colspan=1>b al G uh0 d</td><td rowspan=1 colspan=1>b a1 g uh0 d</td></tr><tr><td rowspan=1 colspan=1>3ypraa</td><td rowspan=1 colspan=1>z u1 r G ah0</td><td rowspan=1 colspan=1>z u1 r a0 g ah0</td></tr><tr><td rowspan=1 colspan=1>цагаа</td><td rowspan=1 colspan=1>c al G ah0</td><td rowspan=1 colspan=1>c a1 g ah0</td></tr></table>



![](images/c269e6bbc2ffa9ac00606db2710d852559208180a85411a43056f85daa8d7f56.jpg)



(b) "3ypar" (picture) $^ +$ "a" (possesive affix 


![](images/23ad28b4cd73506aa5702367ca0e24402935f2b62f084bda2ab324ab50fabe40.jpg)



Fig. 5 Comparison of homograph “з ргаа.” (a) “з ргаа” (number six). (b) “з раг” (picture) $^ +$ “аа” (possessive af!x) 


# 4.3 Dropped Vowels 

During the process of creating the pronunciation dictionary, out of the 3070 words that dropped vowel or some other transformation from the stem, 2656 remained after the MFA process (some overlapping with homograph), and 220 words retained both their vowel dropped and dropped vowel added back variants. 

# 4.4 Words Ending with Consonants 

Out of the 31,263 words ending in consonants in the pronunciation dictionary, 8109 had only the vowel phoneme added variant, 7811 had both the regular (no vowels at the end) and vowel phoneme added variants, while the remaining words retained only their regular variant. 

Figure 6 shows examples of some words pronounced with and without a !nal vowel. We have also included example sentences for these words in Table 4. 

The cases where a vowel is pronounced after a word ending in consonant mostly occur when there is a pause before saying the next word or at the end of a sentence. Figure 8 compares the frequencies of words ending in consonants with or without vowels, showing that approximately $46 \%$ of all consonant words had a vowel phoneme followed by a consonant. 

![](images/3512a3ff18b9a376bae8ca1b62cfbb3de2943d8f055b92f4a437b8b80dffcd90.jpg)



Fig. 6 Comparison of “газраа” (газар $^ +$ аа) (place) dropped vowel phoneme. (a) Vowel dropped (G a1 z r ah 0). (b) Dropped vowel added back (G a1 z a0 r ah0) 



Table 4 Sentences containing the example words shown in Fig. 7 




<table><tr><td rowspan=1 colspan=1>Example</td><td rowspan=1 colspan=1>Sentence</td></tr><tr><td rowspan=1 colspan=1>Figure 7a</td><td rowspan=1 colspan=1>хаашаа ч явсан хамаагүй мэт санагдаад юу боловч салхины өөд жаахан яваадүзэх юм биш үү гэсэн бодол төрж тийш нь тэмээгээ зүглүүлбэл дуртай гэгч нь эргэв</td></tr><tr><td rowspan=1 colspan=1>Figure 7b</td><td rowspan=1 colspan=1>харин хүмүүсийн үзэл бодол өөрчлөгдөж чадсан болов уу гэж бодож байлаа </td></tr><tr><td rowspan=1 colspan=1>Figure 7c</td><td rowspan=1 colspan=1>цаг хугацааны явцад миний энэ үзэн ядалт бас өөрчлөгдөж байсан юм</td></tr><tr><td rowspan=1 colspan=1>Figure 7d</td><td rowspan=1 colspan=1>харин хүмүүсийн үзэл бодол өөрчлөгдөж чадсан болов уу гэж бодож байлаа </td></tr></table>



# 5 Grapheme-to-Phoneme Conversion 

For grapheme-to-phoneme conversion model development, we used transformerbased sequence-to-sequence (seq2seq) model with character tokenization. 

# 5.1 Tokenization 

Since the input and output of seq2seq models need to be numeric vectors, it was necessary to prepare a tokenizer that can split words and sentences into smaller units and convert them to numeric vectors. The tokenizer is responsible for just delimiting characters with white spaces and word boundaries with a separate token (Fig. 9). 

![](images/63458a6826247901fdc5687604cb73c9c29e5ce85aecfc61b6fb27a90cc869d8.jpg)


![](images/7ef1aa08862877161db1030f5e2bb6f9f147968a40e68aefc6912b81900c7ba1.jpg)


(a) No vowel phoneme after consonant (b o1 d o0 1) 

(b) Vowel after consonant (b o1 d o0 1 o2) 

![](images/83d28db7f02e07a31ee07c5480cabb9085e05ed4198d24576c95b2219f809f01.jpg)


![](images/cc045b34b6e5df33c624aac91fc058558c21e153c8685b07575491a211526d80.jpg)



Fig. 7 Phonetic comparisons of word endings. (a, b) “бодол” (thought); (c, d) “өөрчлөгдөж” (altered). (a) No vowel phoneme after consonant (b o1 d o0 l). (b) Vowel after consonant (b o1 d o0 l o2). (c) No vowel phoneme after consonant (ouh1 r h l ou0 g d ou0 w). (d) Vowel after consonant (ouh1 r h l ou0 g d ou0 w ou2) 


( No vowel phoneme after consonant(d) Vowel after consonant (ouh1 r h l ou0 g (ouh1 r h 1 ou0 g d ou0 w) d ou w ou 

# 5.2 Training 

For the model, we chose the default OpenNMT seq2seq model. The training details are listed below: 

• Dataset: $2 0 . 4 1 $ sentences of speech corpus, $1 9 \mathrm { k }$ sentences were used for training and $1 . 4 \mathrm { k }$ for evaluation.   
• Hyperparameters:   
Iteration: $5 0 \mathrm { k }$ steps   
Optimizer: adam   
Learning rate: 2, noam decay   
Batch type: tokens   
Batch size: train $= 4 0 9 6$ , eval $= 2 0 4 8$ 

Model was trained on an NVIDIA RTX 3090 (24GB) GPU. 

![](images/48d6f17d618dfa9b36b1e8fa7817421ee162b1f0cf41e82943864c8b62d24c09.jpg)



Fig. 8 Frequency of words ending in consonants pronounced with or without vowel phoneme after 


![](images/5e229c07708ec9692ca79a498ee2a3e9b86b487d0e0f7abc9fe8a718ba06f21a.jpg)



Fig. 9 Overview of the tokenizer 



Table 5 Word and phoneme errors on 1433 test sentences 




<table><tr><td rowspan=1 colspan=1>Level</td><td rowspan=1 colspan=1>Substitutions</td><td rowspan=1 colspan=1>Deletions</td><td rowspan=1 colspan=1>Insertions</td><td rowspan=1 colspan=1>Hits</td><td rowspan=1 colspan=1>Error (%)</td></tr><tr><td rowspan=1 colspan=1>Word</td><td rowspan=1 colspan=1>4978</td><td rowspan=1 colspan=1>86</td><td rowspan=1 colspan=1>86</td><td rowspan=1 colspan=1>15,685</td><td rowspan=1 colspan=1>24.82</td></tr><tr><td rowspan=1 colspan=1>Phoneme</td><td rowspan=1 colspan=1>488</td><td rowspan=1 colspan=1>4163</td><td rowspan=1 colspan=1>1716</td><td rowspan=1 colspan=1>132,221</td><td rowspan=1 colspan=1>4.65</td></tr></table>



# 5.3 Results and Discussion 

On 1433 sentences test set, the trained seq2seq model gives $\mathrm { W E R } = 2 4 . 8 \%$ and $\mathrm { P E R } = 4 . 7 \%$ respectively, as shown in Table 5. We will proceed with phoneme level analysis in the following section. 

Table 6 shows the statistics for each type of errors, sorted by phoneme occurrences. From total 6367 phoneme alignment errors, deletion occurs 2/3 cases (4163). Deletion error occurs when certain phoneme in the reference phoneme sequence does not appear in the predicted phoneme sequence. 

For deletion errors, phonemes (‘a2’, ‘e2’, ‘uo2’, ‘u2’, ‘o2’, ‘ou2’, and ‘i2’) sum up to 3601 from total 4163 deletions as shown in Table 6 (b). These phonemes are the vowels after the last consonant of a word (Fig. 10). 

The most frequently inserted phonemes are also ‘e2’, ‘o2’, ‘u2’, ‘a2’, ‘ou2’, and ‘i2’, as shown in Table 6 (a) (refer Sect. 4.4. about these phonemes). These errors make (1084) most of total 1716 insertion errors. 

Substitution errors occurred the least (488) among other types. However, Table 6 (c) gives the hint about the most confusing phoneme pairs. For example, $\cdot _ { G }$ ’ and $\cdot _ { g } ,$ are notable for their homograph ambiguity (refer back to Sect. 4.2. for more detail). 

Next case for substitution error is palatalization. For example, $\cdot L - \cdot l ^ { \prime }$ , $M ^ { \prime } { - } ^ { \cdot } m ^ { \prime }$ and $\cdot D ' - \cdot d '$ pairs. 

Vowels after the !rst syllable (vowels ending with 0 and 2, such as $\cdot _ { e O ^ { \prime } }$ , or $\cdot _ { a 2 } \cdot$ ’), tend to be misreplaced such as $\cdot a 2 ^ { \prime } - \cdot o 2 ^ { \prime }$ , and $\cdot _ { e 0 } \cdot _ { - } \cdot _ { a 0 } ,$ . 


Table 6 Frequent phoneme frequencies per each operation on test sentences 




<table><tr><td rowspan=1 colspan=1>Inserted</td><td rowspan=1 colspan=1>Count</td><td rowspan=1 colspan=1>Deleted</td><td rowspan=1 colspan=1>Count</td><td rowspan=1 colspan=1>Substitutepairs</td><td rowspan=1 colspan=1>Count</td><td rowspan=1 colspan=1>Substituted</td><td rowspan=1 colspan=1>Count</td><td rowspan=1 colspan=1>Substitutedby</td><td rowspan=1 colspan=1>Count</td></tr><tr><td rowspan=1 colspan=1>[&#x27;e2&#x27;]</td><td rowspan=1 colspan=1>288</td><td rowspan=1 colspan=1>[&#x27;a2}]</td><td rowspan=1 colspan=1>1209</td><td rowspan=1 colspan=1>[G&#x27;}]−[&#x27;g ]</td><td rowspan=1 colspan=1>10</td><td rowspan=1 colspan=1>[{g ]</td><td rowspan=1 colspan=1>16</td><td rowspan=1 colspan=1>[G′]</td><td rowspan=1 colspan=1>22</td></tr><tr><td rowspan=1 colspan=1>[&#x27;o2&#x27;]</td><td rowspan=1 colspan=1>274</td><td rowspan=1 colspan=1>[&#x27;e2&#x27;]</td><td rowspan=1 colspan=1>741</td><td rowspan=1 colspan=1>[&#x27;L]−[&#x27;1′]</td><td rowspan=1 colspan=1>8</td><td rowspan=1 colspan=1>[{a2&#x27;}]</td><td rowspan=1 colspan=1>10</td><td rowspan=1 colspan=1>[o2&#x27; ]</td><td rowspan=1 colspan=1>11</td></tr><tr><td rowspan=1 colspan=1>[&#x27;u2&#x27;]</td><td rowspan=1 colspan=1>226</td><td rowspan=1 colspan=1>[&#x27;u02 ]</td><td rowspan=1 colspan=1>419</td><td rowspan=1 colspan=1>[a0 ]−[G]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;a0 }]</td><td rowspan=1 colspan=1>8</td><td rowspan=1 colspan=1>[L]</td><td rowspan=1 colspan=1>9</td></tr><tr><td rowspan=1 colspan=1>[&#x27;u02&#x27;]</td><td rowspan=1 colspan=1>115</td><td rowspan=1 colspan=1>[&#x27;u2]</td><td rowspan=1 colspan=1>416</td><td rowspan=1 colspan=1>[&#x27;sp&#x27;}]−[&#x27;02&#x27;]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[L]</td><td rowspan=1 colspan=1>8</td><td rowspan=1 colspan=1>[&#x27;n ]</td><td rowspan=1 colspan=1>6</td></tr><tr><td rowspan=1 colspan=1>[a2&#x27;]</td><td rowspan=1 colspan=1>110</td><td rowspan=1 colspan=1>[&#x27;02 ]</td><td rowspan=1 colspan=1>351</td><td rowspan=1 colspan=1>[&#x27;u1&#x27;}]-[o1 ]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;sp ]</td><td rowspan=1 colspan=1>8</td><td rowspan=1 colspan=1>[&#x27;e2&#x27;]</td><td rowspan=1 colspan=1>5</td></tr><tr><td rowspan=1 colspan=1>[&#x27;ou2&#x27;]</td><td rowspan=1 colspan=1>71</td><td rowspan=1 colspan=1>[&#x27;ou2&#x27;]</td><td rowspan=1 colspan=1>235</td><td rowspan=1 colspan=1>[&#x27;uoh0&#x27;]−[&#x27;h}]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;e2&#x27;]</td><td rowspan=1 colspan=1>6</td><td rowspan=1 colspan=1>[&#x27;n }]</td><td rowspan=1 colspan=1>5</td></tr><tr><td rowspan=1 colspan=1>[i2&#x27;]</td><td rowspan=1 colspan=1>68</td><td rowspan=1 colspan=1>[i2&#x27;]</td><td rowspan=1 colspan=1>230</td><td rowspan=1 colspan=1>[&#x27;a2&#x27;}]−[o2&#x27;]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;s&#x27;]</td><td rowspan=1 colspan=1>6</td><td rowspan=1 colspan=1>[o1′]</td><td rowspan=1 colspan=1>5</td></tr><tr><td rowspan=1 colspan=1>[a0 ]</td><td rowspan=1 colspan=1>17</td><td rowspan=1 colspan=1>[&#x27;a0 }]</td><td rowspan=1 colspan=1>23</td><td rowspan=1 colspan=1>[M ]−[&#x27;m&#x27;]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;u1&#x27;]</td><td rowspan=1 colspan=1>5</td><td rowspan=1 colspan=1>[&#x27;5]</td><td rowspan=1 colspan=1>5</td></tr><tr><td rowspan=1 colspan=1>[&#x27;e0 ]</td><td rowspan=1 colspan=1>11</td><td rowspan=1 colspan=1>[e0 ]</td><td rowspan=1 colspan=1>12</td><td rowspan=1 colspan=1>[a0 }]−[ah0^]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;u2&#x27;]</td><td rowspan=1 colspan=1>5</td><td rowspan=1 colspan=1>[&#x27;t&#x27;]</td><td rowspan=1 colspan=1>5</td></tr><tr><td rowspan=1 colspan=1>[ou0&#x27;]</td><td rowspan=1 colspan=1>8</td><td rowspan=1 colspan=1>[&#x27;g ]$</td><td rowspan=1 colspan=1>9</td><td rowspan=1 colspan=1>[a2&#x27;]−[{g ]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[o0 ]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;a0 ]</td><td rowspan=1 colspan=1>4</td></tr><tr><td rowspan=1 colspan=1>[&#x27;n]</td><td rowspan=1 colspan=1>6</td><td rowspan=1 colspan=1>[&#x27;i0 ]</td><td rowspan=1 colspan=1>6</td><td rowspan=1 colspan=1>[&#x27;D&#x27;]−[&#x27;d′]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;02&#x27;]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;h}]</td><td rowspan=1 colspan=1>4</td></tr><tr><td rowspan=1 colspan=1>[]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;ng ]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;e0&#x27;]−[a^0 }]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;t}]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;ih0&#x27;]</td><td rowspan=1 colspan=1>4</td></tr><tr><td rowspan=1 colspan=1>[&#x27;S&#x27;]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[π]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;e2&#x27;]−[&#x27;ng ]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;uoh0&#x27;]</td><td rowspan=1 colspan=1>4</td><td rowspan=1 colspan=1>[&#x27;m ]</td><td rowspan=1 colspan=1>4</td></tr><tr><td rowspan=1 colspan=1>[&#x27;t&#x27;]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[ou0^]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;N&#x27;]−[&#x27;n&#x27;}]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;D&#x27;]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;uoy0^]</td><td rowspan=1 colspan=1>4</td></tr><tr><td rowspan=2 colspan=1>[&#x27;x]</td><td rowspan=2 colspan=1>2</td><td rowspan=2 colspan=1>[&#x27;uoy0&#x27;]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;o0 ]−</td><td rowspan=1 colspan=1>2</td><td rowspan=2 colspan=1>[&#x27;e0&#x27;]</td><td rowspan=2 colspan=1>3</td><td rowspan=2 colspan=1>[&#x27;x]</td><td rowspan=2 colspan=1>4</td></tr><tr><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1>[G&#x27;]</td><td rowspan=1 colspan=1></td></tr><tr><td rowspan=1 colspan=1>[&#x27;yh0&#x27;]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;r ]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;s &#x27;]−[&#x27;x&#x27;]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;M]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[ah0&#x27;]</td><td rowspan=1 colspan=1>3</td></tr><tr><td rowspan=2 colspan=1></td><td rowspan=2 colspan=1></td><td rowspan=2 colspan=1>[&#x27;uo0&#x27;]</td><td rowspan=2 colspan=1>2</td><td rowspan=2 colspan=1>[&#x27;sp&#x27;]−[&#x27;e2&#x27;]</td><td rowspan=1 colspan=1>2</td><td rowspan=2 colspan=1>[&#x27;N&#x27;]</td><td rowspan=2 colspan=1>3</td><td rowspan=2 colspan=1>[&#x27;d ]</td><td rowspan=2 colspan=1>3</td></tr><tr><td rowspan=1 colspan=1></td></tr><tr><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1>[&#x27;sp&#x27;]−[&#x27;u2&#x27;]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;ng ]</td><td rowspan=1 colspan=1>3</td><td rowspan=1 colspan=1>[&#x27;e1&#x27;]</td><td rowspan=1 colspan=1>3</td></tr><tr><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1>[t&#x27;]−{g ]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;B&#x27;]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;ou0^]</td><td rowspan=1 colspan=1>2</td></tr><tr><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1>[&#x27;u2&#x27;}]−[t]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[il&#x27;]</td><td rowspan=1 colspan=1>2</td><td rowspan=1 colspan=1>[&#x27;u2&#x27;]</td><td rowspan=1 colspan=1>2</td></tr><tr><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1></td><td rowspan=1 colspan=1>[&#x27;vν]</td><td rowspan=1 colspan=1>2</td></tr><tr><td rowspan=1 colspan=2>(a)</td><td rowspan=1 colspan=2>(b)</td><td rowspan=1 colspan=2>(c)</td><td rowspan=1 colspan=2>(d)</td><td rowspan=1 colspan=2>(e)</td></tr></table>



![](images/b4489dfef2db12be75996284d2cd3ab711fe0f5e17cc9a0fe11afed8c2015e33.jpg)



Fig. 10 A sample of the error analysis on a sentence $\mathbf { D } =$ deletion, $\mathrm { I } =$ insertion) 


# 6 Conclusion 

We generated a pronunciation dictionary by enriching the possible pronunciation variants in the $2 5 \mathrm { k }$ sentences of the speech corpus using three methods: identifying homograph words, adding dropped vowel variants, and adding vowel phonemes after consonant-ending words. Then, we aligned speech corpus using MFA and got the phoneme-aligned and phonetically disambiguated corpus. The experimental results showed that $2 3 . 3 \%$ of the words in the vocabulary had two or more distinct pronunciations, and the number of word-pronunciation pairs increased by $2 3 . 7 \%$ . 

The increase in the number of pronunciation variants indicates that words with the same spelling can have different pronunciations depending on their meaning, context, and the phonemes involved. Therefore, in addition to converting from a single grapheme to a phonetic symbol, it is necessary to consider the surrounding textual and phonetic context when converting text to pronunciation. 

The experiment was carried out with a machine learning model for grapheme-tophoneme conversion that incorporates contextual information from automatically aligned phoneme corpus. This simple character-based model worked well with PER of $4 . 6 5 \%$ , and it was able to identify pronunciation differences based on the context. However, we need to add more features to increase the accuracy further. From the analysis of errors in test set, dropping and non-dropping vowels make the most cases. Also, some consonants palatalization also makes dis-ambiguities. 

In the future, it is necessary to test this pronunciation dictionary on a larger corpus, analyze the unwritten vowel pronunciations in comparison with other vowels, and experiment with grapheme-to-phoneme conversion models on a more extensive pronunciation corpus and with richer features. 

Con"ict of Interest The authors declare that they have no known competing !nancial interests or personal relationships that could have in#uenced the work reported in this paper. All authors are af!liated with their respective academic institutions, and this research was conducted as part of their academic duties without external funding. 

Data Availability The data that support the !ndings of this study were obtained from National University of Mongolia under a restricted data use agreement. The data is not publicly available. Quali!ed researchers may request access to the data by contacting the corresponding author at National University of Mongolia through altangerel@num.edu.mn. Access will be granted subject to approval and completion of appropriate data use agreements. 

# References 

1. Chagnaa, A., & Jaimai, P. (2018). Cyrillic Mongolian phoneme conversion. Mongolian Information Technology, 2018, 19–22.   
2. Yoon, E., Yoon, H. S., Gowda, D., Eom, S., Kim, D., Harvill, J., et al. (2023). Mitigating the Exposure Bias in Sentence-Level Grapheme-to-Phoneme (G2P) Transduction. arXiv [Cs.CL]. Retrieved from http://arxiv.org/abs/2308.08442.   
3. Garofolo, J. S., et al. (1993). TIMIT acoustic-phonetic continuous speech corpus LDC93S1. Web download. Linguistic Data Consortium.   
4. Y. Wang, F. Bao, H. Zhang and G. Gao: Joint alignment learning-attention based model for grapheme-to-phoneme conversion. In: ICASSP 2021–2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp. 7788–7792. , ON, Canada, (2021).   
5. Hansakunbuntheung, C., Thangthai, A., Thatphithakkul, N., & Chagnaa, A. (2011). Mongolian speech corpus for text-to-speech development. In International Conference on Speech Database and Assessments (Oriental COCOSDA) (pp. 130–135). IEEE.   
6. McAuliffe, M., Socolof, M., Mihuc, S., Wagner, M., & Sonderegger, M. (2017). Montreal forced aligner: trainable text-speech alignment using Kaldi. In 9th International Proceedings (pp. 498–502).   
7. Klein, G., Kim, Y., Deng, Y., Nguyen, V., Senellart, J., & Rush, A. M. (2018). OpenNMT: neural machine translation toolkit. in Arxiv 1805.11462.   
8. Munkhjargal, Z., Chagnaa, A., & Jaimai, P. (2016). Morphological transducer for Mongolian. In Computational Collective Intelligence: 8th International Conference, ICCCI 2016, Part II 8 (pp. 546–554). Springer International Publishing.   
9. Mongolian NLP web demo. Retrieved from http://www.speech.mn/nlp-web-demo/. Accessed   
21 Apr 2024 