
// This is the master phoneme file.


// These are fixed phoneme code numbers, which can be used
// directly within the program.
phonemenumber 1 <
phonemenumber 2 %%
phonemenumber 3 %
phonemenumber 4 ,
phonemenumber 5 ,,
phonemenumber 6 '
phonemenumber 7 +
phonemenumber 8 =       //  stress previous syllable
phonemenumber 9 _:      //  pause
phonemenumber 10 _      //  short pause
phonemenumber 10 _      //  short pause
phonemenumber 12 :
phonemenumber 13 @
phonemenumber 14 @-
phonemenumber 15 ||
phonemenumber 16 (r)
phonemenumber 17 1      // (numeral 1)  default tone (for tone language)
phonemenumber 18 (X1)   // capital letter indication
phonemenumber 19 ?      // glottal stop
phonemenumber 20 -      // syllabic consonant
phonemenumber 21 _^_    //  Change language


// The base phoneme table contains the utility phonemes, the consonants,
// and a schwa.  The vowels are defined in the language specific phoneme
// tables, which can also redefine consonants if they wish.


//*******************************************************************
// UTILITY PHONEMES
//*******************************************************************

phoneme <   //  Start of control string
  pause
  length 0
  lengthmod 1
endphoneme

phoneme %%  //  Unstressed
  stress
  length 0
endphoneme

phoneme %   //  Diminished stress
  stress
  length 1
endphoneme

phoneme ,   //  Secondary stress
  stress
  length 2
endphoneme

phoneme ,,  //  Secondary stress
  stress
  length 3
endphoneme

phoneme '   //  Primary stress
  stress
  length 4
endphoneme

phoneme +   //  Tonic stress on the following word
  stress
  length 5
endphoneme

phoneme =   //  Place stress on previous vowel
  stress
  length 2
endphoneme

phoneme ||  //   End Word
  pause
  length 0
  lengthmod 1
endphoneme

phoneme _   //  Short pause
  pause
//  vowelout len=50 rms=16
  formants NULL
  starttype _ endtype _
  length 25
  lengthmod 1
endphoneme

phoneme _! //   Short pause, don't replace by linking
  pause
  formants NULL
  starttype _ endtype _
  length 25
  lengthmod 1
  nolink
endphoneme

phoneme _:   //   Standard pause
  pause
  formants NULL
  starttype _ endtype _
  length 75
  lengthmod 1
endphoneme

phoneme _::  //   Long pause
  pause
  formants NULL
  starttype _ endtype _
  length 150
  lengthmod 1
endphoneme

phoneme  _^_  //  Change dictionary (followed by language-code in ascii
  pause
  starttype _ endtype _
  length 10
  lengthmod 1
endphoneme 

phoneme ?  // glottal stop
  pause
  vowelin  glstop
  vowelout glstop
  formants NULL
  starttype _ endtype _
  length 45
  lengthmod 5   // ??
  nolink
endphoneme


phoneme : //  Lengthen previous vowel by "length"
  virtual
  length 60
endphoneme

phoneme - //  Indicates the previous phoneme is a syllabic consonant
  virtual
  length 0
endphoneme


phoneme @    //  Schwa
  vowel   starttype (@)  endtype (@)
  formants vowel/@
  unstressed
  linkout r-
  length 140
endphoneme


phoneme @-   //  very short schwa for letter sounds
  vowel  starttype (@)  endtype (@)
  formants vowel/@-
  unstressed
  linkout r-
  length 60
endphoneme


//*******************************************************************
// Other sounds
//*******************************************************************

phoneme (X1)  // click, use for indicating capital letters
  vls alv frc sibilant
  lengthmod 3
  wave unvoc/percus10
endphoneme


//*******************************************************************
// VIRTUAL - referred to in vowels'   vowel  starttype and endtype
// These each apply to a class of vowels
//*******************************************************************

