mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-14 17:47:19 +00:00
hak: Initial support added for Hakka Chinese by Chen Chien-ting
This commit is contained in:
@@ -13,6 +13,10 @@ bug fixes:
|
||||
|
||||
* Fix several issues with the emoji support.
|
||||
|
||||
new languages:
|
||||
|
||||
* hak (Hakka Chinese) -- Chen Chien-ting
|
||||
|
||||
updated languages:
|
||||
|
||||
* af (Afrikaans) -- Christo de Klerk
|
||||
|
||||
@@ -304,6 +304,7 @@ phsource/phonemes.stamp: \
|
||||
phsource/ph_greenlandic \
|
||||
phsource/ph_gujarati \
|
||||
phsource/ph_haitian \
|
||||
phsource/ph_hakka \
|
||||
phsource/ph_hindi \
|
||||
phsource/ph_hindi_base \
|
||||
phsource/ph_hungarian \
|
||||
@@ -450,6 +451,7 @@ dictionaries: \
|
||||
espeak-ng-data/gd_dict \
|
||||
espeak-ng-data/grc_dict \
|
||||
espeak-ng-data/gu_dict \
|
||||
espeak-ng-data/hak_dict \
|
||||
espeak-ng-data/hi_dict \
|
||||
espeak-ng-data/hr_dict \
|
||||
espeak-ng-data/hu_dict \
|
||||
@@ -580,6 +582,9 @@ espeak-ng-data/fi_dict: dictsource/fi_list dictsource/fi_rules dictsource/fi_ext
|
||||
fr: espeak-ng-data/fr_dict
|
||||
espeak-ng-data/fr_dict: dictsource/fr_list dictsource/fr_rules dictsource/fr_extra dictsource/fr_emoji
|
||||
|
||||
hak: espeak-ng-data/hak_dict
|
||||
espeak-ng-data/hak_dict: dictsource/hak_list dictsource/hak_rules dictsource/hak_extra dictsource/hak_emoji
|
||||
|
||||
ga: espeak-ng-data/ga_dict
|
||||
espeak-ng-data/ga_dict: dictsource/ga_list dictsource/ga_rules dictsource/ga_extra dictsource/ga_emoji
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
//numbers
|
||||
_0 laN2
|
||||
_1 it5
|
||||
_2 Ni4
|
||||
_3 sam1
|
||||
_4 S;i4
|
||||
_5 N-3
|
||||
_6 liuk5
|
||||
_7 tS;hit5
|
||||
_8 pat5
|
||||
_9 kiu3
|
||||
_1X S;i.6_|
|
||||
_2X Ni4S;i.6_|
|
||||
_3X sam2S;i.6_|
|
||||
_4X S;i4S;i.6_|
|
||||
_5X N-3S;i.6_|
|
||||
_6X liuk5S;i.6_|
|
||||
_7X tS;hit5S;i.6_|
|
||||
_8X pat5S;i.6_|
|
||||
_9X kiu3S;i.6_|
|
||||
_0C pak5_|
|
||||
_0M1 tS;hien1_| // 1,000
|
||||
_0M2 van4_| // 10,000
|
||||
//_0M3 j'i51_| // 100,000,000
|
||||
@@ -0,0 +1,278 @@
|
||||
// This file is UTF8 encoded
|
||||
.L01 p t k (rusheng
|
||||
.replace
|
||||
//replace tone mark with tone number
|
||||
â a1
|
||||
ê e1
|
||||
êr er1
|
||||
î i1
|
||||
ô o1
|
||||
û u1
|
||||
ṳ̂ ii1
|
||||
m̂ m1
|
||||
n̂ n1
|
||||
n̂g ng1
|
||||
à a2
|
||||
è e2
|
||||
èr er2
|
||||
ì i2
|
||||
ò o2
|
||||
ù u3
|
||||
ṳ̀ ii2
|
||||
m̀ m2
|
||||
ǹ n2
|
||||
ǹg ng2
|
||||
á a3
|
||||
é e3
|
||||
ér er3
|
||||
í i3
|
||||
ó o3
|
||||
ú u3
|
||||
ṳ́ ii3
|
||||
ḿ m3
|
||||
ń n3
|
||||
ńg ng3
|
||||
a a4
|
||||
e e4
|
||||
i i4
|
||||
o o4
|
||||
u u4
|
||||
ṳ ii4
|
||||
_) m (_ m4
|
||||
_) n (_ n4
|
||||
_) ng (_ ng4
|
||||
a (L01 a5
|
||||
e (L01 e5
|
||||
er (L01 er5
|
||||
i (L01 i5
|
||||
o (L01 o5
|
||||
u (L01 u5
|
||||
ṳ (L01 ii5
|
||||
a̍ (L01 a6
|
||||
e̍ (L01 e6
|
||||
e̍r (L01 er6
|
||||
i̍ (L01 i6
|
||||
o̍ (L01 o6
|
||||
u̍ (L01 u6
|
||||
ṳ̍ (L01 ii6
|
||||
|
||||
|
||||
// Note: ngK matches "ng" if not followed by a vowel
|
||||
// (D will match on a digit and also if no digit is present. (special for tone
|
||||
language).
|
||||
|
||||
.group a
|
||||
a a
|
||||
a1i ai1
|
||||
a2i ai2
|
||||
a3i ai3
|
||||
a4i ai4
|
||||
a5i ai5
|
||||
a6i ai6
|
||||
|
||||
a1u au1
|
||||
a2u au2
|
||||
a3u au3
|
||||
a4u au4
|
||||
a5u au5
|
||||
a6u au6
|
||||
|
||||
|
||||
|
||||
.group b
|
||||
@) b (K _^_EN
|
||||
|
||||
.group c
|
||||
ch ts
|
||||
chh tsh
|
||||
ch (i tS;
|
||||
chh (i tS;h
|
||||
@) c (K _^_EN
|
||||
|
||||
.group d
|
||||
@) d (K _^_EN
|
||||
|
||||
.group e
|
||||
er o-
|
||||
e e
|
||||
|
||||
.group f
|
||||
f f
|
||||
@) f (K _^_EN
|
||||
|
||||
|
||||
|
||||
.group h
|
||||
h h
|
||||
@) h (K _^_EN
|
||||
|
||||
.group i
|
||||
ii i.
|
||||
i i //i in ing
|
||||
ia ia
|
||||
iau iau
|
||||
ia1u iau1
|
||||
ia2u iau2
|
||||
ia3u iau3
|
||||
ia4u iau4
|
||||
ia5u iau5
|
||||
ia6u iau6
|
||||
ie ie
|
||||
io io
|
||||
iu iu
|
||||
|
||||
.group j
|
||||
@) j (K _^_EN
|
||||
|
||||
.group k
|
||||
k k
|
||||
kh kh
|
||||
@) k (K _^_EN
|
||||
|
||||
.group l
|
||||
l l
|
||||
@) l (K _^_EN
|
||||
|
||||
.group m
|
||||
m m
|
||||
_) m1 (_ m-1
|
||||
_) m2 (_ m-2
|
||||
_) m3 (_ m-3
|
||||
_) m4 (_ m-4
|
||||
@) m (K _^_EN
|
||||
|
||||
.group n
|
||||
n n
|
||||
_) n1 (_ n-1
|
||||
_) n2 (_ n-2
|
||||
_) n3 (_ n-3
|
||||
_) n4 (_ n-4
|
||||
_) ng1 (_ N-1
|
||||
_) ng2 (_ N-2
|
||||
_) ng3 (_ N-3
|
||||
_) ng4 (_ N-4
|
||||
ng (i n^ //ng(i)
|
||||
ng N
|
||||
|
||||
.group g
|
||||
@) g (K _^_EN
|
||||
|
||||
.group o
|
||||
o o
|
||||
o1a ua1
|
||||
o2a ua2
|
||||
o3a ua3
|
||||
o4a ua4
|
||||
o5a ua5
|
||||
o6a ua6
|
||||
oa1 ua1
|
||||
oa2 ua2
|
||||
oa3 ua3
|
||||
oa4 ua4
|
||||
oa5 ua5
|
||||
oa6 ua6
|
||||
oa1i uai1
|
||||
oa2i uai2
|
||||
oa3i uai3
|
||||
oa4i uai4
|
||||
oa5i uai5
|
||||
oa6i uai6
|
||||
|
||||
o1e ue1
|
||||
o2e ue2
|
||||
o3e ue3
|
||||
o4e ue4
|
||||
o5e ue5
|
||||
o6e ue6
|
||||
oe1 ue1
|
||||
oe2 ue2
|
||||
oe3 ue3
|
||||
oe4 ue4
|
||||
oe5 ue5
|
||||
oe6 ue6
|
||||
|
||||
o1i oi1
|
||||
o2i oi2
|
||||
o3i oi3
|
||||
o4i oi4
|
||||
o5i oi5
|
||||
o6i oi6
|
||||
|
||||
o1ng (K oN1
|
||||
o2ng (K oN2
|
||||
o3ng (K oN3
|
||||
o4ng (K oN4
|
||||
|
||||
o1m (K om1
|
||||
o2m (K om2
|
||||
o3m (K om3
|
||||
o4m (K om4
|
||||
|
||||
o1n (K on1
|
||||
o2n (K on2
|
||||
o3n (K on3
|
||||
o4n (K on4
|
||||
|
||||
.group p
|
||||
p p
|
||||
ph ph
|
||||
@) p (K _^_EN
|
||||
|
||||
.group q
|
||||
@) q (K _^_EN
|
||||
|
||||
.group r
|
||||
r (K _^_EN
|
||||
|
||||
.group s
|
||||
s s
|
||||
s (i S;
|
||||
@) s (K _^_EN
|
||||
|
||||
.group t
|
||||
t t
|
||||
th th
|
||||
@) t (K _^_EN
|
||||
|
||||
.group u
|
||||
u u
|
||||
ui ui
|
||||
u1ng (K uN1
|
||||
u2ng (K uN2
|
||||
u3ng (K uN3
|
||||
u4ng (K uN4
|
||||
|
||||
|
||||
.group v
|
||||
v v
|
||||
|
||||
.group w
|
||||
@) w (K _^_EN
|
||||
|
||||
.group x
|
||||
@) x (K _^_EN
|
||||
|
||||
.group y
|
||||
y j //before a o e i
|
||||
ya ia
|
||||
yau iau
|
||||
ye ie
|
||||
yi i
|
||||
yo io
|
||||
yu iu
|
||||
|
||||
@) y (K _^_EN
|
||||
|
||||
.group z
|
||||
@) z (K _^_EN
|
||||
|
||||
//tone
|
||||
.group
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
| _|
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
name Hakka Chinese
|
||||
language hak
|
||||
maintainer yoxem.tem98@nctu.edu.tw
|
||||
status testing
|
||||
translator hak
|
||||
phonemes hak
|
||||
dictionary hak
|
||||
@@ -0,0 +1,520 @@
|
||||
|
||||
//====================================================
|
||||
// Tone Numbers
|
||||
//====================================================
|
||||
|
||||
|
||||
phoneme 1 // tone: yinping
|
||||
ipa ˨˦
|
||||
stress
|
||||
Tone(40, 80, envelope/p_rise, NULL)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme 2 // tone: yangping
|
||||
ipa ˩˩
|
||||
stress
|
||||
Tone(20, 20, envelope/p_level, NULL)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme 3 // tone: shang
|
||||
ipa ˧˩
|
||||
stress
|
||||
Tone(60, 20, envelope/p_fall, NULL)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme 4 // tone: qu
|
||||
ipa ˥˥
|
||||
stress
|
||||
Tone(100, 100, envelope/p_level, NULL)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme 5 // tone: yinru
|
||||
stress
|
||||
ipa ˨
|
||||
Tone(40, 40, envelope/p_level, NULL)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme 6 // tone: yangru
|
||||
stress
|
||||
ipa ˥
|
||||
Tone(100, 100, envelope/p_level, NULL)
|
||||
endphoneme
|
||||
|
||||
//====================================================
|
||||
// Consonant
|
||||
//====================================================
|
||||
|
||||
phoneme p
|
||||
vls blb stp
|
||||
lengthmod 2
|
||||
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 rms=30
|
||||
Vowelout f1=1 f2=1000 -500 -350 f3=-300 80 rms=22
|
||||
IF nextPh(isPause2) THEN
|
||||
WAV(NULL)
|
||||
ENDIF
|
||||
WAV(ustop/p)
|
||||
endphoneme
|
||||
|
||||
phoneme t
|
||||
vls alv stp
|
||||
lengthmod 2
|
||||
Vowelin f1=0 f2=1700 -300 300 f3=100 80
|
||||
Vowelout f1=1 f2=1700 -300 250 f3=-100 80 rms=20
|
||||
IF nextPh(isPause2) THEN
|
||||
WAV(NULL)
|
||||
ENDIF
|
||||
WAV(ustop/t)
|
||||
endphoneme
|
||||
|
||||
phoneme N
|
||||
vcd vel nas
|
||||
Vowelout f1=2 f2=1900 0 300 f3=400 80 len=50 rms=15 brk
|
||||
lengthmod 7
|
||||
|
||||
NextVowelStarts
|
||||
VowelStart(nn/nn@)
|
||||
VowelStart(nn/nna)
|
||||
VowelStart(nn/nne)
|
||||
VowelStart(nn/nni)
|
||||
VowelStart(nn/nno)
|
||||
VowelStart(nn/nnu)
|
||||
EndSwitch
|
||||
|
||||
IF prevPh(isPause) THEN
|
||||
FMT(nn/_nn)
|
||||
ELIF nextPh(isNotVowel) THEN
|
||||
length 190
|
||||
FMT(nn/nn2_)
|
||||
ENDIF
|
||||
endphoneme
|
||||
|
||||
phoneme n^ // ng(i)-
|
||||
vcd pal nas
|
||||
Vowelout f1=2 f2=1900 0 300 f3=400 80 len=50 rms=15 brk
|
||||
lengthmod 7
|
||||
|
||||
NextVowelStarts
|
||||
VowelStart(n^/n^@)
|
||||
VowelStart(n^/n^a)
|
||||
VowelStart(n^/n^e)
|
||||
VowelStart(n^/n^i)
|
||||
VowelStart(n^/n^o)
|
||||
VowelStart(n^/n^u)
|
||||
EndSwitch
|
||||
|
||||
IF prevPh(isPause) THEN
|
||||
FMT(n^/_n^)
|
||||
ELIF nextPh(isNotVowel) THEN
|
||||
length 190
|
||||
FMT(n^/n^_)
|
||||
ENDIF
|
||||
endphoneme
|
||||
|
||||
phoneme n
|
||||
vcd alv nas
|
||||
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
|
||||
lengthmod 2
|
||||
|
||||
NextVowelStarts
|
||||
VowelStart(n/n@)
|
||||
VowelStart(n/na)
|
||||
VowelStart(n/ne)
|
||||
VowelStart(n/ni)
|
||||
VowelStart(n/no)
|
||||
VowelStart(n/nu)
|
||||
EndSwitch
|
||||
|
||||
IF nextPh(isNotVowel) THEN
|
||||
length 190
|
||||
FMT(n/n_long_)
|
||||
ENDIF
|
||||
FMT(n/_n)
|
||||
endphoneme
|
||||
|
||||
phoneme m
|
||||
vcd blb nas
|
||||
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
|
||||
lengthmod 4
|
||||
|
||||
NextVowelStarts
|
||||
VowelStart(m/m@)
|
||||
VowelStart(m/ma)
|
||||
VowelStart(m/me)
|
||||
VowelStart(m/mi)
|
||||
VowelStart(m/mo)
|
||||
VowelStart(m/mu)
|
||||
EndSwitch
|
||||
|
||||
IF nextPh(isNotVowel) THEN
|
||||
length 190
|
||||
FMT(m/m_)
|
||||
ENDIF
|
||||
FMT(m/_m)
|
||||
endphoneme
|
||||
|
||||
phoneme p
|
||||
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
|
||||
WAV(ustop/p_unasp)
|
||||
endphoneme
|
||||
|
||||
phoneme ph
|
||||
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
|
||||
WAV(ustop/p_asp)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme f
|
||||
vls lbd frc
|
||||
lengthmod 2
|
||||
Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
|
||||
WAV(ufric/f)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme v
|
||||
vcd lbd frc
|
||||
voicingswitch f
|
||||
lengthmod 6
|
||||
Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
|
||||
Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
|
||||
|
||||
IF KlattSynth THEN
|
||||
Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
|
||||
IF nextPh(isPause2) THEN
|
||||
FMT(klatt/v_) addWav(vocw/v)
|
||||
ENDIF
|
||||
FMT(klatt/v) addWav(vocw/v, 150)
|
||||
ENDIF
|
||||
|
||||
IF nextPh(isPause2) THEN
|
||||
FMT(voc/v_) addWav(vocw/v)
|
||||
ENDIF
|
||||
IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
|
||||
length 70
|
||||
ENDIF
|
||||
FMT(voc/v) addWav(vocw/v)
|
||||
endphoneme
|
||||
|
||||
phoneme t
|
||||
vls alv stp
|
||||
lengthmod 2
|
||||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 rms=40
|
||||
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
||||
WAV(ustop/t_unasp2, 40)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme th
|
||||
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_)
|
||||
endphoneme
|
||||
|
||||
phoneme l
|
||||
liquid
|
||||
lengthmod 7
|
||||
|
||||
IF prevPh(isPause) THEN
|
||||
FMT(l/_l)
|
||||
ENDIF
|
||||
|
||||
FMT(l/l)
|
||||
endphoneme
|
||||
|
||||
phoneme k
|
||||
vls uvl stp
|
||||
lengthmod 2
|
||||
Vowelin f1=1 f2=1700 0 200 f3=-300 80 f4
|
||||
Vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30
|
||||
WAV(ustop/k_unasp_, 75)
|
||||
endphoneme
|
||||
|
||||
phoneme kh
|
||||
vls uvl stp
|
||||
lengthmod 2
|
||||
Vowelin f1=1 f2=1700 0 200 f3=-300 80 f4
|
||||
Vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30
|
||||
WAV(ustop/k_asp, 80)
|
||||
endphoneme
|
||||
|
||||
phoneme h
|
||||
vls glt apr
|
||||
lengthmod 3
|
||||
ipa h
|
||||
|
||||
IF nextPh(#@) THEN
|
||||
WAV(h/h@)
|
||||
ELIF nextPh(#a) THEN
|
||||
WAV(h/ha)
|
||||
ELIF nextPh(#e) THEN
|
||||
WAV(h/he)
|
||||
ELIF nextPh(#i) THEN
|
||||
WAV(h/hi)
|
||||
ELIF nextPh(#o) THEN
|
||||
WAV(h/ho)
|
||||
ELIF nextPh(#u) THEN
|
||||
WAV(h/hu)
|
||||
ENDIF
|
||||
WAV(h/h_, 70) // no vowel following
|
||||
endphoneme
|
||||
|
||||
phoneme tS;
|
||||
vls alp sib afr
|
||||
ipa tɕ
|
||||
lengthmod 2
|
||||
Vowelin f1=0 f2=2700 400 600 f3=300 80
|
||||
WAV(ustop/tsh_pzd_unasp)
|
||||
endphoneme
|
||||
|
||||
phoneme tS;h
|
||||
vls alp sib afr
|
||||
ipa tɕh
|
||||
lengthmod 2
|
||||
Vowelin f1=0 f2=2700 400 600 f3=300 80
|
||||
WAV(ustop/tsh_pzd, 80)
|
||||
endphoneme
|
||||
|
||||
phoneme S;
|
||||
vls pla frc sib
|
||||
lengthmod 2
|
||||
ipa ɕ
|
||||
Vowelin f1=0 f2=2700 400 600 f3=300 80
|
||||
WAV(ufric/sh_pzd2, 20)
|
||||
endphoneme
|
||||
|
||||
phoneme ts
|
||||
vls alv afr sib
|
||||
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/ts_unasp, 70)
|
||||
endphoneme
|
||||
|
||||
phoneme tsh
|
||||
vls alv afr sib
|
||||
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/ts, 60)
|
||||
endphoneme
|
||||
|
||||
phoneme s
|
||||
vls alv frc sib
|
||||
voicingswitch z
|
||||
lengthmod 3
|
||||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
|
||||
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
||||
|
||||
IF nextPh(isPause) THEN
|
||||
WAV(ufric/s_)
|
||||
ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
|
||||
WAV(ufric/s!)
|
||||
ENDIF
|
||||
WAV(ufric/s)
|
||||
endphoneme
|
||||
|
||||
phoneme j
|
||||
liquid pal
|
||||
lengthmod 1
|
||||
|
||||
IF nextPh(isVowel) THEN
|
||||
NextVowelStarts
|
||||
VowelStart(j/j@)
|
||||
VowelStart(j/ja)
|
||||
VowelStart(j/je)
|
||||
VowelStart(j/ji)
|
||||
VowelStart(j/jo)
|
||||
VowelStart(j/ju)
|
||||
EndSwitch
|
||||
|
||||
VowelEnding(j/xj, -30)
|
||||
|
||||
FMT(j/_j)
|
||||
ELSE
|
||||
// no vowel follows
|
||||
Vowelout len=70
|
||||
FMT(j/j_)
|
||||
ENDIF
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
//Syllablic consonants
|
||||
//=====================
|
||||
|
||||
phoneme m-
|
||||
vwl starttype #@ endtype #@
|
||||
ipa mU+0329
|
||||
lengthmod 4
|
||||
length 240
|
||||
|
||||
IF thisPh(isWordStart) THEN
|
||||
length 240
|
||||
ENDIF
|
||||
IF KlattSynth THEN
|
||||
FMT(klatt/m-syl)
|
||||
ENDIF
|
||||
FMT(m/m-syl)
|
||||
endphoneme
|
||||
|
||||
phoneme n-
|
||||
vwl starttype #@ endtype #@
|
||||
ipa nU+0329
|
||||
lengthmod 4
|
||||
length 240
|
||||
|
||||
IF thisPh(isWordStart) THEN
|
||||
length 240
|
||||
ENDIF
|
||||
IF KlattSynth THEN
|
||||
FMT(klatt/n-syl)
|
||||
ENDIF
|
||||
FMT(n/n-syl)
|
||||
endphoneme
|
||||
|
||||
phoneme N-
|
||||
vwl starttype #e endtype #e
|
||||
ipa ŋU+0329
|
||||
lengthmod 4
|
||||
length 240
|
||||
FMT(nn/nn-syl)
|
||||
endphoneme
|
||||
|
||||
|
||||
//====================================================
|
||||
// Vowels and Diphtnongs
|
||||
//====================================================
|
||||
|
||||
|
||||
phoneme i
|
||||
vwl starttype #i endtype #i
|
||||
length 250
|
||||
FMT(vowel/i)
|
||||
endphoneme
|
||||
|
||||
phoneme i.
|
||||
vwl starttype #i endtype #i
|
||||
length 250
|
||||
FMT(vowel/i#_6)
|
||||
endphoneme
|
||||
|
||||
phoneme a
|
||||
vwl starttype #a endtype #a
|
||||
length 250
|
||||
FMT(vowel/a)
|
||||
endphoneme
|
||||
|
||||
phoneme e
|
||||
vwl starttype #e endtype #e
|
||||
length 250
|
||||
FMT(vowel/e)
|
||||
endphoneme
|
||||
|
||||
phoneme o
|
||||
vwl starttype #o endtype #o
|
||||
length 250
|
||||
FMT(vowel/oo)
|
||||
endphoneme
|
||||
|
||||
phoneme u //try more before N
|
||||
vwl starttype #u endtype #u
|
||||
length 250
|
||||
FMT(vowel/u)
|
||||
endphoneme
|
||||
|
||||
phoneme ai
|
||||
vwl starttype #a endtype #i
|
||||
length 250
|
||||
FMT(vdiph/ai_6)
|
||||
endphoneme
|
||||
|
||||
phoneme au
|
||||
vwl starttype #a endtype #u
|
||||
length 250
|
||||
FMT(vdiph/au)
|
||||
endphoneme
|
||||
|
||||
phoneme eu
|
||||
vwl starttype #e endtype #u
|
||||
length 250
|
||||
FMT(vdiph/eu)
|
||||
endphoneme
|
||||
|
||||
phoneme ia
|
||||
vwl starttype #i endtype #a
|
||||
length 250
|
||||
FMT(vwl_zh/iaa)
|
||||
endphoneme
|
||||
|
||||
phoneme iau
|
||||
vwl starttype #i endtype #u
|
||||
length 250
|
||||
FMT(vwl_zh/iaau)
|
||||
endphoneme
|
||||
|
||||
phoneme ie
|
||||
vwl starttype #i endtype #e
|
||||
length 250
|
||||
FMT(vwl_zh/ie)
|
||||
endphoneme
|
||||
|
||||
phoneme io
|
||||
vwl starttype #i endtype #o
|
||||
length 250
|
||||
FMT(vdiph2/iioo)
|
||||
endphoneme
|
||||
|
||||
phoneme iu
|
||||
vwl starttype #i endtype #u
|
||||
length 250
|
||||
FMT(vdiph2/iu)
|
||||
endphoneme
|
||||
|
||||
phoneme oi
|
||||
vwl starttype #o endtype #i
|
||||
length 250
|
||||
FMT(vdiph/ooi)
|
||||
endphoneme
|
||||
|
||||
phoneme ua
|
||||
vwl starttype #u endtype #a
|
||||
length 250
|
||||
FMT(vwl_zh/uaa)
|
||||
endphoneme
|
||||
|
||||
phoneme uai
|
||||
vwl starttype #u endtype #i
|
||||
length 250
|
||||
FMT(vwl_zh/uai)
|
||||
endphoneme
|
||||
|
||||
phoneme ue
|
||||
vwl starttype #u endtype #e
|
||||
length 250
|
||||
FMT(vwl_zh/uei)
|
||||
endphoneme
|
||||
|
||||
phoneme ui
|
||||
vwl starttype #u endtype #i
|
||||
length 250
|
||||
FMT(vdiph/ui)
|
||||
endphoneme
|
||||
|
||||
phoneme o- // er
|
||||
vwl starttype #o endtype #o
|
||||
length 180
|
||||
FMT(vowel/o-)
|
||||
endphoneme
|
||||
@@ -1737,6 +1737,9 @@ include ph_french
|
||||
phonemetable fr-ca fr
|
||||
include ph_french_ca
|
||||
|
||||
phonemetable hak base1
|
||||
include ph_hakka
|
||||
|
||||
phonemetable nl base1
|
||||
include ph_dutch
|
||||
|
||||
|
||||
@@ -799,6 +799,14 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_AFTER | NUM_VIGESIMAL | NUM_DFRACTION_4;
|
||||
}
|
||||
break;
|
||||
case L3('h','a', 'k'): // Hakka Chinese
|
||||
{
|
||||
tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module)
|
||||
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
|
||||
tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping)
|
||||
tr->langopts.ideographs = 1;
|
||||
}
|
||||
break;
|
||||
case L('g', 'a'): // irish
|
||||
case L('g', 'd'): // scots gaelic
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user