Files
espeak-ng/phsource/ph_danish
T
jonsd ad8798cf22 [1.46.44]
Added language: ga (Irish).
Languages changes: en-us, eo, hu, pt, ta, vi


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@310 d46cf337-b52f-0410-862d-fd96e6ae7743
2013-03-08 20:40:02 +00:00

693 lines
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
phoneme @
vowel starttype #@ endtype #@
unstressed
length 60
FMT(vowel/@_3)
endphoneme
phoneme @- // very short schwa
vowel starttype #@ endtype #@
unstressed nonsyllabic
ipa ə
IF nextPhW(*) OR nextPhW(r) THEN
ipa NULL // @-* is used to make 'r'
ENDIF
length 40
FMT(vowel/@-)
endphoneme
// ToDo: change [@] to [a#] if adjacent to [r] or [R]
phoneme 3
vowel starttype #a endtype #a
unstressed
length 40
FMT(vowel/a#_3)
endphoneme
// PB sort of schwa [ɐ] (0250+032F)
// "spurgt" [sp'o3-d] – ipa [spˈoɐ̯d]
phoneme 3- // used for 'r' after a vowel (to create a diphthong)
liquid
lengthmod 7
ipa ɐ̯
FMT(r/a_)
endphoneme
phoneme i
vowel starttype #i endtype #i
length 150
// IfNextVowelAppend(;)
IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN
glstop
length 90
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
ENDIF
// "siden"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN
length 150
ENDIF
// "lise"
IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN
length 150
ENDIF
// PB "Bishop"
IF nextPhW(S) AND next2PhW(V) THEN
length 90
ENDIF
// "pjækkeri", "røveri"
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
ENDIF
// "vilje"
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
ENDIF
FMT(vowel/i_4)
endphoneme
// PB Experimental glottal i
// sviret vs. svirret
phoneme ?i
vowel starttype #i endtype #i
length 90
IfNextVowelAppend(;)
FMT(vowel/i_4)
endphoneme
// PB English i - Tim
phoneme I
vowel starttype #i endtype #i
length 130
IfNextVowelAppend(;)
FMT(vowel/ii_2)
endphoneme
phoneme e
vowel starttype #e endtype #e
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
// "delte", "mante", "evig" [evi]
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@) OR nextVowel(@-) THEN
length 150
ENDIF
// "prinsen" - TEST
IF nextPhW(n) AND next2PhW(s) THEN
length 90
ENDIF
// "slesk", "sleske" short vowel
IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN
length 90
ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN
length 90
// "skriften" - very broad: short before 2 consonants
ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) THEN
length 90
ENDIF
// PB "ring", "ringe"
IF nextPhW(N) THEN
length 90
ENDIF
// PB "enig", "enige", "evig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
ENDIF
// "labyrinter" , "labyrinten" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 60
ENDIF
FMT(vowel/e)
endphoneme
// PB glottal e
// "skille" vs. "skele", "pille" vs. "pile"
phoneme ?e
vowel starttype #e endtype #e
length 90
FMT(vowel/e)
endphoneme
phoneme E
vowel starttype #e endtype #e
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// example?
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 50
ENDIF
// "værelse", "breve"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
length 150
ENDIF
// "fest", "feste" short vowel
IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN
length 90
ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN
length 90
// PB knægten
ELIF nextPhW(g) AND next2PhW(t) AND nextVowel(@-) THEN
length 90
// "femten", "tænker" - very broad: short before 2 consonants
ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) OR nextVowel(V)THEN
length 90
// PB "kærlig" [k'Erli]- a bit longer because og the missing [ɐ] [ˈkæɐ̯li]
ELIF nextPhW(r) AND next2PhW(isNotVowel) AND nextVowel(i) THEN
length 130
ENDIF
// "ære", "kærester", "ærefrygt" - longer E
IF nextPhW(V) THEN
length 180
ENDIF
FMT(vowel/e_mid2)
endphoneme
// PB Experimental glottal E
// "læsse" vs. "læse"
phoneme ?E
vowel starttype #e endtype #e
length 90
// PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ]
// Changed now [f'?E3-V] but it won't do any harm
IF nextPhW(V) THEN
length 120
ENDIF
FMT(vowel/e_mid2)
endphoneme
phoneme &
vowel starttype #e endtype #e
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// PB "sable", "sabler", "anede", "David"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN
length 150
ENDIF
// "stadig" [st&Di]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
// "stadigt" [st&Dit]
ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND next2PhW(t) THEN
length 180
// "latin" [l&t'in]
ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND NOT next2PhW(t) THEN
length 90
ENDIF
// "ae", "aer", "dagen" vowel + vowel: extra length
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 240
ENDIF
// "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
ENDIF
// "Omaha"
IF thisPh(isWordEnd) THEN
length 90
ENDIF
FMT(vowel/ee_2)
endphoneme
// PB Experimental glottal a
// e.g. the last a in "staldkarl"
// "sale" vs. "sal"
phoneme ?&
vowel starttype #e endtype #e
length 90
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
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
ENDIF
FMT(vowel/&)
endphoneme
// PB short &#
// "revl" vs. "tremme"
phoneme ?&#
vowel starttype #e endtype #e
length 90
FMT(vowel/&)
endphoneme
phoneme a
vowel starttype #a endtype #a
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) 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
vowel starttype #a endtype #a
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 150
ENDIF
// "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) THEN
length 120
ENDIF
FMT(vowel/a_3)
endphoneme
// PB glottal a
// "drab" vs. "drabelig"
phoneme ?A
vowel starttype #a endtype #a
length 90
// "straffeattest", "straffe" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) THEN
length 120
ENDIF
FMT(vowel/a_3)
endphoneme
phoneme u
vowel starttype #u endtype #u
length 150
// Short vowel followed by consonant and NOT consonant + 3 or V or @
// "blus" vs. "bluse" and "bluser"
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// "hue", "suge", "uge"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
ENDIF
// extra length followed by 3 or V or @
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 240
ENDIF
// "umulig"
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
ENDIF
FMT(vowel/u_bck)
endphoneme
// PB glottal u
// "tude" vs. "tuden" - [tuD3] [t?uD@n]
phoneme ?u
vowel starttype #u endtype #u
length 90
FMT(vowel/u_bck)
endphoneme
phoneme o
vowel starttype #o endtype #o
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// "tro"
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
ENDIF
// "modig" - long vowel after consonant + [i]
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN
length 150
ENDIF
FMT(vowel/o_2)
endphoneme
// PB Short o
// "patron" vs. "kone"
phoneme ?o
vowel starttype #o endtype #o
length 95
FMT(vowel/o_2)
endphoneme
phoneme O
vowel starttype #o endtype #o
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// PB "gået"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 150
ENDIF
// "rådig"
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN
length 180
ENDIF
FMT(vowel/o_5)
endphoneme
// PB Experimental glottal O
// "toget" vs. "tåget"
phoneme ?O
vowel starttype #o endtype #o
length 90
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
// PB "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
FMT(vowel/V_4)
endphoneme
// PB Glottal (short) å
// "forstår" vs. "kåre"
phoneme ?V
vowel starttype #@ endtype #@
length 100
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
FMT(vowel/oo_2)
endphoneme
// ?B short 0 "sukker"
phoneme ?0
vowel starttype #o endtype #o
length 90
FMT(vowel/oo_2)
endphoneme
phoneme y
vowel starttype #i endtype #i
// experiment: changed to short from 150
length 150
// Short vowel followed by consonant and NOT consonant + 3 or V
// "lyd" vs. "lyde" and "lyder"
IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@)AND NOT next2PhW(@-) THEN
glstop
length 90
ENDIF
// "syg" [sy]
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
ENDIF
// "skyd"
IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN
length 90
ENDIF
// "dydig" [dyDi]
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN
length 150
ENDIF
// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN
length 220
ENDIF
// PB "kryster" - short y
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 80
ENDIF
// PB "gryden"
FMT(vowel/y)
endphoneme
// PB Short y
// "kylling" vs. "kyle", "krybbe" vs. "krybe"
phoneme ?y
vowel starttype #i endtype #i
length 70
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
ENDIF
FMT(vowel/yy)
endphoneme
phoneme W
vowel starttype #@ endtype #@
length 160
// Shorter vowel when followed by consonant
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// "kløe" vowel + vowel: extra length
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 220
ENDIF
// "klø" short W when word ends with W
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
ENDIF
// røde" W + 1 consonant + 3 or W or @
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) THEN
length 160
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
ENDIF
FMT(vowel/oe)
endphoneme
// PB glottal W
// "prøv" vs. "prøve"
phoneme ?W
vowel starttype #@ endtype #@
length 95
FMT(vowel/oe)
endphoneme
// PB added for the ø in "røv", "røg", "øje" instead of [V3]
phoneme W#
vowel starttype #@ endtype #@
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
ENDIF
FMT(vowel/V)
endphoneme
// PB short W#
// "rømme"
phoneme ?W#
vowel starttype #@ endtype #@
length 90
FMT(vowel/V)
endphoneme
phoneme aI
vowel starttype #a endtype #i
length 300
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN
glstop
length 150
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 300
ENDIF
// PB "drej" vs. "dreje"
IF thisPh(isWordEnd) THEN
length 140
ENDIF
FMT(vdiph/ai)
endphoneme
// CONSONANTS
// PB added l/3
phoneme l
liquid
lengthmod 7
ChangePhoneme(l/3)
CALL base/l
endphoneme
phoneme v // approximant, not fricative
import_phoneme base/v#
voicingswitch f
endphoneme
// PB Actually a kind of schwa = [ɐ]? - "byder" [bˈyðɐʌ]
phoneme r // used for 'r' after a vowel (to create a diphthong)
liquid
lengthmod 7
ipa ɐ̯
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN
ChangePhoneme(R)
ENDIF
FMT(r/a_)
endphoneme
phoneme R
lengthmod 6
liquid
ipa ʁ
FMT(r/aa)
endphoneme
// don't weaken consonants at end of word or before a stop
phoneme s
vls alv frc sibilant
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(p) OR nextPh(t) OR nextPh(k) THEN
WAV(ufric/s!)
ENDIF
WAV(ufric/s)
endphoneme
phoneme p
vls blb stop
voicingswitch b
lengthmod 7
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
IF nextPh(isPause2) THEN
WAV(ustop/p_unasp)
ELIF nextPh(r) THEN
WAV(ustop/pr, 70)
ELIF nextPh(R) OR nextPh(R2) THEN
WAV(ustop/pr)
ELIF nextPh(@-) THEN
WAV(ustop/p_unasp)
ELIF nextPh(l) THEN
WAV(ustop/pl)
ENDIF
WAV(ustop/p)
endphoneme
phoneme t
vls alv stop
voicingswitch d
lengthmod 7
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
WAV(ustop/tr)
ENDIF
WAV(ustop/t, 90)
endphoneme
phoneme j
liquid palatal
lengthmod 7
IF nextPhW(isVowel) THEN
NextVowelStarts
VowelStart(j/j@)
VowelStart(j/ja)
VowelStart(j/je,-40)
VowelStart(j/ji)
VowelStart(j/jo)
VowelStart(j/ju)
EndSwitch
Vowelout len=70
VowelEnding(j/xj, -30)
IF prevPh(isPause) THEN
FMT(j/_j)
ENDIF
ELSE
// no vowel follows
Vowelout len=70
FMT(j/j_)
ENDIF
endphoneme