Merge branch 'master' into android

Conflicts:
	platforms/windows/make_espeakedit.iss
This commit is contained in:
Reece H. Dunn
2013-04-03 09:23:50 +01:00
79 changed files with 3071 additions and 1535 deletions
BIN
View File
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+7 -7
View File
@@ -29,43 +29,43 @@ endphoneme
phoneme a
vowel starttype #a endtype #a
length 225
FMT(vowel/aa_9)
FMT(vowel/a_3)
endphoneme
phoneme i
vowel starttype #i endtype #i
length 200
length 210
FMT(vowel/i_6)
endphoneme
phoneme u
vowel starttype #u endtype #u
length 200
length 210
FMT(vowel/u)
endphoneme
phoneme e
vowel starttype #e endtype #e
length 200
length 210
FMT(vowel/e)
endphoneme
phoneme &
vowel starttype #a endtype #a
length 200
length 210
FMT(vowel/&_2)
endphoneme
phoneme o
vowel starttype #o endtype #o
length 200
length 210
IF nextPhW(w) THEN
length 160
length 170
ENDIF
FMT(vowel/o)
endphoneme
+263 -307
View File
@@ -1,13 +1,123 @@
// PB General rules for vowels:
// Short vowels
// ACC: Short "pille" [p?el@-]
// AC[V]: Short "piler" [p?ilV]
// ACC: Short "pille" [p?el@-], "andre" [AndRV]
// AC[V]: Short "piler" [p?ilV] - verbs, not nouns, which is a problem
// A[N]: Short "bange" [b?AN@-]
// Long vowels
// A + group #@ OR group #e: Long "ae" "aer" [&:@-]
// AC + group #@ OR group #e: Long "pile" [pi:l@-]
// A + @- OR V: Long "ae" "aer" [&:@-]
// AC + @- OR V: Long "pile" [pi:l@-]
// AC[i]: Long "smidig" [smi:Di]
// Change the length of short vowels (?+vowel)
procedure ShortVowelLength
// "endelig" - Short initial vowel sounds too short
IF thisPh(isWordStart) THEN
length 160
RETURN
ENDIF
// "slutte" t/d + @- makes the u too long
IF next2PhW(@-) THEN
IF nextPhW(t) OR nextPhW(d) THEN
//length 100
LengthAdd -50
// Don't shorten it further if it comes after an "r" sound
// Exit the procedure
RETURN
ENDIF
ENDIF
// "bygget" - consonant + [@-D] makes the vowel too long
IF next2PhW(@-) THEN
IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN
LengthAdd -50
// Don't shorten it further if it comes after an "r" sound ("brygget")
// Exit the procedure
RETURN
ENDIF
ENDIF
// "bygger" - consonant + [V] makes the vowel too long
IF nextPhW(isNotVowel) AND next2PhW(V) THEN
LengthAdd -50
// Don't shorten it further if it comes after an "r" sound ("brygger")
// Exit the procedure
RETURN
ENDIF
// "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
// length 100
LengthAdd -50
ENDIF
// "ring", "ringe", "fængsel"
IF nextPhW(N) THEN
// length 100
LengthAdd -10
ENDIF
// "sigte" t/d + @- makes the vowel too long
IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN
IF next3PhW(@-) THEN
// length 100
LengthAdd -50
ENDIF
ENDIF
endprocedure
// Change the length of normal vowels (without ? in front of them)
procedure LongVowelLength
// "alene" - Short initial vowel sounds too short at length 140
IF thisPh(isWordStart) THEN
length 160
RETURN
ENDIF
// "forlade" - [D@-] makes the vowel too long
IF nextPhW(D) AND next2PhW(@-) THEN
length 180
RETURN
ENDIF
// PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n]
IF nextPhW(@-) OR nextPhW(V) THEN
length 225
ENDIF
// PB "enig", "enige", "evig", "stædig" - vowel+consolant+[i]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 225
ENDIF
// "ræve", "dele", "mene", "røve", "møve"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN
length 225
ENDIF
// "vilje", "nedladende" [n'eDl&D@-n@-], "delte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
// Don't make "møve" [m'Ww_!@-_!] short
IF NOT next2PhW(_!) THEN
length 140
ENDIF
ENDIF
// "bryde", "bryder", "strålen", "henrivende" R makes the vowel too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
IF next2PhW(@-) OR next2PhW(V) THEN
// length 180
LengthAdd -70
ENDIF
ENDIF
// "syste", "sylte" t/d/D + @- makes the vowel too long
// "international", - added [V] TEST
IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) OR next2PhW(D) THEN
IF next3PhW(@-) OR next3PhW(V) THEN
length 110
ENDIF
ENDIF
// "glimrende" [l/3] makes the following vowel too long
// LengthAdd doesn't work here. The length could be 225 or 140 - 30
IF prevPhW(l/3) THEN
// LengthAdd -30
length 110
ENDIF
// "længe" - short - 2 consonants => 1 consonant (ng => [N])
IF nextPhW(N) THEN
length 140
ENDIF
endprocedure
// A bit longer than [@-]
phoneme @
vowel starttype #@ endtype #@
unstressed
@@ -22,7 +132,18 @@ phoneme @- // very short schwa
IF nextPhW(*) OR nextPhW(r) THEN
ipa NULL // @-* is used to make 'r'
ENDIF
length 40
length 50
// "femten", "manden" - only a short "n" sound
IF nextPhW(n) THEN
length 15
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,38 +166,24 @@ endphoneme
phoneme i
vowel starttype #i endtype #i
length 95 //150
// PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 150
length 140
// Long vowel followed by consonant and @- "gide", "pile"
IF nextPhW(isNotVowel) AND next2PhW(@-) THEN
// 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
//"skider" short
IF nextPhW(D) AND next2PhW(V) THEN
length 140
ENDIF
// Only this vowel (in this case [i])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
ENDIF
// This vowel is word end - longer because it sounds too short
// "sig", "si"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
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
length 240
//"skideren" long
IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN
length 225
ENDIF
CALL LongVowelLength
FMT(vowel/i_4)
endphoneme
@@ -84,7 +191,8 @@ endphoneme
// sviret vs. svirret
phoneme ?i
vowel starttype #i endtype #i
length 90
length 140
CALL ShortVowelLength
IfNextVowelAppend(;)
FMT(vowel/i_4)
endphoneme
@@ -99,27 +207,9 @@ endphoneme
phoneme e
vowel starttype #e endtype #e
length 95 //150
// "delte", "mente"
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN
length 150
ENDIF
// PB "ring", "ringe"
IF nextPhW(N) THEN
length 95
ENDIF
// PB "enig", "enige", "evig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
ENDIF
// Only "e"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
ENDIF
length 140
CALL LongVowelLength
CALL ShortVowelLength
FMT(vowel/e)
endphoneme
@@ -127,44 +217,30 @@ endphoneme
// "skille" vs. "skele", "pille" vs. "pile"
phoneme ?e
vowel starttype #e endtype #e
length 90
length 140
CALL ShortVowelLength
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
// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 160
ENDIF
// "ære", "kærester", "ærefrygt" - longer E
// "ære", "kærester", "ærefrygt" - vowel + vowel
IF nextPhW(V) THEN
length 180
length 225
ENDIF
// Only the letter "æ" - long
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 160
ENDIF
// "stædig" [st'EDi] long
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 160
ENDIF
// "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN
length 120
// "dræber" TEST shortened by -70 in procedure because of the "r" sound
IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) AND next2PhW(V) THEN
length 225
ENDIF
CALL LongVowelLength
// "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN
length 120
ENDIF
// "mælkebøtte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 120
length 100
ENDIF
FMT(vowel/e_mid2)
endphoneme
@@ -174,64 +250,47 @@ endphoneme
phoneme ?E
vowel starttype #e endtype #e
ipa ε
length 100
length 140
CALL ShortVowelLength
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
ipa æ
length 140
// "same", "sale", "bade" - consonant + @-: long
// but NOT "hinanden"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) THEN
IF NOT next3PhW(n) THEN
length 225
ENDIF
ENDIF
// ThisPh + gooup #e or group #@
// ThisPh + V or @-
// "ae", "aer" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
ENDIF
// This vowel is word end - longer because it sounds too short
// "ja", "Omaha"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// Only this vowel (in this case [&])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
ENDIF
// "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180
ENDIF
// "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
IF nextPhW(@-) OR nextPhW(V) THEN
length 260
ENDIF
CALL LongVowelLength
FMT(vowel/ee_2)
endphoneme
// PB Short &
// Short &
// e.g. the last a in "staldkarl"
// "sale" vs. "sal"
phoneme ?&
ipa a
vowel starttype #e endtype #e
length 90
FMT(vowel/ee_2)
length 140
FMT(vowel/ee_2)
endphoneme
// PB added for the æ in "dræbt"
// 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
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
ENDIF
length 140
ipa a
CALL LongVowelLength
// CALL ShortVowelLength
FMT(vowel/&)
endphoneme
@@ -239,102 +298,63 @@ endphoneme
// "revl" vs. "tremme"
phoneme ?&#
vowel starttype #e endtype #e
length 90
length 140
CALL ShortVowelLength
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
// PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) AND nextPhW(isWordEnd) THEN
length 120
ENDIF
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN
length 90
ENDIF
length 140
CALL LongVowelLength
// "fare" [f'A:A]
IF nextPhW(A) THEN
length 150
length 225
ENDIF
FMT(vowel/a_8)
endphoneme
// PB short A
// "drab" vs. "drabelig"
// "krabbe" vs. "drabelig"
phoneme ?A
vowel starttype #a endtype #a
length 90
// "straffeattest", "straffe", "rapid" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
length 110
ENDIF
length 140
CALL ShortVowelLength
FMT(vowel/a_8)
endphoneme
phoneme u
vowel starttype #u endtype #u
length 90 //150
length 140
// "suge", "uge", "bluse", "julegave"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
length 150
ENDIF
// "umulig" [u:m'uli]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
ENDIF
// Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
length 225
ENDIF
CALL LongVowelLength
FMT(vowel/u_bck)
endphoneme
// PB glottal u
// Short u
// "tude" vs. "tuden" - [tuD3] [t?uD@n]
phoneme ?u
vowel starttype #u endtype #u
length 90
length 140
CALL ShortVowelLength
FMT(vowel/u_bck)
endphoneme
phoneme o
vowel starttype #o endtype #o
length 90 //150
// "bore", "borer"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 150
length 140
// "bore", "borer" [boV] o + V
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
// "modig" - long vowel after consonant + [i]
IF nextPhW(D) AND next2PhW(i) THEN
length 150
// "kone", "koner" o + consonant + V or @-
IF next2PhW(V) OR next2PhW(@-) THEN
length 225
ENDIF
CALL LongVowelLength
FMT(vowel/o_2)
endphoneme
@@ -342,25 +362,27 @@ 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
// "sove", "sover" - consonant + #e or #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
length 140
ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ
// "sove", "sover" - consonant + @ or V: long
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
// "såre", "sårede" [s'O:?OD@-]
IF nextPhW(O) OR nextPhW(?O) THEN
length 225
ENDIF
CALL LongVowelLength
FMT(vowel/o_5)
endphoneme
@@ -368,95 +390,60 @@ endphoneme
// "toget" vs. "tåget"
phoneme ?O
vowel starttype #o endtype #o
length 90
length 140
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 180
ENDIF
// "sove" [sVw3] - longer followed by w + 3
IF nextPhW(w) AND next2PhW(3) THEN
length 220
ENDIF
// PB "konge"
IF nextPhW(N) THEN
length 95
ENDIF
length 140
CALL LongVowelLength
FMT(vowel/V_4)
endphoneme
// PB Short å
// PB Short V
// "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
ENDIF
length 140
ipa ɔ
FMT(vowel/oo_2)
endphoneme
// Short 0 "sukker"
phoneme ?0
vowel starttype #o endtype #o
length 90
length 140
ipa ɔ
FMT(vowel/oo_2)
endphoneme
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
// 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
// not "gebyret" TEST
IF NOT nextPhW(3-) AND NOT nextPhW(R) AND NOT nextPhW(r) THEN
length 225
ENDIF
ENDIF
// Only this vowel (in this case [y])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "dydig" [dyDi]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
ENDIF
// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN
length 200
// "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN
length 225
ENDIF
// "tyve"
IF nextPhW(?u) AND next2PhW(@-) THEN
length 150
IF nextPhW(w) AND next2PhW(@-) THEN
length 225
ENDIF
CALL LongVowelLength
FMT(vowel/y)
endphoneme
@@ -464,50 +451,32 @@ endphoneme
// "kylling" vs. "kyle", "krybbe" vs. "krybe"
phoneme ?y
vowel starttype #i endtype #i
length 90
length 140
CALL ShortVowelLength
FMT(vowel/y)
endphoneme
phoneme Y
vowel starttype #i endtype #i
length 150
IF NOT next2Ph(3) AND NOT next2Ph(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
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
FMT(vowel/yy)
endphoneme
phoneme W
vowel starttype #@ endtype #@
length 90 //160
// "kløe" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
ENDIF
// røde" W + 1 consonant + 3 or W or @
IF next2PhW(#@) OR next2PhW(#e) THEN
length 160
ENDIF
// "røveri" but NOT "surfer" [sWf?V] TEST
length 140
// "røveri" but NOT "surfer" [sWfV] 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
length 160
ENDIF
// "møve" [mWw@-]
IF nextPhW(w) AND nextVowel(@-) THEN
length 160
ENDIF
// "børnebog"
IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN
length 150
// "børnebog" - short
IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN
length 140
ENDIF
CALL LongVowelLength
FMT(vowel/oe)
endphoneme
@@ -515,21 +484,18 @@ endphoneme
// "prøv" vs. "prøve"
phoneme ?W
vowel starttype #@ endtype #@
length 95
length 140
CALL ShortVowelLength
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 +504,8 @@ endphoneme
// "rømme"
phoneme ?W#
vowel starttype #@ endtype #@
length 90
length 140
CALL ShortVowelLength
FMT(vowel/V)
endphoneme
@@ -547,7 +514,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 +538,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
@@ -578,24 +549,6 @@ endphoneme
phoneme l/3 // Replacement for [l/]
liquid
lengthmod 7
IF nextPh(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_u, -70)
EndSwitch
// IF nextPh(isLiquid) THEN
// FMT(l/_l)
// ENDIF
FMT(l/l_)
endphoneme
@@ -678,7 +631,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@)
+27
View File
@@ -194,6 +194,11 @@ phoneme aa // 'bath' etc.
vowel starttype #a endtype #a
ipa a
length 185
IF MbrolaSynth THEN
ChangePhoneme(A:)
ENDIF
IfNextVowelAppend(r-)
FMT(vowel/a)
endphoneme
@@ -219,18 +224,30 @@ phoneme I2
vowel starttype #i endtype #i
unstressed
length 130
IF MbrolaSynth THEN
ChangePhoneme(I)
ENDIF
IfNextVowelAppend(;)
FMT(vowel/ii_4)
endphoneme
phoneme I# // used for [I] which may be [@] in some accents
vowel starttype #i endtype #i
unstressed
length 130
IF MbrolaSynth THEN
ChangePhoneme(I)
ENDIF
IfNextVowelAppend(;)
ChangePhoneme(I2)
endphoneme
phoneme i // optional variant of [I] for end of words
vowel starttype #i endtype #i
ipa ɪ
@@ -342,6 +359,11 @@ phoneme o@
vowel starttype #o endtype #o
ipa ɔː
length 250
IF MbrolaSynth THEN
ChangePhoneme(O@)
ENDIF
IfNextVowelAppend(r-)
FMT(vowel/oo_en)
endphoneme
@@ -418,6 +440,11 @@ endphoneme
phoneme i@3
vowel starttype #i endtype #@
length 250
IF MbrolaSynth THEN
ChangePhoneme(i@)
ENDIF
IfNextVowelAppend(r-)
FMT(vdiph2/ii@)
endphoneme
+8 -7
View File
@@ -69,7 +69,7 @@ endphoneme
phoneme E
vowel starttype #e endtype #e
length 195
length 190
ChangeIfDiminished(I2)
FMT(vwl_en_us/ee)
endphoneme
@@ -181,7 +181,7 @@ endphoneme
phoneme O:
vowel starttype #o endtype #o
length 210
length 200
ChangeIfDiminished(@)
IF nextPh(r) THEN
FMT(vwl_en_us/oor)
@@ -245,7 +245,7 @@ endphoneme
phoneme aI
vowel starttype #a endtype #i
length 250
length 240
IF nextPh(#a) OR nextPh(#o) THEN
AppendPhoneme(;)
ENDIF
@@ -255,14 +255,15 @@ endphoneme
phoneme eI
vowel starttype #e endtype #i
length 230
FMT(vdiph/eei_5)
length 220
FMT(vdiph2/ei_4)
// FMT(vdiph/eei_5)
endphoneme
phoneme OI
vowel starttype #o endtype #i
length 285
length 280
FMT(vdiph/ooi_4)
endphoneme
@@ -321,7 +322,7 @@ endphoneme
phoneme aI3
vowel starttype #a endtype #@
length 300
length 310
ipa aɪɚ
IfNextVowelAppend(r-)
FMT(vwl_en_us/ai3)
+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
+10 -10
View File
@@ -48,21 +48,21 @@ endphoneme
phoneme E
vowel starttype #e endtype #e
length 170
length 180
ChangeIfUnstressed(y)
FMT(vowel/e_mid)
endphoneme
phoneme e
vowel starttype #e endtype #e
length 160
length 180
ChangeIfUnstressed(y)
FMT(vowel/e)
endphoneme
phoneme y
vowel starttype #@ endtype #@
length 110
length 130
ipa ɨ
FMT(vowel/i#_5)
endphoneme
@@ -70,7 +70,7 @@ endphoneme
phoneme i
vowel starttype #i endtype #i
length 150
length 170
IfNextVowelAppend(;)
FMT(vowel/i)
endphoneme
@@ -78,7 +78,7 @@ endphoneme
phoneme i/ // changes to NULL before a vowel
vowel starttype #i endtype #i
length 100
length 130
ipa ɨ
IF nextPh(isVowel) THEN
ChangePhoneme(NULL)
@@ -90,7 +90,7 @@ endphoneme
phoneme O
vowel starttype #o endtype #o
length 170
length 180
// ChangeIfNotStressed(o)
FMT(vowel/0_2)
endphoneme
@@ -98,7 +98,7 @@ endphoneme
phoneme o
vowel starttype #o endtype #o
length 170
length 180
ChangeIfNotStressed(u)
FMT(vowel/o)
endphoneme
@@ -106,13 +106,13 @@ endphoneme
phoneme u
vowel starttype #u endtype #u
length 160
length 180
FMT(vowel/u_6)
endphoneme
phoneme U
vowel starttype #u endtype #u
length 110
length 130
IF nextPh(isVowel) THEN
ChangePhoneme(w)
ENDIF
@@ -122,7 +122,7 @@ endphoneme
phoneme EU
vowel starttype #e endtype #u
length 220
length 230
FMT(vdiph/eeu_2)
endphoneme
+4
View File
@@ -159,3 +159,7 @@ phoneme # // a NULL phoneme for 'virama'
ChangePhoneme(NULL)
endphoneme
phoneme z.
CALL base/z.
ipa U+027B
endphoneme
+11 -12
View File
@@ -1745,6 +1745,9 @@ include ph_kannada
phonemetable ml hi
include ph_malayalam
phonemetable te hi
include ph_telugu
phonemetable hu base
@@ -1875,17 +1878,20 @@ include ph_greenlandic
phonemetable am base
include ph_amhari
phonemetable si hi
include ph_sinhala
//**************************************************************************************
// The following lines are experimental, for future additions.
// These langauges are not in a usable state.
// These lines can be deleted.
phonemetable rw base2
include ph_kinyarwanda
phonemetable si hi
include ph_sinhala
phonemetable sl sk
include ph_slovenian
//phonemetable rw base2
//include ph_kinyarwanda
//phonemetable mr hi
//include ph_marathi
@@ -1899,9 +1905,6 @@ include ph_kinyarwanda
//phonemetable prs base
//include ph_dari
phonemetable sl sk
include ph_slovenian
//phonemetable gd base
//include ph_s_gaelic
@@ -1923,13 +1926,9 @@ include ph_slovenian
//phonemetable dv hi
//include ph_divehi
//phonemetable te hi
//include ph_telugu
//phonemetable tn base
//include ph_setswana
//phonemetable mt base
//include ph_maltese
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.