[1.47.03d]

Lang=ml, change aspirated voiced consonants.
Lang=ko, define temporary replacements for undefined consonant phonemes.
Lang=bn, fix numbers.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@334 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2013-03-27 00:16:39 +00:00
parent 62687ad0a3
commit 473e9abc15
26 changed files with 1102 additions and 640 deletions
+38 -5
View File
@@ -1,5 +1,5 @@
74 phoneme tables
75 phoneme tables
new total
base 109 109
consonants 11 119
@@ -30,7 +30,8 @@ consonants 11 119
pa 15 151
ta 23 153
kn 17 149
ml 21 152
ml 26 152
te 16 149
hu 25 124
lt 44 139
lv 29 127
@@ -69,7 +70,7 @@ consonants 11 119
da 45 138
ka 20 115
fa 9 112
ko 15 116
ko 19 120
kl 18 119
am 15 114
si 24 155
@@ -95,6 +96,7 @@ b/bu [b] base
b/xb [b] base
[b] fr
[b#] hi
[b#] ml
b/xbr [b] fr
d/d [d] base
[d[] base
@@ -161,6 +163,7 @@ d/xd [d] base
[z] fr
[d#] hi
[d] kn
[d#] ml
[d] hu
[d] lt
[d] pl
@@ -174,6 +177,7 @@ d/xd_pzd [d^] et
d/xdr [d] fr
[d.] hi
[d.#] hi
[d.#] ml
d/xdz [dz] consonants
d/x_tap [t#] en
[*] pt
@@ -210,6 +214,7 @@ dzh/xdzh [dZ] base
[dZ;] sq
dzh/xdz_pzd [J] base
[J#] hi
[J#] ml
[J] tr
[J] ku
envelope/i_risefall [11] zh
@@ -271,6 +276,7 @@ g/xg [g] base
[g-] en
[g] cy
[g] fr
[g#] ml
[g] ru
[g;] bg
[g] es
@@ -810,11 +816,14 @@ ustop/k_ [k] base
ustop/k_asp [k#] consonants
[kh] consonants
[g#] hi
[g#] ml
[kh] zh
[k#] ka
ustop/k_asp_a [k#] consonants
[g#] ml
[k#] ka
ustop/k_asp_e [k#] consonants
[g#] ml
[k#] ka
ustop/k_asp_u [k#] ka
ustop/k_ejc [k`] am
@@ -862,8 +871,10 @@ ustop/p [p] base
ustop/p_ [p] base
[ph] consonants
[p] fr
[b#] ml
ustop/p_asp [ph] consonants
[b#] hi
[b#] ml
[ph] zh
ustop/percus02 [#X2] hi
ustop/percus10 [#X1] base
@@ -872,6 +883,7 @@ ustop/pl [p] base
[ph] consonants
[p] base2
[p] fr
[b#] ml
[p] lv
[p] sk
[p] sq
@@ -902,6 +914,7 @@ ustop/t [t] base
[t] en-us
[d.#] hi
[t.#] hi
[d.#] ml
[t] zhy
[t] da
ustop/t_ [t] base
@@ -919,6 +932,7 @@ ustop/t_dnt [t] base
[t] et
[d#] hi
[t#] hi
[d#] ml
[t] hu
[t] lt
[t] pl
@@ -967,6 +981,7 @@ ustop/tsh_sr [tS] sr
ustop/tsh_unasp [tS`] am
ustop/ts_pzd [tS;] base
[J#] hi
[J#] ml
[tS;] lt
[tS;] ru
[dZ;] sq
@@ -1081,6 +1096,7 @@ vdiph/aau_3 [aU] hi
[aU] ne
[aU] kn
[aU] ml
[aU] te
vdiph/aau_4 [aU] vi
vdiph/aau_6 [aU] de
vdiph/ae [E:] fr-ca
@@ -1092,6 +1108,7 @@ vdiph/ai [aI] base2
[aI] eo
[aI] kn
[aI] ml
[aI] te
[aI] lt
[aI] sk
[aI] hr
@@ -1327,6 +1344,11 @@ voc/dh [D] base
voc/dh_ [D] base
[D] es
voc/j [J^] base
voc/murmur1 [J#] ml
[b#] ml
[d#] ml
[g#] ml
[d.#] ml
voc/Q [Q] base
[Q^] base
[Q] ka
@@ -1398,6 +1420,7 @@ vowel/@ [@] base
[V] cy
[@/] ga
[@] kn
[@] te
[@] hy
[@] ka
[@] sl
@@ -1511,7 +1534,7 @@ vowel/a_2 [a] base2
vowel/a#_2 [A] nl
[a:] nl
[a] kn
[a] ml
[a] te
[a#] pl
[&] hr
[a] sv
@@ -1523,6 +1546,7 @@ vowel/a_3 [a] en-sc
[a/] en-sc
[A:] en-sc
[aa] en-sc
[a] bn
[a:] kn
[A] lt
[a] lt
@@ -1559,11 +1583,13 @@ vowel/a_4 [a] ga
[a] es
[a] el
vowel/a#_4 [a:] nl
[a] ml
[a] bg
[a/] it
[a] tr
vowel/a_5 [a:] ta
[a:] ml
[a:] te
[a/] it
[a] la
[a] sv
@@ -1612,7 +1638,6 @@ vowel/aa_8 [0] en-us
vowel/aa_9 [a] fi
[a] et
[a:] hi
[a] bn
[a] ne
[a] pa
vowel/@_bck [@] hi
@@ -1640,6 +1665,7 @@ vowel/e [e] base
[e:] kn
[e] ml
[e:] ml
[e:] te
[e] hr
[e/] it
[e:] la
@@ -1753,6 +1779,7 @@ vowel/e_mid2 [E] af
[e] nci
[e] fi
[E] nl
[e] te
[e] sk
[e] bg
[e/] it
@@ -1788,6 +1815,7 @@ vowel/i [i] base
[i:] ta
[i:] kn
[i:] ml
[i:] te
[i:] hu
[i] it
[i] es
@@ -1831,6 +1859,7 @@ vowel/i_6 [i] hi
[i] ta
[i] kn
[i] ml
[i] te
[i:] lt
[i] lv
[i:] lv
@@ -1950,6 +1979,8 @@ vowel/o [o] base2
[o:] kn
[o] ml
[o:] ml
[o] te
[o:] te
[o] it
[o/] it
[O] la
@@ -2119,6 +2150,8 @@ vowel/u#_5 [y] vi
vowel/u_6 [u] ta
[u2] ta
[u:] ta
[u] te
[u:] te
[U] pt-pt
[u] pt-pt
[u] ku
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -29,7 +29,7 @@ endphoneme
phoneme a
vowel starttype #a endtype #a
length 225
FMT(vowel/aa_9)
FMT(vowel/a_3)
endphoneme
+193 -150
View File
@@ -23,6 +23,17 @@ phoneme @- // very short schwa
ipa NULL // @-* is used to make 'r'
ENDIF
length 40
// "femten", "manden" - only a short "n" sound
IF nextPhW(n) THEN
length 20
ENDIF
IF prevPhW(isNotVowel) AND thisPh(isWordEnd) THEN
length 15
ENDIF
// "lige" [li@-]
IF prevPhW(i) AND thisPh(isWordEnd) THEN
length 15
ENDIF
FMT(vowel/@-)
endphoneme
@@ -45,22 +56,22 @@ endphoneme
phoneme i
vowel starttype #i endtype #i
length 95 //150
length 140 //225
// PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 150
length 225
ENDIF
// "gider", vrider"
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN
length 95
length 140
ENDIF
// PB long vowel followed by certain vowels - "pigen" [p'i@-n]
IF nextPhW(#@) OR nextPhW(#e) THEN
length 150
// PB long vowel followed by [@-] - "pigen" [p'i@-n]
IF nextPhW(@-) OR nextPhW(V) THEN
length 225
ENDIF
// Only this vowel (in this case [i])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
length 225
ENDIF
// This vowel is word end - longer because it sounds too short
// "sig", "si"
@@ -69,14 +80,23 @@ IF thisPh(isWordEnd) THEN
ENDIF
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
length 140
ENDIF
// PB "tie", "stige", "krige" vowel + vowel: extra length
// What is causing this very short [i] in words with final [@-]?
// NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN
// NOT "galleriet" [g,?&lVR'i@-D]
IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN
length 240
ENDIF
//"skider" short
IF nextPhW(D) AND next2PhW(V) THEN
length 140
ENDIF
//"skideren" long
IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN
length 225
ENDIF
FMT(vowel/i_4)
endphoneme
@@ -84,7 +104,7 @@ endphoneme
// sviret vs. svirret
phoneme ?i
vowel starttype #i endtype #i
length 90
length 100
IfNextVowelAppend(;)
FMT(vowel/i_4)
endphoneme
@@ -99,26 +119,30 @@ endphoneme
phoneme e
vowel starttype #e endtype #e
length 95 //150
length 140 //225
// "delte", "mente"
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN
length 150
length 225
ENDIF
// PB "ring", "ringe"
IF nextPhW(N) THEN
length 95
length 140
ENDIF
// PB "enig", "enige", "evig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
length 225
ENDIF
// Only "e"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
length 225
ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
length 140
ENDIF
// "et"
IF thisPh(isWordStart) AND nextPhW(isWordEnd) THEN
length 120
ENDIF
FMT(vowel/e)
endphoneme
@@ -127,18 +151,18 @@ endphoneme
// "skille" vs. "skele", "pille" vs. "pile"
phoneme ?e
vowel starttype #e endtype #e
length 90
length 140
FMT(vowel/e)
endphoneme
phoneme E
vowel starttype #e endtype #e
length 100 //150
// "værelse", "breve"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
// length 150
length 140 //225
// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF
// "ræve"
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 160
ENDIF
@@ -156,15 +180,15 @@ IF nextPhW(isNotVowel) AND next2PhW(i) THEN
ENDIF
// "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN
length 120
length 100
ENDIF
// "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN
length 120
length 100
ENDIF
// "mælkebøtte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 120
length 140
ENDIF
FMT(vowel/e_mid2)
endphoneme
@@ -174,22 +198,23 @@ endphoneme
phoneme ?E
vowel starttype #e endtype #e
ipa ε
length 100
length 140
FMT(vowel/e_mid2)
endphoneme
phoneme &
vowel starttype #e endtype #e
ipa a
length 90 //150
// "same", "sale", "bade" - consonant + gooup #e or group #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
length 140 //225
// "same", "sale", "bade" - consonant + @-: long
// but NOT "hinanden"
IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN
length 225
ENDIF
// ThisPh + gooup #e or group #@
// ThisPh + V or group #@
// "ae", "aer" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
IF nextPhW(@-) OR nextPhW(V) THEN
length 260
ENDIF
// This vowel is word end - longer because it sounds too short
// "ja", "Omaha"
@@ -198,7 +223,7 @@ IF thisPh(isWordEnd) THEN
ENDIF
// Only this vowel (in this case [&])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
length 225
ENDIF
// "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
@@ -206,7 +231,7 @@ IF nextPhW(isNotVowel) AND next2PhW(i) THEN
ENDIF
// "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
length 140
ENDIF
FMT(vowel/ee_2)
endphoneme
@@ -217,20 +242,20 @@ endphoneme
phoneme ?&
ipa a
vowel starttype #e endtype #e
length 90
length 140
FMT(vowel/ee_2)
endphoneme
// PB added for the æ in "dræbt"
phoneme &#
vowel starttype #e endtype #e
length 120
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
length 140 //120
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 120
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
// "drenge"
IF nextPhW(N) THEN
length 140
ENDIF
FMT(vowel/&)
endphoneme
@@ -239,33 +264,16 @@ endphoneme
// "revl" vs. "tremme"
phoneme ?&#
vowel starttype #e endtype #e
length 90
length 140
FMT(vowel/&)
endphoneme
//phoneme a
// vowel starttype #a endtype #a
// length 90 //150
//IF nextPhW(#@) OR nextPhW(#e) THEN
// length 150
//ENDIF
// FMT(vowel/a_2)
//endphoneme
// PB short (glottal) a
// "bragt"
//phoneme ?a
// vowel starttype #a endtype #a
// length 90
// FMT(vowel/a_2)
//endphoneme
phoneme A // PB changed to a_8
vowel starttype #a endtype #a
length 90 //150
length 140 //225
// PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 225
ENDIF
// "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) AND nextPhW(isWordEnd) THEN
@@ -273,11 +281,19 @@ IF nextPhW(r) AND nextPhW(isWordEnd) THEN
ENDIF
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN
length 90
length 140
ENDIF
// "fare" [f'A:A]
IF nextPhW(A) THEN
length 150
length 225
ENDIF
// "av" [Au] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
ENDIF
// "magnat" [mAun&d] - sounds too short
IF nextPhW(u) OR nextPhW(w) THEN
length 130
ENDIF
FMT(vowel/a_8)
endphoneme
@@ -286,7 +302,7 @@ endphoneme
// "drab" vs. "drabelig"
phoneme ?A
vowel starttype #a endtype #a
length 90
length 140
// "straffeattest", "straffe", "rapid" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
length 110
@@ -296,10 +312,14 @@ endphoneme
phoneme u
vowel starttype #u endtype #u
length 90 //150
length 140 //225
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
ENDIF
// "suge", "uge", "bluse", "julegave"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
length 150
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
length 225
ENDIF
// "umulig" [u:m'uli]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
@@ -307,11 +327,7 @@ IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
ENDIF
// Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
length 225
ENDIF
FMT(vowel/u_bck)
endphoneme
@@ -320,20 +336,33 @@ endphoneme
// "tude" vs. "tuden" - [tuD3] [t?uD@n]
phoneme ?u
vowel starttype #u endtype #u
length 90
length 140
FMT(vowel/u_bck)
endphoneme
phoneme o
vowel starttype #o endtype #o
length 90 //150
length 140 //225
// "bore", "borer"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 150
IF nextPhW(V) OR nextPhW(#@) THEN
length 225
ENDIF
// "kone", "koner"
IF next2PhW(V) OR next2PhW(#@) THEN
length 225
ENDIF
// "modig" - long vowel after consonant + [i]
IF nextPhW(D) AND next2PhW(i) THEN
length 150
length 225
ENDIF
// Only "o"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 120
ENDIF
// This vowel is word end - longer because it sounds too short
// "ko"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
FMT(vowel/o_2)
endphoneme
@@ -342,24 +371,33 @@ endphoneme
// "patron" vs. "kone"
phoneme ?o
vowel starttype #o endtype #o
length 95
length 140
FMT(vowel/o_2)
endphoneme
phoneme O
vowel starttype #o endtype #o
length 90 // 150
length 140 // 150
// "sove", "sover" - consonant + #e or #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
IF next2PhW(@-) OR next2PhW(V) THEN
length 225
ENDIF
// PB "gået" - ThisPh + #e or #@
IF nextPhW(#e) OR nextPhW(#@) THEN
length 150
// PB "gået" - ThisPh + V or @-
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
// "rådig"
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN
length 180
ENDIF
// This vowel is word end - longer because it sounds too short
// "på", "gå"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// "såre", "sårede" [s'O:?OD@-]
IF nextPhW(O) OR nextPhW(?O) THEN
length 225
ENDIF
FMT(vowel/o_5)
endphoneme
@@ -368,36 +406,33 @@ endphoneme
// "toget" vs. "tåget"
phoneme ?O
vowel starttype #o endtype #o
length 90
length 140
// "hoven"
IF nextPhW(w) OR nextPhW(?u) AND next2PhW(@-) THEN
length 120
ENDIF
FMT(vowel/o_5)
endphoneme
phoneme V
vowel starttype #@ endtype #@
length 150
// "sport" [spV:t]
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN
length 150
ENDIF
// PB short V in "holder", "solder"
IF nextPhW(isNotVowel) AND next2Ph(V) THEN
length 90
ENDIF
// "snorke", "snorker", årlig
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN
length 140 //225
// "forlig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180
ENDIF
// "sove" [sVw3] - longer followed by w + 3
IF nextPhW(w) AND next2PhW(3) THEN
length 220
ENDIF
// PB "konge"
// PB "konge" - ng=>n
IF nextPhW(N) THEN
length 95
length 100
ENDIF
// Only [V] - "og"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 120
ENDIF
// This vowel is word end - longer because it sounds too short
// "for" [fV]
IF thisPh(isWordEnd) THEN
length 120
ENDIF
FMT(vowel/V_4)
endphoneme
@@ -406,19 +441,15 @@ endphoneme
// "forstår" vs. "kåre"
phoneme ?V
vowel starttype #@ endtype #@
length 90
length 140
FMT(vowel/V_4)
endphoneme
phoneme 0
vowel starttype #o endtype #o
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
length 140 //225
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
FMT(vowel/oo_2)
endphoneme
@@ -426,7 +457,7 @@ endphoneme
// Short 0 "sukker"
phoneme ?0
vowel starttype #o endtype #o
length 90
length 140
FMT(vowel/oo_2)
endphoneme
@@ -434,28 +465,28 @@ phoneme y
vowel starttype #i endtype #i
// Length changed to short since most vowels are short.
// It's probably easier only to make rules for long vowels.
length 90 //150
length 140 //225
// PB long vowel followed by consonant and certain vowels
// "lyde", "lyder"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
// "gyde", "gyder"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
length 225
ENDIF
// Only this vowel (in this case [y])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
length 225
ENDIF
// "dydig" [dyDi]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
length 225
ENDIF
// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN
// "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN
length 200
ENDIF
// "tyve"
IF nextPhW(?u) AND next2PhW(@-) THEN
length 150
length 225
ENDIF
FMT(vowel/y)
endphoneme
@@ -464,26 +495,26 @@ endphoneme
// "kylling" vs. "kyle", "krybbe" vs. "krybe"
phoneme ?y
vowel starttype #i endtype #i
length 90
length 140
FMT(vowel/y)
endphoneme
phoneme Y
vowel starttype #i endtype #i
length 150
length 225
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
length 140
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
length 225
ENDIF
FMT(vowel/yy)
endphoneme
phoneme W
vowel starttype #@ endtype #@
length 90 //160
length 140 //160
// "kløe" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
@@ -494,7 +525,7 @@ IF next2PhW(#@) OR next2PhW(#e) THEN
ENDIF
// "røveri" but NOT "surfer" [sWf?V] TEST
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN
length 90
length 140
ENDIF
// PB "nødig", "nødigt", "kølige"
IF nextVowel(i) THEN
@@ -506,7 +537,16 @@ IF nextPhW(w) AND nextVowel(@-) THEN
ENDIF
// "børnebog"
IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN
length 150
length 225
ENDIF
// This vowel is word end - longer because it sounds too short
// "dø" [dW]
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// PB "synge"
IF nextPhW(N) THEN
length 140
ENDIF
FMT(vowel/oe)
endphoneme
@@ -515,21 +555,17 @@ endphoneme
// "prøv" vs. "prøve"
phoneme ?W
vowel starttype #@ endtype #@
length 95
length 140
FMT(vowel/oe)
endphoneme
// Added for the ø in "røv", "røg", "øje" instead of [V3]
phoneme W#
vowel starttype #@ endtype #@
length 90 //150
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
// length 90
ENDIF
length 140 //225
// PB long vowel followed by consonant and certain vowels
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN
length 150
length 225
ENDIF
FMT(vowel/V)
endphoneme
@@ -538,7 +574,7 @@ endphoneme
// "rømme"
phoneme ?W#
vowel starttype #@ endtype #@
length 90
length 140
FMT(vowel/V)
endphoneme
@@ -547,7 +583,7 @@ phoneme aI
length 300
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN
glstop
length 150
length 225
ENDIF
// "dreje" [dR'aI@-_!]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
@@ -571,6 +607,10 @@ endphoneme
phoneme l
liquid
lengthmod 7
// [ll] => [-l] - avoid double l
IF nextPhW(l) THEN
// ChangePhoneme(-)
ENDIF
ChangePhoneme(l/3)
// CALL base/l
endphoneme
@@ -579,16 +619,16 @@ phoneme l/3 // Replacement for [l/]
liquid
lengthmod 7
IF nextPh(isVowel) THEN
IF nextPhW(isVowel) THEN
// ChangePhoneme(l)
ENDIF
PrevVowelEndings
VowelEnding(l/l_@)
VowelEnding(l/l_a,-70) // kvalt, kapital
VowelEnding(l/l_e, -40)
VowelEnding(l/l_i, -70)
VowelEnding(l/l_o,-70) // stole, skole, pistol
VowelEnding(l/l_a)
VowelEnding(l/l_e, -50) // hjælpe
VowelEnding(l/l_i, -70) // flygte?
VowelEnding(l/l_o,-35) // stole, skole, pistol
VowelEnding(l/l_u, -70)
EndSwitch
@@ -678,7 +718,10 @@ endphoneme
phoneme j
liquid palatal
lengthmod 7
// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF
IF nextPhW(isVowel) THEN
NextVowelStarts
VowelStart(j/j@)
@@ -699,4 +742,4 @@ Vowelout len=70
Vowelout len=70
FMT(j/j_)
ENDIF
endphoneme
endphoneme
+1 -1
View File
@@ -439,7 +439,7 @@ endphoneme
phoneme c#
CALL base/tS;
ipa ch
ipa cU+02B0
endphoneme
+20
View File
@@ -95,6 +95,26 @@ phoneme dZ; // voiced /ㅈ/
FMT(dzh/dzh) addWav(x/dz_pzd)
endphoneme
phoneme s-
import_phoneme base/s // temporary
endphoneme
phoneme q-
import_phoneme base/q // temporary
endphoneme
phoneme tS;-
import_phoneme base/tS; // temporary
endphoneme
phoneme d-
import_phoneme base/d
endphoneme
// phoneme tSh; ?? changed to [tS;h] in ko_rules
// phoneme h- in ko_list (for 10^3) ?? changed to [h]
// phoneme tSh- changed to tSh
phoneme * // r(ㄹ) at initial, medial
vcd alv flp rhotic
ipa ɾ
+119 -1
View File
@@ -25,7 +25,7 @@ phoneme a
length 130
IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN
FMT(vowel/a#_2)
FMT(vowel/a#_4)
ELSE
ChangeIfUnstressed(@)
@@ -144,3 +144,121 @@ phoneme d2 // 'rr' sounds like English 'd'
endphoneme
// Aspirated voice stops, sound like aspirated unvoiced stops ?
phoneme b#
vls blb stop prevoice
lengthmod 2
voicingswitch b
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(b/xb)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF
IF nextPh(isPause2) THEN
WAV(ustop/p_)
ENDIF
IF nextPh(l) THEN
WAV(ustop/pl)
ENDIF
WAV(ustop/p_asp)
endphoneme
phoneme d#
vls dnt stop prevoice
lengthmod 2
voicingswitch d
Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(d/xd)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF
IF nextPh(isPause2) THEN
WAV(ustop/t_dnt, 35)
ENDIF
WAV(ustop/t_dnt, 50)
endphoneme
phoneme d.#
vls rfx stop prevoice
lengthmod 2
ipa ʈU+02B0
Vowelin f1=0 f2=1800 -300 300 f3=-400 80
Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(d/xdr)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF
voicingswitch d.#
WAV(ustop/t)
endphoneme
phoneme J#
vls pal afr sibilant palatal prevoice
voicingswitch c#
lengthmod 2
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(dzh/xdz_pzd)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF
IF nextPh(isPause2) THEN
WAV(ustop/ts_pzd)
ENDIF
WAV(ustop/ts_pzd)
endphoneme
phoneme g#
vls vel stop prevoice
lengthmod 2
Vowelin f1=1 f2=1400 -100 100 f3=-150 80
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(g/xg)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF
IF nextPh(isPause2) THEN
WAV(ustop/k_asp, 40)
ENDIF
IF nextPhW(#e) OR nextPhW(#i) THEN
WAV(ustop/k_asp_e, 40)
ELIF nextPhW(#o) OR nextPhW(#u) THEN
WAV(ustop/k_asp_a, 25)
ELSE
WAV(ustop/k_asp_a, 30)
ENDIF
endphoneme
+3 -3
View File
@@ -1745,6 +1745,9 @@ include ph_kannada
phonemetable ml hi
include ph_malayalam
phonemetable te hi
include ph_telugu
phonemetable hu base
@@ -1923,9 +1926,6 @@ include ph_slovenian
//phonemetable dv hi
//include ph_divehi
//phonemetable te hi
//include ph_telugu
//phonemetable tn base
//include ph_setswana
BIN
View File
Binary file not shown.