phoneme (@)  virtual
  after  j j/j@
  after  ; j2/j2@
  after  w w/w@
  after  l l/l@
  after  L l/l@
  after  r r/r@-15
  after  r- r2/r2@
  after  m m/m@
  after  n n/n@
  after  N N/N@
  after  n^ n^/n^@
  before l/ DFT-60+L/@L
  before l DFT-50+l/xl
  before w DFT-30+w/xw
  before j DFT-30+j/xj
  before r DFT-50+r/xr
  before r- DFT-60+r/xr
  before r/ DFT+r3/r_@
endphoneme

phoneme (a)  virtual
  after  j j/ja
  after  ; j2/j2a
  after  w w/wa
  after  l l/la
  after  L l/la
  after  r r/ra-15
  after  r- r2/r2a
  after  m m/ma  n n/na  N N/Na  n^ n^/n^a
  before l/ DFT-40+L/aL
  before l DFT-40+l/xl
  before w DFT-30+w/xw
  before j DFT-30+j/xj
  before r DFT-50+r/xr
  before r- DFT-60+r/xr
  before r/ DFT+r3/r_A
endphoneme

phoneme (e)  virtual
  after  j j/je
  after  ; j2/j2e
  after  w w/we
  after  l l/le
  after  L l/le
  after  r r/re-15
  after  r- r2/r2e
  after  m m/me  n n/ne  N N/Ne  n^ n^/n^e
  before l/ DFT-30+L/eL
  before l DFT-40+l/xl
  before w DFT-30+w/xw
  before j DFT-30+j/xj
  before r DFT-50+r/xr
  before r- DFT-60+r/xr
  before r/ DFT+r3/r_E2
endphoneme

phoneme (i)  virtual
  after  j j/ji
  after  ; j2/j2i
  after  w w/wi
  after  l l/li-10
  after  L l/li
  after  r r/ri-15
  after  r- r2/r2i
  after  m m/mi  n n/ni  N N/Ni  n^ n^/n^i
  before l/ DFT-30+L/iL
  before N DFT-40+N/iN
  before ; DFT-40+j2/xj2
  before l DFT-40+l/xl
  before j DFT-30+j/xj
  before  r- DFT-60+r/xr
  before r/ DFT+r3/r_i
endphoneme

phoneme (o)  virtual
  after  j j/jo
  after  ; j2/j2o
  after  w w/wo
  after  l l/lo
  after  L l/lo
  after  r r/ro-15
  after  r- r2/r2o
  after  m m/mo
  after  n n/no
  after  N N/No
  after  n^ n^/n^o
  before l/ DFT-40+L/oL
  before l DFT-40+l/xl
  before w DFT-30+w/xw
  before j DFT-30+j/xj
  before r DFT-50+r/xr
  before r- DFT-60+r/xr
  before r/ DFT+r3/r_O
endphoneme

phoneme (u)  virtual
  after  j j/ju
  after  ; j2/j2u
  after  w w/wu
  after  l l/lu
  after  L l/lu
  after  r r/ru-15
  after  r- r2/r2u
  after  m m/mu  n n/nu  N N/Nu  n^ n^/n^u
  before l/ DFT-40+L/uL
  before l DFT-40+l/xl
  before w DFT-30+w/xw
  before j DFT-30+j/xj
  before r DFT-50+r/xr
  before r- DFT-60+r/xr
  before r/ DFT+r3/r_u
endphoneme

phoneme (r)  virtual
// use to mean general sonorant
endphoneme


//*******************************************************************
// SONORANTS
//*******************************************************************


phoneme r
  liquid
  length 100
  lengthmod 7
  beforenotvowel r/
  formants r/r
  after _ r/_r  t r/tr p r/tr k r/tr
  before _ r/r_
endphoneme


phoneme r/   // used for [r] when not preceding a vowel
  liquid
  length 100
  lengthmod 2   //
  formants r3/r_+r3/rx
  before n   r3/r_n+r3/rx
  after _ r/rr
  after t r/trr p r/trr k r/trr
endphoneme


phoneme r-   // linking r, used between certain vowels and a following vowel
  liquid
  length 100
  lengthmod 0
  formants r/r
  after _ r2/_r2
endphoneme


