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.

phonemes 29KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687
  1. // This is the master phoneme file.
  2. // The base phoneme table contains the utility phonemes, the consonants,
  3. // and a schwa. The vowels are defined in the language specific phoneme
  4. // tables, which can also redefine consonants if they wish.
  5. //*******************************************************************
  6. // UTILITY PHONEMES
  7. //*******************************************************************
  8. phoneme % // Unstressed
  9. stress
  10. stress_type 1
  11. endphoneme
  12. phoneme %% // Diminished stress
  13. stress
  14. stress_type 0
  15. endphoneme
  16. phoneme \, // [,] Secondary stress
  17. stress
  18. stress_type 2
  19. endphoneme
  20. phoneme \,\, // [,,] Secondary stress
  21. stress
  22. stress_type 3
  23. endphoneme
  24. phoneme ' // Primary stress
  25. stress
  26. stress_type 4
  27. endphoneme
  28. phoneme '' // Primary stress (priority)
  29. stress
  30. stress_type 5
  31. endphoneme
  32. phoneme '! // Primary stress (emphasized)
  33. stress
  34. stress_type 6
  35. endphoneme
  36. phoneme = // Place stress on previous vowel
  37. stress
  38. stress_type 2
  39. endphoneme
  40. phoneme || // End Word
  41. pause
  42. lengthmod 1
  43. endphoneme
  44. phoneme _ // Short pause
  45. pause
  46. starttype _ endtype _
  47. lengthmod 1
  48. length 25
  49. endphoneme
  50. phoneme _! // Short pause, don't replace by linking
  51. pause
  52. starttype _ endtype _
  53. lengthmod 1
  54. nolink
  55. length 35
  56. endphoneme
  57. phoneme _| // Very short pause
  58. pause
  59. starttype _ endtype _
  60. lengthmod 5
  61. length 1
  62. endphoneme
  63. phoneme _: // Standard pause
  64. pause
  65. starttype _ endtype _
  66. lengthmod 1
  67. length 75
  68. endphoneme
  69. phoneme _:: // Long pause
  70. pause
  71. starttype _ endtype _
  72. lengthmod 1
  73. length 150
  74. endphoneme
  75. phoneme _;_ // clause pause
  76. pause
  77. starttype _ endtype _
  78. lengthmod 1
  79. length 200
  80. endphoneme
  81. phoneme _^_ // Change dictionary (followed by language-code in ascii
  82. pause
  83. starttype _ endtype _
  84. lengthmod 1
  85. length 10
  86. endphoneme
  87. phoneme _X1 // a language specific action
  88. pause
  89. starttype _ endtype _
  90. lengthmod 1
  91. length 10
  92. endphoneme
  93. phoneme ? // glottal stop
  94. vls glt stop
  95. lengthmod 2 // ??
  96. nolink
  97. Vowelin glstop
  98. Vowelout glstop
  99. WAV(ustop/null)
  100. endphoneme
  101. phoneme : // lengthen previous vowel by "length"
  102. virtual
  103. length 70
  104. endphoneme
  105. phoneme - // Indicates the previous phoneme is a syllabic consonant
  106. virtual
  107. endphoneme
  108. phoneme @ // Schwa
  109. vowel starttype #@ endtype #@
  110. unstressed
  111. length 140
  112. FMT(vowel/@)
  113. endphoneme
  114. phoneme @- // very short schwa
  115. vowel nonsyllabic
  116. starttype #@ endtype #@
  117. unstressed
  118. length 50
  119. FMT(vowel/@-)
  120. endphoneme
  121. //*******************************************************************
  122. // Other sounds
  123. //*******************************************************************
  124. phoneme #X1 // click, use for indicating capital letters
  125. vls alv frc sibilant
  126. lengthmod 3
  127. WAV(ustop/percus10)
  128. endphoneme
  129. //*******************************************************************
  130. // VIRTUAL - referred to in vowels' vowel starttype and endtype
  131. // These each apply to a class of vowels
  132. //*******************************************************************
  133. phoneme #@ virtual
  134. endphoneme
  135. phoneme #a virtual
  136. endphoneme
  137. phoneme #e virtual
  138. endphoneme
  139. phoneme #i virtual
  140. endphoneme
  141. phoneme #o virtual
  142. endphoneme
  143. phoneme #u virtual
  144. endphoneme
  145. //*******************************************************************
  146. // SONORANTS
  147. //*******************************************************************
  148. phoneme r- // syllabic r
  149. vowel starttype #@ endtype #@
  150. unstressed
  151. length 220
  152. FMT(vowelr/r-voc)
  153. endphoneme
  154. phoneme l- // syllabic l
  155. vowel starttype #@ endtype #@
  156. unstressed
  157. length 200
  158. FMT(vwl_hi/l-voc)
  159. endphoneme
  160. phoneme r
  161. liquid rhotic
  162. lengthmod 7
  163. IF nextPh(isNotVowel) THEN
  164. ChangePhoneme(r/)
  165. ENDIF
  166. NextVowelStarts
  167. VowelStart(r/r@, -15)
  168. VowelStart(r/ra, -15)
  169. VowelStart(r/re, -15)
  170. VowelStart(r/ri, -15)
  171. VowelStart(r/ro, -15)
  172. VowelStart(r/ru, -15)
  173. EndSwitch
  174. IF prevPh(isVowel) THEN
  175. VowelEnding(r/xr, -50)
  176. ENDIF
  177. IF prevPh(isPause) THEN
  178. FMT(r/_r)
  179. ELIF prevPh(t) OR prevPh(p) OR prevPh(k) THEN
  180. FMT(r/tr)
  181. ENDIF
  182. FMT(r/r)
  183. endphoneme
  184. phoneme r/ // used for [r] when not preceding a vowel
  185. liquid rhotic
  186. lengthmod 2
  187. IF nextPh(n) THEN
  188. FMT(r3/r_n) addWav(r3/rx)
  189. ENDIF
  190. IF prevPh(t) OR prevPh(p) OR prevPh(k) THEN
  191. FMT(r/trr)
  192. ENDIF
  193. IF prevPh(isNotVowel) THEN
  194. FMT(r/rr)
  195. ENDIF
  196. FMT(r3/r_) addWav(r3/rx)
  197. endphoneme
  198. phoneme R
  199. liquid
  200. trill
  201. lengthmod 6
  202. Vowelin f1=0 f2=1600 -300 300 f3=-200 80
  203. Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk
  204. FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65)
  205. endphoneme
  206. phoneme R2 // this is [R] from Slovak/Czech
  207. liquid
  208. trill
  209. lengthmod 6
  210. Vowelin f1=0 f2=1700 -300 300 f3=-300 80
  211. Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
  212. FMT(r3/r_trill) addWav(r3/r_trill.wav, 50)
  213. endphoneme
  214. phoneme R3 // Afrikaans
  215. liquid
  216. trill
  217. lengthmod 6
  218. length 60
  219. Vowelin f1=2 f2=2700 -300 -200 f3=-1300 80
  220. Vowelout f1=2 f2=1700 -300 -200 f3=-1300 80
  221. // vowel modifier is the same as for [r]
  222. NextVowelStarts
  223. VowelStart(r/r@, -15)
  224. VowelStart(r/ra, -15)
  225. VowelStart(r/re, -15)
  226. VowelStart(r/ri, -15)
  227. VowelStart(r/ro, -15)
  228. VowelStart(r/ru, -15)
  229. EndSwitch
  230. IF prevPh(isVowel) THEN
  231. VowelEnding(r/xr, -50)
  232. ENDIF
  233. FMT(r3/r_trill) addWav(r3/r_trill3.wav)
  234. endphoneme
  235. phoneme r" // uvular trill
  236. vcd uvl frc
  237. lengthmod 6
  238. IF nextPh(isNotVowel) THEN
  239. FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50)
  240. ENDIF
  241. FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 75)
  242. endphoneme
  243. procedure vowelstart_l
  244. NextVowelStarts
  245. VowelStart(l/l@)
  246. VowelStart(l/la)
  247. VowelStart(l/le)
  248. VowelStart(l/li, -10)
  249. VowelStart(l/lo)
  250. VowelStart(l/lu)
  251. EndSwitch
  252. endprocedure
  253. phoneme l
  254. liquid
  255. lengthmod 7
  256. IF nextPh(isNotVowel) THEN
  257. ChangePhoneme(l/)
  258. ENDIF
  259. CALL vowelstart_l
  260. IF prevPh(#@) THEN
  261. VowelEnding(l/xl, -50)
  262. ELIF prevPh(isVowel) THEN
  263. VowelEnding(l/xl, -40)
  264. ENDIF
  265. IF prevPh(isPause) THEN
  266. FMT(l/_l)
  267. ENDIF
  268. IF prevPh(t) THEN
  269. FMT(l/tl)
  270. ENDIF
  271. IF prevPh(l/) THEN
  272. FMT(l/l_long) // double l, make it longer
  273. ENDIF
  274. FMT(l/l)
  275. endphoneme
  276. phoneme l/ // used for [l] when not before a vowel
  277. liquid
  278. lengthmod 7
  279. IF nextPh(isVowel) THEN
  280. ChangePhoneme(l)
  281. ENDIF
  282. PrevVowelEndings
  283. VowelEnding(l/L1_@L, -60)
  284. VowelEnding(l/L1_aL, -40)
  285. VowelEnding(l/L1_eL, -30)
  286. VowelEnding(l/L1_iL, -30)
  287. VowelEnding(l/L1_oL, -40)
  288. VowelEnding(l/L1_uL, -40)
  289. EndSwitch
  290. FMT(l/l_)
  291. endphoneme
  292. phoneme l/2 // 'dark' [l] after a vowel
  293. liquid
  294. lengthmod 7
  295. IF nextPh(isVowel) THEN
  296. ChangePhoneme(l)
  297. ENDIF
  298. PrevVowelEndings
  299. VowelEnding(l/L2_@L, -60)
  300. VowelEnding(l/L2_aL, -50)
  301. VowelEnding(l/L2_eL, -40)
  302. VowelEnding(l/L2_iL, -30)
  303. VowelEnding(l/L2_oL, -50)
  304. VowelEnding(l/L2_uL, -40)
  305. EndSwitch
  306. endphoneme
  307. phoneme l/3 // Replacement for [l/]
  308. liquid
  309. lengthmod 7
  310. IF nextPh(isVowel) THEN
  311. ChangePhoneme(l)
  312. ENDIF
  313. PrevVowelEndings
  314. VowelEnding(l/l_@)
  315. VowelEnding(l/l_a)
  316. VowelEnding(l/l_e)
  317. VowelEnding(l/l_i)
  318. VowelEnding(l/l_o)
  319. VowelEnding(l/l_u, -20)
  320. EndSwitch
  321. // IF nextPh(isLiquid) THEN
  322. // FMT(l/_l)
  323. // ENDIF
  324. FMT(l/l_)
  325. endphoneme
  326. phoneme l^ // palatal l
  327. liquid
  328. lengthmod 7
  329. Vowelout len=60 lenadd rate
  330. length 100
  331. NextVowelStarts
  332. VowelStart(l^/j2@)
  333. VowelStart(l^/j2a)
  334. VowelStart(l^/j2e)
  335. VowelStart(l^/j2i)
  336. VowelStart(l^/j2o)
  337. VowelStart(l^/j2u)
  338. EndSwitch
  339. IF prevPh(isPause) THEN
  340. FMT(l^/_l^)
  341. ENDIF
  342. FMT(l^/l^)
  343. endphoneme
  344. phoneme l.
  345. liquid rfx
  346. lengthmod 7
  347. FMT(l^/l_rfx)
  348. endphoneme
  349. phoneme w
  350. liquid
  351. lengthmod 7
  352. IF nextPh(isVowel) THEN
  353. NextVowelStarts
  354. VowelStart(w/w@)
  355. VowelStart(w/wa)
  356. VowelStart(w/we)
  357. VowelStart(w/wi)
  358. VowelStart(w/wo)
  359. VowelStart(w/wu)
  360. EndSwitch
  361. VowelEnding(w/xw, -30)
  362. IF prevPh(isPause) THEN
  363. FMT(w/_w)
  364. ELSE
  365. FMT(w/_w)
  366. ENDIF
  367. ELSE
  368. // no vowel follows
  369. Vowelout len=50
  370. IF prevPh(#i) THEN
  371. FMT(w/iw_)
  372. ENDIF
  373. FMT(w/w_)
  374. ENDIF
  375. endphoneme
  376. phoneme j
  377. liquid palatal
  378. lengthmod 7
  379. IF nextPh(isVowel) THEN
  380. NextVowelStarts
  381. VowelStart(j/j@)
  382. VowelStart(j/ja)
  383. VowelStart(j/je)
  384. VowelStart(j/ji)
  385. VowelStart(j/jo)
  386. VowelStart(j/ju)
  387. EndSwitch
  388. VowelEnding(j/xj, -30)
  389. IF prevPh(isPause) THEN
  390. FMT(j/_j)
  391. ENDIF
  392. ELSE
  393. // no vowel follows
  394. Vowelout len=70
  395. FMT(j/j_)
  396. ENDIF
  397. endphoneme
  398. phoneme ; // linking j, used between (i) vowels and a following vowel
  399. // also to palatalize consonants
  400. liquid palatal
  401. lengthmod 0
  402. IF nextPh(isNotVowel) THEN
  403. ChangePhoneme(NULL) // this is to ignore this phoneme if not before a vowel
  404. ENDIF
  405. NextVowelStarts
  406. VowelStart(j2/j2@)
  407. VowelStart(j2/j2a)
  408. VowelStart(j2/j2e)
  409. VowelStart(j2/j2i)
  410. VowelStart(j2/j2o)
  411. VowelStart(j2/j2u)
  412. EndSwitch
  413. IF prevPh(#i) THEN
  414. VowelEnding(j2/xj2, -40)
  415. ENDIF
  416. IF prevPh(isPause) THEN
  417. FMT(j2/_j2)
  418. ENDIF
  419. endphoneme
  420. //*******************************************************************
  421. // NASAL CONSONANTS
  422. //*******************************************************************
  423. phoneme m
  424. vcd blb nasal
  425. Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
  426. lengthmod 4
  427. IF KlattSynth THEN
  428. Vowelin f1=0 f2=1000 -50 -200 f3=-200 80
  429. IF nextPh(isPause2) THEN
  430. FMT(klatt/m_)
  431. ENDIF
  432. FMT(klatt/m)
  433. ENDIF
  434. NextVowelStarts
  435. VowelStart(m/m@)
  436. VowelStart(m/ma)
  437. VowelStart(m/me)
  438. VowelStart(m/mi)
  439. VowelStart(m/mo)
  440. VowelStart(m/mu)
  441. EndSwitch
  442. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  443. FMT(m/mj)
  444. ELIF prevPh(isPause) THEN
  445. FMT(m/_m)
  446. ELIF nextPh(isNotVowel) THEN
  447. FMT(m/m_)
  448. ENDIF
  449. endphoneme
  450. phoneme n
  451. vcd alv nasal
  452. Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
  453. lengthmod 4
  454. IF KlattSynth THEN
  455. Vowelin f1=0 f2=1500 -200 200 f3=0 80
  456. FMT(klatt/n)
  457. ENDIF
  458. NextVowelStarts
  459. VowelStart(n/n@)
  460. VowelStart(n/na)
  461. VowelStart(n/ne)
  462. VowelStart(n/ni)
  463. VowelStart(n/no)
  464. VowelStart(n/nu)
  465. EndSwitch
  466. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  467. FMT(n/nj)
  468. ELIF prevPh(isPause) OR prevPh(n) THEN
  469. FMT(n/_n)
  470. ELIF nextPh(isNotVowel) THEN
  471. FMT(n/n_)
  472. ENDIF
  473. endphoneme
  474. phoneme n.
  475. vcd rfx nasal
  476. starttype n endtype n
  477. Vowelin f1=2 f2=1200 -300 250 f3=-500 80 rms=20 colr=2
  478. Vowelout f1=2 f2=1200 -300 250 f3=-500 80 rms=20 brk colr=2
  479. lengthmod 4
  480. IF KlattSynth THEN
  481. FMT(klatt/nr)
  482. ENDIF
  483. NextVowelStarts
  484. VowelStart(n/n@)
  485. VowelStart(n/na)
  486. VowelStart(n/ne)
  487. VowelStart(n/ni)
  488. VowelStart(n/no)
  489. VowelStart(n/nu)
  490. EndSwitch
  491. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  492. FMT(n/nj)
  493. ELIF prevPh(isPause) OR prevPh(n.) THEN
  494. FMT(n/_nr)
  495. ELIF nextPh(isNotVowel) THEN
  496. FMT(n/nr_)
  497. ENDIF
  498. endphoneme
  499. phoneme n^
  500. vcd pal nasal palatal
  501. Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate
  502. lengthmod 4
  503. IF KlattSynth THEN
  504. VowelStart(klatt/n^@)
  505. FMT(klatt/n^)
  506. ENDIF
  507. NextVowelStarts
  508. VowelStart(n^/n^@)
  509. VowelStart(n^/n^a)
  510. VowelStart(n^/n^e)
  511. VowelStart(n^/n^i)
  512. VowelStart(n^/n^o)
  513. VowelStart(n^/n^u)
  514. EndSwitch
  515. IF prevPh(isPause) THEN
  516. FMT(n^/_n^)
  517. ELIF nextPh(isNotVowel) THEN
  518. IF nextPhW(n^) THEN
  519. Length 75
  520. ELIF prevPhW(n^) THEN
  521. Length 100
  522. ENDIF
  523. FMT(n^/n^_)
  524. ENDIF
  525. endphoneme
  526. phoneme N
  527. vcd vel nasal
  528. Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
  529. lengthmod 8 // longer than 'n'
  530. IF KlattSynth THEN
  531. Vowelin f1=0 f2=2100 50 300 f3=0 80
  532. FMT(klatt/nn)
  533. ENDIF
  534. NextVowelStarts
  535. VowelStart(nn/nn@)
  536. VowelStart(nn/nna)
  537. VowelStart(nn/nne)
  538. VowelStart(nn/nni)
  539. VowelStart(nn/nno)
  540. VowelStart(nn/nnu)
  541. EndSwitch
  542. IF prevPh(#i) THEN
  543. VowelEnding(nn/inn, -40)
  544. ENDIF
  545. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  546. FMT(nn/nnj)
  547. ELIF prevPh(isPause) THEN
  548. FMT(nn/_nn)
  549. ELIF nextPh(isNotVowel) THEN
  550. FMT(nn/nn_)
  551. ENDIF
  552. endphoneme
  553. phoneme ** // TEST flap
  554. liquid alv
  555. lengthmod 3
  556. Vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15
  557. Vowelin f1=2 f2=1600 -300 300 f3=-100 80 len=20
  558. IF prevPh(#i) OR prevPh(#e) THEN
  559. FMT(r3/@tap2)
  560. ENDIF
  561. FMT(r3/@tap)
  562. endphoneme
  563. phoneme * // flap
  564. vcd alv flp
  565. brkafter
  566. lengthmod 3
  567. IF nextPh(#e) OR nextPh(#i) THEN
  568. Vowelin f1=0 f2=1500 -300 300 f3=-200 80
  569. FMT(d/tap1) addWav(r3/rx, 150)
  570. FMT(d/tap1) addWav(r3/rx, 150)
  571. ENDIF
  572. Vowelin f1=2 f2=1500 -300 300 f3=-200 80
  573. IF nextPh(#a) THEN
  574. FMT(d/tap3) addWav(r3/rx, 200)
  575. ENDIF
  576. IF nextPh(r) THEN
  577. FMT(d/dr)
  578. ENDIF
  579. Vowelout f1=3 f2=1500 -400 300 f3=-200 80 rms=35 len=50
  580. Vowelin f1=0 f2=1500 -300 300 f3=-200 80
  581. FMT(d/tap3) addWav(r3/rx, 200)
  582. endphoneme
  583. phoneme r. // retroflex
  584. liquid rfx
  585. lengthmod 3
  586. Vowelout f1=3 f2=1400 -400 300 f3=-400 80 rms=35 len=15 colr=2
  587. Vowelin f1=2 f2=1400 -400 300 f3=-400 80 len=20
  588. FMT(r3/@tap_rfx)
  589. endphoneme
  590. //*******************************************************************
  591. // VOICED STOPS
  592. //*******************************************************************
  593. phoneme b
  594. vcd blb stop
  595. voicingswitch p
  596. Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
  597. lengthmod 5
  598. IF PreVoicing THEN
  599. FMT(b/xb)
  600. ENDIF
  601. IF KlattSynth THEN
  602. Vowelin f1=1 f2=1000 -500 -300 f3=-300 80
  603. IF nextPh(isPause2) THEN
  604. FMT(klatt/b) addWav(x/b_)
  605. ENDIF
  606. FMT(klatt/b) addWav(x/b)
  607. ENDIF
  608. IF nextPh(isPause2) THEN
  609. FMT(b/b_) addWav(x/b_)
  610. ELIF nextPh(@-) THEN
  611. FMT(b/b@2) addWav(x/b)
  612. ELIF nextPh(#@) THEN
  613. FMT(b/b@) addWav(x/b)
  614. ELIF nextPh(#a) THEN
  615. FMT(b/ba) addWav(x/b)
  616. ELIF nextPh(#e) THEN
  617. FMT(b/be) addWav(x/b)
  618. ELIF nextPh(#i) THEN
  619. FMT(b/bi) addWav(x/b)
  620. ELIF nextPh(#o) THEN
  621. FMT(b/bo) addWav(x/b)
  622. ELIF nextPh(#u) THEN
  623. FMT(b/bu) addWav(x/b)
  624. ENDIF
  625. FMT(b/b) addWav(x/b)
  626. endphoneme
  627. phoneme d
  628. vcd alv stop
  629. voicingswitch t
  630. lengthmod 5
  631. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  632. Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk
  633. IF PreVoicing THEN
  634. FMT(d/xd)
  635. ENDIF
  636. IF nextPh(isPause2) THEN
  637. FMT(d/d_) addWav(x/d_)
  638. // ELIF nextPh(r) THEN
  639. // FMT(d/dr) addWav(x/d)
  640. ENDIF
  641. FMT(d/d) addWav(x/d)
  642. endphoneme
  643. phoneme d[
  644. vcd dnt stop
  645. voicingswitch t[
  646. lengthmod 5
  647. Vowelin f1=2 f2=1500 -300 300 f3=-150 80
  648. Vowelout f1=2 f2=1500 -300 300 f3=-150 80
  649. IF PreVoicing THEN
  650. FMT(d/xd)
  651. ENDIF
  652. IF nextPh(isPause2) THEN
  653. FMT(d/d_) addWav(x/d_)
  654. ELIF nextPh(r) THEN
  655. FMT(d/dr) addWav(x/d_dnt, 110)
  656. ENDIF
  657. FMT(d/d) addWav(x/d_dnt, 110)
  658. endphoneme
  659. phoneme dZ
  660. vcd pla afr sibilant
  661. voicingswitch tS
  662. lengthmod 5
  663. Vowelin f1=2 f2=2300 200 400 f3=100 80
  664. Vowelout f1=2 f2=2300 250 300 f3=100 80 brk
  665. IF PreVoicing THEN
  666. FMT(dzh/xdzh)
  667. ENDIF
  668. IF nextPh(isPause2) THEN
  669. FMT(dzh/dzh_) addWav(x/dzh_)
  670. ENDIF
  671. FMT(dzh/dzh) addWav(x/dzh)
  672. endphoneme
  673. phoneme dZ;
  674. vcd pla afr sibilant palatal
  675. voicingswitch tS;
  676. lengthmod 5
  677. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  678. Vowelout f1=2 f2=2700 400 600 f3=300 80
  679. IF PreVoicing THEN
  680. FMT(dzh/xdzh)
  681. ENDIF
  682. IF KlattSynth THEN
  683. IF nextPh(isPause2) THEN
  684. FMT(dzh/dzh_) addWav(x/dzh_)
  685. ENDIF
  686. FMT(dzh/dzh) addWav(x/dz_pzd)
  687. ENDIF
  688. IF nextPh(isPause2) THEN
  689. FMT(dzh/dzh_) addWav(x/dzh_)
  690. ENDIF
  691. FMT(dzh/dzh) addWav(x/dz_pzd)
  692. endphoneme
  693. phoneme J
  694. vcd pal afr sibilant
  695. voicingswitch c
  696. lengthmod 5
  697. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  698. Vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1
  699. IF PreVoicing THEN
  700. FMT(dzh/xdz_pzd)
  701. ENDIF
  702. IF KlattSynth THEN
  703. IF nextPh(isPause2) THEN
  704. FMT(klatt/dz_pzd_) addWav(x/dzh, 35)
  705. ENDIF
  706. FMT(klatt/dz_pzd) addWav(x/dzh, 45)
  707. ENDIF
  708. IF nextPh(isPause2) THEN
  709. FMT(dzh/dz_pzd_) addWav(x/dzh, 35)
  710. ENDIF
  711. FMT(dzh/dz_pzd) addWav(x/dzh, 45)
  712. endphoneme
  713. phoneme g
  714. vcd vel stop
  715. voicingswitch k
  716. lengthmod 5
  717. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  718. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  719. IF PreVoicing THEN
  720. FMT(g/xg)
  721. ENDIF
  722. IF nextPh(isPause2) THEN
  723. FMT(g/g_) addWav(x/g_)
  724. ENDIF
  725. FMT(g/g) addWav(x/g2, 150)
  726. endphoneme
  727. //*******************************************************************
  728. // VOICED fricatives
  729. //*******************************************************************
  730. phoneme B
  731. vcd blb frc
  732. voicingswitch f
  733. lengthmod 6
  734. Vowelin f1=2 f2=1000 -300 -200 f3=-100 100
  735. Vowelout f1=2 f2=1000 -500 -300 f3=-100 60 len=50
  736. IF KlattSynth THEN
  737. IF nextPh(isPause2) THEN
  738. FMT(klatt/v_) addWav(vocw/v)
  739. ENDIF
  740. FMT(klatt/bh) addWav(vocw/v)
  741. ENDIF
  742. IF nextPh(isPause2) THEN
  743. FMT(voc/v_) addWav(vocw/v)
  744. ENDIF
  745. FMT(voc/bh) addWav(vocw/v)
  746. endphoneme
  747. phoneme v
  748. vcd lbd frc
  749. voicingswitch f
  750. lengthmod 6
  751. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  752. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  753. IF KlattSynth THEN
  754. Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
  755. IF nextPh(isPause2) THEN
  756. FMT(klatt/v_) addWav(vocw/v)
  757. ENDIF
  758. FMT(klatt/v) addWav(vocw/v, 150)
  759. ENDIF
  760. IF nextPh(isPause2) THEN
  761. FMT(voc/v_) addWav(vocw/v)
  762. ENDIF
  763. IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
  764. Length 70
  765. ENDIF
  766. FMT(voc/v) addWav(vocw/v)
  767. endphoneme
  768. phoneme v# // approximant, not fricative
  769. vcd lbd frc
  770. lengthmod 6
  771. voicingswitch f
  772. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  773. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  774. IF nextPh(isPause2) THEN
  775. FMT(voc/v#_)
  776. ENDIF
  777. FMT(voc/v#)
  778. endphoneme
  779. phoneme D
  780. vcd dnt frc
  781. voicingswitch T
  782. lengthmod 6
  783. Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
  784. IF KlattSynth THEN
  785. Vowelin f1=0 f2=1290 -300 300 f3=0 0
  786. ENDIF
  787. IF nextPh(isPause2) THEN
  788. FMT(voc/dh_) addWav(vocw/dh)
  789. ENDIF
  790. FMT(voc/dh) addWav(vocw/dh)
  791. endphoneme
  792. phoneme z
  793. vcd alv frc sibilant
  794. voicingswitch s
  795. lengthmod 6
  796. Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
  797. IF KlattSynth THEN
  798. Vowelin f1=0 f2=1390 -300 300 f3=0 0
  799. Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk
  800. ENDIF
  801. IF nextPh(isPause2) THEN
  802. FMT(voc/z_) addWav(ufric/s_, 85)
  803. ENDIF
  804. FMT(voc/z) addWav(ufric/s_)
  805. endphoneme
  806. phoneme Z
  807. vcd pla frc sibilant
  808. voicingswitch S
  809. lengthmod 6
  810. Vowelin f1=0 f2=2000 0 300 f3=-200 80
  811. Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk
  812. IF KlattSynth THEN
  813. IF nextPh(isPause2) THEN
  814. FMT(klatt/zh_) addWav(vocw/zh)
  815. ENDIF
  816. FMT(klatt/zh) addWav(vocw/zh, 130)
  817. ENDIF
  818. IF nextPh(isPause2) THEN
  819. FMT(voc/zh_) addWav(vocw/zh)
  820. ENDIF
  821. FMT(voc/zh) addWav(vocw/zh, 130)
  822. endphoneme
  823. phoneme z.
  824. vcd pla frc sibilant
  825. voicingswitch s.
  826. lengthmod 6
  827. Vowelin f1=0 f2=1800 -100 300 f3=-300 80
  828. Vowelout f1=2 f2=1800 -100 300 f3=-300 80 brk
  829. IF KlattSynth THEN
  830. IF nextPh(isPause2) THEN
  831. FMT(klatt/zh_) addWav(vocw/zh_rfx)
  832. ENDIF
  833. FMT(klatt/zh) addWav(vocw/zh_rfx)
  834. ENDIF
  835. IF nextPh(isPause2) THEN
  836. FMT(voc/zh_) addWav(vocw/zh_rfx)
  837. ENDIF
  838. FMT(voc/zh) addWav(vocw/zh_rfx)
  839. endphoneme
  840. phoneme z;
  841. vcd pal frc sibilant palatal
  842. voicingswitch s;
  843. lengthmod 6
  844. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  845. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  846. IF nextPh(isPause2) THEN
  847. FMT(voc/z_pzd_) addWav(ufric/s_pzd_, 80)
  848. ENDIF
  849. FMT(voc/z_pzd) addWav(ufric/s_pzd, 80)
  850. endphoneme
  851. phoneme Z;
  852. vcd pal frc sibilant palatal
  853. voicingswitch S;
  854. lengthmod 6
  855. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  856. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  857. IF nextPh(isPause2) THEN
  858. FMT(voc/z_pzd_) addWav(ufric/sh_pzd_)
  859. ENDIF
  860. FMT(voc/z_pzd) addWav(ufric/sh_pzd, 80)
  861. endphoneme
  862. phoneme J^ // palatal fricative (Kirshenbaum C<vcd>)
  863. vcd pal frc palatal
  864. voicingswitch C
  865. lengthmod 6
  866. Vowelin f1=1 f2=2700 400 600 f3=200 70
  867. Vowelout f1=1 f2=2700 400 600 f3=200 70 len=100
  868. FMT(voc/j) addWav(ufric/ch, 25)
  869. endphoneme
  870. phoneme Q
  871. vcd vel frc
  872. voicingswitch x
  873. lengthmod 6
  874. Vowelin f1=2 f2=2300 200 400 f3=-100 80
  875. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  876. IF KlattSynth THEN
  877. IF nextPh(isPause2) THEN
  878. FMT(klatt/qqh_) addWav(vocw/Q_)
  879. ENDIF
  880. FMT(klatt/qqh) addWav(vocw/Q)
  881. ENDIF
  882. IF nextPh(isPause2) THEN
  883. FMT(voc/Q_) addWav(vocw/Q_)
  884. ENDIF
  885. FMT(voc/Q) addWav(vocw/Q)
  886. endphoneme
  887. phoneme Q^
  888. vcd vel frc
  889. lengthmod 6
  890. Vowelin f1=2 f2=2700 400 600 f3=200 80
  891. Vowelout f1=2 f2=2700 40 600 f3=200 80 brk
  892. IF nextPh(isPause2) THEN
  893. FMT(voc/Q_) addWav(vocw/Q_)
  894. ENDIF
  895. FMT(voc/Q) addWav(vocw/Q)
  896. endphoneme
  897. phoneme Q" // voiced velar fricative
  898. vcd uvl frc
  899. lengthmod 6
  900. IF nextPh(isPause2) THEN
  901. FMT(voc/Q_ulv) addWav(ufric/xx, 60)
  902. ENDIF
  903. FMT(voc/Q_ulv) addWav(ufric/xx, 80)
  904. endphoneme
  905. //*******************************************************************
  906. // UNVOICED STOPS
  907. //*******************************************************************
  908. phoneme p
  909. vls blb stop
  910. voicingswitch b
  911. lengthmod 2
  912. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  913. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  914. IF nextPh(isPause2) THEN
  915. WAV(ustop/p_)
  916. ELIF nextPh(r) THEN
  917. WAV(ustop/pr, 70)
  918. ELIF nextPh(R) OR nextPh(R2) THEN
  919. WAV(ustop/pr)
  920. ELIF nextPh(@-) THEN
  921. WAV(ustop/p_unasp)
  922. ELIF nextPh(l) THEN
  923. WAV(ustop/pl)
  924. ENDIF
  925. WAV(ustop/p)
  926. endphoneme
  927. phoneme t
  928. vls alv stop
  929. voicingswitch d
  930. lengthmod 2
  931. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  932. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  933. IF nextPh(isPause2) THEN
  934. WAV(ustop/t_)
  935. ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
  936. WAV(ustop/tr)
  937. ELIF nextPh(@-) THEN
  938. WAV(ustop/t_dnt, 50)
  939. ENDIF
  940. WAV(ustop/t, 90)
  941. endphoneme
  942. phoneme t[ // dental variant of /t/
  943. vls dnt stop
  944. voicingswitch d[
  945. lengthmod 2
  946. Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16
  947. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
  948. IF nextPh(isPause2) THEN
  949. WAV(ustop/t_dnt, 35)
  950. ENDIF
  951. WAV(ustop/t_hi, 70)
  952. endphoneme
  953. phoneme tS
  954. vls pla afr sibilant
  955. voicingswitch dZ
  956. lengthmod 2
  957. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  958. IF nextPh(isPause2) THEN
  959. WAV(ustop/tsh_)
  960. ENDIF
  961. WAV(ustop/tsh)
  962. endphoneme
  963. phoneme tS;
  964. vls pal afr sibilant palatal
  965. voicingswitch dZ;
  966. lengthmod 2
  967. Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
  968. IF nextPh(isPause2) THEN
  969. WAV(ustop/ts_pzd)
  970. ENDIF
  971. WAV(ustop/ts_pzd)
  972. endphoneme
  973. phoneme c
  974. vls pal stop palatal
  975. voicingswitch J
  976. lengthmod 2
  977. Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
  978. Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1
  979. IF nextPh(isPause2) THEN
  980. WAV(ustop/t_pzd, 30)
  981. ENDIF
  982. WAV(ustop/c, 130)
  983. endphoneme
  984. phoneme k
  985. vls vel stop
  986. voicingswitch g
  987. lengthmod 2
  988. Vowelin f1=0 f2=2300 200 300 f3=-200 80
  989. Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20
  990. IF KlattSynth THEN
  991. Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20
  992. ENDIF
  993. IF nextPh(isPause2) THEN
  994. WAV(ustop/k_)
  995. ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
  996. WAV(ustop/kr)
  997. ELIF nextPh(#i) OR nextPh(;) THEN
  998. WAV(ustop/ki)
  999. ELIF nextPh(l) THEN
  1000. WAV(ustop/kl)
  1001. ELIF nextPh(@-) THEN
  1002. WAV(ustop/k_unasp, 70)
  1003. ENDIF
  1004. WAV(ustop/k)
  1005. endphoneme
  1006. phoneme q
  1007. vls uvl stop
  1008. lengthmod 2
  1009. Vowelin f1=1 f2=1700 0 200 f3=-300 80 paus f4 rms=30
  1010. Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35
  1011. IF nextPh(isPause2) THEN
  1012. WAV(ustop/q, 40)
  1013. ELIF nextPh(#u) THEN
  1014. WAV(ustop/q_u, 80)
  1015. ENDIF
  1016. WAV(ustop/q, 48)
  1017. endphoneme
  1018. //*******************************************************************
  1019. // UNVOICED fricatives
  1020. //*******************************************************************
  1021. phoneme f
  1022. vls lbd frc
  1023. voicingswitch v
  1024. lengthmod 3
  1025. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  1026. IF nextPh(isPause) THEN
  1027. WAV(ufric/f_)
  1028. ENDIF
  1029. WAV(ufric/f)
  1030. endphoneme
  1031. phoneme T
  1032. vls dnt frc
  1033. voicingswitch D
  1034. lengthmod 3
  1035. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  1036. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  1037. IF nextPh(isPause) THEN
  1038. WAV(ufric/th_)
  1039. ENDIF
  1040. WAV(ufric/th)
  1041. endphoneme
  1042. phoneme s
  1043. vls alv frc sibilant
  1044. voicingswitch z
  1045. lengthmod 3
  1046. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  1047. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  1048. IF nextPh(isPause) THEN
  1049. WAV(ufric/s_)
  1050. ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
  1051. WAV(ufric/s!)
  1052. ENDIF
  1053. WAV(ufric/s)
  1054. endphoneme
  1055. phoneme S
  1056. vls pla frc sibilant
  1057. voicingswitch Z
  1058. lengthmod 3
  1059. Vowelin f1=0 f2=2100 100 300 f3=-100 80
  1060. Vowelout f1=0 f2=2100 100 300 f3=-100 80
  1061. IF nextPh(isPause) THEN
  1062. WAV(ufric/sh_)
  1063. ENDIF
  1064. WAV(ufric/sh)
  1065. endphoneme
  1066. phoneme s.
  1067. vls pla frc sibilant
  1068. voicingswitch z.
  1069. lengthmod 3
  1070. Vowelin f1=0 f2=1800 -100 300 f3=-300 80
  1071. Vowelout f1=0 f2=1800 -100 300 f3=-300 80
  1072. IF nextPh(isPause) THEN
  1073. WAV(ufric/sh_rfx, 60)
  1074. ENDIF
  1075. WAV(ufric/sh_rfx, 90)
  1076. endphoneme
  1077. phoneme s;
  1078. vls pal frc sibilant palatal
  1079. voicingswitch z;
  1080. lengthmod 3
  1081. Vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70
  1082. Vowelout f1=1 f2=2700 400 600 f3=200 70 rate len=70
  1083. IF nextPh(isPause) THEN
  1084. WAV(ufric/s_pzd_)
  1085. ENDIF
  1086. WAV(ufric/s_pzd)
  1087. endphoneme
  1088. phoneme S;
  1089. vls pal frc sibilant palatal
  1090. voicingswitch Z;
  1091. lengthmod 3
  1092. Vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70
  1093. Vowelout f1=1 f2=2700 400 600 f3=200 70 rate
  1094. IF nextPh(isPause) THEN
  1095. WAV(ufric/sh_pzd_)
  1096. ENDIF
  1097. WAV(ufric/sh_pzd)
  1098. endphoneme
  1099. phoneme L // Welsh "ll"
  1100. vls alv frc
  1101. lengthmod 3
  1102. NextVowelStarts
  1103. VowelStart(l/l@)
  1104. VowelStart(l/la)
  1105. VowelStart(l/le)
  1106. VowelStart(l/li, -10)
  1107. VowelStart(l/lo)
  1108. VowelStart(l/lu)
  1109. EndSwitch
  1110. IF prevPh(isVowel) THEN
  1111. VowelEnding(l/xl, -40)
  1112. ENDIF
  1113. WAV(ufric/ll, 80)
  1114. endphoneme
  1115. phoneme C
  1116. vls pal frc palatal
  1117. lengthmod 3
  1118. Vowelin f1=0 f2=2700 400 600 f3=200 70
  1119. Vowelout f1=0 f2=2700 400 600 f3=200 70 rms=20
  1120. IF nextPh(isPause) THEN
  1121. WAV(ufric/ch_)
  1122. ENDIF
  1123. WAV(ufric/ch)
  1124. endphoneme
  1125. phoneme x
  1126. vls vel frc
  1127. voicingswitch Q
  1128. lengthmod 3
  1129. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  1130. Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
  1131. IF nextPh(isPause) THEN
  1132. WAV(ufric/x, 120)
  1133. ENDIF
  1134. WAV(ufric/x_hr, 30)
  1135. endphoneme
  1136. phoneme X
  1137. vls uvl frc
  1138. voicingswitch Q"
  1139. lengthmod 3
  1140. IF nextPh(isPause) THEN
  1141. WAV(ufric/xx, 70)
  1142. ENDIF
  1143. WAV(ufric/xx)
  1144. endphoneme
  1145. phoneme h
  1146. vls glt apr
  1147. lengthmod 3
  1148. IF nextPh(#@) THEN
  1149. WAV(h/h@)
  1150. ELIF nextPh(#a) THEN
  1151. WAV(h/ha)
  1152. ELIF nextPh(#e) THEN
  1153. WAV(h/he)
  1154. ELIF nextPh(#i) THEN
  1155. WAV(h/hi)
  1156. ELIF nextPh(#o) THEN
  1157. WAV(h/ho)
  1158. ELIF nextPh(#u) THEN
  1159. WAV(h/hu)
  1160. ENDIF
  1161. WAV(h/h_, 70) // no vowel following
  1162. endphoneme
  1163. //*******************************************************************
  1164. // ADDITIONAL PHONEME TABLES
  1165. //*******************************************************************
  1166. phonemetable consonants base
  1167. include ph_consonants
  1168. phonemetable base2 base
  1169. include ph_base2
  1170. phonemetable en base
  1171. include ph_english
  1172. phonemetable en_n en
  1173. include ph_english_n
  1174. phonemetable en_us en
  1175. include ph_english_us
  1176. phonemetable en_sc en
  1177. include ph_english_sc
  1178. phonemetable en_rp en
  1179. include ph_english_rp
  1180. phonemetable en_wm en
  1181. include ph_english_wm
  1182. phonemetable en_wi en
  1183. include ph_english_wi
  1184. phonemetable af base
  1185. include ph_afrikaans
  1186. phonemetable cy base
  1187. include ph_welsh
  1188. phonemetable de base
  1189. include ph_german
  1190. phonemetable eo base
  1191. include ph_esperanto
  1192. phonemetable jbo eo
  1193. include ph_lojban
  1194. phonemetable nci base2
  1195. include ph_nahuatl
  1196. phonemetable fi base
  1197. include ph_finnish
  1198. phonemetable fr base
  1199. include ph_french
  1200. phonemetable fr_ca fr
  1201. include ph_french_ca
  1202. phonemetable hi base
  1203. include ph_hindi
  1204. phonemetable ta hi
  1205. include ph_tamil
  1206. phonemetable hu base
  1207. include ph_hungarian
  1208. phonemetable lv base
  1209. include ph_latvian
  1210. phonemetable nl base
  1211. include ph_dutch
  1212. phonemetable pl base
  1213. include ph_polish
  1214. phonemetable sk pl
  1215. include ph_slovak
  1216. phonemetable cs sk
  1217. include ph_czech
  1218. phonemetable hr sk
  1219. include ph_croatian
  1220. phonemetable mk hr
  1221. include ph_macedonian
  1222. phonemetable sr hr
  1223. include ph_serbian
  1224. phonemetable it base2
  1225. include ph_italian
  1226. phonemetable la base
  1227. include ph_latin
  1228. phonemetable es base2
  1229. include ph_spanish
  1230. phonemetable es_la es
  1231. include ph_spanish_la
  1232. phonemetable ca es
  1233. include ph_catalan
  1234. phonemetable pt base2
  1235. include ph_pt_brazil
  1236. phonemetable pt_pt pt
  1237. include ph_portugal
  1238. phonemetable ro base2
  1239. include ph_romanian
  1240. phonemetable el base2
  1241. include ph_greek
  1242. phonemetable grc base2
  1243. include ph_greek_ancient
  1244. phonemetable sv base
  1245. include ph_swedish
  1246. phonemetable no base
  1247. include ph_norwegian
  1248. phonemetable is base
  1249. include ph_icelandic
  1250. phonemetable ru base
  1251. include ph_russian
  1252. phonemetable vi base
  1253. include ph_vi
  1254. phonemetable zhy base
  1255. include ph_zh_yue
  1256. phonemetable zh base
  1257. include ph_zh
  1258. phonemetable sw base
  1259. include ph_swahili
  1260. phonemetable tr base2
  1261. include ph_turkish
  1262. phonemetable ku base2
  1263. include ph_kurdish
  1264. phonemetable id base2
  1265. include ph_indonesian
  1266. phonemetable sq base
  1267. include ph_albanian
  1268. phonemetable hy base
  1269. include ph_armenian
  1270. phonemetable da base
  1271. include ph_danish
  1272. phonemetable rw base2
  1273. include ph_kinyarwanda
  1274. phonemetable ml hi
  1275. include ph_malayalam
  1276. //phonemetable kn hi
  1277. //include ph_kannada
  1278. //phonemetable bn hi
  1279. //include ph_bengali
  1280. phonemetable ne hi
  1281. include ph_nepali
  1282. //phonemetable mr hi
  1283. //include ph_marathi
  1284. //phonemetable eu base2
  1285. //include ph_basque
  1286. //phonemetable mn base
  1287. //include ph_mongolian
  1288. phonemetable pa hi
  1289. include ph_punjabi
  1290. phonemetable prs base
  1291. include ph_dari
  1292. phonemetable sl sk
  1293. include ph_slovenian
  1294. phonemetable gd base
  1295. include ph_s_gaelic
  1296. phonemetable bg pl
  1297. include ph_bulgarian