Browse Source

shn: add support for Shan language from ronaldaug

master
Valdis Vitolins 7 years ago
parent
commit
789d820ad4

+ 5
- 0
Makefile.am View File

phsource/ph_s_gaelic \ phsource/ph_s_gaelic \
phsource/ph_serbian \ phsource/ph_serbian \
phsource/ph_setswana \ phsource/ph_setswana \
phsource/ph_shan \
phsource/ph_sinhala \ phsource/ph_sinhala \
phsource/ph_slovak \ phsource/ph_slovak \
phsource/ph_slovenian \ phsource/ph_slovenian \
espeak-ng-data/ro_dict \ espeak-ng-data/ro_dict \
espeak-ng-data/ru_dict \ espeak-ng-data/ru_dict \
espeak-ng-data/sd_dict \ espeak-ng-data/sd_dict \
espeak-ng-data/shn_dict \
espeak-ng-data/si_dict \ espeak-ng-data/si_dict \
espeak-ng-data/sk_dict \ espeak-ng-data/sk_dict \
espeak-ng-data/sl_dict \ espeak-ng-data/sl_dict \
sd: espeak-ng-data/sd_dict sd: espeak-ng-data/sd_dict
espeak-ng-data/sd_dict: dictsource/sd_list dictsource/sd_rules dictsource/sd_extra dictsource/sd_emoji 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 si: espeak-ng-data/si_dict
espeak-ng-data/si_dict: dictsource/si_list dictsource/si_rules dictsource/si_extra dictsource/si_emoji espeak-ng-data/si_dict: dictsource/si_list dictsource/si_rules dictsource/si_extra dictsource/si_emoji



+ 24
- 0
dictsource/shn_list View File

// 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|| // ၵဝ်ႈသိပ်း


+ 177
- 0
dictsource/shn_rules View File

// 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

+ 2
- 0
espeak-ng-data/lang/tai/shn View File

name Shan (Tai Yai)
language shn

+ 295
- 0
phsource/ph_shan View File

//*******************************************************************
// 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


+ 3
- 0
phsource/phonemes View File



phonemetable mi base1 phonemetable mi base1
include ph_maori include ph_maori

phonemetable shn base1
include ph_shan

+ 5
- 0
src/libespeak-ng/tr_languages.c View File

tr->langopts.stress_rule = STRESSPOSN_1L; 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; tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_SINGLE_STRESS;
break; 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('c', 'm', 'n'): // no break, just go to 'zh' case
case L3('z', 'h', 'y'): // just go to 'zh' case case L3('z', 'h', 'y'): // just go to 'zh' case
case L('z','h'): case L('z','h'):

+ 1
- 0
tests/language-phonemes.test View File

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

Loading…
Cancel
Save