ph_konkani 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. //====================================================
  2. // kankani
  3. //====================================================
  4. phoneme :0
  5. virtual
  6. length 25
  7. endphoneme
  8. phoneme :1
  9. virtual
  10. length 50
  11. endphoneme
  12. phoneme : // Lengthen the previous vowel by "length"
  13. virtual
  14. length 100
  15. endphoneme
  16. phoneme @
  17. vwl flag1 starttype #@ endtype #@
  18. length 130
  19. ChangeIfDiminished(@-)
  20. IF nextPh(H) OR prevPh(H) THEN
  21. FMT(vowel/@_low)
  22. ENDIF
  23. IF nextPh(j) THEN
  24. FMT(vowel/V_3)
  25. ENDIF
  26. FMT(vowel/@_bck)
  27. endphoneme
  28. phoneme V
  29. vwl flag1 starttype #@ endtype #@
  30. length 140
  31. IF thisPh(isWordStart) THEN
  32. FMT(vowel/V_3)
  33. RETURN
  34. ENDIF
  35. IF thisPh(isNotStressed) THEN
  36. length 130
  37. IF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN
  38. ChangePhoneme(NULL)
  39. ENDIF
  40. IF prevPh(H) THEN
  41. ChangePhoneme(@)
  42. ENDIF
  43. IF prev2PhW(isVowel) AND NOT nextVowel(isFlag1) THEN
  44. IF thisPh(isFinalVowel) AND nextPhW(isNotVowel) THEN
  45. // don't delete schwa before a word-final consonant
  46. ELSE
  47. ChangePhoneme(NULL)
  48. ENDIF
  49. ENDIF
  50. IF prevPh(isPalatal) AND NOT nextPh(H) THEN
  51. ChangePhoneme(@3)
  52. ELSEIF prevPh(r) THEN
  53. ChangePhoneme(@2)
  54. ELSE
  55. ChangePhoneme(@)
  56. ENDIF
  57. ENDIF
  58. IF nextPh(H) OR prevPh(H) THEN
  59. FMT(vowel/@_low)
  60. ENDIF
  61. IF prevPh(w) THEN
  62. FMT(vowel/V_4)
  63. ENDIF
  64. FMT(vowel/V_3)
  65. endphoneme
  66. phoneme @2
  67. vwl flag1 starttype #@ endtype #@
  68. length 130
  69. FMT(vowel/@_low)
  70. endphoneme
  71. phoneme @3
  72. vwl flag1 starttype #@ endtype #@
  73. length 130
  74. ChangeIfDiminished(@-)
  75. FMT(vowel/@_3)
  76. endphoneme
  77. phoneme i:
  78. vwl lng starttype #i endtype #i
  79. length 250
  80. IF thisPh(isUnstressed) THEN
  81. ChangePhoneme(i)
  82. ENDIF
  83. IfNextVowelAppend(;)
  84. FMT(vowel/i_fnt)
  85. endphoneme
  86. phoneme i // as [i:] but not marked as 'long'
  87. vwl starttype #i endtype #i
  88. length 230
  89. IfNextVowelAppend(;)
  90. FMT(vowel/ii_6)
  91. endphoneme
  92. phoneme I
  93. vwl starttype #i endtype #i
  94. length 150
  95. IfNextVowelAppend(;)
  96. FMT(vowel/ii_3)
  97. endphoneme
  98. phoneme e:
  99. vwl lng starttype #e endtype #e
  100. length 240
  101. FMT(vowel/e_2)
  102. endphoneme
  103. phoneme e
  104. vwl starttype #e endtype #e
  105. length 165
  106. FMT(vowel/e_2)
  107. endphoneme
  108. phoneme E:
  109. vwl lng starttype #e endtype #e
  110. length 230
  111. FMT(vdiph/ee-e)
  112. endphoneme
  113. phoneme E
  114. vwl starttype #e endtype #e
  115. length 175
  116. FMT(vowel/e_mid)
  117. endphoneme
  118. phoneme &:
  119. vwl lng starttype #a endtype #a
  120. length 230
  121. FMT(vowel/&)
  122. endphoneme
  123. phoneme a:
  124. vwl lng starttype #a endtype #a
  125. length 220
  126. IF nextPhW(j) THEN
  127. FMT(vowel/a_5)
  128. ENDIF
  129. FMT(vowel/aa_9)
  130. endphoneme
  131. phoneme a
  132. vwl lng starttype #a endtype #a
  133. length 165
  134. FMT(vowel/a#_3)
  135. endphoneme
  136. phoneme o:
  137. vwl lng starttype #o endtype #o
  138. length 240
  139. FMT(vowel/o_2)
  140. endphoneme
  141. phoneme o
  142. vwl starttype #o endtype #o
  143. length 165
  144. FMT(vowel/o)
  145. endphoneme
  146. phoneme O:
  147. vwl lng starttype #o endtype #o
  148. length 225
  149. FMT(vowel/oo_4)
  150. endphoneme
  151. phoneme O
  152. vwl starttype #o endtype #o
  153. length 165
  154. FMT(vowel/0)
  155. endphoneme
  156. phoneme U
  157. vwl starttype #u endtype #u
  158. length 165
  159. FMT(vowel/uu_bck)
  160. endphoneme
  161. phoneme u:
  162. vwl lng starttype #u endtype #u
  163. length 250
  164. FMT(vowel/u_bck)
  165. endphoneme
  166. // Nasal vowels
  167. //=============
  168. phoneme i~
  169. vwl lng starttype #i endtype #i
  170. length 220
  171. FMT(vnasal/i_n2)
  172. endphoneme
  173. phoneme I~
  174. vwl lng starttype #i endtype #i
  175. length 170
  176. FMT(vnasal/ii_n)
  177. endphoneme
  178. phoneme e~
  179. vwl lng starttype #e endtype #e
  180. length 220
  181. FMT(vnasal/e_n)
  182. endphoneme
  183. phoneme E~
  184. vwl lng starttype #e endtype #e
  185. length 220
  186. FMT(vnasal/ee_n2)
  187. endphoneme
  188. phoneme a~
  189. vwl lng starttype #a endtype #a
  190. length 240
  191. FMT(vnasal/a_n)
  192. endphoneme
  193. phoneme V~
  194. vwl lng starttype #@ endtype #@
  195. length 220
  196. FMT(vnasal/V_n)
  197. endphoneme
  198. phoneme O~
  199. vwl lng starttype #o endtype #o
  200. length 220
  201. FMT(vnasal/oo_n2)
  202. endphoneme
  203. phoneme o~
  204. vwl lng starttype #o endtype #o
  205. length 220
  206. FMT(vnasal/o_n)
  207. endphoneme
  208. phoneme U~
  209. vwl starttype #u endtype #u
  210. length 170
  211. FMT(vnasal/u_n)
  212. endphoneme
  213. phoneme u~
  214. vwl lng starttype #u endtype #u
  215. length 220
  216. FMT(vnasal/u_n)
  217. endphoneme
  218. // Diphthongs
  219. //===========
  220. phoneme aI
  221. vwl lng starttype #@ endtype #i
  222. length 240
  223. lng
  224. FMT(vdiph/&i)
  225. endphoneme
  226. phoneme aU
  227. vwl lng starttype #a endtype #u
  228. length 240
  229. lng
  230. FMT(vdiph/aau_3)
  231. endphoneme
  232. // CONSONANTS
  233. //===========
  234. phoneme v // approximant, not fricative
  235. import_phoneme base1/v#
  236. voicingswitch f
  237. endphoneme
  238. phoneme w#
  239. liquid
  240. lengthmod 7
  241. FMT(w/w2)
  242. endphoneme
  243. phoneme H // use for full "h"
  244. import_phoneme base1/h
  245. endphoneme
  246. // bilabial plosives
  247. //==================
  248. phoneme p
  249. import_phoneme consonants/p-
  250. endphoneme
  251. phoneme p#
  252. import_phoneme consonants/ph
  253. endphoneme
  254. phoneme b // this is [b]
  255. import_phoneme base1/b
  256. endphoneme
  257. phoneme b#
  258. vcd blb stp
  259. lengthmod 5
  260. voicingswitch p#
  261. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
  262. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
  263. IF PreVoicing THEN
  264. FMT(b/xb)
  265. ENDIF
  266. FMT( b/b@2) addWav(ustop/p_asp, 70)
  267. endphoneme
  268. // dental plosives
  269. //==================
  270. phoneme t // dental variant of /t/
  271. import_phoneme base1/t[
  272. voicingswitch d
  273. endphoneme
  274. phoneme t# // dental variant of /t/
  275. vls dnt stp
  276. lengthmod 2
  277. voicingswitch d
  278. Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16
  279. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
  280. IF nextPh(isPause2) THEN
  281. WAV(ustop/t_dnt, 35)
  282. ENDIF
  283. WAV(ustop/t_dnt, 50)
  284. endphoneme
  285. phoneme d // dental variant of /d/
  286. import_phoneme base1/d[
  287. voicingswitch t
  288. endphoneme
  289. phoneme d#
  290. vcd dnt stp
  291. lengthmod 5
  292. voicingswitch t#
  293. Vowelin f1=0 f2=1500 -300 300 f3=-100 80
  294. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
  295. IF PreVoicing THEN
  296. FMT(d/xd)
  297. ENDIF
  298. FMT(d/xd3) addWav(ustop/t_dnt, 40)
  299. endphoneme
  300. // retroflex plosives
  301. //===================
  302. phoneme t.
  303. vls rfx stp
  304. lengthmod 2
  305. ipa ʈ
  306. voicingswitch d.
  307. Vowelin f1=0 f2=1800 -300 300 f3=-400 80
  308. Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
  309. WAV(ustop/t_short)
  310. endphoneme
  311. phoneme t.#
  312. vls rfx stp
  313. lengthmod 2
  314. ipa ʈU+02B0
  315. voicingswitch d.#
  316. Vowelin f1=0 f2=1800 -300 300 f3=-200 80
  317. Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
  318. IF nextPhW(t.#) THEN
  319. ChangePhoneme(t.)
  320. ENDIF
  321. WAV(ustop/th_rfx2, 80)
  322. endphoneme
  323. phoneme d.
  324. vcd rfx stp
  325. lengthmod 5
  326. voicingswitch t.
  327. ipa ɖ
  328. Vowelin f1=1 f2=1800 -300 300 f3=-400 80
  329. Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2
  330. IF PreVoicing THEN
  331. FMT(d/xdr)
  332. ENDIF
  333. IF nextPh(isPause2) THEN
  334. FMT(d/d_) addWav(x/d_)
  335. ENDIF
  336. FMT(d/dr) addWav(x/d)
  337. endphoneme
  338. phoneme d.#
  339. vcd rfx stp
  340. lengthmod 5
  341. ipa ɖU+02B0
  342. voicingswitch t.#
  343. Vowelin f1=1 f2=1800 -300 300 f3=-400 80
  344. Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2
  345. IF PreVoicing THEN
  346. FMT(d/xdr)
  347. ENDIF
  348. FMT(d/dr) addWav(ustop/t)
  349. // FMT(d/dr) addWav(ustop/th_rfx)
  350. endphoneme
  351. // palatal plosives
  352. //=================
  353. // also try [tS] and [dZ]
  354. phoneme c
  355. vls pla afr sib
  356. voicingswitch dZ
  357. lengthmod 2
  358. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  359. IF nextPh(isPause2) THEN
  360. WAV(ustop/tsh_)
  361. ENDIF
  362. WAV(ustop/tsh_unasp)
  363. endphoneme
  364. phoneme c#
  365. CALL base1/tS;
  366. ipa cU+02B0
  367. endphoneme
  368. phoneme J
  369. import_phoneme base1/J
  370. endphoneme
  371. phoneme J#
  372. vcd pal afr sib
  373. lengthmod 5
  374. voicingswitch c#
  375. Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
  376. Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1
  377. IF PreVoicing THEN
  378. FMT(dzh/xdz_pzd)
  379. ENDIF
  380. FMT(dzh/xdz_pzd) addWav(ustop/ts_pzd)
  381. endphoneme
  382. // velar plosives
  383. //==================
  384. phoneme k
  385. import_phoneme consonants/k-
  386. voicingswitch g
  387. endphoneme
  388. phoneme k#
  389. import_phoneme consonants/k#
  390. voicingswitch g#
  391. endphoneme
  392. phoneme g
  393. import_phoneme base1/g
  394. voicingswitch k
  395. endphoneme
  396. phoneme g#
  397. vcd dnt stp
  398. lengthmod 5
  399. voicingswitch k#
  400. Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20
  401. Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
  402. IF PreVoicing THEN
  403. FMT(g2/xg)
  404. ENDIF
  405. IF nextPh(isPause2) THEN
  406. FMT(g2/xg) addWav(ustop/k_asp, 35)
  407. ENDIF
  408. FMT(g2/xg) addWav(ustop/k_asp, 50)
  409. endphoneme
  410. //================
  411. phoneme #X2 // click, use for indicating combining long vowels
  412. vls alv frc sib
  413. lengthmod 3
  414. WAV(ustop/percus02, 60)
  415. endphoneme
  416. phoneme r
  417. liquid rhotic
  418. lengthmod 3
  419. IF thisPh(isWordEnd) THEN
  420. CALL base1/r/
  421. ELSE
  422. IF prevPhW(isVowel) THEN
  423. IF nextPhW(isNotVowel) THEN
  424. IF nextPhW(v) THEN
  425. ChangePhoneme(**) // test for lang=ta
  426. ENDIF
  427. IF nextPhW(isUStop) OR nextPhW(isVStop) THEN
  428. ChangePhoneme(*)
  429. ENDIF
  430. ENDIF
  431. IF nextPhW(V) THEN // [V] may be removed by ChangePhoneme(NULL)
  432. IF next2PhW(isUStop) OR next2PhW(isVStop) THEN
  433. ChangePhoneme(*)
  434. ENDIF
  435. ELSE
  436. IF nextPhW(isVowel) THEN
  437. ChangePhoneme(*)
  438. ENDIF
  439. ENDIF
  440. ENDIF
  441. CALL base1/r
  442. ENDIF
  443. ipa ɾ
  444. endphoneme