123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
-
- //====================================================
- // Catalan - based on Spanish and Base2
- //====================================================
- // in our project we decided not to use elisions, but they could be managed here by using "ipa NULL"
-
- // vowels
- //=============
-
- phoneme a
- vwl starttype #a endtype #a
- length 180
- IF thisPh(isUnstressed) THEN
- ChangePhoneme(@)
- ENDIF
- FMT(vowel/a_6)
- endphoneme
-
- phoneme a2 // don't reduce
- vwl starttype #a endtype #a
- length 180
- FMT(vowel/a_6)
- endphoneme
-
- phoneme e
- vwl starttype #e endtype #e
- length 170
- IF thisPh(isUnstressed) THEN
- ChangePhoneme(@)
- ENDIF
-
- FMT(vowel/e)
- endphoneme
-
- phoneme e2 // don't reduce
- vwl starttype #e endtype #e
- length 170
- FMT(vowel/e)
- endphoneme
-
- phoneme E
- vwl starttype #e endtype #e
- length 180
- IF thisPh(isUnstressed) THEN
- ChangePhoneme(@)
- ENDIF
- FMT(vowel/e_mid)
- endphoneme
-
- phoneme E2 // don't reduce
- vwl starttype #e endtype #e
- length 180
- ChangeIfUnstressed(e2)
- FMT(vowel/e_mid)
- endphoneme
-
- phoneme O
- vwl starttype #o endtype #o
- length 170
- IF thisPh(isUnstressed) THEN
- IF thisPh(isWordEnd) AND nextPh(isVowel) THEN
- IF nextPh(i) THEN
- ChangePhoneme(u)
- ELSE
- ChangePhoneme(w)
- ENDIF
- ELIF thisPh(isWordStart) AND prevPh(isVowel) THEN
- ChangePhoneme(w)
- ELSE
- ChangePhoneme(u)
- ENDIF
- ENDIF
- FMT(vowel/oo)
- endphoneme
-
- phoneme o
- vwl starttype #o endtype #o
- length 170
- IF thisPh(isUnstressed) THEN
- IF thisPh(isWordEnd) AND nextPh(isVowel) THEN
- IF nextPh(i) THEN
- ChangePhoneme(u)
- ELSE
- ChangePhoneme(w)
- ENDIF
- ELIF thisPh(isWordStart) AND prevPh(isVowel) THEN
- ChangePhoneme(w)
- ELSE
- ChangePhoneme(u)
- ENDIF
- ENDIF
- FMT(vowel/o)
- endphoneme
-
- phoneme o2
- vwl starttype #o endtype #o
- length 170
- FMT(vowel/o)
- endphoneme
-
- phoneme O2
- vwl starttype #o endtype #o
- length 170
- FMT(vowel/oo)
- endphoneme
-
- phoneme U
- vwl starttype #u endtype #u
- unstressed
- length 160
- FMT(vowel/uu_2)
- endphoneme
-
- phoneme u
- vwl starttype #u endtype #u
- length 160
- IF thisPh(isUnstressed) THEN
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVowel) THEN
- IF nextPh(i) THEN
- ELSE
- ChangePhoneme(w)
- ENDIF
- ENDIF
- ELIF thisPh(isWordStart) THEN
- IF prevPh(isVowel) THEN
- ChangePhoneme(w)
-
- ENDIF
- ENDIF
- ENDIF
- FMT(vowel/u_bck)
- endphoneme
-
- phoneme i
- vwl starttype #i endtype #i
- length 170
- IF thisPh(isUnstressed) THEN
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVowel) THEN
- IF nextPh(u) THEN
- ELSE
- ChangePhoneme(j)
- ENDIF
- ENDIF
- ELIF thisPh(isWordStart) THEN
- IF prevPh(isVowel) THEN
- ChangePhoneme(j)
- ENDIF
- ENDIF
- ENDIF
- FMT(vowel/i)
- endphoneme
-
-
- // nasals
- //==============
-
- phoneme M
- vls lbd nas
- ipa ɱ
- IF nextPh(v) THEN
- ChangePhoneme(m)
- ENDIF
- endphoneme
-
- phoneme m
- vcd blb nas
- Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
- lengthmod 4
-
- IF KlattSynth THEN
- Vowelin f1=0 f2=1000 -50 -200 f3=-200 80
- IF nextPh(isPause2) THEN
- FMT(klatt/m_)
- ENDIF
- FMT(klatt/m)
- ENDIF
-
- NextVowelStarts
- VowelStart(m/m@)
- VowelStart(m/ma)
- VowelStart(m/me)
- VowelStart(m/mi)
- VowelStart(m/mo)
- VowelStart(m/mu)
- EndSwitch
-
- IF nextPh(f) OR nextPh(v) THEN
- ChangePhoneme(M)
- ENDIF
-
- IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
- FMT(m/mj)
- ELIF prevPh(isPause) THEN
- FMT(m/_m)
- ELIF nextPh(isNotVowel) THEN
- FMT(m/m_)
- ENDIF
- endphoneme
-
-
- phoneme n
- vcd alv nas
- Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
- lengthmod 4
-
- IF KlattSynth THEN
- Vowelin f1=0 f2=1500 -200 200 f3=0 80
- FMT(klatt/n)
- ENDIF
-
- NextVowelStarts
- VowelStart(n/n@)
- VowelStart(n/na)
- VowelStart(n/ne)
- VowelStart(n/ni)
- VowelStart(n/no)
- VowelStart(n/nu)
- EndSwitch
-
- IF nextPh(f) THEN
- ChangePhoneme(M)
- ELIF nextPh(k) OR nextPh(g) THEN
- ChangePhoneme(N)
- ELIF nextPh(p) OR nextPh(b) OR nextPh(v) OR nextPh(m) THEN
- ChangePhoneme(m)
- ELIF nextPh(l^) OR nextPh(n^) THEN
- ChangePhoneme(n^)
- ENDIF
- IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
- FMT(n/nj)
- ELIF prevPh(isPause) OR prevPh(n) THEN
- FMT(n/_n)
- ELIF nextPh(isNotVowel) THEN
- FMT(n/n_)
- ENDIF
- endphoneme
-
- phoneme l
- import_phoneme en/l // use 'dark' [l] after a vowel
- endphoneme
-
- // fricatives
- //================
- phoneme s
- vls alv frc sib
- 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 prevPh(isPalatal) OR nextPh(S) OR nextPh(Z) THEN
- IF prevPh(j) THEN
- ELIF nextPh(isVoiced) THEN
- ChangePhoneme(Z)
- ELSE
- ChangePhoneme(S)
- ENDIF
- ENDIF
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVoiced) THEN
- ChangePhoneme(z)
- ENDIF
- ENDIF
- IF nextPh(isPause) THEN
- WAV(ufric/s_)
- ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
- WAV(ufric/s!)
- ENDIF
- WAV(ufric/s)
- endphoneme
-
- phoneme z
- vcd alv frc sib
- voicingswitch s
- lengthmod 6
- Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
- IF prevPh(isPalatal) OR nextPh(Z) THEN
- IF prevPh(j) THEN
- ELSE
- ChangePhoneme(Z)
- ENDIF
- ENDIF
- 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 nextPh(isPause2) THEN
- FMT(voc/z_) addWav(ufric/s_, 70)
- ENDIF
- FMT(voc/z) addWav(ufric/s_, 85)
- endphoneme
-
- phoneme f
- vls lbd frc
- voicingswitch v
- lengthmod 3
- Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
- IF thisPh(isWordStart) THEN
- ELSE
- IF nextPh(isVoiced) THEN
- IF thisPh(isWordEnd) THEN
- ipa v
- ELSE
- IF nextPh(isVowel) OR nextPh(l) OR nextPh(**) OR nextPh(R) THEN
- ELSE
- ipa v
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- IF nextPh(isPause) THEN
- WAV(ufric/f_)
- ENDIF
- WAV(ufric/f)
- endphoneme
-
- phoneme v // = b
- vcd blb stp
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- ELIF prevPh(m) THEN
- ELSE
- ChangePhoneme(p)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ChangePhoneme(b)
- ELIF nextPh(isVoiced) THEN
- IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
- IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN
- ChangePhoneme(B)
- ELSE
- ChangePhoneme(b)
- ENDIF
- ELSE
- ChangePhoneme(b)
- ENDIF
- ELSE
- ChangePhoneme(p)
- ENDIF
- CALL base1/b
- endphoneme
-
-
- // R
- //=====================
- phoneme R
- liquid trl
- lengthmod 6
- ipa r
- IF thisPh(isWordEnd) AND nextPh(R) THEN
- ipa NULL
- ENDIF
- Vowelin f1=0 f2=1600 -300 300 f3=-200 80
- Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk
- FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65)
- endphoneme
-
- // plosives (oclusives)
- // ====================
-
- phoneme b
- vcd blb stp
-
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- ELIF prevPh(m) THEN
- ELSE
- ChangePhoneme(p)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF nextPh(isVoiced) THEN
- IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
- IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN
- ChangePhoneme(B)
- ENDIF
- ENDIF
- ELSE
- ChangePhoneme(p)
- ENDIF
-
- CALL base1/b
- endphoneme
-
- phoneme g
- vcd vel stp
- lengthmod 5
- voicingswitch k
- Vowelin f1=2 f2=2300 200 300 f3=-300 80
- Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- ELSE
- ChangePhoneme(k)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF nextPh(isVoiced) THEN
- IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
- IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN
- ChangePhoneme(Q)
- ENDIF
- ENDIF
- ELSE
- ChangePhoneme(k)
- ENDIF
- IF PreVoicing THEN
- FMT(g/xg)
- ENDIF
- IF nextPh(isPause2) THEN
- FMT(g/g_) addWav(x/g_)
- ENDIF
- FMT(g/g) addWav(x/g2)
- endphoneme
-
- phoneme d
- vcd dnt stp
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- ELSE
- ChangePhoneme(t)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF nextPh(isVoiced) THEN
- IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
- IF prevPh(isVowel) OR prevPh(**) OR prevPh(R) OR prevPh(j) OR prevPh(w) OR prevPh(isVFricative) THEN
- ChangePhoneme(D)
- ENDIF
- ENDIF
- ELSE
- ChangePhoneme(t)
- ENDIF
-
- CALL base2/d
- endphoneme
-
-
- phoneme p
- vls blb stp
- 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 nextPh(isPause2) THEN
- WAV(ustop/p_unasp_, 80)
- ELIF nextPh(isRhotic) THEN
- WAV(ustop/pr)
- ELIF nextPh(l) THEN
- WAV(ustop/pl)
- ELIF thisPh(isWordStart) THEN // don't change it if it's word start
- ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- IF nextPh(w) OR nextPh(j) THEN
- ELSE
- ChangePhoneme(b)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(b)
- ENDIF
- WAV(ustop/p_unasp)
- endphoneme
-
- phoneme t // dental variant of /t/
- vls dnt stp
- lengthmod 2
- voicingswitch d
- Vowelin f1=0 f2=1600 -300 300 f3=-100 80
- Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20
- IF nextPh(isPause2) THEN
- WAV(ustop/t_dnt, 30)
- ELIF thisPh(isWordStart) THEN // don't change it if it's word start
- ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- IF nextPh(**) OR nextPh(w) OR nextPh(j) THEN
- ELSE
- ChangePhoneme(d)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(d)
- ENDIF
- WAV(ustop/t_dnt2, 60)
- endphoneme
-
- phoneme k
- vls vel stp
- lengthmod 2
- voicingswitch g
- 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 thisPh(isWordStart) THEN // don't change it if it's word start
- ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- IF nextPh(w) OR nextPh(j) THEN
- ELIF nextPh(n) OR nextPh(d) OR nextPh(z) THEN
- ChangePhoneme(g)
- ELIF thisPh(isWordEnd) THEN
- ChangePhoneme(g)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(g)
- ENDIF
- WAV(ustop/k_unasp, 70)
- endphoneme
-
- phoneme tS
- vls pla afr sib
- voicingswitch dZ
- lengthmod 2
- Vowelin f1=0 f2=2300 200 400 f3=-100 80
-
- IF thisPh(isWordEnd) AND nextPh(isVoiced) THEN
- ChangePhoneme(dZ)
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(dZ)
- ENDIF
- WAV(ustop/tsh)
- endphoneme
|