[1.47.11d]

Language updates: da, en, nl, pt, vi


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@363 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2013-06-11 11:24:57 +00:00
parent 81e3e188cf
commit 507caaaca2
22 changed files with 4487 additions and 3268 deletions
+9 -10
View File
@@ -56,9 +56,9 @@ consonants 11 119
sv 22 129
no 28 134
is 42 141
vi 57 150
vi-hue 17 150
vi-sgn 18 150
vi 57 151
vi-hue 17 151
vi-sgn 18 151
zhy 41 138
zh 64 155
sw 9 110
@@ -1063,7 +1063,6 @@ ustop/tsh [tS] base
[tS] tn
ustop/tsh_ [tS] base
[c] hi
[tS] bn
[tS#] bn
[c] zhy
[tS] tn
@@ -1080,9 +1079,9 @@ ustop/tsh_pzd [tS;h] zh
ustop/tsh_pzd_unasp [tS;] zh
ustop/tsh_sr [tS] sr
ustop/tsh_unasp [c] hi
[tS] bn
[tS] hy
[tS`] am
ustop/tsh_unasp2 [tS] bn
ustop/ts_pzd [tS;] base
[J#] hi
[J#] ml
@@ -1160,6 +1159,7 @@ vdiph2/oa [Oa] ro
[ua] zh
vdiph2/o_oo [o@] en-wi
[O:] is
[O] vi
[o] zh
vdiph2/u@ [u@] ga
vdiph2/u#@ [U@] en-sc
@@ -1358,14 +1358,14 @@ vdiph/ooi [OI] en
[oi] mt
vdiph/ooi_2 [OI] af
[oI] eo
[OI] vi
[Oi] vi-hue
[Oi] vi-sgn
vdiph/ooi_3 [OI] en-us
[OI] en-rp
[aI] en-wm
[Oi] vi
vdiph/ooi_4 [OI] sq
vdiph/ooi_4 [OI] vi
[OI] sq
vdiph/oou [oU] cs
[OU] grc
vdiph/ou [ou] fi
@@ -1427,7 +1427,7 @@ vdiph/y#y_3 [Y:] nl
vietnam/a [a:] vi-sgn
vietnam/_c [kh] vi
vietnam/ch [c] vi
vietnam/dd [d] vi
vietnam/dd [d_] vi
vietnam/ie_2 [iE] vi
vietnam/oe [o&] vi
vietnam/th [t] vi
@@ -1471,6 +1471,7 @@ vnasal/&u_n [O#] vi
vnasal/u_n [U~] hi
[u~] hi
[u~] pt
[u] vi
[u] zh
vnasal/V_n [V~] hi
vnasal/W_n [E~] fr
@@ -2306,7 +2307,6 @@ vowel/oo_1 [O:] en-n
vowel/oo_2 [0] en-sc
[O] cy
[o] cs
[O] vi
[0] da
[?0] da
[O] ak
@@ -2392,7 +2392,6 @@ vowel/u#_4 [U] en-sc
[y] ml
[y] vi-sgn
vowel/u_5 [U1] et
[u] vi
[u] sw
[u] nso
[u] tn
+2 -2
View File
@@ -91,9 +91,9 @@ phoneme tS
Vowelin f1=0 f2=2300 200 400 f3=-100 80
IF nextPh(isPause2) THEN
WAV(ustop/tsh_)
WAV(ustop/tsh_unasp2)
ENDIF
WAV(ustop/tsh_unasp)
WAV(ustop/tsh_unasp2)
endphoneme
+374 -156
View File
@@ -8,193 +8,405 @@
// AC + @- OR V: Long "pile" [pi:l@-]
// AC[i]: Long "smidig" [smi:Di]
// Vowel length changed by eSpeak
// Between two voiced consonants
// After [l/3]
// Before [l/3]
// After an "r" sound
// Before [N]
// Before voiced consonant + [i]
// PROCEDURES
// Change the length of SHORT vowels (?+vowel)
procedure ShortVowelLength
// "endelig", "ånder" - Short initial vowel sounds too short TEST
// "endelig", "ånder", "ynde" - Short initial vowel sounds too short TEST
IF thisPh(isWordStart) AND nextPhW(n) THEN
IF next2PhW(@-) OR next2PhW(V) THEN
length 160
IF next2PhW(isWordEnd) THEN // NOT "ondeste"
length 170
RETURN
ENDIF
ENDIF
ENDIF
// "blod" "slutte", "løn" l/3 makes the vowel too long
// NOT "mel'oner"
IF prevPhW(l/3) AND thisPh(isFirstVowel) THEN
IF thisPh(isStressed) THEN
length 100
IF nextPhW(N) THEN // [N] makes it even longer - "længden"
LengthAdd -20
ENDIF
// Don't shorten it further if it comes after an "r" sound
// Exit the procedure
RETURN
ENDIF
// "transplantation" - the second a - between 2 voiced consonants
IF nextPhW(isVoiced) AND nextPhW(isNotVowel) THEN
length 100
RETURN
ENDIF
ENDIF
// "slutte" t/d + @- makes the vowel too long
// Problem with compounds like "spildedamp"
IF next2PhW(@-) OR next2PhW(V) THEN
IF nextPhW(t) OR nextPhW(d) THEN
// length 100
LengthAdd -45
// Don't shorten it further if it comes after an "r" sound
// Exit the procedure
RETURN
ENDIF
ENDIF
// "bygget", "byggede" - consonant + [@-D] makes the vowel too long
IF next2PhW(@-) THEN
IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN
IF thisPh(isFirstVowel) THEN // NOT "cellof'anet"
IF NOT thisPh(?V) THEN // NOT "fjollet"
LengthAdd -40
// Don't shorten it further if it comes after an "r" sound ("brygget")
// Exit the procedure
// "bygge", "bygget", "byggede" - consonant + [@-] makes the vowel too long
IF NOT thisPh(?V) THEN // NOT "fjollet"
IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN
IF next2PhW(@-) THEN //AND next3PhW(D) THEN
IF thisPh(isFirstVowel) THEN // NOT "cellof'anet"
length 100
RETURN
ENDIF
ENDIF
ENDIF
ENDIF
// "bygger" - consonant + [V] makes the vowel too long
IF nextPhW(isNotVowel) AND next2PhW(V) THEN
IF NOT thisPh(isWordStart) THEN // NOT "eller"
// LengthAdd -45
// Don't shorten it further if it comes after an "r" sound ("brygger")
// Exit the procedure
// "byttet", "lyttet", "flyttet"
IF prevPhW(isVoiced) AND prevPhW(isNotVowel) THEN
IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(D) THEN
length 100
ENDIF
ENDIF
// "firmaet", "politiet - 140 sounds too short
IF nextPhW(@-) AND next2PhW(D) AND next2PhW(isWordEnd) THEN
length 180
ENDIF
// "forsøgte" stressed second vowel too long TEST
IF thisPh(isMaxStress) AND thisPh(isSecondVowel) THEN
IF nextPhW(isVoiced) AND nextPhW(isNotVowel) THEN // NOT "papirer"
// 2 voiced consonants seem to add further length ([gd] in "forsøgte")
IF next2PhW(isVoiced) AND next2PhW(isNotVowel) THEN // NOT "moral"
length 110
RETURN
ENDIF
ENDIF
ENDIF
// "bygge", "forbandelse", "lynlås", "centralen" vowel between 2 voiced consonants - too long
IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN // voiced
IF prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN // consonants
IF NOT nextPhW(isWordEnd) THEN // NOT "smil"
IF NOT next2PhW(j) AND NOT prevPhW(R) THEN // NOT "vilje", "krympe"
IF NOT nextPhW(r) AND NOT nextPhW(3-) THEN // NOT "moderne" - vowel + r/3-
IF thisPh(isStressed) THEN // NOT [W] in "f'indelønnen"
IF thisPh(isFirstVowel) THEN
// IF NOT nextPhW(@-) THEN // NOT "væbne"
IF NOT nextPhW(isNotVowel) AND NOT next2PhW(isNotVowel) THEN // NOT "væbne"
length 110
RETURN
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF prevPhW(R) THEN // "krympe" R makes the vowel longer than other voiced consonants
// NOT [o] in "rod'eo", NOT [æ] in "trængte"
IF thisPh(isMaxStress) AND NOT nextPhW(N) THEN
length 90
RETURN
ENDIF
// "trængte" - [N] after the vowel makes it even longer
IF thisPh(isMaxStress) AND nextPhW(N) THEN
length 75
RETURN
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
// "buske" - only sg/sk? TEST
IF prevPhW(isNotVowel) AND nextPhW(s) AND next2PhW(isNotVowel) AND next3PhW(@-) THEN
length 100
ENDIF
// "projektet"
IF prevPhW(S) AND nextPhW(isVoiced) AND nextPhW(isNotVowel) THEN
length 100
ENDIF
// "rigtigt", "fred", "frem", "frikvarter" - R makes the vowel too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
IF nextPhW(isNotVowel) THEN // NOT "krigen"
IF thisPh(isFirstVowel) THEN // NOT the a in "moral"
length 110
RETURN
ENDIF
ENDIF
// R makes the vowel too long
IF thisPh(isWordEnd) THEN // "maleri"
length 120
RETURN
ENDIF
// "forbrydelse" between 2 voiced consonants
IF nextPhW(isVoiced) AND nextPhW(isNotVowel) THEN
length 110
RETURN
ENDIF
ENDIF
// "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long
IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
// length 100
LengthAdd -40
RETURN
// "ring", "ringe", "fængsel", "spinkel", "vindspejl", "enke"
IF nextPhW(N) THEN
length 100
ENDIF
// "ring", "ringe", "fængsel", "spinkel", "vindspejl"
IF nextPhW(isNasal) THEN
// length 100
LengthAdd -30
RETURN
ENDIF
// "sigte", "bælte", "henter" t/d + @-/V makes the vowel too long
// "sigte", "henter" t/d + @-/V makes the vowel too long
// ?? is this just between 2 voiced consonants ??
// ?? does [h] act as a voiced consonant ??
IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN
IF next3PhW(@-) OR next3PhW(V) THEN
IF next3PhW(@-) OR next3PhW(V) OR next3PhW(?V) THEN
IF thisPh(isFirstVowel) THEN // NOT [i] in "forsp'ildte"
// length 100
LengthAdd -30
length 110
RETURN
ENDIF
ENDIF
ENDIF
// "forbandelse" [n@-] makes the vowel too long?
// nasal eg: m, n, N
IF nextPhW(isNasal) AND next2PhW(@-) THEN
IF NOT thisPh(isFirstVowel) AND thisPh(isStressed) THEN
// NOT LengthAdd since [R] might have shortend the vowel above
length 100
ENDIF
ENDIF
// "himlen" l/3 makes the vowel too long
// "himlen", "pøblen" l/3 makes the vowel too long
IF nextPhW(isNotVowel) AND next2PhW(l/3) AND next3PhW(@-) OR next3PhW(V) THEN
length 100
length 110
ENDIF
// "lænkerne" l/3 makes the vowel too long
IF prevPh(l/3) AND nextPhW(isNotVowel) AND next3PhW(V) THEN
length 120
// "filmen" vowel + l/3 makes the vowel too long
// Probably due to 2 voiced consonants (lm) - Change the condition?
IF nextPhW(l/3) AND next3PhW(@-) THEN
IF NOT next2PhW(j) THEN // NOT "vilje"
IF next2PhW(isVoiced) THEN // NOT [e] in "folkevogn"
length 100
ENDIF
ENDIF
ENDIF
//"musikken" consonant + [@-n] makes the vowel too long
// Probably wrong. Only k?
IF nextPhW(k) AND next2PhW(@-) AND next3PhW(n) THEN
length 100
//"musikken", "piggen", "trafikken" consonant + [@-] makes the vowel too long
// Probably wrong. Only k and g? Only [i]?
// Could this be due to an English word like "physique" [fIz'i:k]?
IF nextPhW(k) OR nextPhW(g)AND next2PhW(@-) THEN
IF thisPh(?i) THEN
length 100
RETURN
ENDIF
ENDIF
//"svælge" [svElj@-] vowel + 2 consonants but length 100 is too short
IF nextPhW(isNotVowel) AND next2PhW(j) THEN
length 140
// "rodeo", lianen" abnormal stress sounds too short
IF thisPh(isMaxStress) AND NOT thisPh(isFirstVowel) THEN
IF NOT nextPhW(k) AND NOT nextPhW(g) THEN // NOT "ant'ikt" - Like "physique" above?
IF NOT nextPhW(N) AND NOT next2PhW(isNotVowel) THEN // NOT "omkr'ing", "eks'empel"
IF NOT nextPhW(isVoiced) AND NOT next2PhW(isVoiced) THEN // NOT "bestemme" TEST
length 170
ENDIF
ENDIF
ENDIF
ENDIF
endprocedure
//--------------------------------------------------------------------
// Change the length of NORMAL vowels (without ? in front of them)
procedure LongVowelLength
// "guldmine" [ul/3] makes the vowel extremely short
IF prevVowel(u) AND prev2PhW(l/3) THEN
IF prevVowel(l/3) AND prev2PhW(u) THEN
length 350
RETURN
ENDIF
// "guldur" [ul/3] makes the vowel extremely short
IF prevVowel(u) AND prevPhW(l/3) THEN
IF prev2PhW(u) AND prevPhW(l/3) THEN
IF NOT thisPh(isWordEnd) THEN // NOT "umulig"
length 325
IF NOT nextPhW(t) AND NOT nextPhW(d) THEN // NOT "umuligt"
IF NOT nextPhW(s) AND NOT nextPhW(S) THEN // NOT Drakulas, spekulationer ???
length 325
RETURN
ENDIF
ENDIF
ENDIF
ENDIF
// "dage", "dagevis", fødselsdage" STRANGE BEHAVIOUR - too short at 240
IF prevPhW(d) AND nextPhW(@-) THEN
IF NOT next2PhW(D) THEN
length 350
RETURN
ENDIF
ENDIF
// "tjeneste" TEST
IF prevPhW(tS) AND nextPhW(isVoiced) AND nextPhW(isNotVowel) THEN
length 180
RETURN
ENDIF
// "havet", "lavet"
IF nextPhW(isVoiced) AND next2PhW(@-) AND next3PhW(D) THEN
length 180
RETURN
ENDIF
// "videre"
IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN // voiced
IF prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN // consonants
IF NOT prevPhW(R) AND NOT prevPhW(r) AND NOT prevPhW(3-) THEN
length 180
RETURN
ELSE // [A] in "begravelse" - "r" adds extra length
length 120
RETURN
ENDIF
ENDIF
ENDIF
// "alene" - Short initial vowel sounds too short at length 140
IF thisPh(isWordStart) THEN
length 160
// "ønske" The vowel should have been made short becauce og 2 x consonant.
// Take care of it here
// "år? [O] - The word is only 1 vowel: make it long
IF thisPh(isWordEnd) THEN
length 180
ENDIF
// "ønske" The vowel should have been made short becauce of 3 x consonant.
// Take care of it here
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(isNotVowel) THEN
length 140
ENDIF
// "ære"
// "ære"
IF nextPhW(V) AND nextPhW(isFinalVowel) THEN
length 240
ENDIF
RETURN
// "øge", "øgede"
IF nextPhW(isNotVowel) AND next2PhW(@-) THEN
length 225
ENDIF
// RETURN
ENDIF
// "døre" vowel + vowel: long
IF nextPhW(@-) OR nextPhW(?V) THEN
length 225
ENDIF
// "pæne" vowel + consonant + [@-]: long
IF nextPhW(isNotVowel) AND next2PhW(@-) THEN
IF thisPh(isFirstVowel) THEN
IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN // "vide"
length 180
ELSE // "pæne"
length 225
ENDIF
RETURN
ENDIF
// Stressed second syllable in words with initial be- and for-
IF NOT thisPh(isSecondVowel) AND thisPh(isMaxStress) THEN // "beb'ude", "form'ode"
length 140
RETURN
ENDIF
ENDIF
// "vildrede"
IF nextPhW(D) AND next2PhW(@-) THEN
IF NOT thisPh(isMaxStress) THEN
length 225
RETURN
ENDIF
ENDIF
// "guderne", "møde"
IF nextPhW(isNotVowel) AND next2PhW(?V) OR next2PhW(V) OR next2PhW(@-) THEN
length 225
ENDIF
// "mødes", "vred", "møve", "mene", "dele" - vowel too long between 2 voiced consonants
IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN
IF prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN
IF NOT prevPhW(R) AND NOT prevPhW(r) AND NOT prevPhW(3-) AND NOT prevPhW(l/3) THEN
IF NOT next2PhW(isVoiced) THEN // NOT "bælte", "bomben"
length 180 // mødes, dele
RETURN
ENDIF
IF next2PhW(isNotVowel) THEN // bælte, svælge
length 120
ENDIF
ELIF NOT prevPhW(l/3) AND thisPh(isMaxStress) THEN
IF NOT prevPhW(R) AND NOT prevPhW(r) AND NOT prevPhW(3-) THEN
length 120 // "vred", "vrede"
RETURN
ENDIF
ENDIF
IF prevPhW(R) AND prevPhW(isWordStart) THEN // "råderet"
length 180
RETURN
ENDIF
ENDIF
ENDIF
// "huske" - hACC@- vowel too long
// 2 consonants - should have been short in da_rules
// 140 too long because of [h]??
IF prevPhW(h) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(@-) THEN
length 110
RETURN
ENDIF
// PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n]
IF nextPhW(@-) OR nextPhW(V) THEN
length 225
IF thisPh(isFirstVowel) THEN // NOT "best'yrelse", "geb'yrer"
length 225
ENDIF
ENDIF
// "lydig"
IF prevPhW(l/3) AND nextPhW(isVoiced) AND nextPhW(isNotVowel) THEN
length 180
RETURN
ENDIF
// PB "enig", "enige", "evig", "stædig" - vowel+consolant+[i]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 225
ENDIF
// "dele", "mene", "møve"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN
length 225
ENDIF
// "sveder", "deler"
IF nextPhW(isNotVowel) AND next2PhW(V) THEN
length 225
ENDIF
// "maskinen" consonant + [@-n]: vowel too long
IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(n) THEN
length 160
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 NOT thisPh(V) AND next2PhW(@-) OR next2PhW(V) THEN
length 140
ENDIF
ENDIF
// "føden"
IF nextPhW(D) AND next2PhW(@-) AND next3PhW(n) THEN
length 180
ENDIF
// "glimrende", "glemte" [l/3] makes the following vowel too long
// LengthAdd doesn't work here. The length could be 225 or 140 - 30
IF prev2PhW(g) AND prevPhW(l/3) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 110
RETURN
ENDIF
// l/3 makes the vowel too long (+ voiced?)
// isVoiced = b, d, g, v, z
IF prevPhW(l/3) AND nextPhW(isVoiced) THEN
// "klub", "klud"
// "føden"
IF nextPhW(D) AND next2PhW(@-) AND next3PhW(n) THEN
IF thisPh(isFirstVowel) THEN
length 180
ENDIF
ENDIF
// l/3 + vowel makes the vowel too long
IF prevPhW(l/3) AND nextPhW(isNotVowel) THEN
// "klub", "klud", "slut"
// The vowel should have been short but we fix it here
IF NOT next2PhW(@-) AND NOT next2PhW(V) THEN
IF NOT next2PhW(@-) AND NOT next2PhW(V) AND NOT next2PhW(?V) THEN // NOT "slæde"
length 100
ELSE
// "slæde", "lader"
// "slæde", "lader", "forlader"
length 160
ENDIF
ENDIF
// l/3 + vowel + voiced consonant makes the vowel too long
IF prevPhW(l/3) AND nextPhW(isVoiced) AND nextPhW(isNotVowel) THEN
length 130
ENDIF
// "fryser", "rige"
IF prevPhW(r) OR prevPhW(R) OR prevPhW(3-) THEN
length 130
IF nextPhW(@-) THEN // "rige" [@-] seems to cancel the "r" effect
length 240
ENDIF
ENDIF
// "længe" - short - 2 consonants => 1 consonant (ng => [N])
IF nextPhW(isNasal) THEN
// Don't use isNasal here!
IF nextPhW(N) THEN
IF NOT prevPhW(R) AND NOT prevPhW(r) AND NOT prevPhW(3-) THEN
length 140
// "omkring", "ring" - both prev. N and next R
ELIF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN
length 110
ENDIF
ENDIF
// "buskene", "krøbling" The vowel should have been made short becauce og 2 x consonant.
// Take care of it here
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
@@ -204,24 +416,17 @@ procedure LongVowelLength
ENDIF
ENDIF
ENDIF
// "barnet" - consonant + [@-D]: too long vowel
IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(D) THEN
length 160
ENDIF
// "trin", "trit", "ring" - vowel too long
// IF prevPhW(isRhotic) THEN
IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN
IF nextPhW(isNotVowel) AND nextPhW(isWordEnd) THEN
length 110
ENDIF
ENDIF
endprocedure
//----------------------------------------------------------------------
// PHONEMES
// A bit longer than [@-]
phoneme @
vowel starttype #@ endtype #@
unstressed
length 60
IfNextVowelAppend(_!)
FMT(vowel/@_3)
endphoneme
@@ -244,6 +449,9 @@ ENDIF
IF prevPhW(i) AND thisPh(isWordEnd) THEN
length 15
ENDIF
IF nextPhW(isVowel) THEN
ChangePhoneme(@)
ENDIF
FMT(vowel/@-)
endphoneme
@@ -277,7 +485,8 @@ phoneme ?i
vowel starttype #i endtype #i
length 140
CALL ShortVowelLength
IfNextVowelAppend(;)
// Don't link with the next vowel with [;] - vowel too short
// IfNextVowelAppend(;)
FMT(vowel/i_4)
endphoneme
@@ -293,7 +502,6 @@ phoneme e
vowel starttype #e endtype #e
length 140
CALL LongVowelLength
// CALL ShortVowelLength
FMT(vowel/e)
endphoneme
@@ -347,7 +555,7 @@ phoneme &
// but NOT "hinanden"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) THEN
IF NOT next3PhW(n) THEN
length 225
length 225
ENDIF
ENDIF
// ThisPh + V or @-
@@ -376,7 +584,6 @@ phoneme &#
length 140
ipa a
CALL LongVowelLength
// CALL ShortVowelLength
FMT(vowel/&)
endphoneme
@@ -385,13 +592,14 @@ endphoneme
phoneme ?&#
vowel starttype #e endtype #e
ipa ?a
length 140
CALL ShortVowelLength
FMT(vowel/&)
length 140
CALL ShortVowelLength
FMT(vowel/&)
endphoneme
phoneme A // PB changed to a_8
vowel starttype #a endtype #a
ipa ɑ
length 140
CALL LongVowelLength
// "fare" [f'A:A]
@@ -401,10 +609,11 @@ ENDIF
FMT(vowel/a_8)
endphoneme
// PB short A
// Short A
// "krabbe" vs. "drabelig"
phoneme ?A
vowel starttype #a endtype #a
ipa ?ɑ
length 140
CALL ShortVowelLength
FMT(vowel/a_8)
@@ -417,7 +626,9 @@ phoneme u
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
length 225
ENDIF
CALL LongVowelLength
IF NOT thisPh(isWordStart) THEN // NOT "undøvendig"
CALL LongVowelLength
ENDIF
FMT(vowel/u_bck)
endphoneme
@@ -433,10 +644,6 @@ endphoneme
phoneme o
vowel starttype #o endtype #o
length 140
// "bore", "borer" [boV] o + V
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
// "kone", "koner" o + consonant + V or @-
IF next2PhW(V) OR next2PhW(@-) THEN
length 225
@@ -450,6 +657,7 @@ endphoneme
phoneme ?o
vowel starttype #o endtype #o
length 140
CALL ShortVowelLength
FMT(vowel/o_2)
endphoneme
@@ -457,14 +665,6 @@ phoneme O
vowel starttype #o endtype #o
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 + V or @-
IF nextPhW(V) OR nextPhW(@-) THEN
// length 225
ENDIF
// "såre", "sårede" [s'O:?OD@-]
IF nextPhW(O) OR nextPhW(?O) THEN
length 225
@@ -477,6 +677,7 @@ endphoneme
// "toget" vs. "tåget"
phoneme ?O
vowel starttype #o endtype #o
ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ
length 140
CALL ShortVowelLength
FMT(vowel/o_5)
@@ -502,6 +703,7 @@ phoneme 0
vowel starttype #o endtype #o
length 140
ipa ɔ
CALL LongVowelLength
FMT(vowel/oo_2)
endphoneme
@@ -533,9 +735,10 @@ endphoneme
phoneme Y
vowel starttype #i endtype #i
length 140
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF
CALL LongVowelLength
FMT(vowel/yy)
endphoneme
@@ -612,6 +815,7 @@ endphoneme
phoneme l/3 // Replacement for [l/]
liquid
lengthmod 7
length 80
FMT(l/l_)
endphoneme
@@ -628,9 +832,24 @@ phoneme r // used for 'r' after a vowel (to create a diphthong)
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN
ChangePhoneme(R)
ENDIF
// "generer" [Sen'e:Vr], "mysterier" - delete the r
IF prevPhW(V) AND thisPh(isWordEnd) THEN
ChangePhoneme(NULL)
// "generer" [Sen'e:Vr], "mysterier" - delete the r
IF prevPhW(V) OR prevPhW(?V) AND thisPh(isWordEnd) THEN
ChangePhoneme(_!)
ENDIF
// "plamagers" [pl&m'&SVrs] - delete the r
IF prevPhW(V) OR prevPhW(?V) AND nextPhW(s) AND nextPhW(isWordEnd) THEN
ChangePhoneme(NULL)
ENDIF
// "plamagerne" [pl&m'&SVrn@-] - delete the r
IF prevPhW(V) OR prevPhW(?V) AND nextPhW(n) AND next2PhW(@-) THEN
ChangePhoneme(NULL)
ENDIF
// "kreaturer" [kR,?E?&t'ur?V] - delete the r
// Previous vowel stressed by $alt rule
IF nextPhW(V) OR nextPhW(?V) AND nextPh(isWordEnd) THEN
IF prevPhW(isMaxStress) THEN
ChangePhoneme(NULL)
ENDIF
ENDIF
FMT(r/a_)
endphoneme
@@ -704,11 +923,11 @@ IF thisPh(isWordEnd) THEN
ENDIF
IF nextPhW(isVowel) THEN
NextVowelStarts
VowelStart(j/j@,-45) // jøderne
VowelStart(j/j@) // jøderne
VowelStart(j/ja)
VowelStart(j/je,-35)
VowelStart(j/je)
VowelStart(j/ji)
VowelStart(j/jo,-65) // "kjole"
VowelStart(j/jo) // "kjole"
VowelStart(j/ju)
EndSwitch
Vowelout len=70
@@ -723,4 +942,3 @@ Vowelout len=70
FMT(j/j_)
ENDIF
endphoneme
+22 -22
View File
@@ -6,44 +6,44 @@
phoneme 1 // ngang tone: level
stress
Tone(28,32, envelope/p_level, NULL) // 28 29
Tone(34,36, envelope/p_level, NULL) // 28 29
endphoneme
phoneme 2 // huyền tone: low falling
stress
Tone(20, 8, envelope/p_fall, NULL) //20 8
Tone(30, 8, envelope/p_fall, NULL) //20 8
endphoneme
phoneme 3 // sắc Tone(rising
stress
Tone(20, 80, envelope/p_rise, NULL) // 30 60
Tone(30, 60, envelope/p_rise, NULL) // 30 60
endphoneme
phoneme 4 // hỏi Tone(curve (dipping rising)
stress
Tone(30, 5, envelope/p_fallrise, NULL) //33 31
Tone(10, 55, envelope/p_fallrise, NULL) //33 31
endphoneme
phoneme 5 // ngã tone: broken (creaking rising)
stress
Tone(28,58, envelope/p_214, envelope/vi_5amp) // 28,58
Tone(28,58,envelope/p_214, envelope/vi_5amp) // 28,58 20 80
endphoneme
phoneme 6 // nặng Tone(drop (constricted)
stress
//length 150 // ignore because it make too short sound 75 // reduce the length of the vowel
Tone(33, 21, envelope/p_512, envelope/vi_6amp) //40 20
Tone(25, 60, envelope/p_512, envelope/vi_6amp) //40 20
endphoneme
phoneme 7 // Tone(1 (ngang) at end of clause
stress
Tone(40, 20, envelope/p_fall, NULL)
Tone(40, 35, envelope/p_fall, NULL) //40 20
endphoneme
@@ -63,7 +63,7 @@ phoneme a:
IF nextPh(n^) OR nextPh(c) THEN
length 100
ELSE
length 170 //280
length 140 //280
ENDIF
FMT(vowel/a_8)
endphoneme
@@ -71,7 +71,7 @@ endphoneme
phoneme E
vowel starttype #e endtype #e
length 200
length 140
FMT(vowel/e_e) //ee_3)
endphoneme
@@ -92,7 +92,7 @@ phoneme i
length 100
FMT(vnasal/ii_n)
ELSE
length 240
length 140
FMT(vowel/i_4)
ENDIF
endphoneme
@@ -101,11 +101,11 @@ endphoneme
phoneme O
vowel starttype #o endtype #o
IF nextPh(kh) OR nextPh(N) THEN
length 110
length 80
ELSE
length 200
length 140
ENDIF
FMT(vowel/oo_2)
FMT(vdiph2/o_oo) //vowel/oo)
endphoneme
phoneme o
@@ -113,7 +113,7 @@ phoneme o
IF nextPh(kh) OR nextPh(N) THEN
length 110
ELSE
length 200
length 140
ENDIF
FMT(vowel/o) // o_2)
endphoneme
@@ -124,9 +124,9 @@ phoneme u
IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound
length 120
ELSE
length 240
length 140
ENDIF
FMT(vowel/u_5)
FMT(vnasal/u_n,60) //vowel/u_5)
endphoneme
phoneme y
@@ -146,7 +146,7 @@ phoneme @
IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN
length 120
ELSE
length 170
length 140
ENDIF
FMT(vowel/V) //vowel/@_2)
endphoneme
@@ -154,7 +154,7 @@ endphoneme
phoneme @:
vowel starttype #@ endtype #@
length 200
length 140
FMT(vowel/@_2)
endphoneme
@@ -207,8 +207,8 @@ endphoneme
phoneme OI
vowel starttype #o endtype #i
length 150
FMT(vdiph/ooi_2)
length 200
FMT(vdiph/ooi_4)
endphoneme
@@ -401,10 +401,10 @@ phoneme cr
WAV(vietnam/tr,10)
endphoneme
phoneme d
phoneme d_
vcd alv stop
// lengthmod 5
ipa ɗ
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=15
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30
WAV(vietnam/dd)
BIN
View File
Binary file not shown.