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

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