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_ipa 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684
  1. // International Phonetic Alphabet phonemes using the Conlang X-SAMPA (CXS)
  2. // transcription scheme.
  3. // Consonants (Pulmonic)
  4. // =====================
  5. //
  6. // | | blb | | lbd | | dnt | | alv | | pla | | rfx | | alp | | pal | | vel | | uvl | | phr | | glt | |
  7. // | | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd |
  8. // |---------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
  9. // | nas | | m | | | | | | n | | | | n` | | | | J | | N | | | | | | |
  10. // | stp | | b | | | t_d | d_d | t | d | | | | | | | | J\ | | g | | | | | | |
  11. // | sib afr | | | | | | | | | tS) | dZ) | | | dz\)| | | | | | | | | | | |
  12. // | afr | | | | | | | | | | | | | | | | | | | | | | | | |
  13. // | lat afr | | | | | | | | | | | | | | | | | | | | | | | | |
  14. // | sib frc | | | | | | | | z | | Z | | z` | | z\ | | | | | | | | | | |
  15. // | frc | | B | | v | | D | | | | | | | | | | j\ | | G | | R | | | | |
  16. // | lat frc | | | | | | | | | | | | | | | | | | | | | | | | |
  17. // | apr | | P | | | | | | r\ | | | | | | | | j | | | | | | | | |
  18. // | lat apr | | | | | | | | | | | | | | | | | | | | | | | | |
  19. // | flp | | | | | | | | | | | | | | | | | | | | | | | | |
  20. // | lat flp | | | | | | | | | | | | | | | | | | | | | | | | |
  21. // | trl | | | | | | | | | | | | | | | | | | | | | | | | |
  22. // Other Symbols
  23. // =============
  24. //
  25. // | | bld | | alv | | pla | | pal | | lbv | | vel | |
  26. // | | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd | vls | vcd |
  27. // |-------------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
  28. // | nas | | | | | | | | | | | | |
  29. // | stp | | | | | | | | | | | | |
  30. // | afr | | | | | | | | | | | | |
  31. // | vzd frc | | | | | | | | | | | | |
  32. // | ptr apr | | | | | | | | | | | | w |
  33. // | fzd lat apr | | | | | | | | | | | | |
  34. // NOTE: ')' needs to be replaced with '\)' and '\' with '\\' when referencing these phonemes in the phoneme files.
  35. // nasal
  36. phoneme m
  37. vcd blb nas
  38. ipa m
  39. Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
  40. lengthmod 4
  41. IF KlattSynth THEN
  42. Vowelin f1=0 f2=1000 -50 -200 f3=-200 80
  43. IF nextPh(isPause2) THEN
  44. FMT(klatt/m_)
  45. ENDIF
  46. FMT(klatt/m)
  47. ENDIF
  48. NextVowelStarts
  49. VowelStart(m/m@)
  50. VowelStart(m/ma)
  51. VowelStart(m/me)
  52. VowelStart(m/mi)
  53. VowelStart(m/mo)
  54. VowelStart(m/mu)
  55. EndSwitch
  56. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  57. FMT(m/mj)
  58. ELIF prevPh(isPause) THEN
  59. FMT(m/_m)
  60. ELIF nextPh(isNotVowel) THEN
  61. FMT(m/m_)
  62. ENDIF
  63. endphoneme
  64. phoneme n
  65. vcd alv nas
  66. ipa n
  67. Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
  68. lengthmod 4
  69. IF KlattSynth THEN
  70. Vowelin f1=0 f2=1500 -200 200 f3=0 80
  71. FMT(klatt/n)
  72. ENDIF
  73. NextVowelStarts
  74. VowelStart(n/n@)
  75. VowelStart(n/na)
  76. VowelStart(n/ne)
  77. VowelStart(n/ni)
  78. VowelStart(n/no)
  79. VowelStart(n/nu)
  80. EndSwitch
  81. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  82. FMT(n/nj)
  83. ELIF prevPh(isPause) OR prevPh(n) THEN
  84. FMT(n/_n)
  85. ELIF nextPh(isNotVowel) THEN
  86. FMT(n/n_)
  87. ENDIF
  88. endphoneme
  89. phoneme n`
  90. vcd rfx nas
  91. ipa ɳ
  92. starttype n endtype n
  93. Vowelin f1=2 f2=1700 -300 300 f3=-500 80 rms=20 colr=2
  94. Vowelout f1=2 f2=1700 -300 300 f3=-500 80 rms=20 brk colr=2
  95. lengthmod 4
  96. IF KlattSynth THEN
  97. FMT(klatt/nr)
  98. ENDIF
  99. NextVowelStarts
  100. VowelStart(n/nr@)
  101. VowelStart(n/nra)
  102. VowelStart(n/nre)
  103. VowelStart(n/nri)
  104. VowelStart(n/nro)
  105. VowelStart(n/nru)
  106. EndSwitch
  107. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  108. FMT(n/nj)
  109. ELIF prevPh(isPause) OR prevPh(n`) THEN
  110. FMT(n/_nr)
  111. ELIF nextPh(isNotVowel) THEN
  112. FMT(n/nr_)
  113. ENDIF
  114. endphoneme
  115. phoneme J
  116. vcd pal nas
  117. ipa ɲ
  118. Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate
  119. lengthmod 4
  120. IF KlattSynth THEN
  121. VowelStart(klatt/n^@)
  122. FMT(klatt/n^)
  123. ENDIF
  124. NextVowelStarts
  125. VowelStart(n^/n^@)
  126. VowelStart(n^/n^a)
  127. VowelStart(n^/n^e)
  128. VowelStart(n^/n^i)
  129. VowelStart(n^/n^o)
  130. VowelStart(n^/n^u)
  131. EndSwitch
  132. IF prevPh(isPause) THEN
  133. FMT(n^/_n^)
  134. ELIF nextPh(isNotVowel) THEN
  135. IF nextPhW(J) THEN
  136. length 75
  137. ELIF prevPhW(J) THEN
  138. length 100
  139. ENDIF
  140. FMT(n^/n^_)
  141. ENDIF
  142. endphoneme
  143. phoneme N
  144. vcd vel nas
  145. ipa ŋ
  146. Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
  147. lengthmod 8 // longer than 'n'
  148. IF KlattSynth THEN
  149. Vowelin f1=0 f2=2100 50 300 f3=0 80
  150. IF nextPh(isPause2) THEN
  151. FMT(klatt/nn_)
  152. ENDIF
  153. FMT(klatt/nn)
  154. ENDIF
  155. NextVowelStarts
  156. VowelStart(nn/nn@)
  157. VowelStart(nn/nna)
  158. VowelStart(nn/nne)
  159. VowelStart(nn/nni)
  160. VowelStart(nn/nno)
  161. VowelStart(nn/nnu)
  162. EndSwitch
  163. IF prevPh(#i) THEN
  164. VowelEnding(nn/inn, -40)
  165. ENDIF
  166. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  167. FMT(nn/nnj)
  168. ELIF prevPh(isPause) THEN
  169. FMT(nn/_nn)
  170. ELIF nextPh(isNotVowel) THEN
  171. FMT(nn/nn_)
  172. ENDIF
  173. endphoneme
  174. // stop
  175. phoneme b
  176. vcd blb stp
  177. ipa b
  178. Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
  179. lengthmod 5
  180. IF PreVoicing THEN
  181. FMT(b/xb)
  182. ENDIF
  183. IF KlattSynth THEN
  184. Vowelin f1=1 f2=1000 -500 -300 f3=-300 80
  185. IF nextPh(isPause2) THEN
  186. FMT(klatt/b) addWav(x/b_)
  187. ENDIF
  188. FMT(klatt/b) addWav(x/b)
  189. ENDIF
  190. IF nextPh(isPause2) THEN
  191. FMT(b/b_) addWav(x/b_)
  192. ELIF nextPh(#@) THEN
  193. FMT(b/b@) addWav(x/b)
  194. ELIF nextPh(#a) THEN
  195. FMT(b/ba) addWav(x/b)
  196. ELIF nextPh(#e) THEN
  197. FMT(b/be) addWav(x/b)
  198. ELIF nextPh(#i) THEN
  199. FMT(b/bi) addWav(x/b)
  200. ELIF nextPh(#o) THEN
  201. FMT(b/bo) addWav(x/b)
  202. ELIF nextPh(#u) THEN
  203. FMT(b/bu) addWav(x/b)
  204. ENDIF
  205. FMT(b/b) addWav(x/b)
  206. endphoneme
  207. phoneme t_d
  208. vls dnt stp
  209. ipa t̪
  210. lengthmod 2
  211. Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16
  212. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
  213. IF nextPh(isPause2) THEN
  214. WAV(ustop/t_dnt, 35)
  215. ENDIF
  216. WAV(ustop/t_hi, 70)
  217. endphoneme
  218. phoneme d_d
  219. vcd dnt stp
  220. ipa d̪
  221. lengthmod 5
  222. Vowelin f1=2 f2=1500 -300 300 f3=-150 80
  223. Vowelout f1=2 f2=1500 -300 300 f3=-150 80
  224. IF PreVoicing THEN
  225. FMT(d/xd)
  226. ENDIF
  227. IF nextPh(isPause2) THEN
  228. FMT(d/d_) addWav(x/d_)
  229. ELIF nextPh(isRhotic) THEN
  230. FMT(d/dr) addWav(x/d_dnt, 100)
  231. ENDIF
  232. FMT(d/d) addWav(x/d_dnt, 100)
  233. endphoneme
  234. phoneme t
  235. vls alv stp
  236. ipa t
  237. lengthmod 2
  238. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  239. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  240. IF nextPh(isPause2) THEN
  241. WAV(ustop/t_)
  242. ELIF nextPh(isRhotic) THEN
  243. WAV(ustop/tr)
  244. ENDIF
  245. WAV(ustop/t, 90)
  246. endphoneme
  247. phoneme d
  248. vcd alv stp
  249. ipa d
  250. lengthmod 5
  251. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  252. Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk
  253. IF PreVoicing THEN
  254. FMT(d/xd)
  255. ENDIF
  256. IF nextPh(isPause2) THEN
  257. FMT(d/d_) addWav(x/d_)
  258. ENDIF
  259. FMT(d/d) addWav(x/d)
  260. endphoneme
  261. phoneme J\\
  262. vcd pal stp
  263. ipa ɟ
  264. lengthmod 5
  265. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  266. Vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1
  267. IF PreVoicing THEN
  268. FMT(dzh/xdz_pzd)
  269. ENDIF
  270. IF KlattSynth THEN
  271. IF nextPh(isPause2) THEN
  272. FMT(klatt/dz_pzd_) addWav(x/dzh, 35)
  273. ENDIF
  274. FMT(klatt/dz_pzd) addWav(x/dzh, 45)
  275. ENDIF
  276. IF nextPh(isPause2) THEN
  277. FMT(dzh/dz_pzd_) addWav(x/dzh, 35)
  278. ENDIF
  279. FMT(dzh/dz_pzd) addWav(x/dzh, 45)
  280. endphoneme
  281. phoneme g
  282. vcd vel stp
  283. ipa ɡ
  284. lengthmod 5
  285. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  286. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  287. IF PreVoicing THEN
  288. FMT(g/xg)
  289. ENDIF
  290. IF nextPh(isPause2) THEN
  291. FMT(g/g_) addWav(x/g_)
  292. ENDIF
  293. FMT(g/g) addWav(x/g2, 150)
  294. endphoneme
  295. // affricate
  296. phoneme tS\)
  297. vls pla sib afr
  298. ipa t͡ʃ
  299. lengthmod 2
  300. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  301. IF nextPh(isPause2) THEN
  302. WAV(ustop/tsh_)
  303. ENDIF
  304. WAV(ustop/tsh)
  305. endphoneme
  306. phoneme dZ\)
  307. vcd pla sib afr
  308. ipa d͡ʒ
  309. lengthmod 5
  310. Vowelin f1=2 f2=2300 200 400 f3=100 80
  311. Vowelout f1=2 f2=2300 250 300 f3=100 80 brk
  312. IF PreVoicing THEN
  313. FMT(dzh/xdzh)
  314. ENDIF
  315. IF nextPh(isPause2) THEN
  316. FMT(dzh/dzh_) addWav(x/dzh_)
  317. ENDIF
  318. FMT(dzh/dzh) addWav(x/dzh)
  319. endphoneme
  320. phoneme dz\\\)
  321. vcd alp sib afr
  322. ipa d͡ʑ
  323. lengthmod 5
  324. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  325. Vowelout f1=2 f2=2700 400 600 f3=300 80
  326. IF PreVoicing THEN
  327. FMT(dzh/xdzh)
  328. ENDIF
  329. IF KlattSynth THEN
  330. IF nextPh(isPause2) THEN
  331. FMT(dzh/dzh_) addWav(x/dzh_)
  332. ENDIF
  333. FMT(dzh/dzh) addWav(x/dz_pzd)
  334. ENDIF
  335. IF nextPh(isPause2) THEN
  336. FMT(dzh/dzh_) addWav(x/dzh_)
  337. ENDIF
  338. FMT(dzh/dzh) addWav(x/dz_pzd)
  339. endphoneme
  340. // fricative
  341. phoneme B
  342. vcd blb frc
  343. ipa β
  344. lengthmod 6
  345. Vowelin f1=2 f2=1000 -300 -200 f3=-100 100
  346. Vowelout f1=2 f2=1000 -500 -300 f3=-100 60 len=50
  347. IF KlattSynth THEN
  348. IF nextPh(isPause2) THEN
  349. FMT(klatt/v_) addWav(vocw/v)
  350. ENDIF
  351. FMT(klatt/bh) addWav(vocw/v)
  352. ENDIF
  353. IF nextPh(isPause2) THEN
  354. FMT(voc/v_) addWav(vocw/v)
  355. ENDIF
  356. FMT(voc/bh) addWav(vocw/v)
  357. endphoneme
  358. phoneme v
  359. vcd lbd frc
  360. ipa v
  361. lengthmod 6
  362. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  363. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  364. IF KlattSynth THEN
  365. Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
  366. IF nextPh(isPause2) THEN
  367. FMT(klatt/v_) addWav(vocw/v)
  368. ENDIF
  369. FMT(klatt/v) addWav(vocw/v, 150)
  370. ENDIF
  371. IF nextPh(isPause2) THEN
  372. FMT(voc/v_) addWav(vocw/v)
  373. ENDIF
  374. IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
  375. length 70
  376. ENDIF
  377. FMT(voc/v) addWav(vocw/v)
  378. endphoneme
  379. phoneme D
  380. vcd dnt frc
  381. ipa ð
  382. lengthmod 6
  383. Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
  384. IF KlattSynth THEN
  385. Vowelin f1=0 f2=1290 -300 300 f3=0 0
  386. ENDIF
  387. IF nextPh(isPause2) THEN
  388. FMT(voc/dh_) addWav(vocw/dh)
  389. ENDIF
  390. FMT(voc/dh) addWav(vocw/dh)
  391. endphoneme
  392. phoneme z
  393. vcd alv sib frc
  394. ipa z
  395. lengthmod 6
  396. Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
  397. IF KlattSynth THEN
  398. Vowelin f1=0 f2=1390 -300 300 f3=0 0
  399. Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk
  400. ENDIF
  401. IF nextPh(isPause2) THEN
  402. FMT(voc/z_) addWav(ufric/s_, 70)
  403. ENDIF
  404. FMT(voc/z) addWav(ufric/s_, 85)
  405. endphoneme
  406. phoneme Z
  407. vcd pla sib frc
  408. ipa ʒ
  409. lengthmod 6
  410. Vowelin f1=0 f2=2000 0 300 f3=-200 80
  411. Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk
  412. IF KlattSynth THEN
  413. IF nextPh(isPause2) THEN
  414. FMT(klatt/zh_, 60) addWav(vocw/zh, 70)
  415. ENDIF
  416. FMT(klatt/zh) addWav(vocw/zh, 130)
  417. ENDIF
  418. IF nextPh(isPause2) THEN
  419. FMT(voc/zh_, 60) addWav(vocw/zh, 70)
  420. ENDIF
  421. FMT(voc/zh) addWav(vocw/zh, 130)
  422. endphoneme
  423. phoneme z`
  424. vcd rfx sib frc
  425. ipa ʐ
  426. lengthmod 6
  427. Vowelin f1=0 f2=1800 -100 300 f3=-300 80
  428. Vowelout f1=2 f2=1800 -100 300 f3=-300 80 brk
  429. IF KlattSynth THEN
  430. IF nextPh(isPause2) THEN
  431. FMT(klatt/zh_) addWav(vocw/zh_rfx)
  432. ENDIF
  433. FMT(klatt/zh) addWav(vocw/zh_rfx)
  434. ENDIF
  435. IF nextPh(isPause2) THEN
  436. FMT(voc/zh_) addWav(vocw/zh_rfx)
  437. ENDIF
  438. FMT(voc/zh) addWav(vocw/zh_rfx)
  439. endphoneme
  440. phoneme z\\
  441. vcd alp sib frc
  442. ipa ʑ
  443. lengthmod 6
  444. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  445. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  446. IF nextPh(isPause2) THEN
  447. FMT(voc/z_pzd_) addWav(ufric/s_pzd_, 80)
  448. ENDIF
  449. FMT(voc/z_pzd) addWav(ufric/s_pzd, 80)
  450. endphoneme
  451. phoneme j\\
  452. vcd pal frc
  453. ipa ʝ
  454. lengthmod 6
  455. Vowelin f1=1 f2=2700 400 600 f3=200 70
  456. Vowelout f1=1 f2=2700 400 600 f3=200 70 len=100
  457. FMT(voc/j) addWav(ufric/ch, 25)
  458. endphoneme
  459. phoneme G
  460. vcd vel frc
  461. ipa ɣ
  462. lengthmod 6
  463. Vowelin f1=2 f2=2300 200 400 f3=-100 80
  464. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  465. IF KlattSynth THEN
  466. IF nextPh(isPause2) THEN
  467. FMT(klatt/qqh_) addWav(vocw/Q_)
  468. ENDIF
  469. FMT(klatt/qqh) addWav(vocw/Q)
  470. ENDIF
  471. IF nextPh(isPause2) THEN
  472. FMT(voc/Q_) addWav(vocw/Q_)
  473. ENDIF
  474. FMT(voc/Q) addWav(vocw/Q)
  475. endphoneme
  476. phoneme R
  477. vcd uvl frc
  478. ipa ʁ
  479. lengthmod 6
  480. IF nextPh(isPause2) THEN
  481. FMT(voc/Q_ulv) addWav(ufric/xx, 60)
  482. ENDIF
  483. FMT(voc/Q_ulv) addWav(ufric/xx, 80)
  484. endphoneme
  485. // approximant
  486. phoneme P
  487. vcd lbd apr
  488. ipa ʋ
  489. lengthmod 6
  490. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  491. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  492. IF nextPh(isPause2) THEN
  493. FMT(voc/v#_)
  494. ENDIF
  495. FMT(voc/v#)
  496. endphoneme
  497. phoneme r\\
  498. vcd alv apr liquid rhotic
  499. ipa ɹ
  500. lengthmod 7
  501. IF nextPh(isNotVowel) THEN
  502. lengthmod 2
  503. IF nextPh(n) THEN
  504. FMT(r3/r_n) addWav(r3/rx)
  505. ELIF prevPh(isUStop) THEN
  506. FMT(r/trr)
  507. ELIF prevPh(isNotVowel) THEN
  508. FMT(r/rr)
  509. ENDIF
  510. FMT(r3/r_) addWav(r3/rx)
  511. ENDIF
  512. NextVowelStarts
  513. VowelStart(r/r@, -15)
  514. VowelStart(r/ra, -15)
  515. VowelStart(r/re, -15)
  516. VowelStart(r/ri, -15)
  517. VowelStart(r/ro, -15)
  518. VowelStart(r/ru, -15)
  519. EndSwitch
  520. IF prevPh(isVowel) THEN
  521. VowelEnding(r/xr, -50)
  522. ELIF prevPh(isPause) THEN
  523. FMT(r/_r)
  524. ELIF prevPh(isUStop) THEN
  525. FMT(r/tr)
  526. ENDIF
  527. FMT(r/r)
  528. endphoneme
  529. phoneme j
  530. vcd pal apr liquid starttype #i
  531. ipa j
  532. lengthmod 7
  533. IF nextPhW(isVowel) THEN
  534. NextVowelStarts
  535. VowelStart(j/j@)
  536. VowelStart(j/ja)
  537. VowelStart(j/je)
  538. VowelStart(j/ji)
  539. VowelStart(j/jo)
  540. VowelStart(j/ju)
  541. EndSwitch
  542. VowelEnding(j/xj, -30)
  543. IF prevPh(isPause) THEN
  544. FMT(j/_j)
  545. ENDIF
  546. ELSE
  547. // no vowel follows
  548. Vowelout len=70
  549. FMT(j/j_)
  550. ENDIF
  551. endphoneme
  552. phoneme w
  553. vcd ptr vel apr liquid starttype #u
  554. ipa w
  555. lengthmod 7
  556. IF nextPh(isVowel) THEN
  557. NextVowelStarts
  558. VowelStart(w/w@)
  559. VowelStart(w/wa)
  560. VowelStart(w/we)
  561. VowelStart(w/wi)
  562. VowelStart(w/wo)
  563. VowelStart(w/wu)
  564. EndSwitch
  565. VowelEnding(w/xw, -30)
  566. IF prevPhW(isNasal) THEN
  567. FMT(w/w)
  568. ELSE
  569. FMT(w/_w)
  570. ENDIF
  571. ELSE
  572. // no vowel follows
  573. Vowelout len=50
  574. IF prevPh(#i) THEN
  575. FMT(w/iw_)
  576. ENDIF
  577. FMT(w/w_)
  578. ENDIF
  579. endphoneme