Files
espeak-ng/phsource/ph_german
T
jonsd 20f52f0301 [1.42.21]
New format for phoneme source files.
Update phoneme data for Klatt synthesizer.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@235 d46cf337-b52f-0410-862d-fd96e6ae7743
2009-12-20 07:48:33 +00:00

332 lines
4.7 KiB
Plaintext
Executable File

//=========================================================
// German
//=========================================================
phoneme @ // Schwa
vowel starttype #@ endtype #@
unstressed
length 125
IF nextPh(r/) THEN
FMT(vowel/a#_3) // replace [@r] by [3]
ENDIF
FMT(vowel/@_3)
endphoneme
phoneme 3 // open Schwa
vowel starttype #@ endtype #@
unstressed
length 125
FMT(vowel/a#_3)
endphoneme
phoneme a
vowel starttype #a endtype #a
length 110
IF nextPh(*) THEN
length 150
ENDIF
FMT(vowel/a)
endphoneme
phoneme E
vowel starttype #e endtype #e
length 120
IF nextPh(*) THEN
length 160
ENDIF
FMT(vowel/e_mid2)
endphoneme
phoneme E2 // as[E] but reduces to @ if unstressed
vowel starttype #e endtype #e
length 120
ChangeIfDiminished(@)
IF nextPh(*) THEN
length 160
ENDIF
FMT(vowel/e_mid2)
endphoneme
phoneme I
vowel starttype #i endtype #i
length 120
IF nextPh(*) THEN
length 160
ENDIF
IfNextVowelAppend(;)
FMT(vowel/ii)
endphoneme
phoneme I:
vowel starttype #i endtype #i
length 190
FMT(vowel/ii)
endphoneme
phoneme O
vowel starttype #o endtype #o
length 120
IF nextPh(*) THEN
length 160
ENDIF
FMT(vowel/oo)
endphoneme
phoneme U
vowel starttype #u endtype #u
length 140
IF nextPh(*) THEN
length 180
ENDIF
FMT(vowel/uu_2)
endphoneme
phoneme A:
vowel starttype #a endtype #a
length 250
FMT(vowel/aa_6)
endphoneme
phoneme A // reduces to [a] if not stressed
vowel starttype #a endtype #a
length 240
ChangeIfNotStressed(a)
FMT(vowel/aa_6)
endphoneme
phoneme i:
vowel starttype #i endtype #i
length 180
IF nextPh(*) THEN
length 220
ENDIF
IF prevPh(w) THEN
VowelStart(w/wi2)
ENDIF
FMT(vowel/i_2)
endphoneme
phoneme i2
vowel starttype #i endtype #i
length 180
IF nextPh(*) THEN
length 220
ENDIF
ChangeIfNotStressed(I)
IF prevPh(w) THEN
VowelStart(w/wi2)
ENDIF
FMT(vowel/i_2)
endphoneme
phoneme u:
vowel starttype #u endtype #u
length 190
IF nextPh(*) THEN
length 230
ENDIF
FMT(vowel/u)
endphoneme
phoneme aU
vowel starttype #a endtype #u
length 220
FMT(vdiph/aau_2)
endphoneme
phoneme aI
vowel starttype #a endtype #i
length 210
FMT(vdiph/ai_5)
endphoneme
phoneme EI
vowel starttype #e endtype #i
length 210
FMT(vdiph/eei)
endphoneme
phoneme OY
vowel starttype #o endtype #i
length 220
FMT(vdiph/oi)
endphoneme
phoneme E:
vowel starttype #e endtype #e
length 190
FMT(vowel/e_mid2)
endphoneme
phoneme e:
vowel starttype #e endtype #e
length 190
IF nextPh(*) THEN
length 230
ENDIF
FMT(vowel/e_2)
endphoneme
phoneme o:
vowel starttype #o endtype #o
length 200
IF nextPh(*) THEN
length 240
ENDIF
FMT(vowel/o)
endphoneme
phoneme y:
vowel starttype #u endtype #u
length 200
IF nextPh(*) THEN
length 240
ENDIF
FMT(vowel/y)
endphoneme
phoneme y
vowel starttype #u endtype #u
length 130
IF nextPh(*) THEN
length 170
ENDIF
FMT(vowel/yy_4)
endphoneme
phoneme Y:
vowel starttype #@ endtype #@
length 220
IF nextPh(*) THEN
length 260
ENDIF
FMT(vowel/y#)
endphoneme
phoneme W
vowel starttype #@ endtype #@
length 160
IF nextPh(*) THEN
length 200
ENDIF
FMT(vowel/oe)
endphoneme
// CONSONANTS
//===========
phoneme ts
import_phoneme consonants/ts
endphoneme
phoneme pF
vls blb afr
Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
lengthmod 2
WAV(ufric/f) // could replace this with a [pf] wav file
endphoneme
phoneme C2 // for "ig" -> [IC] or [Ig]
vls pal frc palatal
lengthmod 3
IF nextPh(isVowel) THEN
ChangePhoneme(g)
ENDIF
CALL C
endphoneme
phoneme l/ // used for [l] when not before a vowel
liquid
lengthmod 7
IF nextPh(isVowel) THEN
ChangePhoneme(l)
ENDIF
PrevVowelEndings
VowelEnding(l/L1_@L, -60)
VowelEnding(l/L1_aL, -40)
VowelEnding(l/L1_eL, -30)
VowelEnding(l/L1_iL, -30)
VowelEnding(l/L1_oL, -40)
VowelEnding(l/L1_uL, -40)
EndSwitch
FMT(l/l_3)
endphoneme
phoneme j
liquid palatal
lengthmod 7
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)
IF prevPh(isPause) THEN
FMT(j/_j_short) // difference from base/j
ENDIF
ELSE
// no vowel follows
Vowelout len=70
FMT(j/j_)
ENDIF
endphoneme
// This is actually the ENGLISH "rolling r". For german, we now use * in the dictionary,
// so this phoneme will only be used in english words in german texts.
phoneme r
liquid rhotic
trill
lengthmod 7
CALL base/r
endphoneme