
//====================================================
//  French
//====================================================

phoneme : //  Lengthen previous vowel by "length"
  virtual
  length 40      // shorter than for fr-ca
endphoneme


phoneme @
  vowel starttype (@) endtype (@)
  unstressed
  length 170
  formants vowel/@_fr
endphoneme


phoneme a
  vowel  starttype (a)  endtype (a)
  length 170
  formants vowel/a_3
endphoneme


phoneme e
  vowel starttype (e) endtype (e)
  length 172
  formants vowel/e
endphoneme


phoneme E
  vowel starttype (e) endtype (e)
  length 170
  formants vowel/ee
endphoneme


phoneme i
  vowel starttype (i) endtype (i)
  length 160
  formants vowel/i_3
  linkout ;
endphoneme


phoneme i: // Slitely longer than i
  vowel  starttype (i)  endtype (i)
  length 212
  formants vowel/i_en
  linkout ;
endphoneme


phoneme o
  vowel starttype (o) endtype (o)
  length 170
  formants vowel/o_3
endphoneme


phoneme O
  vowel starttype (o) endtype (o)
  length 170
  formants vowel/o_mid
endphoneme



phoneme u
  vowel starttype (u) endtype (u)
  length 160
  formants vowel/u_bck
endphoneme


phoneme y
  vowel starttype (e) endtype (u)
  length 170
  formants vowel/y_2
endphoneme


phoneme Y
  vowel starttype (@) endtype (@)
  length 170
  formants vowel/y#
endphoneme


phoneme w
  liquid
  unstressed
  length 120
  beforenotvowel w/
  lengthmod 7
  formants w/w
  before (e) w/we
  after _ w/_w
endphoneme


phoneme W
  vowel starttype (@) endtype (@)
  length 170
  formants vowel/@_2
endphoneme


phoneme w^i
  vowel starttype (i) endtype (i)
  length 220
  formants vdiph/yi_fr
endphoneme




phoneme A~
  vowel  starttype (a) endtype (a)
  length 180
  formants vnasal/aa_n2 // silent unless followed by vowel
endphoneme


phoneme E~    // same as W~ for fr-fr
  vowel  starttype (e)  endtype (e)
  length 180
  formants vnasal/W_n
endphoneme


phoneme O~
  vowel  starttype (o)  endtype (o)
  length 180
  formants vnasal/o_n2
endphoneme


phoneme W~
  vowel  starttype (@)  endtype (@)
  length 204
  formants vnasal/W_n
endphoneme



// These vowels map to others in fr-fr, but are distinct in fr-ca

phoneme I  // same as [i]
  vowel  starttype (i) endtype (i)
  length 158
  formants vowel/i
  linkout ;
endphoneme

phoneme U  // same as [u]
  vowel starttype (u) endtype (u)
  length 174
  formants vowel/u
endphoneme

phoneme y"  // same as [y]
  vowel starttype (u) endtype (u)
  length 148
  formants vowel/y_2
endphoneme

phoneme E:  // slightly longer than [E]
  vowel starttype (e) endtype (e)
  length 212
  formants vowel/e
endphoneme

phoneme A   // same as [a]
  vowel  starttype (a)  endtype (a)
  length 166
  formants vowel/a_en
endphoneme




// CONSONANTS
//===========
// uses the consonants in file "phonemes", unless overridden here

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


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


phoneme g
  vcd vel stop
  vowelin f1=2  f2=2300 200 300  f3=-300 80
  vowelout f1=2  f2=2300 250 300  f3=-300 80 brk
  formants g/g%30+x/g2%30
  before _ g/g_+x/g_
  after _ NULL
  after @ g/xg%30
  lengthmod 5
  switchvoicing k
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 ustop/k%45     // reduce strength of noise burst
  before _ ustop/k_%45
  before r ustop/kr%45
  before l ustop/kl%45
  before (i) ustop/ki%45
  switchvoicing g
endphoneme


phoneme l
  liquid
  length 100
  lengthmod 7
