@@ -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" |