phoneme l
  liquid
  length 100
  lengthmod 7
  beforenotvowel l/
  formants l/l
  after _ l/_l  t l/tl
  before _ l/l_
endphoneme


phoneme l/    // used for [l] when not before a vowel
  liquid
  length 100
  lengthmod 7
  beforevowel l
endphoneme


phoneme w
  liquid
  length 100
  beforenotvowel w/
  lengthmod 7
  formants w/w
  after _ w/_w
endphoneme


phoneme w/    // used for [w] when not before a vowel
  liquid
  vowelout  len=50
  length 100
  formants w/w_
  lengthmod 7
  beforevowel w
endphoneme


phoneme j
  liquid
  length 100
  beforenotvowel j/
  formants NULL
  after _ j/_j
  lengthmod 7
endphoneme


phoneme j/    // used for [j] when not before a vowel
  liquid
  vowelout len=70
  length 100
  formants j/j_
  lengthmod 7
  beforevowel j
endphoneme




phoneme ;     // linking j, (formerly [j-]) used between (i) vowels
              // and a following vowel
              // also to palatalize consonants
  liquid
  length 100
  lengthmod 0
  formants NULL
  after _ j2/_j2
endphoneme


phoneme m
  vcd blb nasal
  vowelout f1=1  f2=1000 -500 -350  f3=-200 80 brk
  length 100
  lengthmod 4
  formants NULL
  after _ m/_m
  before _ m/m_
  before (r) m/mj
endphoneme


phoneme n
  vcd alv nasal
  vowelout f1=1 f2=1700 -300 250  f3=-100 80  rms=20 brk
  length 100
  lengthmod 4
  formants NULL
  after _ n/_n
  before _ n/n_
  before (r) n/nj
endphoneme


phoneme n^
  vcd pal nasal
  vowelout f1=2 f2=2300 300 400  f3=100 80  brk rate
  length 100
  lengthmod 4
  formants NULL
  after _ n^/_n^
  before _ n^/n^_
  before (r) n/nj
endphoneme



phoneme N
  vcd vel nasal
//  vowelout  brk
  vowelout f1=2 f2=2300 300 400  f3=-200 80  len=40 rms=20 brk
  length 100
  formants NULL
  after _ N/_N
  before _ N/N_
  lengthmod 8            // longer than 'n'
endphoneme


//*******************************************************************
// VOICED STOPS
//*******************************************************************



phoneme  b
  vcd blb stop
  vowelout f1=1  f2=1000 -500 -300  f3=-300 80 brk
  formants b/b+x/b
  before _ b/b_+x/b_
  before (a) b/ba+x/b  (@) b/b@+x/b  (e) b/be+x/b
  before (i) b/bi+x/b  (o) b/bo+x/b  (u) b/bu+x/b
  after _ NULL
  after @ b/xb
  lengthmod 5
  switchvoicing p
endphoneme


phoneme d
  vcd alv stop
  vowelin f1=1  f2=1700 -300 300  f3=-100 80
  vowelout f1=1 f2=1700 -300 300  f3=-100 80
  formants d/d+x/d
  before _ d/d_+x/d_
  before r d/dr+x/d
  after _ NULL
  after @ d/xd
  lengthmod 5
  switchvoicing t
endphoneme


phoneme *    //   tap
  vcd alv flp
  vowelin f1=1  f2=1700 -300 300  f3=-100 80
  vowelout f1=2 f2=1700 -300 300  f3=-100 80 rms=35
  formants d/d*
  before r d/dr
  lengthmod 2
endphoneme


phoneme dZ
  vcd pla afr sibilant
  vowelin f1=1  f2=2300 200 400  f3=-100 80
  vowelout f1=1  f2=2300 250 300  f3=-300 80 brk
  formants dZ/dZ+x/dZ
  before _ dZ/dZ_+x/dZ_
  after _ NULL
  after @ dZ/xdZ
  lengthmod 5
  switchvoicing tS
endphoneme