//  beforenotvowel l/
  formants l/l
  after _  l/_l
  after t  l/tl
  after l/ l/l_long    // double l, make it longer
  before (a) l/la
  before (e) l/le
  before (i) l/li
  before (o) l/lo
  before (u) l/lu
  before (@) l/l@
  before _ l/l_
endphoneme


phoneme n2
  beforenotvowel NULL
  vcd alv nasal
  vowelout f1=2 f2=1700 -300 250  f3=-100 80  rms=20 brk
  length 100
  lengthmod 4
  formants n/n_
  before _ n/n_
endphoneme


phoneme p
  vls blb stop
  vowelin  f1=0  f2=1000 -50 -100  f3=-200 80 amp=11
  vowelout f1=0  f2=1000 -500 -350  f3=-300 80 rms=22
  lengthmod 2
  wave ustop/p%45
  before _ ustop/p_%45
  before r ustop/pr%45
  before R ustop/pr%45
  before @- ustop/p_unasp%45
  before l ustop/pl%45
  switchvoicing b
endphoneme


phoneme p2 // silent unless followed by vowel
  beforenotvowel NULL
  vls blb stop
  vowelin  f1=0  f2=1000 -50 -100  f3=-200 80 amp=11
  vowelout f1=0  f2=1000 -500 -350  f3=-300 80 rms=22
  lengthmod 2
  wave ustop/p%45
  before _ ustop/p_%45
endphoneme


phoneme r
  vcd uvl frc starttype r endtype r
  vowelin f1=0  f2=800 -100 100  f3=-400 100
  vowelout f1=0  f2=800 -100 100  f3=-400 100 len=0 rms=20
  length 100
  lengthmod 7
  beforenotvowel r/
  formants vwl_fr/@R%60
  after t  r/tr%60
  before _ r3/r_%60
endphoneme


phoneme R
  vcd uvl frc starttype r endtype r
  vowelin f1=0  f2=800 -100 100  f3=-400 100
  length 100
  lengthmod 7
  beforenotvowel r/
  formants vwl_fr/@R%60
  after r  r/rr%60
endphoneme


phoneme r/   // used for [r] when not preceding a vowel
  vcd uvl frc starttype r endtype r
  length 100
  lengthmod 2   //
  formants r3/r#_+r3/rx%60
  after t  r/tr%60
  before n   r3/r_n+r3/rx%60
  before _ r3/r_%60
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 ufric/s%45
  before _ ufric/s_%45
  before p ufric/s!%45
  before t ufric/s!%45
  before k ufric/s!%45
  switchvoicing z
endphoneme


phoneme S
  vls pla frc sibilant
  vowelin  f1=0  f2=2100 100 300  f3=-100 80
  vowelout f1=0  f2=2100 100 300  f3=-100 80
  length 100
  lengthmod 3
  wave ufric/sh%45
  before _ ufric/sh_%45
  switchvoicing Z
endphoneme


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


phoneme t2      // silent unless followed by vowel
  beforenotvowel NULL
  vls alv stop
  vowelin f1=0  f2=1600 -300 300  f3=-100 80
  vowelout f1=0 f2=1600 -300 250  f3=-100 80  rms=20
  lengthmod 2
  wave  ustop/t%45
  before _ ustop/t_%45
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=10
  lengthmod 6
  formants voc/v+vocw/v%75
  before (r) voc/vj+vocw/v%75
  before _ voc/v_+vocw/v%75
  switchvoicing f
endphoneme


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


phoneme z2      // silent unless followed by vowel
  beforenotvowel NULL
  vcd alv frc sibilant
  vowelout f1=0  f2=1700 -300 300  f3=-100 60  len=50
  formants voc/z+ufric/s_%45
  before _ voc/z_+ufric/s_%45
  lengthmod 6
endphoneme

phoneme z3      // "six" and "dix". [s] before pause, [z] before vowel, else []
  beforepause s
  beforenotvowel NULL
  vcd alv frc sibilant
  vowelout f1=0  f2=1700 -300 300  f3=-100 60  len=50
  formants voc/z+ufric/s_%45
  before _ voc/z_+ufric/s_%45
  lengthmod 6
endphoneme



