eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ph_french 16KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022
  1. //====================================================
  2. // French
  3. //====================================================
  4. // Updated 2011-03-04 Michel Such <[email protected]>
  5. phoneme #l virtual
  6. // Used for l and l/
  7. endphoneme
  8. phoneme #r virtual
  9. // Used for "r" sounds
  10. endphoneme
  11. phoneme : // Lengthen previous vowel by "length"
  12. virtual
  13. length 40 // shorter than for fr-ca
  14. endphoneme
  15. phoneme #cFR virtual
  16. // To identify "b k d f g p t v" when before "r"
  17. endphoneme
  18. procedure pre_r
  19. IF prevPh(y) THEN
  20. VowelEnding(vwl_fr/y2r)
  21. ELIF prevPh(E) THEN
  22. VowelEnding(vwl_fr/e_2r)
  23. ELIF prevPh(A~) THEN
  24. VowelEnding(vwl_fr/aa2r)
  25. ELIF prevPh(E~) OR prevPh(W~) THEN
  26. VowelEnding(vwl_fr/ee2r)
  27. ELIF prevPh(O~) THEN
  28. VowelEnding(vwl_fr/oo2r)
  29. ELIF prevPh(isVowel) THEN
  30. PrevVowelEndings
  31. VowelEnding(vwl_fr/@2r)
  32. VowelEnding(vwl_fr/a2r)
  33. VowelEnding(vwl_fr/e2r)
  34. VowelEnding(vwl_fr/i2r)
  35. VowelEnding(vwl_fr/o2r)
  36. VowelEnding(vwl_fr/u2r)
  37. EndSwitch
  38. ENDIF
  39. endprocedure
  40. procedure post_r
  41. IF nextPh(E) THEN
  42. VowelStart(vwl_fr/re2)
  43. ELIF nextPh(W) THEN
  44. VowelStart(vwl_fr/r@2)
  45. ELIF nextPh(A~) THEN
  46. VowelStart(vwl_fr/raa)
  47. ELIF nextPh(E~) OR nextPh(W~) THEN
  48. VowelStart(vwl_fr/ree)
  49. ELIF nextPh(y) THEN
  50. VowelStart(vwl_fr/ry)
  51. ELIF nextPh(w) THEN
  52. VowelStart(vwl_fr/rw)
  53. ELIF nextPh(O~) THEN
  54. VowelStart(vwl_fr/roo)
  55. ELIF nextPh(j) OR nextPh(j/) THEN
  56. VowelStart(vwl_fr/rj)
  57. ELIF nextPh(isVowel) THEN
  58. NextVowelStarts
  59. VowelStart(vwl_fr/r@)
  60. VowelStart(vwl_fr/ra)
  61. VowelStart(vwl_fr/re)
  62. VowelStart(vwl_fr/ri)
  63. VowelStart(vwl_fr/ro)
  64. VowelStart(vwl_fr/ru)
  65. EndSwitch
  66. ENDIF
  67. endprocedure
  68. phoneme r
  69. vcd uvl frc nopause
  70. rhotic
  71. starttype #r endtype #r
  72. Vowelin f1=0 f2=1500 -400 400 f3=-400 80
  73. lengthmod 7
  74. ipa U+0281
  75. IF nextPh(isNotVowel) THEN
  76. ChangePhoneme(r/)
  77. ELIF prevPh(isNotVowel) OR prevPh(isPause) THEN
  78. ChangePhoneme(r/2)
  79. ENDIF
  80. CALL pre_r
  81. CALL post_r
  82. FMT(vwl_fr/r)
  83. endphoneme
  84. phoneme r2 // silent unless followed by vowel
  85. vcd uvl frc
  86. rhotic
  87. starttype #r endtype #r
  88. ipa U+0281
  89. IF nextPh(isNotVowel) THEN
  90. ChangePhoneme(NULL)
  91. ELSE
  92. ChangePhoneme(r)
  93. ENDIF
  94. endphoneme
  95. phoneme r/ // variant of [r] when not preceding a vowel
  96. vcd uvl frc
  97. rhotic
  98. starttype #r endtype #r
  99. lengthmod 7
  100. ipa U+0281
  101. IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN
  102. FMT(vwl_fr/trr) addWav(r3/rx, 15)
  103. ELIF prevPh(isNotVowel) THEN
  104. FMT(vwl_fr/rr) addWav(r3/rx, 15)
  105. ENDIF
  106. PrevVowelEndings
  107. VowelEnding(vwl_fr/r_@)
  108. VowelEnding(vwl_fr/r_a)
  109. VowelEnding(vwl_fr/r_e)
  110. VowelEnding(vwl_fr/r_i)
  111. VowelEnding(vwl_fr/r_o)
  112. VowelEnding(vwl_fr/r_u)
  113. EndSwitch
  114. IF prevPh(y) THEN
  115. VowelEnding(vwl_fr/r_y)
  116. ENDIF
  117. IF nextPh(isNasal) THEN
  118. FMT(vwl_fr/r_n) addWav(r3/rx, 20)
  119. ELIF nextPh(#r) THEN
  120. length 30
  121. ENDIF
  122. FMT(vwl_fr/r_) addWav(r3/rx, 20)
  123. endphoneme
  124. phoneme r/2
  125. liquid rhotic uvl nopause
  126. starttype #r endtype #r
  127. Vowelin f1=0 f2=1500 -400 400 f3=-400 80
  128. ipa U+0281
  129. CALL post_r
  130. IF prevPhW(f) OR prevPhW(k) OR prevPhW(p) OR prevPhW(s) OR prevPhW(t) OR prevPhW(S) THEN
  131. FMT(vwl_fr/tr)
  132. ELIF prevPhW(#cFR) THEN
  133. FMT(vwl_fr/br)
  134. ELSE
  135. length 80
  136. FMT(vwl_fr/r)
  137. ENDIF
  138. endphoneme
  139. phoneme l
  140. liquid
  141. starttype #l endtype #l
  142. lengthmod 7
  143. IF nextPh(isNotVowel) THEN
  144. ChangePhoneme(l/)
  145. ELIF prevPhW(#cFR) THEN
  146. ChangePhoneme(l/2)
  147. ENDIF
  148. NextVowelStarts
  149. VowelStart(l/l@)
  150. VowelStart(l/la, -10)
  151. VowelStart(l/le, -15)
  152. VowelStart(l/li, -15)
  153. VowelStart(vwl_fr/lo, -10)
  154. VowelStart(l/lu, -20)
  155. EndSwitch
  156. IF prevPh(#@) THEN
  157. VowelEnding(l/xl, -50)
  158. ELIF prevPh(isVowel) THEN
  159. VowelEnding(l/xl, -40)
  160. ENDIF
  161. IF prevPh(isPause) OR thisPh(isWordStart) THEN
  162. FMT(l/_l)
  163. ENDIF
  164. IF prevPh(isRhotic) OR prevPh(isNasal) THEN
  165. FMT(l/_l)
  166. ENDIF
  167. IF prevPh(t) THEN
  168. FMT(l/tl)
  169. ENDIF
  170. IF prevPh(l/) THEN
  171. FMT(l/l_long) // double l, make it longer
  172. ENDIF
  173. FMT(l/l)
  174. endphoneme
  175. phoneme l/ // used for [l] when not before a vowel
  176. liquid rfx
  177. starttype #l endtype #l
  178. lengthmod 7
  179. IF nextPh(isVowel) THEN
  180. ChangePhoneme(l)
  181. ENDIF
  182. IF prevPhW(y) THEN
  183. VowelEnding(l/l_y)
  184. ELIF prevPhW(isVowel) THEN
  185. PrevVowelEndings
  186. VowelEnding(l/l_@)
  187. VowelEnding(l/l_a)
  188. VowelEnding(l/l_e)
  189. VowelEnding(l/l_i)
  190. VowelEnding(l/l_o)
  191. VowelEnding(l/l_u)
  192. EndSwitch
  193. ENDIF
  194. IF prevPh(#r) THEN
  195. FMT(l/_l)
  196. ENDIF
  197. FMT(l/l_)
  198. endphoneme
  199. phoneme l/2
  200. liquid
  201. starttype #l endtype #l
  202. IF nextPh(isNotVowel) THEN
  203. ChangePhoneme(l/)
  204. ENDIF
  205. NextVowelStarts
  206. VowelStart(l/l@)
  207. VowelStart(l/la, -10)
  208. VowelStart(l/le, -15)
  209. VowelStart(l/li, -15)
  210. VowelStart(l/lo, -10)
  211. VowelStart(l/lu, -20)
  212. EndSwitch
  213. IF prevPh(t) THEN
  214. FMT(l/tl)
  215. ENDIF
  216. FMT(l/l)
  217. endphoneme
  218. // Vowels
  219. //=======
  220. phoneme @
  221. vowel starttype #@ endtype #@
  222. length 170
  223. FMT(vowel/@_hgh)
  224. endphoneme
  225. phoneme a
  226. vowel starttype #a endtype #a
  227. IF nextPhW(isVowel) THEN
  228. length 220
  229. ELSE
  230. length 170
  231. ENDIF
  232. FMT(vowel/a_7, 85)
  233. endphoneme
  234. phoneme a# // For english words
  235. import_phoneme en/a#
  236. endphoneme
  237. phoneme e
  238. vowel starttype #e endtype #e
  239. IF nextPh(l/) THEN
  240. VowelEnding(l/xl, -20)
  241. ELIF nextPh(isVowel) THEN
  242. length 200
  243. ELSE
  244. length 170
  245. ENDIF
  246. FMT(vowel/e_8)
  247. endphoneme
  248. phoneme E
  249. vowel starttype #e endtype #e
  250. IF nextPhW(j) THEN
  251. length 190
  252. ELSE
  253. length 170
  254. ENDIF
  255. FMT(vowel/e_mid)
  256. endphoneme
  257. phoneme i
  258. vowel starttype #i endtype #i
  259. palatal
  260. IF prevPhW(r/2) OR prevPhW(l/2) THEN
  261. IF nextPhW(isVowel) THEN
  262. length 240
  263. ENDIF
  264. ELIF prevPhW(#r) AND nextPhW(isVowel) THEN
  265. IF nextPhW(#i) THEN
  266. length 220
  267. IfNextVowelAppend(;)
  268. ELSE
  269. ChangePhoneme(j/)
  270. ENDIF
  271. ELIF nextPhW(isVowel) THEN
  272. ChangePhoneme(j)
  273. ELSE
  274. length 160
  275. IfNextVowelAppend(;)
  276. ENDIF
  277. FMT(vowel/i_8)
  278. endphoneme
  279. phoneme I // For english words
  280. import_phoneme en/I
  281. endphoneme
  282. phoneme I2 // For english words
  283. import_phoneme en/I2
  284. endphoneme
  285. phoneme j/ // Short "i" between "r" and a vowel
  286. vowel starttype #i endtype #i
  287. length 80
  288. // unstressed
  289. NextVowelStarts
  290. VowelStart(j/j@)
  291. VowelStart(j/ja)
  292. VowelStart(j/je)
  293. VowelStart(j/ji)
  294. VowelStart(j/jo)
  295. VowelStart(j/ju)
  296. EndSwitch
  297. FMT(vwl_fr/j)
  298. endphoneme
  299. phoneme o
  300. vowel starttype #o endtype #o
  301. IF nextPh(isVowel) THEN
  302. length 220
  303. ELSE
  304. length 170
  305. ENDIF
  306. IF thisPh(isFinalVowel) THEN
  307. FMT(vowel/o_8)
  308. ELSE
  309. FMT(vowel/o)
  310. ENDIF
  311. endphoneme
  312. phoneme O
  313. vowel starttype #o endtype #o
  314. length 170
  315. IF thisPh(isFinalVowel) THEN
  316. FMT(vowel/o_mid2)
  317. ENDIF
  318. IF nextPhW(#l) AND next2Ph(isNotVowel) THEN
  319. FMT(vowel/o_mid2)
  320. ENDIF
  321. IF nextPhW(#r) AND next2Ph(isNotVowel) THEN
  322. FMT(vowel/o_mid2)
  323. ENDIF
  324. FMT(vowel/o_mid)
  325. endphoneme
  326. phoneme oU
  327. import_phoneme en/oU
  328. endphoneme
  329. phoneme u
  330. vowel starttype #u endtype #u
  331. IF nextPh(isVowel) OR nextPh(j) THEN
  332. length 220
  333. ELSE
  334. length 180
  335. ENDIF
  336. FMT(vowel/u_bck2)
  337. endphoneme
  338. phoneme u: // slitely longer than u
  339. vowel starttype #u endtype #u
  340. length 240
  341. FMT(vowel/u_bck2)
  342. endphoneme
  343. phoneme y
  344. vowel starttype #u endtype #u
  345. IF nextPhW(E~) OR nextPhW(#i) THEN
  346. length 110
  347. FMT(vowel/y, 80)
  348. ENDIF
  349. length 180
  350. FMT(vowel/y)
  351. endphoneme
  352. phoneme W
  353. vowel starttype #@ endtype #@
  354. length 180
  355. FMT(vowel/@_6)
  356. endphoneme
  357. phoneme W2 // For english words
  358. vowel starttype #@ endtype #@
  359. length 100
  360. unstressed
  361. FMT(vowel/@_6)
  362. endphoneme
  363. phoneme Y
  364. vowel starttype #@ endtype #@
  365. length 170
  366. FMT(vowel/y#)
  367. endphoneme
  368. phoneme w
  369. vowel starttype #u endtype #u
  370. IF prevPh(#r) OR prevPhW(#l) THEN
  371. NextVowelStarts
  372. VowelStart(w/w@)
  373. VowelStart(vwl_fr/wa)
  374. VowelStart(w/we)
  375. VowelStart(w/wi)
  376. VowelStart(w/wo)
  377. VowelStart(w/wu)
  378. EndSwitch
  379. ELSE
  380. ChangePhoneme(w/)
  381. ENDIF
  382. endphoneme
  383. phoneme w/
  384. liquid
  385. lengthmod 7
  386. IF nextPh(isVowel) THEN
  387. NextVowelStarts
  388. VowelStart(w/w@)
  389. VowelStart(vwl_fr/wa)
  390. VowelStart(w/we)
  391. VowelStart(w/wi)
  392. VowelStart(w/wo)
  393. VowelStart(w/wu)
  394. EndSwitch
  395. VowelEnding(w/xw, -30)
  396. IF prevPh(isPause) THEN
  397. FMT(w/_w)
  398. ELSE
  399. FMT(w/_w)
  400. ENDIF
  401. ELSE
  402. // no vowel follows
  403. Vowelout len=50
  404. IF prevPh(#i) THEN
  405. FMT(w/iw_)
  406. ENDIF
  407. FMT(w/w_)
  408. ENDIF
  409. endphoneme
  410. phoneme A~
  411. vowel starttype #a endtype #a
  412. length 190
  413. FMT(vnasal/aa_n4)
  414. endphoneme
  415. phoneme E~ // same as W~ for fr-fr
  416. vowel starttype #e endtype #e
  417. length 190
  418. IF nextPh(n2) THEN
  419. FMT(vowel/e_mid)
  420. ENDIF
  421. FMT(vnasal/W_n)
  422. endphoneme
  423. phoneme O~
  424. vowel starttype #o endtype #o
  425. length 190
  426. FMT(vnasal/o_n2)
  427. endphoneme
  428. phoneme W~
  429. vowel starttype #@ endtype #@
  430. length 190
  431. FMT(vnasal/W_n)
  432. endphoneme
  433. // These vowels map to others in fr-fr, but are distinct in fr-ca
  434. phoneme U // same as [u]
  435. import_phoneme fr/u
  436. endphoneme
  437. phoneme y" // same as [y]
  438. import_phoneme fr/y
  439. endphoneme
  440. phoneme E: // slightly longer than [E]
  441. import_phoneme E
  442. endphoneme
  443. phoneme A // same as [a]
  444. import_phoneme a
  445. endphoneme
  446. // CONSONANTS
  447. //===========
  448. // uses the consonants in file "phonemes", unless overridden here
  449. phoneme b
  450. vcd blb stop
  451. starttype #cFR endtype #cFR
  452. voicingswitch p
  453. lengthmod 6
  454. Vowelin f1=2 f2=1000 -300 -200 f3=-100 100
  455. Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
  456. IF KlattSynth THEN
  457. Vowelin f1=1 f2=1000 -500 -300 f3=-300 80
  458. IF nextPh(isPause2) THEN
  459. FMT(klatt/b) addWav(x/b_)
  460. ENDIF
  461. FMT(klatt/b) addWav(x/b)
  462. ENDIF
  463. IF PreVoicing THEN
  464. IF nextPhW(#r) THEN
  465. FMT(b/xbr)
  466. ELSE
  467. FMT(b/xb)
  468. ENDIF
  469. ENDIF
  470. IF nextPh(isPause2) OR nextPh(l) THEN
  471. FMT(b/b_) addWav(x/b_)
  472. ELIF nextPh(l/) THEN
  473. FMT(b/b)
  474. ELIF nextPh(#r) THEN
  475. FMT(b/br) addWav(x/b, 50)
  476. ENDIF
  477. FMT(b/b) addWav(x/b, 70)
  478. endphoneme
  479. phoneme d
  480. vcd alv stop
  481. starttype #cFR endtype #cFR
  482. voicingswitch t
  483. lengthmod 5
  484. Vowelin f1=1 f2=1700 -300 300 f3=-100 80 amp=20
  485. Vowelout f1=2 f2=1700 -300 300 f3=-100 80
  486. IF PreVoicing THEN
  487. IF nextPhW(#r) THEN
  488. FMT(d/xdr)
  489. ELSE
  490. FMT(d/xd)
  491. ENDIF
  492. ENDIF
  493. IF nextPh(isPause2) THEN
  494. FMT(d/d_) addWav(x/d_, 50)
  495. ELIF nextPhW(#r) THEN
  496. FMT(d/dr) addWav(x/d_, 50)
  497. ENDIF
  498. FMT(d/d) addWav(x/d, 40)
  499. endphoneme
  500. phoneme f
  501. vls lbd frc
  502. starttype #cFR endtype #cFR
  503. voicingswitch v
  504. lengthmod 3
  505. Vowelout f1=0 f2=1000 -500 -350 f3=-200 100
  506. IF nextPh(isPause) THEN
  507. WAV(ufric/f_)
  508. ENDIF
  509. WAV(ufric/f, 80)
  510. endphoneme
  511. phoneme g
  512. vcd vel stop
  513. starttype #cFR endtype #cFR
  514. voicingswitch k
  515. lengthmod 5
  516. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  517. Vowelout f1=1 f2=2300 250 300 f3=-300 80 brk
  518. IF PreVoicing THEN
  519. IF nextPhW(#r) THEN
  520. FMT(g/xgr)
  521. ELSE
  522. FMT(g/xg)
  523. ENDIF
  524. ENDIF
  525. IF nextPh(isPause2) THEN
  526. FMT(g/g_) addWav(x/g_)
  527. ELIF nextPhW(#r) THEN
  528. FMT(g/gr) addWav(x/g, 20)
  529. ENDIF
  530. FMT(g/g) addWav(x/g, 20)
  531. endphoneme
  532. phoneme k
  533. vls vel stop
  534. starttype #cFR endtype #cFR
  535. voicingswitch g
  536. length 50
  537. lengthmod 2
  538. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  539. Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
  540. IF nextPh(isPause2) THEN
  541. WAV(ustop/k_)
  542. ELIF nextPh(#i) OR nextPh(;) THEN
  543. WAV(ustop/ki, 45)
  544. ELIF nextPh(#l) THEN
  545. WAV(ustop/kl, 40)
  546. ELIF nextPh(#r) THEN
  547. length 45
  548. WAV(ustop/k, 50)
  549. ENDIF
  550. WAV(ustop/k, 40)
  551. endphoneme
  552. phoneme n
  553. vcd alv nasal
  554. Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
  555. lengthmod 4
  556. IF KlattSynth THEN
  557. Vowelin f1=0 f2=1500 -200 200 f3=0 80
  558. FMT(klatt/n)
  559. ENDIF
  560. NextVowelStarts
  561. VowelStart(n/n@)
  562. VowelStart(n/na)
  563. VowelStart(n/ne)
  564. VowelStart(n/ni)
  565. VowelStart(n/no)
  566. VowelStart(n/nu)
  567. EndSwitch
  568. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  569. FMT(n/nj)
  570. ELIF prevPh(isPause) OR prevPh(n) THEN
  571. FMT(n/_n)
  572. ELIF nextPh(isNotVowel) THEN
  573. length 120
  574. FMT(n/n_long_)
  575. ENDIF
  576. endphoneme
  577. phoneme n2
  578. vcd alv nasal
  579. IF nextPh(w) OR nextPh(isVowel) THEN
  580. ChangePhoneme(n)
  581. ELSE
  582. ChangePhoneme(NULL)
  583. ENDIF
  584. endphoneme
  585. phoneme p
  586. vls blb stop
  587. starttype #cFR endtype #cFR
  588. voicingswitch b
  589. lengthmod 2
  590. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  591. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  592. IF nextPh(isPause2) THEN
  593. WAV(ustop/p_, 80)
  594. ELIF nextPh(@-) THEN
  595. WAV(ustop/p_unasp, 70)
  596. ELIF nextPh(#l) THEN
  597. WAV(ustop/pl, 50)
  598. ELIF nextPh(#r) THEN
  599. length 40
  600. WAV(ustop/p_, 80)
  601. ENDIF
  602. WAV(ustop/p_unasp_, 90)
  603. endphoneme
  604. phoneme p2 // silent unless followed by vowel
  605. vls blb stop
  606. lengthmod 2
  607. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  608. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  609. IF nextPh(isNotVowel) THEN
  610. ChangePhoneme(NULL)
  611. ENDIF
  612. WAV(ustop/p, 45)
  613. endphoneme
  614. phoneme s
  615. vls alv frc sibilant
  616. voicingswitch z
  617. lengthmod 3
  618. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  619. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  620. IF nextPh(isPause) THEN
  621. WAV(ufric/s_, 45)
  622. ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
  623. WAV(ufric/s!, 45)
  624. ENDIF
  625. WAV(ufric/s, 45)
  626. endphoneme
  627. phoneme S
  628. vls pla frc sibilant
  629. starttype #cFR endtype #cFR
  630. voicingswitch Z
  631. lengthmod 3
  632. Vowelin f1=0 f2=1900 100 300 f3=-100 80
  633. Vowelout f1=0 f2=1900 100 300 f3=-100 80
  634. IF prevPhW(t) THEN
  635. length 60
  636. ENDIF
  637. IF nextPh(isPause) THEN
  638. WAV(ufric/sh_, 45)
  639. ENDIF
  640. WAV(ufric/sh, 45)
  641. endphoneme
  642. phoneme t
  643. vls alv stop
  644. starttype #cFR endtype #cFR
  645. voicingswitch d
  646. lengthmod 2
  647. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  648. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  649. IF nextPh(isPause2) THEN
  650. WAV(ustop/t_, 40)
  651. ELIF nextPh(#r) THEN
  652. length 40
  653. WAV(ustop/t_short_, 50)
  654. ENDIF
  655. WAV(ustop/t_short, 40)
  656. endphoneme
  657. phoneme t2 // silent unless followed by vowel
  658. vls alv stop
  659. Vowelin f1=0 f2=1600 -300 300 f3=-100 80
  660. Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20
  661. lengthmod 2
  662. IF nextPh(isVowel) OR nextPh(w) OR nextPh(j) THEN
  663. WAV(ustop/t_short, 30)
  664. ELSE
  665. ChangePhoneme(NULL)
  666. ENDIF
  667. endphoneme
  668. phoneme t3 // silent unless followed by vowel or pause
  669. vls alv stop
  670. lengthmod 2
  671. IF nextPh(isPause) THEN
  672. ChangePhoneme(t)
  673. ELIF nextPh(isNotVowel) THEN
  674. ChangePhoneme(NULL)
  675. ELSE
  676. ChangePhoneme(t2)
  677. ENDIF
  678. endphoneme
  679. phoneme v
  680. vcd lbd frc
  681. starttype #cFR endtype #cFR
  682. voicingswitch f
  683. lengthmod 6
  684. length 90
  685. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  686. Vowelout f1=0 f2=1000 -500 -300 f3=-300 100
  687. IF KlattSynth THEN
  688. CALL base/v
  689. RETURN
  690. ENDIF
  691. IF nextPh(isPause2) THEN
  692. FMT(voc/v_) addWav(vocw/v)
  693. ENDIF
  694. IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
  695. Length 70
  696. ELIF nextPhW(w/) OR nextPhW(#r) THEN
  697. Length 60
  698. ENDIF
  699. FMT(voc/v) addWav(vocw/v, 60)
  700. endphoneme
  701. phoneme V // For english words
  702. vowel starttype #a endtype #@
  703. length 140
  704. ChangeIfDiminished(@)
  705. FMT(vowel/V_2)
  706. endphoneme
  707. phoneme z
  708. vcd alv frc sibilant
  709. voicingswitch s
  710. lengthmod 6
  711. Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
  712. IF nextPhW(z) THEN
  713. FMT(d/xd)
  714. ENDIF
  715. IF nextPh(isPause2) OR nextPh(isPause) THEN
  716. FMT(voc/z_) addWav(ufric/s_, 45)
  717. ENDIF
  718. IF prevPhW(t) THEN
  719. length 60
  720. ENDIF
  721. FMT(voc/z) addWav(ufric/s_, 45)
  722. endphoneme
  723. phoneme z2 // silent unless followed by vowel
  724. vcd alv frc sibilant
  725. IF nextPh(isVowel) OR nextPh(w/) OR nextPh(j) THEN
  726. Length 70
  727. FMT(voc/z) addWav(ufric/s, 40)
  728. ELSE
  729. ChangePhoneme(NULL)
  730. ENDIF
  731. endphoneme
  732. phoneme z3 // "six" and "dix". [s] before pause, [z] before vowel, else []
  733. vcd alv frc sibilant
  734. IF nextPh(isPause) THEN
  735. ChangePhoneme(s)
  736. ELIF nextPh(isVowel) OR nextPh(w/) THEN
  737. ChangePhoneme(z)
  738. ELSE
  739. ChangePhoneme(NULL)
  740. ENDIF
  741. endphoneme
  742. // translate from English to French phonemes
  743. equivalents en
  744. remove_stress
  745. 0 O
  746. 3 W r
  747. 3: W : r
  748. @ W
  749. @- W
  750. @2 W
  751. @5 W
  752. @L W l
  753. a a
  754. a# a#
  755. A: a :
  756. A@ a r
  757. aa a :
  758. aI a j
  759. aI@ a j W2 r
  760. aU a w
  761. aU@ a w @
  762. A~ A~
  763. E E
  764. e: e
  765. e@ E : r
  766. eI E : j/
  767. i i
  768. I I
  769. I2 I2
  770. i: i :
  771. i@ i r
  772. i@3 i : r
  773. O O
  774. O: O :
  775. o: o
  776. O@ O r
  777. o@ O r
  778. OI O j
  779. oU oU
  780. O~ O~
  781. U u
  782. u: u:
  783. U@ u r
  784. V V
  785. IR i r
  786. VR W r
  787. b b
  788. C C
  789. d d
  790. D D
  791. dZ dZ
  792. f f
  793. g g
  794. h h
  795. j j
  796. k k
  797. l l
  798. l# l#
  799. m m
  800. n n
  801. N N
  802. n^ n^
  803. p p
  804. Q Q
  805. r r
  806. r- r
  807. s s
  808. S S
  809. t t
  810. T T
  811. t2 t
  812. tS tS
  813. v v
  814. w w/
  815. x x
  816. z z
  817. Z Z
  818. endphoneme