| @@ -370,6 +370,7 @@ phsource/phonemes.stamp: \ | |||
| phsource/ph_s_gaelic \ | |||
| phsource/ph_serbian \ | |||
| phsource/ph_setswana \ | |||
| phsource/ph_shan \ | |||
| phsource/ph_sinhala \ | |||
| phsource/ph_slovak \ | |||
| phsource/ph_slovenian \ | |||
| @@ -520,6 +521,7 @@ dictionaries: \ | |||
| espeak-ng-data/ro_dict \ | |||
| espeak-ng-data/ru_dict \ | |||
| espeak-ng-data/sd_dict \ | |||
| espeak-ng-data/shn_dict \ | |||
| espeak-ng-data/si_dict \ | |||
| espeak-ng-data/sk_dict \ | |||
| espeak-ng-data/sl_dict \ | |||
| @@ -759,6 +761,9 @@ endif | |||
| sd: espeak-ng-data/sd_dict | |||
| espeak-ng-data/sd_dict: dictsource/sd_list dictsource/sd_rules dictsource/sd_extra dictsource/sd_emoji | |||
| shn: espeak-ng-data/shn_dict | |||
| espeak-ng-data/shn_dict: dictsource/shn_list dictsource/shn_rules dictsource/shn_extra | |||
| si: espeak-ng-data/si_dict | |||
| espeak-ng-data/si_dict: dictsource/si_list dictsource/si_rules dictsource/si_extra dictsource/si_emoji | |||
| @@ -0,0 +1,24 @@ | |||
| // numbers | |||
| _0 son // သူၼ် | |||
| _1 nEN3 // ၼိုင်ႈ | |||
| _2 sON // သွင် | |||
| _3 sa:m // သၢမ် | |||
| _4 si:2 // သီႇ | |||
| _5 ha:3 // ႁႃႈ | |||
| _6 hok4 // ႁူၵ်း | |||
| _7 tS;et4 // ၸဵတ်း | |||
| _8 pEt2 // ပႅတ်ႇ | |||
| _9 kaw3 // ၵဝ်ႈ | |||
| _1X sip4|| // သိပ်း | |||
| _11 sip4||?et4 // သိပ်းဢဵတ်း | |||
| _2X sa:w4|| // သၢဝ်း | |||
| _21 sa:w4||?et4 // သၢဝ်းဢဵတ်း | |||
| _3X sa:m||sip4|| // သၢမ်သိပ်း | |||
| _4X si:2||sip4|| // သီႇသိပ်း | |||
| _5X ha:3||sip4|| // ႁႃႈသိပ်း | |||
| _6X hok4||sip4|| // ႁူၵ်းသိပ်း | |||
| _7X tS;et4||sip4|| // ၸဵတ်းသိပ်း | |||
| _8X pEt2||sip4|| // ပႅတ်ႇသိပ်း | |||
| _9X kaw3||sip4|| // ၵဝ်ႈသိပ်း | |||
| @@ -0,0 +1,177 @@ | |||
| // Shan (Tai Yay) pronunciation rules (Burmese script) | |||
| .group င // U+1004 | |||
| င N | |||
| .group တ // U+1010 | |||
| တ t | |||
| .group ထ // U+1011 | |||
| ထ t_h | |||
| .group ပ // U+1015 | |||
| ပ p | |||
| .group မ // U+1019 | |||
| မ m | |||
| .group ယ // U+101A | |||
| ယ j | |||
| .group ရ // U+101B | |||
| ရ R | |||
| .group လ // U+101C | |||
| လ l | |||
| .group ဝ // U+101D | |||
| ဝ w | |||
| .group သ // U+101E | |||
| သ s | |||
| .group ဢ // U+1022 | |||
| ဢ ? | |||
| .group ၵ // U+1075 | |||
| ၵ k | |||
| .group ၶ // U+1076 | |||
| ၶ k_h | |||
| .group ၷ // U+1077: rare, used for sounds in other languages | |||
| ၷ g | |||
| .group ၸ // U+1078 | |||
| ၸ tS; | |||
| .group ၹ // U+1079: rare, used for sounds in other languages | |||
| ၹ z | |||
| .group ၺ // U+107A | |||
| ၺ J | |||
| .group ၻ // U+107B: rare, used for sounds in other languages | |||
| ၻ d | |||
| .group ၼ // U+107C | |||
| ၼ n | |||
| .group ၽ // U+107D | |||
| ၽ p_h | |||
| .group ၾ // U+107E | |||
| _) ၾ p_h // Except for Eastern dialects, which use 'f'. | |||
| ၾ f | |||
| .group ႀ // U+107F: rare, used for sounds in other languages | |||
| ႀ T | |||
| .group ၿ // U+1080: rare, used for sounds in other languages | |||
| ၿ b | |||
| .group ႁ // U+1081 | |||
| ႁ h | |||
| // Vowels in groups | |||
| // All vowels below are suffixs | |||
| .group ႃ | |||
| ႃ a | |||
| ေ)ႃ O | |||
| .group ီ | |||
| ီ i | |||
| .group ိ | |||
| ိ i | |||
| .group ဵ | |||
| ဵ e | |||
| .group ႅ | |||
| _) ႅ (_ E | |||
| .group ူ | |||
| ူ u | |||
| .group ု | |||
| ု u | |||
| .group ေ | |||
| ေ ei // default rule without other characters | |||
| _) ေႃ O // in group with other characters if necessary | |||
| .group ႄ | |||
| ႄ E | |||
| .group ႆ | |||
| ႆ ai | |||
| .group ၢ | |||
| _) ၢ a: | |||
| .group ၢႆ // U+1062 | |||
| _) ၢႆ a:i | |||
| .group ွႆ | |||
| _) ွႆ oi | |||
| .group ႂၢႆ | |||
| _) ႂၢႆ Oi | |||
| .group ြ | |||
| ြ ra | |||
| .group ျ | |||
| _) ျ ja | |||
| .group ဝ် | |||
| _)ဝ် w | |||
| .group ႂ် | |||
| _) ႂ် @i | |||
| .group ၺ် | |||
| _)ၺ် Wi | |||
| .group မ် | |||
| _)မ် m | |||
| .group ၼ် | |||
| _)ၼ် n | |||
| .group င် | |||
| _)င် g // ipa = ɳ ( temporary word ) | |||
| // very short sounds | |||
| .group ပ် | |||
| _) ပ် p | |||
| .group တ် | |||
| _) တ် t | |||
| .group ၵ် | |||
| _) ၵ် k // temporary word | |||
| @@ -0,0 +1,2 @@ | |||
| name Shan (Tai Yai) | |||
| language shn | |||
| @@ -0,0 +1,295 @@ | |||
| //******************************************************************* | |||
| // TONES | |||
| //******************************************************************* | |||
| phoneme 1 // rising tone (contour: 24) | |||
| stress | |||
| Tone(20, 40, envelope/p_rise, NULL) | |||
| endphoneme | |||
| phoneme 2 // low tone (contour: 11) | |||
| stress | |||
| Tone(10, 10, envelope/i_risefall, NULL) | |||
| endphoneme | |||
| phoneme 3 // mid(-falling) tone (contour: 32) | |||
| stress | |||
| Tone(30, 20, envelope/p_fall, NULL) | |||
| endphoneme | |||
| phoneme 4 // high tone (contour: 55) | |||
| stress | |||
| Tone(50, 50, envelope/i_risefall, NULL) | |||
| endphoneme | |||
| phoneme 5 // falling (creaky) tone (contour: 42) | |||
| stress | |||
| Tone(40, 20, envelope/p_fall, NULL) | |||
| endphoneme | |||
| phoneme 6 // emphatic (contour: 343) | |||
| stress | |||
| Tone(30, 40, envelope/i_risefall, NULL) | |||
| endphoneme | |||
| //******************************************************************* | |||
| // CONSONANTS (PLOSIVES/STOPS) | |||
| //******************************************************************* | |||
| phoneme p // unaspirated | |||
| vls blb stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
| Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/p_) | |||
| ENDIF | |||
| WAV(ustop/p_unasp) | |||
| endphoneme | |||
| phoneme p_h // aspirated | |||
| vls blb stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | |||
| Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | |||
| WAV(ustop/p_asp) | |||
| endphoneme | |||
| phoneme t // unaspirated | |||
| vls alv stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/t_) | |||
| ENDIF | |||
| WAV(ustop/t_unasp) | |||
| endphoneme | |||
| phoneme t_h // aspirated | |||
| vls alv stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| WAV(ustop/t) // TODO: This should be aspirated. | |||
| endphoneme | |||
| phoneme k // unaspirated | |||
| vls vel stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=2300 200 300 f3=-200 80 | |||
| Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20 | |||
| IF KlattSynth THEN | |||
| Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20 | |||
| ENDIF | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/k_) | |||
| ENDIF | |||
| WAV(ustop/k_unasp) | |||
| endphoneme | |||
| phoneme k_h | |||
| vls vel stp | |||
| lengthmod 2 | |||
| Vowelin f1=0 f2=2300 200 300 f3=-150 80 | |||
| Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | |||
| WAV(ustop/k_asp) | |||
| endphoneme | |||
| //******************************************************************* | |||
| // VOWELS | |||
| //******************************************************************* | |||
| phoneme i | |||
| vwl starttype #i endtype #i | |||
| length 200 | |||
| FMT(vowel/i) | |||
| endphoneme | |||
| phoneme i. | |||
| vwl starttype #i endtype #i | |||
| length 200 | |||
| ipa ɨ | |||
| FMT(vowel/i#_6) | |||
| endphoneme | |||
| phoneme W | |||
| vwl starttype #a endtype #u | |||
| length 200 | |||
| ipa ɯ | |||
| FMT(vowel/8_2) | |||
| endphoneme | |||
| phoneme u | |||
| vwl starttype #u endtype #u | |||
| length 200 | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| phoneme e | |||
| vwl starttype #e endtype #e | |||
| length 200 | |||
| FMT(vowel/e_2) | |||
| endphoneme | |||
| phoneme @ | |||
| vwl starttype #@ endtype #@ | |||
| length 200 | |||
| ipa ə | |||
| FMT(vowel/3_2) | |||
| endphoneme | |||
| phoneme o | |||
| vwl starttype #o endtype #o | |||
| length 220 | |||
| FMT(vowel/o) | |||
| endphoneme | |||
| phoneme E | |||
| vwl starttype #e endtype #e | |||
| length 200 | |||
| ipa ɛ | |||
| FMT(vowel/ee_2) | |||
| endphoneme | |||
| phoneme a | |||
| vwl starttype #a endtype #a | |||
| length 200 | |||
| FMT(vowel/a) | |||
| endphoneme | |||
| phoneme a: | |||
| vwl starttype #a endtype #a | |||
| length 250 | |||
| ipa aː | |||
| FMT(vowel/a) | |||
| endphoneme | |||
| phoneme O | |||
| vwl starttype #o endtype #o | |||
| length 260 | |||
| ipa ɔ | |||
| FMT(vwl_it/o_open) | |||
| endphoneme | |||
| //******************************************************************* | |||
| // DIPHTHONGS | |||
| //******************************************************************* | |||
| phoneme iu | |||
| vwl starttype #i endtype #u | |||
| length 200 | |||
| FMT(vdiph2/iu) | |||
| endphoneme | |||
| phoneme eu | |||
| vwl starttype #e endtype #u | |||
| length 200 | |||
| FMT(vdiph/eu) | |||
| endphoneme | |||
| phoneme Eu | |||
| vwl starttype #e endtype #u | |||
| length 200 | |||
| ipa ɛu | |||
| FMT(vdiph/eeu) | |||
| endphoneme | |||
| phoneme au | |||
| vwl starttype #a endtype #u | |||
| length 200 | |||
| FMT(vdiph/au_2) | |||
| endphoneme | |||
| phoneme a:u | |||
| vwl starttype #a endtype #u | |||
| length 250 | |||
| ipa aːu | |||
| FMT(vdiph/au_2) | |||
| endphoneme | |||
| phoneme Wi | |||
| vwl starttype #i endtype #i | |||
| length 200 | |||
| ipa ɯi | |||
| FMT(vdiph/ui_3) | |||
| endphoneme | |||
| phoneme ui | |||
| vwl starttype #u endtype #i | |||
| length 200 | |||
| FMT(vdiph/ui) | |||
| endphoneme | |||
| phoneme @i | |||
| vwl starttype #@ endtype #i | |||
| length 200 | |||
| ipa əi // ႂ် | |||
| FMT(vdiph/@i) | |||
| endphoneme | |||
| phoneme oi | |||
| vwl starttype #o endtype #i | |||
| length 200 | |||
| FMT(vdiph/ooi) | |||
| endphoneme | |||
| phoneme ai | |||
| vwl starttype #a endtype #i | |||
| length 200 | |||
| FMT(vdiph/ai) | |||
| endphoneme | |||
| phoneme a:i | |||
| vwl starttype #a endtype #i | |||
| length 250 | |||
| ipa aːi | |||
| FMT(vdiph/ai) | |||
| endphoneme | |||
| phoneme Oi | |||
| vwl starttype #o endtype #i | |||
| length 200 | |||
| ipa ɔi | |||
| FMT(vdiph/ooi_3) | |||
| endphoneme | |||
| phoneme aW | |||
| vwl starttype #a endtype #u | |||
| length 200 | |||
| ipa aɯ | |||
| FMT(vdiph/aau_4) | |||
| endphoneme | |||
| @@ -1990,3 +1990,6 @@ include ph_kyrgyz | |||
| phonemetable mi base1 | |||
| include ph_maori | |||
| phonemetable shn base1 | |||
| include ph_shan | |||
| @@ -1512,6 +1512,11 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_SINGLE_STRESS; | |||
| break; | |||
| case L3('s', 'h', 'n'): | |||
| tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.numbers = 1; | |||
| break; | |||
| case L3('c', 'm', 'n'): // no break, just go to 'zh' case | |||
| case L3('z', 'h', 'y'): // just go to 'zh' case | |||
| case L('z','h'): | |||
| @@ -98,3 +98,4 @@ test_lang lt 615e503b996ea5f7b267ebd77b91e77c5b874e18 "ma m;a na n;a pa p;a ta t | |||
| test_lang lv ebd5378940b27e39ac35cda90e027ee0fa625fde "ma na n^a Na pa ba ta da ca Ja ka ga tsa dza Dz\`a tSa dZa DZ\`a fa va sa za Sa Za xa ha ja la l^a Ra ra _:_ mi my mu mE me mo ma mi: my: mu: mE: me: mo: ma: mai mau mei mie miu mui muo muo\` moi" | |||
| test_lang mi b6e622de46c33181cdfea351b907f932da9a0a1a "ma na Na pa ta ka fa ha ra wa _:_ ma ma: me me: mi mi: mo mo: mu mu:" | |||
| test_lang mk 072d0a74acf54bea528e7dde427eb04808d38364 "ma na n^a Na pa ta xa k^a ka ba da Ja ga tsa tSa tS;a dza dZa dZ;a fa sa Sa xa va za Za l^a la ja Ra @-*a ra _:_ ma me mi mo mu mA mE ma: me: mi: mo: mu: moU" | |||
| test_lang shn e568aca66c2f58fdaf5dda8a67f4d21f05710234 "ma na Ja Na pa p_ha ba ta t_ha da ka k_ha ga ?a fa sa za Ta ha tS;a Ra ja wa la _:_ mi mI mW mu me m@ mo mE ma ma: mO miu meu mEu mau ma:u mWi mui m@i moi mai ma:i mOi maW _:_ ma1 ma2 ma3 ma4 ma5 ma6" | |||