| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 | 
//====================================================
//  Setswana phoneme file
//  maitained by: Sternly K Simon
//  email: [email protected]
//====================================================
phoneme l      // use dark [l/2] before not-vowel
  liquid
  lengthmod 7
  IF nextPhW(isVowel) THEN
  ELSE
    IF prevPh(isNotVowel) THEN
      ChangePhoneme(l/)
    ELSE
      ChangePhoneme(l/2)
    ENDIF
  ENDIF
  CALL base1/l
endphoneme
phoneme r-   // linking r, used in Setswana between certain vowels and a following vowel
  liquid rhotic
  ipa ɹ
  lengthmod 0
  NextVowelStarts
    VowelStart(r2/r2@)
    VowelStart(r2/r2a)
    VowelStart(r2/r2e)
    VowelStart(r2/r2i)
    VowelStart(r2/r2o)
    VowelStart(r2/r2u)
  EndSwitch
  IF prevPh(isVowel) THEN
    VowelEnding(r/xr, -60)
  ENDIF
  FMT(r/r)
endphoneme
// Default vowel definitions
phoneme @
  vwl starttype #@ endtype #@
  unstressed
  length 140
  IF nextPh(r/) THEN
    length 190
    FMT(vwl_tn/r@)
  ENDIF
  FMT(vwl_tn/@)
endphoneme  // Vowels
// VOWELS
//****************************************************************
phoneme i
  vwl starttype #i endtype #i
  length 170
  FMT(vowel/ii)
endphoneme
phoneme I
  vwl  starttype #i  endtype #i
  length 130
  IfNextVowelAppend(;)
  FMT(vwl_tn/I)
endphoneme
phoneme I2
  vwl  starttype #i  endtype #i
  unstressed
  length 130
  IfNextVowelAppend(;)
  FMT(vowel/ii_4)
endphoneme
phoneme e
  vwl starttype #e endtype #e
  length 180
  ChangeIfUnstressed(l)
  FMT(vowel/ee#_2)
endphoneme
phoneme e@    // long E
  vwl  starttype #i  endtype #@
  ipa iə
  length 230
  IfNextVowelAppend(r-)
  FMT(vdiph/i@_2)
endphoneme
phoneme E
  vwl  starttype #e  endtype #e
  unstressed
  length 140
  ChangeIfDiminished(I2)
  FMT(vowel/ee_5)
endphoneme
phoneme a
  vwl starttype #a endtype #a
  ipa a
  length 180
  FMT(vowel/a_5)
endphoneme
phoneme A@     // Used for [A:] when followed by 'r'
  vwl  starttype #a  endtype #a
  ipa ɑː
  length 230
  IfNextVowelAppend(r-)
  FMT(vowel/aa_2)
endphoneme
phoneme O     // short O
  vwl  starttype #o   endtype #o
  length 140
  FMT(vowel/oo_1)
endphoneme
phoneme o
  vwl starttype #o endtype #o
  length 180
  ChangeIfUnstressed(U)
  FMT(vowel/0_2)
endphoneme
phoneme u
  vwl starttype #u endtype #u
  length 170
  FMT(vowel/u_5)
endphoneme
phoneme U
  vwl  starttype #o  endtype #o
  length 150
  FMT(vowel/uu)
endphoneme
// Consonants
//=================================================
phoneme l
  import_phoneme en/l
endphoneme
phoneme ts
  vls alv afr sib
//  voicingswitch dz
  lengthmod 2
  Vowelin f1=0  f2=1700 -300 300  f3=-100 80
  Vowelout f1=0 f2=1700 -300 250  f3=-100 80  rms=20
  IF nextPh(isPause2) THEN
    WAV(ustop/ts_)
  ENDIF
  WAV(ustop/ts)
endphoneme
phoneme d       // dental variant of /d/
  import_phoneme base2/d
endphoneme
phoneme kh
  vls vel stp
  lengthmod 2
  voicingswitch g
  Vowelin f1=0  f2=2300 200 300  f3=-150 80
  Vowelout f1=0 f2=2300 300 400  f3=-150 80  rms=20
  IF nextPh(isPause2) THEN
    WAV(ustop/k_asp, 50)
  ENDIF
  IF nextPh(l) THEN
    WAV(ustop/kl)
  ENDIF
  WAV(ustop/k_asp, 90)
endphoneme
phoneme k-  // unaspirated
  vls vel stp
  lengthmod 2
  voicingswitch g
  Vowelin f1=0  f2=2300 200 300  f3=-150 80
  Vowelout f1=0 f2=2300 300 400  f3=-150 80  rms=20
  IF nextPh(isPause2) THEN
    WAV(ustop/k_unasp, 50)
  ENDIF
  WAV(ustop/k_unasp, 60)   // weaker
endphoneme
phoneme K   // Setswna tlh sound
  vls alv frc
  lengthmod 3
  NextVowelStarts
    VowelStart(l/l@)
    VowelStart(l/la)
    VowelStart(l/le)
    VowelStart(l/li, -10)
    VowelStart(l/lo)
    VowelStart(l/lu)
  EndSwitch
  IF prevPh(isVowel) THEN
    VowelEnding(l/xl, -40)
  ENDIF
  WAV(ufric/tlh, 80)
endphoneme
phoneme ph  // aspirated
  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_)
  ENDIF
  IF nextPh(r) THEN
    WAV(ustop/pr)
  ENDIF
  IF nextPh(l) THEN
    WAV(ustop/pl)
  ENDIF
  WAV(ustop/p_asp)
endphoneme
phoneme r
  liquid rhotic trl
  lengthmod 6
  Vowelin  f1=2  f2=2700 -300 -200  f3=-1300 80  
  Vowelout f1=2  f2=1700 -300 -200  f3=-1300 80
  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
  FMT(r3/r_trill) addWav(r3/r_trill3.wav, 100)
endphoneme
phoneme r/   // used for [r] when not preceding a vowel
  liquid
  lengthmod 7
  IF prevPh(@) OR prevPh(I) THEN
  ELSE
    FMT(r3/r_) addWav(r3/rx)
  ENDIF
endphoneme
phoneme t        // dental variant of /t/
  import_phoneme base2/t
endphoneme
phoneme tS
  vls pla afr sib
  voicingswitch dZ
  lengthmod 2
  Vowelin f1=0  f2=2300 200 400  f3=-100 80
  IF nextPh(isPause2) THEN
    WAV(ustop/tsh_)
  ENDIF
  WAV(ustop/tsh)
endphoneme
phoneme tS;
  vls alp sib afr
  voicingswitch dZ;
  ipa tɕ
  lengthmod 2
  Vowelin f1=0  f2=2700 400 600  f3=300 80 rate len=70
  IF nextPh(isPause2) THEN
    WAV(ustop/ts_pzd)
  ENDIF
  WAV(ustop/ts_pzd)
endphoneme
 |