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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. // ph_pashto - Phoneme table for Pashto language
  2. // Created: March 2025 by Hanif Rahman
  3. // Updated: March 2025 - Fixed vowel formants, improved retroflex consonants, corrected stress patterns
  4. // This file defines phonemes specific to Pashto language
  5. //====================================================
  6. // VOWELS
  7. //====================================================
  8. phoneme a // َ (zabar/fatha) - short 'a' as in "man"
  9. vwl starttype #a endtype #a
  10. length 180
  11. ipa a
  12. FMT(vowel/a)
  13. endphoneme
  14. phoneme a: // ا - long 'aa' as in "father"
  15. vwl starttype #a endtype #a
  16. length 280
  17. ipa aː
  18. FMT(vowel/a) // Keeping formant consistent with short 'a'
  19. endphoneme
  20. phoneme e // ِ (zer/kasra) - short 'e' as in "bed" "ketab"
  21. vwl starttype #e endtype #e
  22. length 170
  23. ipa e
  24. FMT(vowel/e)
  25. endphoneme
  26. phoneme e: // ې - long 'ee' as in "bait" "peshawar"
  27. vwl starttype #e endtype #e
  28. length 250
  29. ipa eː
  30. FMT(vowel/e_mid) // Using e_mid for better long vowel quality
  31. endphoneme
  32. phoneme i // ِ (zer/kasra) - short 'i' as in "sit" same as e?
  33. vwl starttype #i endtype #i
  34. length 170
  35. ipa i
  36. IfNextVowelAppend(;)
  37. FMT(vowel/i)
  38. endphoneme
  39. phoneme i: // ي - long 'ee' as in "see"
  40. vwl starttype #i endtype #i
  41. length 250
  42. ipa iː
  43. IfNextVowelAppend(;)
  44. FMT(vowel/i) // Using standard i vowel
  45. endphoneme
  46. phoneme o // ُ (pesh/damma) - short 'o' as in "pot"
  47. vwl starttype #o endtype #o
  48. length 170
  49. ipa o
  50. FMT(vowel/o)
  51. endphoneme
  52. phoneme o: // و - long 'o' as in "go"
  53. vwl starttype #o endtype #o
  54. length 250
  55. ipa oː
  56. FMT(vowel/o) // Using standard o vowel
  57. endphoneme
  58. phoneme u // ُ (pesh/damma) - short 'u' as in "put"
  59. vwl starttype #u endtype #u
  60. length 170
  61. ipa u
  62. FMT(vowel/u)
  63. endphoneme
  64. phoneme u: // و - long 'oo' as in "moon"
  65. vwl starttype #u endtype #u
  66. length 250
  67. ipa uː
  68. FMT(vowel/u) // Using standard u vowel
  69. endphoneme
  70. phoneme @ // ə - schwa sound as in "about"
  71. vwl starttype #@ endtype #@
  72. length 130
  73. ipa ə
  74. unstressed
  75. FMT(vowel/@)
  76. endphoneme
  77. // Add unstressed variants of vowels for better prosody
  78. phoneme a# // َ (zabar/fatha) - unstressed short 'a'
  79. vwl starttype #a endtype #a
  80. length 140 // shorter than stressed version
  81. ipa a
  82. unstressed
  83. FMT(vowel/a_8)
  84. endphoneme
  85. phoneme i# // ِ (zer/kasra) - unstressed short 'i'
  86. vwl starttype #i endtype #i
  87. length 130 // shorter than stressed version
  88. ipa i
  89. unstressed
  90. IfNextVowelAppend(;)
  91. FMT(vowel/i_6)
  92. endphoneme
  93. phoneme u# // ُ (pesh/damma) - unstressed short 'u'
  94. vwl starttype #u endtype #u
  95. length 130 // shorter than stressed version
  96. ipa u
  97. unstressed
  98. FMT(vowel/u_6)
  99. endphoneme
  100. //====================================================
  101. // CONSONANTS SPECIFIC TO PASHTO
  102. //====================================================
  103. phoneme ts
  104. // څ in Pashto - voiceless alveolar affricate
  105. vls alv afr
  106. lengthmod 2
  107. ipa ts
  108. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  109. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  110. WAV(ustop/ts)
  111. endphoneme
  112. phoneme dz
  113. // ځ in Pashto - voiced alveolar affricate
  114. vcd alv afr
  115. lengthmod 5
  116. ipa dz
  117. voicingswitch ts
  118. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  119. Vowelout f1=1 f2=1700 -300 300 f3=-100 80 brk
  120. WAV(ustop/ts) addWav(x/d, 70) // Using standard WAV files
  121. endphoneme
  122. phoneme t.
  123. // ټ in Pashto - retroflex/plosive t
  124. vls rfx stp
  125. lengthmod 2
  126. ipa ʈ
  127. voicingswitch d.
  128. Vowelin f1=0 f2=1800 -300 300 f3=-200 80 colr=2
  129. Vowelout f1=0 f2=1800 -300 250 f3=-200 80 colr=2 rms=20
  130. WAV(ustop/t_) // Using standard t_ WAV
  131. endphoneme
  132. phoneme d.
  133. // ډ in Pashto - retroflex/plosive d
  134. vcd rfx stp
  135. lengthmod 5
  136. ipa ɖ
  137. voicingswitch t.
  138. Vowelin f1=2 f2=1800 -300 300 f3=-200 80 colr=2
  139. Vowelout f1=2 f2=1800 -300 300 f3=-200 80 colr=2 brk
  140. WAV(ustop/t_) addWav(x/d, 60) // Using standard WAV files
  141. endphoneme
  142. phoneme r.
  143. // ړ in Pashto - retroflex flap
  144. vcd rfx flp
  145. lengthmod 6
  146. ipa ɽ
  147. Vowelin f1=3 f2=1200 -400 -100 f3=-400 80 colr=2
  148. Vowelout f1=3 f2=1200 -400 -100 f3=-400 80 colr=2
  149. FMT(r3/r_) addWav(r3/rx, 80) // Using standard FMT
  150. endphoneme
  151. phoneme n.
  152. // ڼ in Pashto - retroflex nasal
  153. vcd rfx nas
  154. lengthmod 4
  155. ipa ɳ
  156. Vowelin f1=2 f2=1200 -500 -300 f3=-400 80 colr=2
  157. Vowelout f1=2 f2=1200 -500 -300 f3=-400 80 colr=2
  158. FMT(n/n_) // Using standard FMT
  159. endphoneme
  160. phoneme S.
  161. // ښ in Pashto - retroflex fricative
  162. vls rfx frc sib
  163. lengthmod 3
  164. ipa ʂ
  165. voicingswitch Z.
  166. Vowelin f1=0 f2=1800 -100 300 f3=-400 80 colr=2
  167. Vowelout f1=0 f2=1800 -100 300 f3=-400 80 colr=2
  168. WAV(ufric/sh) // Using standard sh WAV
  169. endphoneme
  170. phoneme Z.
  171. // ژ in Pashto - voiced retroflex fricative
  172. vcd rfx frc sib
  173. lengthmod 6
  174. ipa ʐ
  175. voicingswitch S.
  176. Vowelin f1=0 f2=1800 0 300 f3=-400 80 colr=2
  177. Vowelout f1=2 f2=1800 0 300 f3=-400 80 colr=2 brk
  178. FMT(voc/zh) addWav(vocw/zh, 110) // Using standard zh WAV
  179. endphoneme
  180. phoneme Z
  181. // ژ in Pashto - voiced post-alveolar fricative (like French j)
  182. vcd pla frc sib
  183. lengthmod 6
  184. ipa ʒ
  185. voicingswitch S
  186. Vowelin f1=0 f2=2000 0 300 f3=-200 80
  187. Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk
  188. FMT(voc/zh) addWav(vocw/zh, 130)
  189. endphoneme
  190. phoneme Q
  191. // غ in Pashto - voiced uvular fricative
  192. vcd uvl frc
  193. lengthmod 6
  194. ipa ʁ
  195. voicingswitch X
  196. Vowelin f1=2 f2=1000 -500 -350 f3=-200 80
  197. Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
  198. FMT(voc/Q) addWav(vocw/Q, 60) // Increased WAV amplitude for better voicing
  199. endphoneme
  200. phoneme X
  201. // خ in Pashto - voiceless uvular fricative
  202. vls uvl frc
  203. lengthmod 3
  204. ipa χ
  205. voicingswitch Q
  206. Vowelin f1=0 f2=1000 -500 -350 f3=-200 80
  207. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  208. WAV(ufric/xx, 90) // Adjusted amplitude for better contrast with Q
  209. endphoneme
  210. phoneme g
  211. // ګ in Pashto - voiced velar stop
  212. vcd vel stp
  213. lengthmod 5
  214. ipa ɡ
  215. voicingswitch k
  216. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  217. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  218. IF PreVoicing THEN
  219. FMT(g/xg)
  220. ENDIF
  221. IF nextPh(isPause2) THEN
  222. FMT(g/g_) addWav(x/g_)
  223. ENDIF
  224. FMT(g/g) addWav(x/g2, 150)
  225. endphoneme
  226. //====================================================
  227. // CONSONANTS SHARED WITH OTHER LANGUAGES
  228. //====================================================
  229. phoneme p
  230. vls blb stp
  231. voicingswitch b
  232. lengthmod 2
  233. ipa p
  234. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  235. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  236. WAV(ustop/p)
  237. endphoneme
  238. phoneme b
  239. vcd blb stp
  240. voicingswitch p
  241. lengthmod 5
  242. ipa b
  243. Vowelin f1=2 f2=1000 -500 -300 f3=-300 80
  244. Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
  245. IF PreVoicing THEN
  246. FMT(b/xb)
  247. ENDIF
  248. IF nextPh(isPause2) THEN
  249. FMT(b/b_) addWav(x/b_)
  250. ENDIF
  251. FMT(b/b) addWav(x/b)
  252. endphoneme
  253. phoneme t
  254. vls alv stp
  255. voicingswitch d
  256. lengthmod 2
  257. ipa t
  258. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  259. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  260. WAV(ustop/t)
  261. endphoneme
  262. phoneme d
  263. vcd alv stp
  264. voicingswitch t
  265. lengthmod 5
  266. ipa d
  267. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  268. Vowelout f1=1 f2=1700 -300 300 f3=-100 80 brk
  269. IF PreVoicing THEN
  270. FMT(d/xd)
  271. ENDIF
  272. IF nextPh(isPause2) THEN
  273. FMT(d/d_) addWav(x/d_)
  274. ENDIF
  275. FMT(d/d) addWav(x/d)
  276. endphoneme
  277. phoneme k
  278. vls vel stp
  279. voicingswitch g
  280. lengthmod 2
  281. ipa k
  282. Vowelin f1=0 f2=2300 200 300 f3=-200 80
  283. Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20
  284. IF nextPh(isPause2) THEN
  285. WAV(ustop/k_)
  286. ENDIF
  287. WAV(ustop/k)
  288. endphoneme
  289. phoneme tS
  290. // چ in Pashto - voiceless post-alveolar affricate
  291. vls pla afr sib
  292. voicingswitch dZ
  293. lengthmod 2
  294. ipa t͡ʃ
  295. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  296. Vowelout f1=0 f2=2300 300 400 f3=-100 80
  297. WAV(ustop/tsh)
  298. endphoneme
  299. phoneme dZ
  300. // ج in Pashto - voiced post-alveolar affricate
  301. vcd pla afr sib
  302. voicingswitch tS
  303. lengthmod 5
  304. ipa d͡ʒ
  305. Vowelin f1=2 f2=2300 200 400 f3=-100 80
  306. Vowelout f1=2 f2=2300 250 300 f3=-100 80 brk
  307. IF PreVoicing THEN
  308. FMT(dzh/xdzh)
  309. ENDIF
  310. IF nextPh(isPause2) THEN
  311. FMT(dzh/dzh_) addWav(x/dzh_)
  312. ENDIF
  313. FMT(dzh/dzh) addWav(x/dzh)
  314. endphoneme
  315. phoneme f
  316. vls lbd frc
  317. voicingswitch v
  318. lengthmod 3
  319. ipa f
  320. Vowelin f1=0 f2=1000 -500 -350 f3=-200 80
  321. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  322. WAV(ufric/f)
  323. endphoneme
  324. phoneme v
  325. vcd lbd frc
  326. voicingswitch f
  327. lengthmod 6
  328. ipa v
  329. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  330. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  331. IF nextPh(isPause2) THEN
  332. FMT(voc/v_) addWav(vocw/v)
  333. ENDIF
  334. FMT(voc/v) addWav(vocw/v)
  335. endphoneme
  336. phoneme s
  337. vls alv frc sib
  338. voicingswitch z
  339. lengthmod 3
  340. ipa s
  341. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  342. Vowelout f1=0 f2=1700 -300 300 f3=-100 80
  343. WAV(ufric/s)
  344. endphoneme
  345. phoneme z
  346. vcd alv frc sib
  347. voicingswitch s
  348. lengthmod 6
  349. ipa z
  350. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  351. Vowelout f1=0 f2=1700 -300 300 f3=-100 80 brk
  352. IF nextPh(isPause2) THEN
  353. FMT(voc/z_) addWav(ufric/s_, 70)
  354. ENDIF
  355. FMT(voc/z) addWav(ufric/s_, 85)
  356. endphoneme
  357. phoneme S
  358. vls pla frc sib
  359. voicingswitch Z
  360. lengthmod 3
  361. ipa ʃ
  362. Vowelin f1=0 f2=2100 100 300 f3=-100 80
  363. Vowelout f1=0 f2=2100 100 300 f3=-100 80
  364. WAV(ufric/sh)
  365. endphoneme
  366. phoneme x
  367. vls vel frc
  368. voicingswitch Q
  369. lengthmod 3
  370. ipa x
  371. Vowelin f1=0 f2=2300 200 400 f3=-200 80
  372. Vowelout f1=0 f2=2300 300 400 f3=-200 80
  373. WAV(ufric/x_hr, 30) // Increased amplitude for better clarity
  374. endphoneme
  375. phoneme h
  376. vls glt frc
  377. lengthmod 3
  378. ipa h
  379. Vowelin f1=0 f2=2300 200 400 f3=-200 80 // Added Vowelin parameters
  380. Vowelout f1=0 f2=2300 300 400 f3=-200 80
  381. IF nextPh(#@) THEN
  382. WAV(h/h@)
  383. ELIF nextPh(#a) THEN
  384. WAV(h/ha)
  385. ELIF nextPh(#e) THEN
  386. WAV(h/he)
  387. ELIF nextPh(#i) THEN
  388. WAV(h/hi)
  389. ELIF nextPh(#o) THEN
  390. WAV(h/ho)
  391. ELIF nextPh(#u) THEN
  392. WAV(h/hu)
  393. ENDIF
  394. WAV(h/h_, 70)
  395. endphoneme
  396. phoneme m
  397. vcd blb nas
  398. lengthmod 4
  399. ipa m
  400. Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 // Moved Vowelin before Vowelout for consistency
  401. Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
  402. IF KlattSynth THEN
  403. IF nextPh(isPause2) THEN
  404. FMT(klatt/m_)
  405. ENDIF
  406. FMT(klatt/m)
  407. ENDIF
  408. NextVowelStarts
  409. VowelStart(m/m@)
  410. VowelStart(m/ma)
  411. VowelStart(m/me)
  412. VowelStart(m/mi)
  413. VowelStart(m/mo)
  414. VowelStart(m/mu)
  415. EndSwitch
  416. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  417. FMT(m/mj)
  418. ELIF prevPh(isPause) THEN
  419. FMT(m/_m)
  420. ELIF nextPh(isNotVowel) THEN
  421. FMT(m/m_)
  422. ENDIF
  423. endphoneme
  424. phoneme n
  425. vcd alv nas
  426. lengthmod 4
  427. ipa n
  428. Vowelin f1=0 f2=1500 -200 200 f3=0 80 // Moved Vowelin before Vowelout for consistency
  429. Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
  430. IF KlattSynth THEN
  431. FMT(klatt/n)
  432. ENDIF
  433. NextVowelStarts
  434. VowelStart(n/n@)
  435. VowelStart(n/na)
  436. VowelStart(n/ne)
  437. VowelStart(n/ni)
  438. VowelStart(n/no)
  439. VowelStart(n/nu)
  440. EndSwitch
  441. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  442. FMT(n/nj)
  443. ELIF prevPh(isPause) OR prevPh(n) THEN
  444. FMT(n/_n)
  445. ELIF nextPh(isNotVowel) THEN
  446. FMT(n/n_)
  447. ENDIF
  448. endphoneme
  449. phoneme N
  450. vcd vel nas
  451. lengthmod 8
  452. ipa ŋ
  453. Vowelin f1=0 f2=2100 50 300 f3=0 80 // Moved Vowelin before Vowelout for consistency
  454. Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
  455. IF KlattSynth THEN
  456. IF nextPh(isPause2) THEN
  457. FMT(klatt/nn_)
  458. ENDIF
  459. FMT(klatt/nn)
  460. ENDIF
  461. NextVowelStarts
  462. VowelStart(nn/nn@)
  463. VowelStart(nn/nna)
  464. VowelStart(nn/nne)
  465. VowelStart(nn/nni)
  466. VowelStart(nn/nno)
  467. VowelStart(nn/nnu)
  468. EndSwitch
  469. IF prevPh(#i) THEN
  470. VowelEnding(nn/inn, -40)
  471. ENDIF
  472. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  473. FMT(nn/nnj)
  474. ELIF prevPh(isPause) THEN
  475. FMT(nn/_nn)
  476. ELIF nextPh(isNotVowel) THEN
  477. FMT(nn/nn_)
  478. ENDIF
  479. endphoneme
  480. phoneme l
  481. liquid
  482. lengthmod 7
  483. ipa l
  484. IF nextPh(isNotVowel) THEN
  485. ChangePhoneme(l/)
  486. ENDIF
  487. CALL vowelstart_l
  488. IF prevPh(#@) THEN
  489. VowelEnding(l/xl, -50)
  490. ELIF prevPh(isVowel) THEN
  491. VowelEnding(l/xl, -40)
  492. ENDIF
  493. IF prevPh(isPause) THEN
  494. FMT(l/_l)
  495. ENDIF
  496. IF prevPh(t) THEN
  497. FMT(l/tl)
  498. ENDIF
  499. IF prevPh(l/) THEN
  500. FMT(l/l_long) // double l, make it longer
  501. ENDIF
  502. FMT(l/l)
  503. endphoneme
  504. phoneme l/
  505. liquid
  506. lengthmod 7
  507. ipa l̥
  508. IF nextPh(isVowel) THEN
  509. ChangePhoneme(l)
  510. ENDIF
  511. PrevVowelEndings
  512. VowelEnding(l/L1_@L, -60)
  513. VowelEnding(l/L1_aL, -40)
  514. VowelEnding(l/L1_eL, -30)
  515. VowelEnding(l/L1_iL, -30)
  516. VowelEnding(l/L1_oL, -40)
  517. VowelEnding(l/L1_uL, -40)
  518. EndSwitch
  519. IF prevPhW(j) THEN
  520. FMT(l/L1_eL)
  521. ENDIF
  522. IF prevPhW(w) THEN
  523. FMT(l/L1_eL)
  524. ENDIF
  525. FMT(l/l_)
  526. endphoneme
  527. phoneme r
  528. liquid rhotic
  529. lengthmod 7
  530. ipa r
  531. IF nextPh(isNotVowel) THEN
  532. ChangePhoneme(r/)
  533. ENDIF
  534. NextVowelStarts
  535. VowelStart(r/r@, -15)
  536. VowelStart(r/ra, -15)
  537. VowelStart(r/re, -15)
  538. VowelStart(r/ri, -15)
  539. VowelStart(r/ro, -15)
  540. VowelStart(r/ru, -15)
  541. EndSwitch
  542. IF prevPh(isVowel) THEN
  543. VowelEnding(r/xr, -50)
  544. ENDIF
  545. IF prevPh(isPause) THEN
  546. FMT(r/_r)
  547. ELIF prevPh(t) OR prevPh(p) OR prevPh(k) THEN
  548. FMT(r/tr)
  549. ENDIF
  550. FMT(r/r)
  551. endphoneme
  552. phoneme r/
  553. liquid rhotic
  554. lengthmod 2
  555. ipa r̥
  556. IF prevPh(t) OR prevPh(p) OR prevPh(k) THEN
  557. FMT(r/trr)
  558. ENDIF
  559. IF prevPh(isNotVowel) THEN
  560. FMT(r/rr)
  561. ENDIF
  562. FMT(r3/r_) addWav(r3/rx)
  563. endphoneme
  564. phoneme j
  565. liquid pal starttype #i
  566. lengthmod 7
  567. ipa j
  568. IF nextPhW(isVowel) THEN
  569. NextVowelStarts
  570. VowelStart(j/j@)
  571. VowelStart(j/ja)
  572. VowelStart(j/je)
  573. VowelStart(j/ji)
  574. VowelStart(j/jo)
  575. VowelStart(j/ju)
  576. EndSwitch
  577. VowelEnding(j/xj, -30)
  578. IF prevPh(isPause) THEN
  579. FMT(j/_j)
  580. ENDIF
  581. ELSE
  582. // no vowel follows
  583. Vowelout len=70
  584. FMT(j/j_)
  585. ENDIF
  586. endphoneme
  587. phoneme w
  588. liquid
  589. lengthmod 7
  590. starttype #u
  591. ipa w
  592. IF nextPh(isVowel) THEN
  593. NextVowelStarts
  594. VowelStart(w/w@)
  595. VowelStart(w/wa)
  596. VowelStart(w/we)
  597. VowelStart(w/wi)
  598. VowelStart(w/wo)
  599. VowelStart(w/wu)
  600. EndSwitch
  601. VowelEnding(w/xw, -30)
  602. IF prevPhW(isNasal) THEN
  603. FMT(w/w)
  604. ELSEIF prevPhW(h) THEN
  605. // none, [hw]
  606. ELSE
  607. FMT(w/_w)
  608. ENDIF
  609. ELSE
  610. // no vowel follows
  611. Vowelout len=50
  612. IF prevPh(#i) THEN
  613. FMT(w/iw_)
  614. ENDIF
  615. FMT(w/w_)
  616. ENDIF
  617. endphoneme
  618. phoneme q
  619. vls uvl stp
  620. lengthmod 2
  621. ipa q
  622. Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30
  623. Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35
  624. IF nextPh(isPause2) THEN
  625. WAV(ustop/q, 40)
  626. ELIF nextPh(#u) THEN
  627. WAV(ustop/q_u, 80)
  628. ENDIF
  629. WAV(ustop/q, 48)
  630. endphoneme
  631. phoneme ?
  632. vls glt stp
  633. lengthmod 3
  634. ipa ʔ
  635. nolink
  636. Vowelin glstop
  637. Vowelout glstop
  638. WAV(ustop/null)
  639. endphoneme