|
|
@@ -0,0 +1,730 @@ |
|
|
|
// ph_pashto - Phoneme table for Pashto language |
|
|
|
// Created: March 2025 by Hanif Rahman |
|
|
|
// Updated: March 2025 - Fixed vowel formants, improved retroflex consonants, corrected stress patterns |
|
|
|
// This file defines phonemes specific to Pashto language |
|
|
|
|
|
|
|
|
|
|
|
//==================================================== |
|
|
|
// VOWELS |
|
|
|
//==================================================== |
|
|
|
|
|
|
|
phoneme a // َ (zabar/fatha) - short 'a' as in "man" |
|
|
|
vwl starttype #a endtype #a |
|
|
|
length 180 |
|
|
|
ipa a |
|
|
|
FMT(vowel/a) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme a: // ا - long 'aa' as in "father" |
|
|
|
vwl starttype #a endtype #a |
|
|
|
length 280 |
|
|
|
ipa aː |
|
|
|
FMT(vowel/a) // Keeping formant consistent with short 'a' |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme e // ِ (zer/kasra) - short 'e' as in "bed" "ketab" |
|
|
|
vwl starttype #e endtype #e |
|
|
|
length 170 |
|
|
|
ipa e |
|
|
|
FMT(vowel/e) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme e: // ې - long 'ee' as in "bait" "peshawar" |
|
|
|
vwl starttype #e endtype #e |
|
|
|
length 250 |
|
|
|
ipa eː |
|
|
|
FMT(vowel/e_mid) // Using e_mid for better long vowel quality |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme i // ِ (zer/kasra) - short 'i' as in "sit" same as e? |
|
|
|
vwl starttype #i endtype #i |
|
|
|
length 170 |
|
|
|
ipa i |
|
|
|
IfNextVowelAppend(;) |
|
|
|
FMT(vowel/i) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme i: // ي - long 'ee' as in "see" |
|
|
|
vwl starttype #i endtype #i |
|
|
|
length 250 |
|
|
|
ipa iː |
|
|
|
IfNextVowelAppend(;) |
|
|
|
FMT(vowel/i) // Using standard i vowel |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme o // ُ (pesh/damma) - short 'o' as in "pot" |
|
|
|
vwl starttype #o endtype #o |
|
|
|
length 170 |
|
|
|
ipa o |
|
|
|
FMT(vowel/o) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme o: // و - long 'o' as in "go" |
|
|
|
vwl starttype #o endtype #o |
|
|
|
length 250 |
|
|
|
ipa oː |
|
|
|
FMT(vowel/o) // Using standard o vowel |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme u // ُ (pesh/damma) - short 'u' as in "put" |
|
|
|
vwl starttype #u endtype #u |
|
|
|
length 170 |
|
|
|
ipa u |
|
|
|
FMT(vowel/u) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme u: // و - long 'oo' as in "moon" |
|
|
|
vwl starttype #u endtype #u |
|
|
|
length 250 |
|
|
|
ipa uː |
|
|
|
FMT(vowel/u) // Using standard u vowel |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme @ // ə - schwa sound as in "about" |
|
|
|
vwl starttype #@ endtype #@ |
|
|
|
length 130 |
|
|
|
ipa ə |
|
|
|
unstressed |
|
|
|
FMT(vowel/@) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
// Add unstressed variants of vowels for better prosody |
|
|
|
phoneme a# // َ (zabar/fatha) - unstressed short 'a' |
|
|
|
vwl starttype #a endtype #a |
|
|
|
length 140 // shorter than stressed version |
|
|
|
ipa a |
|
|
|
unstressed |
|
|
|
FMT(vowel/a_8) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme i# // ِ (zer/kasra) - unstressed short 'i' |
|
|
|
vwl starttype #i endtype #i |
|
|
|
length 130 // shorter than stressed version |
|
|
|
ipa i |
|
|
|
unstressed |
|
|
|
IfNextVowelAppend(;) |
|
|
|
FMT(vowel/i_6) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme u# // ُ (pesh/damma) - unstressed short 'u' |
|
|
|
vwl starttype #u endtype #u |
|
|
|
length 130 // shorter than stressed version |
|
|
|
ipa u |
|
|
|
unstressed |
|
|
|
FMT(vowel/u_6) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
//==================================================== |
|
|
|
// CONSONANTS SPECIFIC TO PASHTO |
|
|
|
//==================================================== |
|
|
|
|
|
|
|
phoneme ts |
|
|
|
// څ in Pashto - voiceless alveolar affricate |
|
|
|
vls alv afr |
|
|
|
lengthmod 2 |
|
|
|
ipa ts |
|
|
|
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 |
|
|
|
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 |
|
|
|
WAV(ustop/ts) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme dz |
|
|
|
// ځ in Pashto - voiced alveolar affricate |
|
|
|
vcd alv afr |
|
|
|
lengthmod 5 |
|
|
|
ipa dz |
|
|
|
voicingswitch ts |
|
|
|
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 |
|
|
|
Vowelout f1=1 f2=1700 -300 300 f3=-100 80 brk |
|
|
|
WAV(ustop/ts) addWav(x/d, 70) // Using standard WAV files |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme t. |
|
|
|
// ټ in Pashto - retroflex/plosive t |
|
|
|
vls rfx stp |
|
|
|
lengthmod 2 |
|
|
|
ipa ʈ |
|
|
|
voicingswitch d. |
|
|
|
Vowelin f1=0 f2=1800 -300 300 f3=-200 80 colr=2 |
|
|
|
Vowelout f1=0 f2=1800 -300 250 f3=-200 80 colr=2 rms=20 |
|
|
|
WAV(ustop/t_) // Using standard t_ WAV |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme d. |
|
|
|
// ډ in Pashto - retroflex/plosive d |
|
|
|
vcd rfx stp |
|
|
|
lengthmod 5 |
|
|
|
ipa ɖ |
|
|
|
voicingswitch t. |
|
|
|
Vowelin f1=2 f2=1800 -300 300 f3=-200 80 colr=2 |
|
|
|
Vowelout f1=2 f2=1800 -300 300 f3=-200 80 colr=2 brk |
|
|
|
WAV(ustop/t_) addWav(x/d, 60) // Using standard WAV files |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme r. |
|
|
|
// ړ in Pashto - retroflex flap |
|
|
|
vcd rfx flp |
|
|
|
lengthmod 6 |
|
|
|
ipa ɽ |
|
|
|
Vowelin f1=3 f2=1200 -400 -100 f3=-400 80 colr=2 |
|
|
|
Vowelout f1=3 f2=1200 -400 -100 f3=-400 80 colr=2 |
|
|
|
FMT(r3/r_) addWav(r3/rx, 80) // Using standard FMT |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme n. |
|
|
|
// ڼ in Pashto - retroflex nasal |
|
|
|
vcd rfx nas |
|
|
|
lengthmod 4 |
|
|
|
ipa ɳ |
|
|
|
Vowelin f1=2 f2=1200 -500 -300 f3=-400 80 colr=2 |
|
|
|
Vowelout f1=2 f2=1200 -500 -300 f3=-400 80 colr=2 |
|
|
|
FMT(n/n_) // Using standard FMT |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme S. |
|
|
|
// ښ in Pashto - retroflex fricative |
|
|
|
vls rfx frc sib |
|
|
|
lengthmod 3 |
|
|
|
ipa ʂ |
|
|
|
voicingswitch Z. |
|
|
|
Vowelin f1=0 f2=1800 -100 300 f3=-400 80 colr=2 |
|
|
|
Vowelout f1=0 f2=1800 -100 300 f3=-400 80 colr=2 |
|
|
|
WAV(ufric/sh) // Using standard sh WAV |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme Z. |
|
|
|
// ژ in Pashto - voiced retroflex fricative |
|
|
|
vcd rfx frc sib |
|
|
|
lengthmod 6 |
|
|
|
ipa ʐ |
|
|
|
voicingswitch S. |
|
|
|
Vowelin f1=0 f2=1800 0 300 f3=-400 80 colr=2 |
|
|
|
Vowelout f1=2 f2=1800 0 300 f3=-400 80 colr=2 brk |
|
|
|
FMT(voc/zh) addWav(vocw/zh, 110) // Using standard zh WAV |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme Z |
|
|
|
// ژ in Pashto - voiced post-alveolar fricative (like French j) |
|
|
|
vcd pla frc sib |
|
|
|
lengthmod 6 |
|
|
|
ipa ʒ |
|
|
|
voicingswitch S |
|
|
|
Vowelin f1=0 f2=2000 0 300 f3=-200 80 |
|
|
|
Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk |
|
|
|
FMT(voc/zh) addWav(vocw/zh, 130) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme Q |
|
|
|
// غ in Pashto - voiced uvular fricative |
|
|
|
vcd uvl frc |
|
|
|
lengthmod 6 |
|
|
|
ipa ʁ |
|
|
|
voicingswitch X |
|
|
|
Vowelin f1=2 f2=1000 -500 -350 f3=-200 80 |
|
|
|
Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk |
|
|
|
FMT(voc/Q) addWav(vocw/Q, 60) // Increased WAV amplitude for better voicing |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme X |
|
|
|
// خ in Pashto - voiceless uvular fricative |
|
|
|
vls uvl frc |
|
|
|
lengthmod 3 |
|
|
|
ipa χ |
|
|
|
voicingswitch Q |
|
|
|
Vowelin f1=0 f2=1000 -500 -350 f3=-200 80 |
|
|
|
Vowelout f1=0 f2=1000 -500 -350 f3=-200 80 |
|
|
|
WAV(ufric/xx, 90) // Adjusted amplitude for better contrast with Q |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme g |
|
|
|
// ګ in Pashto - voiced velar stop |
|
|
|
vcd vel stp |
|
|
|
lengthmod 5 |
|
|
|
ipa ɡ |
|
|
|
voicingswitch k |
|
|
|
Vowelin f1=2 f2=2300 200 300 f3=-300 80 |
|
|
|
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk |
|
|
|
IF PreVoicing THEN |
|
|
|
FMT(g/xg) |
|
|
|
ENDIF |
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
FMT(g/g_) addWav(x/g_) |
|
|
|
ENDIF |
|
|
|
FMT(g/g) addWav(x/g2, 150) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
//==================================================== |
|
|
|
// CONSONANTS SHARED WITH OTHER LANGUAGES |
|
|
|
//==================================================== |
|
|
|
|
|
|
|
phoneme p |
|
|
|
vls blb stp |
|
|
|
voicingswitch b |
|
|
|
lengthmod 2 |
|
|
|
ipa p |
|
|
|
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 |
|
|
|
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 |
|
|
|
WAV(ustop/p) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme b |
|
|
|
vcd blb stp |
|
|
|
voicingswitch p |
|
|
|
lengthmod 5 |
|
|
|
ipa b |
|
|
|
Vowelin f1=2 f2=1000 -500 -300 f3=-300 80 |
|
|
|
Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk |
|
|
|
IF PreVoicing THEN |
|
|
|
FMT(b/xb) |
|
|
|
ENDIF |
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
FMT(b/b_) addWav(x/b_) |
|
|
|
ENDIF |
|
|
|
FMT(b/b) addWav(x/b) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme t |
|
|
|
vls alv stp |
|
|
|
voicingswitch d |
|
|
|
lengthmod 2 |
|
|
|
ipa t |
|
|
|
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 |
|
|
|
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 |
|
|
|
WAV(ustop/t) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme d |
|
|
|
vcd alv stp |
|
|
|
voicingswitch t |
|
|
|
lengthmod 5 |
|
|
|
ipa d |
|
|
|
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 |
|
|
|
Vowelout f1=1 f2=1700 -300 300 f3=-100 80 brk |
|
|
|
IF PreVoicing THEN |
|
|
|
FMT(d/xd) |
|
|
|
ENDIF |
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
FMT(d/d_) addWav(x/d_) |
|
|
|
ENDIF |
|
|
|
FMT(d/d) addWav(x/d) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme k |
|
|
|
vls vel stp |
|
|
|
voicingswitch g |
|
|
|
lengthmod 2 |
|
|
|
ipa k |
|
|
|
Vowelin f1=0 f2=2300 200 300 f3=-200 80 |
|
|
|
Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20 |
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
WAV(ustop/k_) |
|
|
|
ENDIF |
|
|
|
WAV(ustop/k) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme tS |
|
|
|
// چ in Pashto - voiceless post-alveolar affricate |
|
|
|
vls pla afr sib |
|
|
|
voicingswitch dZ |
|
|
|
lengthmod 2 |
|
|
|
ipa t͡ʃ |
|
|
|
Vowelin f1=0 f2=2300 200 400 f3=-100 80 |
|
|
|
Vowelout f1=0 f2=2300 300 400 f3=-100 80 |
|
|
|
WAV(ustop/tsh) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme dZ |
|
|
|
// ج in Pashto - voiced post-alveolar affricate |
|
|
|
vcd pla afr sib |
|
|
|
voicingswitch tS |
|
|
|
lengthmod 5 |
|
|
|
ipa d͡ʒ |
|
|
|
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 f |
|
|
|
vls lbd frc |
|
|
|
voicingswitch v |
|
|
|
lengthmod 3 |
|
|
|
ipa f |
|
|
|
Vowelin f1=0 f2=1000 -500 -350 f3=-200 80 |
|
|
|
Vowelout f1=0 f2=1000 -500 -350 f3=-200 80 |
|
|
|
WAV(ufric/f) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme v |
|
|
|
vcd lbd frc |
|
|
|
voicingswitch f |
|
|
|
lengthmod 6 |
|
|
|
ipa v |
|
|
|
Vowelin f1=0 f2=1000 -300 -200 f3=-300 100 |
|
|
|
Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 |
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
FMT(voc/v_) addWav(vocw/v) |
|
|
|
ENDIF |
|
|
|
FMT(voc/v) addWav(vocw/v) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme s |
|
|
|
vls alv frc sib |
|
|
|
voicingswitch z |
|
|
|
lengthmod 3 |
|
|
|
ipa s |
|
|
|
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 |
|
|
|
Vowelout f1=0 f2=1700 -300 300 f3=-100 80 |
|
|
|
WAV(ufric/s) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme z |
|
|
|
vcd alv frc sib |
|
|
|
voicingswitch s |
|
|
|
lengthmod 6 |
|
|
|
ipa z |
|
|
|
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 |
|
|
|
Vowelout f1=0 f2=1700 -300 300 f3=-100 80 brk |
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
FMT(voc/z_) addWav(ufric/s_, 70) |
|
|
|
ENDIF |
|
|
|
FMT(voc/z) addWav(ufric/s_, 85) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme S |
|
|
|
vls pla frc sib |
|
|
|
voicingswitch Z |
|
|
|
lengthmod 3 |
|
|
|
ipa ʃ |
|
|
|
Vowelin f1=0 f2=2100 100 300 f3=-100 80 |
|
|
|
Vowelout f1=0 f2=2100 100 300 f3=-100 80 |
|
|
|
WAV(ufric/sh) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme x |
|
|
|
vls vel frc |
|
|
|
voicingswitch Q |
|
|
|
lengthmod 3 |
|
|
|
ipa x |
|
|
|
Vowelin f1=0 f2=2300 200 400 f3=-200 80 |
|
|
|
Vowelout f1=0 f2=2300 300 400 f3=-200 80 |
|
|
|
WAV(ufric/x_hr, 30) // Increased amplitude for better clarity |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme h |
|
|
|
vls glt frc |
|
|
|
lengthmod 3 |
|
|
|
ipa h |
|
|
|
Vowelin f1=0 f2=2300 200 400 f3=-200 80 // Added Vowelin parameters |
|
|
|
Vowelout f1=0 f2=2300 300 400 f3=-200 80 |
|
|
|
IF nextPh(#@) THEN |
|
|
|
WAV(h/h@) |
|
|
|
ELIF nextPh(#a) THEN |
|
|
|
WAV(h/ha) |
|
|
|
ELIF nextPh(#e) THEN |
|
|
|
WAV(h/he) |
|
|
|
ELIF nextPh(#i) THEN |
|
|
|
WAV(h/hi) |
|
|
|
ELIF nextPh(#o) THEN |
|
|
|
WAV(h/ho) |
|
|
|
ELIF nextPh(#u) THEN |
|
|
|
WAV(h/hu) |
|
|
|
ENDIF |
|
|
|
WAV(h/h_, 70) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme m |
|
|
|
vcd blb nas |
|
|
|
lengthmod 4 |
|
|
|
ipa m |
|
|
|
Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 // Moved Vowelin before Vowelout for consistency |
|
|
|
Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk |
|
|
|
|
|
|
|
IF KlattSynth THEN |
|
|
|
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 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 |
|
|
|
lengthmod 4 |
|
|
|
ipa n |
|
|
|
Vowelin f1=0 f2=1500 -200 200 f3=0 80 // Moved Vowelin before Vowelout for consistency |
|
|
|
Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk |
|
|
|
|
|
|
|
IF KlattSynth THEN |
|
|
|
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 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 N |
|
|
|
vcd vel nas |
|
|
|
lengthmod 8 |
|
|
|
ipa ŋ |
|
|
|
Vowelin f1=0 f2=2100 50 300 f3=0 80 // Moved Vowelin before Vowelout for consistency |
|
|
|
Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk |
|
|
|
|
|
|
|
IF KlattSynth THEN |
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
FMT(klatt/nn_) |
|
|
|
ENDIF |
|
|
|
FMT(klatt/nn) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
NextVowelStarts |
|
|
|
VowelStart(nn/nn@) |
|
|
|
VowelStart(nn/nna) |
|
|
|
VowelStart(nn/nne) |
|
|
|
VowelStart(nn/nni) |
|
|
|
VowelStart(nn/nno) |
|
|
|
VowelStart(nn/nnu) |
|
|
|
EndSwitch |
|
|
|
|
|
|
|
IF prevPh(#i) THEN |
|
|
|
VowelEnding(nn/inn, -40) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN |
|
|
|
FMT(nn/nnj) |
|
|
|
ELIF prevPh(isPause) THEN |
|
|
|
FMT(nn/_nn) |
|
|
|
ELIF nextPh(isNotVowel) THEN |
|
|
|
FMT(nn/nn_) |
|
|
|
ENDIF |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme l |
|
|
|
liquid |
|
|
|
lengthmod 7 |
|
|
|
ipa l |
|
|
|
|
|
|
|
IF nextPh(isNotVowel) THEN |
|
|
|
ChangePhoneme(l/) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
CALL vowelstart_l |
|
|
|
|
|
|
|
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) // double l, make it longer |
|
|
|
ENDIF |
|
|
|
|
|
|
|
FMT(l/l) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme l/ |
|
|
|
liquid |
|
|
|
lengthmod 7 |
|
|
|
ipa l̥ |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
IF prevPhW(j) THEN |
|
|
|
FMT(l/L1_eL) |
|
|
|
ENDIF |
|
|
|
IF prevPhW(w) THEN |
|
|
|
FMT(l/L1_eL) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
FMT(l/l_) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme r |
|
|
|
liquid rhotic |
|
|
|
lengthmod 7 |
|
|
|
ipa r |
|
|
|
|
|
|
|
IF nextPh(isNotVowel) THEN |
|
|
|
ChangePhoneme(r/) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
NextVowelStarts |
|
|
|
VowelStart(r/r@, -15) |
|
|
|
VowelStart(r/ra, -15) |
|
|
|
VowelStart(r/re, -15) |
|
|
|
VowelStart(r/ri, -15) |
|
|
|
VowelStart(r/ro, -15) |
|
|
|
VowelStart(r/ru, -15) |
|
|
|
EndSwitch |
|
|
|
|
|
|
|
IF prevPh(isVowel) THEN |
|
|
|
VowelEnding(r/xr, -50) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
IF prevPh(isPause) THEN |
|
|
|
FMT(r/_r) |
|
|
|
ELIF prevPh(t) OR prevPh(p) OR prevPh(k) THEN |
|
|
|
FMT(r/tr) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
FMT(r/r) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme r/ |
|
|
|
liquid rhotic |
|
|
|
lengthmod 2 |
|
|
|
ipa r̥ |
|
|
|
|
|
|
|
IF prevPh(t) OR prevPh(p) OR prevPh(k) THEN |
|
|
|
FMT(r/trr) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
IF prevPh(isNotVowel) THEN |
|
|
|
FMT(r/rr) |
|
|
|
ENDIF |
|
|
|
|
|
|
|
FMT(r3/r_) addWav(r3/rx) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme j |
|
|
|
liquid pal starttype #i |
|
|
|
lengthmod 7 |
|
|
|
ipa j |
|
|
|
|
|
|
|
IF nextPhW(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) |
|
|
|
ENDIF |
|
|
|
ELSE |
|
|
|
// no vowel follows |
|
|
|
Vowelout len=70 |
|
|
|
FMT(j/j_) |
|
|
|
ENDIF |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme w |
|
|
|
liquid |
|
|
|
lengthmod 7 |
|
|
|
starttype #u |
|
|
|
ipa w |
|
|
|
|
|
|
|
IF nextPh(isVowel) THEN |
|
|
|
NextVowelStarts |
|
|
|
VowelStart(w/w@) |
|
|
|
VowelStart(w/wa) |
|
|
|
VowelStart(w/we) |
|
|
|
VowelStart(w/wi) |
|
|
|
VowelStart(w/wo) |
|
|
|
VowelStart(w/wu) |
|
|
|
EndSwitch |
|
|
|
|
|
|
|
VowelEnding(w/xw, -30) |
|
|
|
|
|
|
|
IF prevPhW(isNasal) THEN |
|
|
|
FMT(w/w) |
|
|
|
ELSEIF prevPhW(h) THEN |
|
|
|
// none, [hw] |
|
|
|
ELSE |
|
|
|
FMT(w/_w) |
|
|
|
ENDIF |
|
|
|
ELSE |
|
|
|
// no vowel follows |
|
|
|
Vowelout len=50 |
|
|
|
IF prevPh(#i) THEN |
|
|
|
FMT(w/iw_) |
|
|
|
ENDIF |
|
|
|
FMT(w/w_) |
|
|
|
ENDIF |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme q |
|
|
|
vls uvl stp |
|
|
|
lengthmod 2 |
|
|
|
ipa q |
|
|
|
Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 |
|
|
|
Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 |
|
|
|
|
|
|
|
IF nextPh(isPause2) THEN |
|
|
|
WAV(ustop/q, 40) |
|
|
|
ELIF nextPh(#u) THEN |
|
|
|
WAV(ustop/q_u, 80) |
|
|
|
ENDIF |
|
|
|
WAV(ustop/q, 48) |
|
|
|
endphoneme |
|
|
|
|
|
|
|
phoneme ? |
|
|
|
vls glt stp |
|
|
|
lengthmod 3 |
|
|
|
ipa ʔ |
|
|
|
nolink |
|
|
|
Vowelin glstop |
|
|
|
Vowelout glstop |
|
|
|
WAV(ustop/null) |
|
|
|
endphoneme |