123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- // Phonemes for Malayalam
- // This inherits from ph_hindi
- phoneme @
- vwl starttype #@ endtype #@
- length 130
- FMT(vowel/@_low)
- endphoneme
- phoneme y // epenthetic vowel
- vwl starttype #@ endtype #@
- unstressed
- ipa ɨ
- length 80
- FMT(vowel/u#_4, 120)
- endphoneme
- phoneme a
- vwl starttype #a endtype #a
- ipa ɐ
- length 130
- IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN
- FMT(vowel/a#_4)
- ELSE
- ChangeIfUnstressed(@)
- IF nextPh(m) AND nextPh(isWordEnd) THEN
- ChangePhoneme(@)
- ENDIF
- FMT(vowel/a#_3)
- ENDIF
- endphoneme
- phoneme a# // don't reduce to [@]
- vwl starttype #a endtype #a
- ChangePhoneme(a)
- endphoneme
- phoneme a:
- vwl lng starttype #a endtype #a
- length 300
- FMT(vowel/a_5)
- endphoneme
- phoneme e
- vwl starttype #e endtype #e
- length 130
- FMT(vowel/e)
- endphoneme
- phoneme e:
- vwl lng starttype #e endtype #e
- length 270
- FMT(vowel/e)
- endphoneme
- phoneme i
- vwl starttype #i endtype #i
- length 130
- FMT(vowel/i_6)
- endphoneme
- phoneme I
- vwl starttype #i endtype #i
- length 130
- FMT(vowel/ii)
- endphoneme
- phoneme i:
- vwl lng starttype #i endtype #i
- length 270
- FMT(vowel/i)
- endphoneme
- phoneme o
- vwl starttype #o endtype #o
- length 130
- FMT(vowel/o)
- endphoneme
- phoneme o:
- vwl lng starttype #o endtype #o
- length 300
- FMT(vowel/o)
- endphoneme
- phoneme u
- vwl starttype #u endtype #u
- length 110
- FMT(vowel/u)
- endphoneme
- phoneme u:
- vwl lng starttype #u endtype #u
- length 280
- FMT(vowel/u)
- endphoneme
- phoneme aI
- vwl lng starttype #a endtype #i
- length 280
- FMT(vdiph/ai)
- endphoneme
- phoneme aU
- vwl lng starttype #a endtype #u
- length 270
- FMT(vdiph/aau_3)
- endphoneme
- // ?? This is standard [v]. Should be it [v] without the fricative noise?
- phoneme v
- import_phoneme base1/v
- endphoneme
- phoneme r
- import_phoneme base1/**
- endphoneme
- phoneme R
- import_phoneme base1/R2
- endphoneme
- phoneme d2 // 'rr' sounds like English 'd'
- import_phoneme base1/d
- endphoneme
- // Aspirated voice stops, sound like aspirated unvoiced stops ?
- phoneme b#
- vls blb stp prevoice
- 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 PreVoicing THEN
- IF prevPhW(isVowel) THEN
- FMT(b/xb)
- ELSE
- FMT(voc/murmur1)
- ENDIF
- ENDIF
- IF nextPh(isPause2) THEN
- WAV(ustop/p_)
- ENDIF
- IF nextPh(l) THEN
- WAV(ustop/pl)
- ENDIF
- WAV(ustop/p_asp)
- endphoneme
- phoneme d#
- vls dnt stp prevoice
- lengthmod 2
- voicingswitch d
- Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16
- Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
- IF PreVoicing THEN
- IF prevPhW(isVowel) THEN
- FMT(d/xd)
- ELSE
- FMT(voc/murmur1)
- ENDIF
- ENDIF
- IF nextPh(isPause2) THEN
- WAV(ustop/t_dnt, 35)
- ENDIF
- WAV(ustop/t_dnt, 50)
- endphoneme
- phoneme t.#
- vls rfx stp
- lengthmod 2
- ipa ʈU+02B0
- voicingswitch d.#
- Vowelin f1=0 f2=1800 -300 300 f3=-200 80
- Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
-
- IF nextPhW(t.#) THEN
- ChangePhoneme(t.)
- ENDIF
- WAV(ustop/th_rfx2, 80)
- endphoneme
- phoneme d.#
- vls rfx stp prevoice
- lengthmod 2
- ipa ʈU+02B0
- Vowelin f1=0 f2=1800 -300 300 f3=-200 80
- Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
- IF PreVoicing THEN
- IF prevPhW(isVowel) THEN
- FMT(d/xdr)
- ELSE
- FMT(voc/murmur1)
- ENDIF
- ENDIF
- voicingswitch d.#
- WAV(ustop/th_rfx2, 80)
- endphoneme
- phoneme J#
- vls pal afr sib pzd prevoice
- voicingswitch c#
- lengthmod 2
- Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
- IF PreVoicing THEN
- IF prevPhW(isVowel) THEN
- FMT(dzh/xdz_pzd)
- ELSE
- FMT(voc/murmur1)
- ENDIF
- ENDIF
- IF nextPh(isPause2) THEN
- WAV(ustop/ts_pzd)
- ENDIF
- WAV(ustop/ts_pzd)
- endphoneme
- phoneme g#
- vls vel stp prevoice
- lengthmod 2
- Vowelin f1=1 f2=1400 -100 100 f3=-150 80
- Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
- IF PreVoicing THEN
- IF prevPhW(isVowel) THEN
- FMT(g/xg)
- ELSE
- FMT(voc/murmur1)
- ENDIF
- ENDIF
-
- IF nextPh(isPause2) THEN
- WAV(ustop/k_asp, 40)
- ENDIF
- IF nextPhW(#e) OR nextPhW(#i) THEN
- WAV(ustop/k_asp_e, 40)
- ELIF nextPhW(#o) OR nextPhW(#u) THEN
- WAV(ustop/k_asp_a, 25)
- ELSE
- WAV(ustop/k_asp_a, 30)
- ENDIF
- endphoneme
- // suggested by Prasenjit Sen, but perhaps not needed?
- // ml_rules changes [p], [t], [k] to [b], [d], [g] in non-initial
- // positions
- phoneme p
- import_phoneme consonants/p-
- voicingswitch b
- IF thisPh(isWordStart) THEN
- CALL base1/p
- ELIF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
- ChangePhoneme(b)
- ENDIF
- endphoneme
- phoneme t
- import_phoneme base1/t[
- voicingswitch d
- IF thisPh(isWordStart) THEN
- CALL base1/t
- ELIF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
- ChangePhoneme(d)
- ENDIF
- endphoneme
- phoneme k
- import_phoneme consonants/k-
- voicingswitch g
- IF thisPh(isWordStart) THEN
- CALL base1/k
- ELIF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
- ChangePhoneme(g)
- ENDIF
- endphoneme
|