phoneme g
  vcd vel stop
  vowelin f1=1  f2=2300 200 400  f3=-100 80
  vowelout f1=1  f2=2300 250 300  f3=-300 80 brk
  formants g/g+x/g
  before _ g/g_+x/g_
  after _ NULL
  after @ g/xg
  lengthmod 5
  switchvoicing k
endphoneme


phoneme g-     // linking g, used between N and a vowel
  vcd vel stop
  vowelin f1=1  f2=2300 200 400  f3=-100 80
  vowelout f1=1  f2=2300 250 300  f3=-300 80 brk
  formants g2/g+x/g2_
  before _ g2/g_+x/g2_
  after _ NULL
  after @ g2/xg
  lengthmod 5
endphoneme



//*******************************************************************
// VOICED fricatives
//*******************************************************************


phoneme B
  vcd blb frc
  lengthmod 6
  formants voc/B+vocw/v
  before _ voc/v_+vocw/v
  switchvoicing f
endphoneme


phoneme v
  vcd lbd frc
  vowelin  f1=0  f2=1000 -300 -200  f3=-300 100
  vowelout f1=0  f2=1000 -500 -300  f3=-300 60  len=50
  lengthmod 6
  formants voc/v+vocw/v
  before _ voc/v_+vocw/v
  switchvoicing f
endphoneme


phoneme D
  vcd dnt frc
  vowelout f1=0  f2=1700 -300 300  f3=-100 60  len=50
  formants voc/D+vocw/D
  before _ voc/D_+vocw/D
  lengthmod 6
  switchvoicing T
endphoneme


phoneme z
  vcd alv frc sibilant
  vowelout f1=0  f2=1700 -300 300  f3=-100 60  len=50 
  formants voc/z+unvoc/s_
  before _ voc/z_+unvoc/s_
  lengthmod 6
  switchvoicing s
endphoneme


phoneme Z
  vcd pla frc sibilant
  vowelin  f1=1  f2=2300 250 300  f3=-300 80
  vowelout f1=1  f2=2300 250 300  f3=-300 80 brk
  formants voc/Z+vocw/Z
  before _ voc/Z_+vocw/Z
  lengthmod 6
  switchvoicing S
endphoneme


phoneme z;
  vcd pla frc sibilant
  vowelin  f1=1  f2=2700 400 600  f3=300 80 rate len=70
  vowelout f1=1  f2=2300 250 300  f3=-300 80 brk
  formants voc/z;+unvoc/s;_
  before _ voc/z;_+unvoc/s;_
  lengthmod 6
  switchvoicing s;
endphoneme



phoneme Q
  vcd vel frc
  vowelin f1=1  f2=2300 200 400  f3=-100 80
  vowelout f1=1  f2=2300 250 300  f3=-300 80 brk
  lengthmod 6
  formants voc/Q+vocw/Q
  before _ voc/Q_+vocw/Q_
  switchvoicing x
endphoneme

phoneme Q^
  vcd vel frc
  vowelin f1=1  f2=2700 400 600  f3=200 80
  vowelout f1=1  f2=2700 40 600  f3=200 80 brk
  lengthmod 6
  formants voc/Q+vocw/Q
  before _ voc/Q_+vocw/Q_
  switchvoicing x
endphoneme



//*******************************************************************
// UNVOICED STOPS
//*******************************************************************


phoneme p
  vls blb stop
  vowelout f1=0  f2=1000 -500 -350  f3=-200 80
  lengthmod 2
  wave unvoc/p
  before _ unvoc/p_ r unvoc/pr l unvoc/pl
  switchvoicing b
endphoneme


phoneme t
  vls alv stop
  vowelin f1=0  f2=1700 -300 300  f3=-100 80
  vowelout f1=0 f2=1700 -300 250  f3=-100 80  rms=20
  lengthmod 2
  wave  unvoc/t
  before _ unvoc/t_ r unvoc/tr
  switchvoicing d
endphoneme


phoneme tS
  vls pal afr sibilant
  vowelin f1=0  f2=2300 200 400  f3=-100 80
  lengthmod 2
  wave unvoc/tS
  before _ unvoc/tS_
  switchvoicing dZ
