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_vietnam 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742
  1. //====================================================
  2. // Vietnamese Phonemes
  3. //====================================================
  4. phoneme 1 // ngang tone: level
  5. stress
  6. Tone(30, 28, envelope/p_level, NULL) // 28 29
  7. endphoneme
  8. phoneme 2 // huyền tone: low falling
  9. stress
  10. Tone(20, 8, envelope/p_fall, NULL) //20 8
  11. endphoneme
  12. phoneme 3 // sắc Tone(rising
  13. stress
  14. Tone(30, 55, envelope/p_rise, NULL) // 30 60
  15. endphoneme
  16. phoneme 4 // hỏi Tone(curve (dipping rising)
  17. stress
  18. Tone(10, 31, envelope/p_fallrise, NULL) //33 31
  19. endphoneme
  20. phoneme 5 // ngã tone: broken (creaking rising)
  21. stress
  22. Tone(34, 60,envelope/p_214, envelope/vi_5amp) // 28,58 20 80
  23. endphoneme
  24. phoneme 6 // nặng Tone(drop (constricted)
  25. stress
  26. //length 150 // ignore because it make too short sound 75 // reduce the length of the vowel
  27. Tone(34, 10, envelope/p_512, envelope/vi_6amp) //40 20
  28. endphoneme
  29. phoneme 7 // Tone(1 (ngang) at end of clause
  30. stress
  31. Tone(30, 28, envelope/p_fall, NULL) //40 20
  32. endphoneme
  33. // Vowels
  34. //=======
  35. phoneme a
  36. vwl starttype #@ endtype #@
  37. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  38. length 240
  39. ELSE
  40. length 180
  41. ENDIF
  42. IF nextPh(N) OR nextPh(c) THEN
  43. FMT(vnasal/a_n)
  44. ELSE
  45. FMT(vietnam/a, 60) //a_4)
  46. ENDIF
  47. endphoneme
  48. phoneme a:
  49. vwl starttype #a endtype #a
  50. IF nextPhW(p) THEN
  51. length 142
  52. ELIF nextPhW(t[) THEN
  53. length 126
  54. ELIF nextPhW(c) THEN
  55. length 136
  56. ELIF nextPhW(m) THEN
  57. length 155
  58. ELIF nextPhW(n) THEN
  59. length 185
  60. ELIF nextPhW(N) THEN
  61. length 173
  62. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  63. length 240
  64. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
  65. length 240
  66. ELSE
  67. length 180
  68. ENDIF
  69. FMT(vowel/a_8)
  70. //FMT(vietnam/a_2)
  71. endphoneme
  72. phoneme E
  73. vwl starttype #e endtype #e
  74. IF nextPhW(p) THEN
  75. length 143
  76. ELIF nextPhW(t[) THEN
  77. length 107
  78. ELIF nextPhW(c) THEN
  79. length 141
  80. ELIF nextPhW(m) THEN
  81. length 128
  82. ELIF nextPhW(n) THEN
  83. length 160
  84. ELIF nextPhW(N) THEN
  85. length 187
  86. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  87. length 240
  88. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
  89. length 240
  90. ELSE
  91. length 180
  92. ENDIF
  93. FMT(vowel/e_e) //ee_3)
  94. endphoneme
  95. phoneme e
  96. vwl starttype #e endtype #e
  97. IF nextPhW(p) THEN
  98. length 114
  99. ELIF nextPhW(t[) THEN
  100. length 126
  101. ELIF nextPhW(c) THEN
  102. length 140
  103. ELIF nextPhW(n^) THEN
  104. length 120
  105. ELIF nextPhW(m) THEN
  106. length 148
  107. ELIF nextPhW(n) THEN
  108. length 163
  109. ELIF nextPhW(N) THEN
  110. length 115
  111. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  112. length 240
  113. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
  114. length 240
  115. ELSE
  116. length 180
  117. ENDIF
  118. IF nextPh(n^) THEN
  119. FMT(vowel/e)
  120. ELSE
  121. FMT(vietnam/e)
  122. ENDIF
  123. endphoneme
  124. phoneme i
  125. vwl starttype #i endtype #i
  126. IfNextVowelAppend(;)
  127. IF prevPhW(w) THEN
  128. VowelStart(w/wi)
  129. ENDIF
  130. IF nextPhW(p) THEN
  131. length 131
  132. ELIF nextPhW(t[) THEN
  133. length 113
  134. ELIF nextPhW(c) OR nextPhW(n^) THEN
  135. length 72
  136. ELIF nextPhW(m) THEN
  137. length 120
  138. ELIF nextPhW(n) THEN
  139. length 128
  140. ELIF nextPhW(N) THEN
  141. length 97
  142. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  143. length 240
  144. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
  145. length 240
  146. ELSE
  147. length 180
  148. ENDIF
  149. IF nextPh(n^) OR nextPh(c) THEN
  150. FMT(vnasal/ii_n)
  151. ELSE
  152. FMT(vowel/i_4)
  153. ENDIF
  154. endphoneme
  155. phoneme O
  156. vwl starttype #o endtype #o
  157. IF nextPh(kh) OR nextPh(N) THEN
  158. length 80
  159. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  160. length 240
  161. ELSE
  162. length 180
  163. ENDIF
  164. FMT(vdiph2/o_oo) //vowel/oo)
  165. endphoneme
  166. phoneme O+
  167. vwl starttype #o endtype #o
  168. IF nextPh(kh) OR nextPh(N) THEN
  169. length 80
  170. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  171. length 240
  172. ELSE
  173. length 180
  174. ENDIF
  175. FMT(vowel/o) //vowel/oo)
  176. endphoneme
  177. phoneme o
  178. vwl starttype #o endtype #o
  179. IF nextPh(kh) OR nextPh(N) THEN
  180. length 110
  181. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  182. length 240
  183. ELSE
  184. length 180
  185. ENDIF
  186. FMT(vowel/o) // o_2)
  187. endphoneme
  188. phoneme u
  189. vwl starttype #u endtype #u
  190. IF nextPhW(N) OR nextPhW(c) OR nextPhW(t[) THEN
  191. length 80
  192. ELIF nextPhW(m) THEN
  193. length 177
  194. ELIF nextPhW(n) THEN
  195. length 141
  196. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  197. length 240
  198. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) AND NOT nextPhW(N) AND NOT nextPhW(c) AND NOT nextPhW(t[) THEN
  199. length 240
  200. ELSE
  201. length 120
  202. ENDIF
  203. FMT(vnasal/u_n) //vowel/u_5)
  204. endphoneme
  205. phoneme y
  206. vwl starttype #u endtype #u
  207. IF nextPhW(p) THEN
  208. length 102
  209. ELIF nextPhW(t[) THEN
  210. length 76
  211. ELIF nextPhW(c) THEN
  212. length 70
  213. ELIF nextPhW(m) THEN
  214. length 143
  215. ELIF nextPhW(n) THEN
  216. length 136
  217. ELIF nextPhW(N) THEN
  218. length 101
  219. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  220. length 240
  221. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
  222. length 240
  223. ELSE
  224. length 180
  225. ENDIF
  226. FMT(vowel/u#_5)
  227. endphoneme
  228. phoneme @
  229. vwl starttype #@ endtype #a
  230. IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN
  231. length 120
  232. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  233. length 240
  234. ELSE
  235. length 180
  236. ENDIF
  237. // FMT(vowel/V) //vowel/@_2)
  238. FMT(vietnam/V)
  239. endphoneme
  240. phoneme @:
  241. vwl starttype #@ endtype #@
  242. IF nextPhW(p) THEN
  243. length 123
  244. ELIF nextPhW(t[) THEN
  245. length 123
  246. ELIF nextPhW(c) THEN
  247. length 139
  248. ELIF nextPhW(m) THEN
  249. length 127
  250. ELIF nextPhW(n) THEN
  251. length 160
  252. ELIF nextPhW(N) THEN
  253. length 156
  254. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  255. length 240
  256. ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
  257. length 240
  258. ELSE
  259. length 180
  260. ENDIF
  261. FMT(vowel/@_2)
  262. endphoneme
  263. // Diphthongs
  264. //===========
  265. phoneme aI
  266. vwl starttype #a endtype #i
  267. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  268. length 240
  269. ELSE
  270. length 200
  271. ENDIF
  272. FMT(vdiph/&i_2)
  273. endphoneme
  274. phoneme a:I
  275. vwl starttype #a endtype #i
  276. length 240 //250
  277. FMT(vdiph/ai)
  278. endphoneme
  279. phoneme @I
  280. vwl starttype #@ endtype #i
  281. length 240 //250
  282. FMT(vdiph/@i)
  283. endphoneme
  284. phoneme @:I
  285. vwl starttype #@ endtype #i
  286. length 240 //250
  287. FMT(vdiph/y#i)
  288. endphoneme
  289. phoneme eI
  290. vwl starttype #e endtype #i
  291. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  292. length 240
  293. ELSE
  294. length 200
  295. ENDIF
  296. FMT(vdiph/ei)
  297. endphoneme
  298. phoneme EI
  299. vwl starttype #e endtype #i
  300. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  301. length 240
  302. ELSE
  303. length 200
  304. ENDIF
  305. FMT(vdiph/eei)
  306. endphoneme
  307. phoneme OI
  308. vwl starttype #o endtype #i
  309. length 240
  310. FMT(vdiph/ooi_4)
  311. endphoneme
  312. phoneme oI
  313. vwl starttype #o endtype #i
  314. length 240
  315. FMT(vdiph/oi)
  316. endphoneme
  317. phoneme uI
  318. vwl starttype #u endtype #i
  319. length 240
  320. FMT(vdiph/ui)
  321. endphoneme
  322. phoneme yI
  323. vwl starttype #u endtype #i
  324. length 240
  325. FMT(vdiph/u-i)
  326. endphoneme
  327. phoneme aU
  328. vwl starttype #a endtype #u
  329. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  330. length 240
  331. ELSE
  332. length 200
  333. ENDIF
  334. FMT(vdiph/aau_4)
  335. endphoneme
  336. phoneme a:U
  337. vwl starttype #a endtype #u
  338. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  339. length 240
  340. ELSE
  341. length 200
  342. ENDIF
  343. FMT(vdiph/au)
  344. endphoneme
  345. phoneme eU
  346. vwl starttype #e endtype #u
  347. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  348. length 240
  349. ELSE
  350. length 200
  351. ENDIF
  352. FMT(vdiph/eu)
  353. endphoneme
  354. phoneme EU
  355. vwl starttype #e endtype #u
  356. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  357. length 240
  358. ELSE
  359. length 200
  360. ENDIF
  361. FMT(vdiph/eeu)
  362. endphoneme
  363. phoneme iU
  364. vwl starttype #i endtype #u
  365. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  366. length 240
  367. ELSE
  368. length 200
  369. ENDIF
  370. FMT(vdiph2/iu)
  371. endphoneme
  372. phoneme @U
  373. vwl starttype #@ endtype #u
  374. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  375. length 240
  376. ELSE
  377. length 200
  378. ENDIF
  379. FMT(vdiph/@u_3)
  380. endphoneme
  381. phoneme @:U
  382. vwl starttype #@ endtype #u
  383. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  384. length 240
  385. ELSE
  386. length 200
  387. ENDIF
  388. FMT(vdiph/@u)
  389. endphoneme
  390. phoneme i@
  391. vwl starttype #i endtype #@
  392. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  393. length 240
  394. ELSE
  395. length 200
  396. ENDIF
  397. FMT(vdiph2/ii@_3)
  398. endphoneme
  399. phoneme y@
  400. vwl starttype #i endtype #@
  401. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  402. length 240
  403. ELSE
  404. length 200
  405. ENDIF
  406. FMT(vdiph2/y-y#)
  407. endphoneme
  408. phoneme u@
  409. vwl starttype #u endtype #@
  410. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  411. length 240
  412. ELSE
  413. length 200
  414. ENDIF
  415. FMT(vdiph2/uu@)
  416. endphoneme
  417. // Addition Dipthongs
  418. phoneme o# // ông
  419. vwl starttype #o endtype #o
  420. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  421. length 240
  422. ELSE
  423. length 200
  424. ENDIF
  425. FMT(vnasal/a#u_n)
  426. endphoneme
  427. phoneme O# // ong
  428. vwl starttype #o endtype #o
  429. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  430. length 240
  431. ELIF nextPh(k) THEN
  432. length 140
  433. ELSE
  434. length 200
  435. ENDIF
  436. FMT(vnasal/&u_n)
  437. endphoneme
  438. phoneme o@
  439. vwl starttype #o endtype #a
  440. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  441. length 240
  442. ELSE
  443. length 200
  444. ENDIF
  445. FMT(vdiph2/oa)
  446. endphoneme
  447. phoneme o&
  448. vwl starttype #o endtype #o
  449. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  450. length 240
  451. ELSE
  452. length 200
  453. ENDIF
  454. FMT(vietnam/oe)
  455. endphoneme
  456. phoneme iE // iê : viết, giệc
  457. vwl starttype #i endtype #e
  458. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  459. length 240
  460. ELSE
  461. length 200
  462. ENDIF
  463. FMT(vietnam/ie_2)
  464. endphoneme
  465. phoneme Oi // oai sound
  466. vwl starttype #o endtype #i
  467. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  468. length 240
  469. ELSE
  470. length 200
  471. ENDIF
  472. FMT(vdiph/ooi_3)
  473. endphoneme
  474. // Vowel and Dipthong for south dialect
  475. phoneme O- // ôi southern sound
  476. vwl starttype #o endtype #i
  477. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  478. length 240
  479. ELSE
  480. length 180
  481. ENDIF
  482. FMT(vnasal/oi_n)
  483. endphoneme
  484. phoneme @- // ơi southern sound
  485. vwl starttype #o endtype #i
  486. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  487. length 240
  488. ELSE
  489. length 180
  490. ENDIF
  491. FMT(vdiph/@i_3)
  492. endphoneme
  493. phoneme u- // u southern sound
  494. vwl starttype #u endtype #u
  495. IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
  496. length 240
  497. ELSE
  498. length 180
  499. ENDIF
  500. FMT(vowel/u_3,70)
  501. endphoneme
  502. phoneme kh
  503. vls vel frc
  504. lengthmod 3
  505. Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30
  506. Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20
  507. WAV(ustop/k_unasp) //ufric/x, 50)
  508. endphoneme
  509. phoneme k
  510. vls vel frc
  511. lengthmod 3
  512. Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30
  513. Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20
  514. WAV(ustop/c)
  515. endphoneme
  516. phoneme N // si**ng**
  517. vcd lbv nas
  518. Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
  519. lengthmod 12 // longer than 'n'
  520. FMT(n/nm)
  521. endphoneme
  522. phoneme l
  523. liquid
  524. Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=15
  525. //lengthmod 7
  526. //IF nextPh(isNotVowel) THEN
  527. // ChangePhoneme(l/2)
  528. //ENDIF
  529. //CALL vowelstart_l
  530. FMT(l/l_vi)
  531. endphoneme
  532. phoneme t
  533. vls alv stp
  534. //voicingswitch d
  535. lengthmod 2
  536. Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=15
  537. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  538. WAV(vietnam/th, 50)
  539. endphoneme
  540. phoneme cr
  541. vls pla afr sib
  542. //voicingswitch dZ
  543. lengthmod 2
  544. Vowelin f1=0 f2=2300 200 400 f3=-100 80 len=15
  545. WAV(vietnam/tr,10)
  546. endphoneme
  547. phoneme d_
  548. vcd alv stp
  549. // lengthmod 5
  550. ipa ɗ
  551. length 50
  552. Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=15
  553. Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30
  554. WAV(vietnam/dd)
  555. endphoneme
  556. phoneme c
  557. vls pal stp pzd
  558. //voicingswitch J
  559. lengthmod 2
  560. length 50
  561. Vowelin f1=0 f2=2700 400 600 f3=300 80 len=15 brk
  562. Vowelout f1=1 f2=2700 400 600 f3=200 70 len=15 colr=1
  563. WAV(vietnam/ch,5)
  564. endphoneme
  565. phoneme p
  566. vls blb stp
  567. lengthmod 2
  568. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  569. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  570. WAV(ustop/p_unasp_,10)
  571. endphoneme
  572. phoneme t[ // dental variant of /t/
  573. IF thisPh(isWordEnd) THEN
  574. vls alv stp
  575. voicingswitch d
  576. lengthmod 2
  577. length 5
  578. Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=15
  579. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=15
  580. WAV(ustop/t, 50)
  581. ELSE
  582. vls dnt stp
  583. voicingswitch d[
  584. lengthmod 2
  585. length 5
  586. Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=15
  587. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=15
  588. IF nextPh(isPause2) THEN
  589. WAV(ustop/t_unasp2, 5)
  590. ENDIF
  591. WAV(ustop/t_hi, 70)
  592. ENDIF
  593. endphoneme
  594. phoneme w
  595. liquid
  596. lengthmod 7
  597. starttype #u
  598. IF nextPh(isVowel) THEN
  599. NextVowelStarts
  600. VowelStart(w/w@)
  601. VowelStart(w/wa)
  602. VowelStart(w/we)
  603. VowelStart(w/wi)
  604. VowelStart(w/wo)
  605. VowelStart(w/wu)
  606. EndSwitch
  607. VowelEnding(w/xw, -30)
  608. IF nextPh(isVowel) AND prevPhW(t[) THEN
  609. FMT(vnasal/u_n, 60)
  610. ENDIF
  611. IF prevPhW(isNasal) THEN
  612. FMT(w/w)
  613. ELSEIF prevPhW(h) THEN
  614. // none, [hw]
  615. ELSE
  616. FMT(w/_w)
  617. ENDIF
  618. ELSE
  619. // no vowel follows
  620. Vowelout len=50
  621. IF prevPh(#i) THEN
  622. FMT(w/iw_)
  623. ENDIF
  624. FMT(w/w_)
  625. ENDIF
  626. endphoneme