Files
espeak-ng/phsource/ph_italian
T
2018-05-31 12:29:40 +02:00

402 lines
7.5 KiB
Plaintext

//====================================================
// Italian, last update may 31 2018 by Chris <llajta2012@gmail.com>
//====================================================
phoneme : // Lengthen previous vowel by "length"
virtual
length 50
endphoneme
phoneme a
vwl starttype #a endtype #a
length 160
ChangeIfNotStressed(a/)
IF thisPh(isWordEnd) AND prevPhW(t) AND thisPh(isStressed) THEN
FMT(vowel/a)
ENDIF
IF nextPhW(o/) OR prevPhW(isVowel) OR prevPhW(j) THEN
FMT(vowel/a)
ENDIF
FMT(vwl_it/a)
endphoneme
phoneme a/
vwl starttype #a endtype #a
length 150
IF prevPhW(l) THEN
FMT(vowel/a_7, 80)
ENDIF
IF thisPh(isWordEnd) THEN
FMT(vowel/a_8, 70)
ENDIF
IF thisPh(isWordStart) THEN
FMT(vwl_it/a, 85)
ENDIF
FMT(vowel/a_8, 80)
endphoneme
phoneme e
vwl starttype #e endtype #e
length 160
ChangeIfNotStressed(e/)
FMT(vowel/e_2)
endphoneme
phoneme e/
vwl starttype #e endtype #e
length 145
IF nextPhW(isNasal) OR nextPhW(isLiquid) THEN
FMT(vowel/e_mid2)
ELIF thisPh(isWordEnd) THEN
FMT(vowel/e, 65)
ENDIF
FMT(vowel/e)
endphoneme
phoneme E
vwl starttype #e endtype #e
length 150
ChangeIfUnstressed(e/)
FMT(vwl_it/e_open)
endphoneme
phoneme i
vwl starttype #i endtype #i
length 155
IfNextVowelAppend(;)
IF thisPh(isWordEnd) AND thisPh(isNotStressed) AND prevPhW(isNotVowel) THEN
ChangePhoneme(I)
ENDIF
IF thisPh(isNotStressed) AND prevPhW(isNotVowel) AND nextPhW(isVowel) THEN
ChangePhoneme(i/)
ENDIF
IF thisPh(isNotStressed) AND prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN
ChangePhoneme(i/)
ENDIF
FMT(vwl_it/i)
endphoneme
phoneme i/
vwl starttype #i endtype #i
unstressed
length 130
IfNextVowelAppend(;)
FMT(vwl_it/i, 90)
endphoneme
phoneme i# // Used for 'gia_' where [i] is only spoken if stressed
vwl starttype #i endtype #i
length 145
ChangeIfNotStressed(NULL)
ChangePhoneme(i)
endphoneme
phoneme I
vwl starttype #i endtype #i
length 145
IfNextVowelAppend(;)
FMT(vowel/i_7)
endphoneme
phoneme o
vwl starttype #o endtype #o
length 170
ChangeIfNotStressed(o/)
FMT(vwl_it/o)
endphoneme
phoneme o/
vwl starttype #o endtype #o
length 145
IF nextPhW(isNasal) OR nextPhW(isLiquid) THEN
FMT(vwl_it/o_open, 80)
ENDIF
IF thisPh(isWordEnd) AND NOT prevPhW(a) THEN
length 150
FMT(vowel/o_mid, 65)
ENDIF
FMT(vowel/o, 90)
endphoneme
phoneme O
vwl starttype #o endtype #o
length 150
ChangeIfUnstressed(o/)
FMT(vwl_it/o_open)
endphoneme
phoneme u
vwl starttype #u endtype #u
length 175
ChangeIfNotStressed(U)
FMT(vwl_it/u)
endphoneme
phoneme U
vwl starttype #u endtype #u
length 140
FMT(vowel/u_bck2)
endphoneme
phoneme aU
vwl starttype #a endtype #u
length 270
FMT(vdiph/au_4)
endphoneme
phoneme aI
vwl starttype #a endtype #i
length 250
FMT(vdiph/ai)
endphoneme
phoneme oI
vwl starttype #o endtype #i
length 230
FMT(vdiph/oi)
endphoneme
// CONSONANTS
//==========
phoneme l
liquid
lengthmod 7
IF nextPh(isNotVowel) THEN
ChangePhoneme(l/)
ENDIF
NextVowelStarts
VowelStart(l/l@)
VowelStart(l/la, -10)
VowelStart(l/le, -15)
VowelStart(l/li, -15)
VowelStart(l/lo, -20)
VowelStart(l/lu, -17)
EndSwitch
IF prevPh(#@) THEN
VowelEnding(l/xl, -50)
ELIF prevPh(isVowel) THEN
VowelEnding(l/xl, -40)
ENDIF
IF prevPh(isPause) THEN
FMT(l/_l)
ENDIF
IF prevPh(t) THEN
FMT(l/tl)
ENDIF
IF prevPh(l/) THEN
FMT(l/l_long)
ENDIF
FMT(l/l)
endphoneme
phoneme l^
import_phoneme base1/l^
length 130
endphoneme
phoneme ts
vls alv afr sib
voicingswitch s
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 60 len=60
Vowelout f1=0 f2=1700 -300 250 f3=-100 70 rms=18
IF nextPh(isPause2) THEN
WAV(ustop/ts_)
ENDIF
WAV(ustop/ts)
endphoneme
phoneme ts2
vls alv afr sib
voicingswitch dz
lengthmod 9
Vowelin f1=2 f2=1700 -300 300 f3=-200 120 len=10
Vowelout f1=0 f2=1700 -300 250 f3=-100 170 rms=20 brk
IF nextPh(isStressed) THEN
Vowelin f1=0 f2=1700 -300 300 f3=-100 60 len=60
Vowelout f1=0 f2=1700 -300 250 f3=-100 70 rms=14
WAV(ustop/ts_, 80)
ENDIF
WAV(ustop/ts_, 70)
endphoneme
phoneme dz
import_phoneme consonants/dz
voicingswitch z
lengthmod 3
endphoneme
phoneme ss
vls alv frc sib
voicingswitch z
lengthmod 6
Vowelin f1=2 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
length 170
WAV(ufric/s, 86)
endphoneme
phoneme v
vcd lbd frc
voicingswitch f
lengthmod 6
Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
IF prevPhW(z) THEN
length 70
FMT(voc/v_) addWav(vocw/v, 60)
ENDIF
IF KlattSynth THEN
Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
IF nextPh(isPause2) THEN
FMT(klatt/v_) addWav(vocw/v)
ENDIF
FMT(klatt/v) addWav(vocw/v, 150)
ENDIF
IF nextPh(isPause2) THEN
FMT(voc/v_) addWav(vocw/v)
ENDIF
IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
length 70
ENDIF
FMT(voc/v) addWav(vocw/v, 90)
endphoneme
phoneme z
vcd alv frc sib
voicingswitch s
lengthmod 6
Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
IF KlattSynth THEN
Vowelin f1=0 f2=1390 -300 300 f3=0 0
Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk
ENDIF
IF nextPhW(v) OR nextPhW(b) THEN
FMT(voc/z) addWav(ufric/s!, 60)
ENDIF
FMT(voc/z) addWav(ufric/s_, 85)
endphoneme
// Consonant weakening [ITA] (Spirantizzazione delle occlusive)
phoneme k~
vls vel stp
lengthmod 2
voicingswitch g
IF prevPh(isVowel) AND nextPhW(isVowel) THEN
ChangePhoneme(h)
ENDIF
Vowelin f1=0 f2=2300 200 400 f3=-100 80
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
IF nextPh(isPause2) THEN
WAV(ustop/k_)
ELIF nextPh(isRhotic) THEN
WAV(ustop/kr)
ELIF nextPh(l) THEN
WAV(ustop/kl)
ENDIF
WAV(ustop/k_unasp, 70)
endphoneme
phoneme tS~
vls pla afr sib
voicingswitch dZ
lengthmod 2
IF prevPh(isVowel) AND nextPhW(isVowel) THEN
ChangePhoneme(S)
ENDIF
Vowelin f1=0 f2=2300 200 400 f3=-100 80
IF nextPh(isPause2) THEN
WAV(ustop/tsh_)
ENDIF
WAV(ustop/tsh)
endphoneme
phoneme dZ~
vcd pla afr sib
voicingswitch S
lengthmod 5
IF prevPh(isVowel) AND nextPhW(isVowel) THEN
ChangePhoneme(Z)
ENDIF
Vowelin f1=2 f2=2300 200 400 f3=100 80
Vowelout f1=2 f2=2300 250 300 f3=100 80 brk
IF PreVoicing THEN
FMT(dzh/xdzh)
ENDIF
IF nextPh(isPause2) THEN
FMT(dzh/dzh_) addWav(x/dzh_)
ENDIF
FMT(dzh/dzh) addWav(x/dzh)
endphoneme
phoneme g~
vcd vel stp
voicingswitch k
lengthmod 5
IF prevPh(isVowel) AND nextPhW(isVowel) THEN
ChangePhoneme(Q~)
ENDIF
Vowelin f1=2 f2=2300 200 300 f3=-300 80
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
IF nextPh(isPause2) THEN
FMT(g/g_) addWav(x/g_)
ENDIF
FMT(g/g) addWav(x/g2, 130)
endphoneme
phoneme Q~
vcd vel frc
voicingswitch x
lengthmod 6
Vowelin f1=2 f2=2300 200 400 f3=-100 80
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
IF KlattSynth THEN
IF nextPh(isPause2) THEN
FMT(klatt/qqh_) addWav(vocw/Q_)
ENDIF
FMT(klatt/qqh) addWav(vocw/Q)
ENDIF
IF nextPh(isPause2) THEN
FMT(voc/Q_) addWav(vocw/Q_)
ENDIF
FMT(voc/Q) addWav(vocw/Q2, 70)
endphoneme
phoneme S~
vls pla frc sib
voicingswitch Z
lengthmod 3
Vowelin f1=0 f2=2100 100 300 f3=-100 80
Vowelout f1=0 f2=2100 100 300 f3=-100 80
IF nextPhW(isVowel) THEN
ChangePhoneme(s)
ENDIF
WAV(ufric/sh, 85)
endphoneme