endphoneme


phoneme c
  vls pal stop
  vowelin f1=0  f2=2700 400 600  f3= 200 80
  vowelout f1=0 f2=2700 400 600  f3= 200 80  rms=20
  lengthmod 2
  wave unvoc/ki
  switchvoicing g
endphoneme


phoneme k
  vls vel stop
  vowelin f1=0  f2=2300 200 400  f3=-100 80
  vowelout f1=0 f2=2300 300 400  f3=-100 80  rms=20
  lengthmod 2
  wave unvoc/k
  before _ unvoc/k_
  before r unvoc/kr
  before l unvoc/kl
  before (i) unvoc/ki
  switchvoicing g
endphoneme




//*******************************************************************
// UNVOICED fricatives
//*******************************************************************



phoneme f
  vls lbd frc
  vowelout f1=0  f2=1000 -500 -350  f3=-200 80
  lengthmod 3
  wave unvoc/f
  before _ unvoc/f_
  switchvoicing v
endphoneme


phoneme T
  vls dnt frc
  vowelin f1=0  f2=1700 -300 300  f3=-100 80
  vowelout f1=0 f2=1700 -300 250  f3=-100 80  rms=20
  lengthmod 3
  wave unvoc/T
  before _ unvoc/T_
  switchvoicing D
endphoneme


phoneme s
  vls alv frc sibilant
  vowelin  f1=0  f2=1700 -300 300  f3=-100 80
  vowelout f1=0  f2=1700 -300 250  f3=-100 80  rms=20
  lengthmod 3
  wave unvoc/s
  before _ unvoc/s_
  before p unvoc/s!
  before t unvoc/s!
  before k unvoc/s!
  switchvoicing z
endphoneme


phoneme S
  vls pla frc sibilant
  vowelin  f1=0  f2=2300 200 400  f3=-100 80
  vowelout f1=0  f2=2300 200 400  f3=-100 80
  length 100
  lengthmod 3
  wave unvoc/S
  before _ unvoc/S_
  switchvoicing Z
endphoneme


phoneme s;
  vls pla frc sibilant
  vowelin  f1=1  f2=2700 400 600  f3=200 70 rate len=70
  vowelout f1=1  f2=2700 400 600  f3=200 70 rate
  length 100
  lengthmod 3
  wave unvoc/s;
  before _ unvoc/s;_
  switchvoicing z;
endphoneme


phoneme L   // Welsh "ll"
  vls alv frc
  length 100
  lengthmod 3
  wave unvoc/ll
//  before _ unvoc/ll_
endphoneme


phoneme C
  vls pal frc
  vowelin f1=0  f2=2700 400 600  f3=200 70
  vowelout f1=0 f2=2700 400 600  f3=200 70  rms=20
  length 100
  lengthmod 3
  wave unvoc/C
endphoneme


phoneme x
  vls vel frc
  vowelin f1=0  f2=2300 200 400  f3=-100 80
  vowelout f1=0 f2=2300 300 400  f3=-100 80  rms=20
  length 100
  lengthmod 3
  wave unvoc/x
  switchvoicing Q
endphoneme


phoneme h
  vls glt apr
  length 100
  lengthmod 3
  wave unvoc/h@
  before (a) unvoc/ha
  before (e) unvoc/he
  before (i) unvoc/hi
  before (o) unvoc/ho
  before (u) unvoc/hu
endphoneme




//*******************************************************************
// ADDITIONAL PHONEME TABLES
//*******************************************************************


phonemetable en base
include ph_english

phonemetable en_n en
include ph_english_n

phonemetable en_rp en
include ph_english_rp

phonemetable en_wm en
include ph_english_wm

phonemetable af base
include ph_af

phonemetable de base
include ph_german

phonemetable eo base
include ph_esperanto

phonemetable cy base
include ph_welsh

phonemetable pl base
include ph_polish

phonemetable it base
include ph_italian

phonemetable es it
include ph_spanish

phonemetable el it
include ph_greek

phonemetable tone eo
include ph_tone
