ph_hakka 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521
  1. //====================================================
  2. // Tone Numbers
  3. //====================================================
  4. phoneme 1 // tone: yinping
  5. ipa ˨˦
  6. stress
  7. Tone(40, 80, envelope/p_rise, NULL)
  8. endphoneme
  9. phoneme 2 // tone: yangping
  10. ipa ˩˩
  11. stress
  12. Tone(20, 20, envelope/p_level, NULL)
  13. endphoneme
  14. phoneme 3 // tone: shang
  15. ipa ˧˩
  16. stress
  17. Tone(60, 20, envelope/p_fall, NULL)
  18. endphoneme
  19. phoneme 4 // tone: qu
  20. ipa ˥˥
  21. stress
  22. Tone(100, 100, envelope/p_level, NULL)
  23. endphoneme
  24. phoneme 5 // tone: yinru
  25. stress
  26. ipa ˨
  27. Tone(40, 40, envelope/p_level, NULL)
  28. endphoneme
  29. phoneme 6 // tone: yangru
  30. stress
  31. ipa ˥
  32. Tone(100, 100, envelope/p_level, NULL)
  33. endphoneme
  34. //====================================================
  35. // Consonant
  36. //====================================================
  37. phoneme p
  38. vls blb stp
  39. lengthmod 2
  40. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 rms=30
  41. Vowelout f1=1 f2=1000 -500 -350 f3=-300 80 rms=22
  42. IF nextPh(isPause2) THEN
  43. WAV(NULL)
  44. ENDIF
  45. WAV(ustop/p)
  46. endphoneme
  47. phoneme t
  48. vls alv stp
  49. lengthmod 2
  50. Vowelin f1=0 f2=1700 -300 300 f3=100 80
  51. Vowelout f1=1 f2=1700 -300 250 f3=-100 80 rms=20
  52. IF nextPh(isPause2) THEN
  53. WAV(NULL)
  54. ENDIF
  55. WAV(ustop/t)
  56. endphoneme
  57. phoneme N
  58. vcd vel nas
  59. Vowelout f1=2 f2=1900 0 300 f3=400 80 len=50 rms=15 brk
  60. lengthmod 7
  61. NextVowelStarts
  62. VowelStart(nn/nn@)
  63. VowelStart(nn/nna)
  64. VowelStart(nn/nne)
  65. VowelStart(nn/nni)
  66. VowelStart(nn/nno)
  67. VowelStart(nn/nnu)
  68. EndSwitch
  69. IF prevPh(isPause) THEN
  70. FMT(nn/_nn)
  71. ELIF nextPh(isNotVowel) THEN
  72. length 190
  73. FMT(nn/nn2_)
  74. ENDIF
  75. endphoneme
  76. phoneme n^ // ng(i)-
  77. vcd pal nas
  78. Vowelout f1=2 f2=1900 0 300 f3=400 80 len=50 rms=15 brk
  79. lengthmod 7
  80. NextVowelStarts
  81. VowelStart(n^/n^@)
  82. VowelStart(n^/n^a)
  83. VowelStart(n^/n^e)
  84. VowelStart(n^/n^i)
  85. VowelStart(n^/n^o)
  86. VowelStart(n^/n^u)
  87. EndSwitch
  88. IF prevPh(isPause) THEN
  89. FMT(n^/_n^)
  90. ELIF nextPh(isNotVowel) THEN
  91. length 190
  92. FMT(n^/n^_)
  93. ENDIF
  94. endphoneme
  95. phoneme n
  96. vcd alv nas
  97. Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
  98. lengthmod 2
  99. NextVowelStarts
  100. VowelStart(n/n@)
  101. VowelStart(n/na)
  102. VowelStart(n/ne)
  103. VowelStart(n/ni)
  104. VowelStart(n/no)
  105. VowelStart(n/nu)
  106. EndSwitch
  107. IF nextPh(isNotVowel) THEN
  108. length 190
  109. FMT(n/n_long_)
  110. ENDIF
  111. FMT(n/_n)
  112. endphoneme
  113. phoneme m
  114. vcd blb nas
  115. Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
  116. lengthmod 4
  117. NextVowelStarts
  118. VowelStart(m/m@)
  119. VowelStart(m/ma)
  120. VowelStart(m/me)
  121. VowelStart(m/mi)
  122. VowelStart(m/mo)
  123. VowelStart(m/mu)
  124. EndSwitch
  125. IF nextPh(isNotVowel) THEN
  126. length 190
  127. FMT(m/m_)
  128. ENDIF
  129. FMT(m/_m)
  130. endphoneme
  131. phoneme p
  132. vls blb stp
  133. lengthmod 2
  134. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  135. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  136. WAV(ustop/p_unasp)
  137. endphoneme
  138. phoneme ph
  139. vls blb stp
  140. lengthmod 2
  141. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  142. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  143. WAV(ustop/p_asp)
  144. endphoneme
  145. phoneme f
  146. vls lbd frc
  147. lengthmod 2
  148. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  149. WAV(ufric/f)
  150. endphoneme
  151. phoneme v
  152. vcd lbd frc
  153. voicingswitch f
  154. lengthmod 6
  155. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  156. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  157. IF KlattSynth THEN
  158. Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
  159. IF nextPh(isPause2) THEN
  160. FMT(klatt/v_) addWav(vocw/v)
  161. ENDIF
  162. FMT(klatt/v) addWav(vocw/v, 150)
  163. ENDIF
  164. IF nextPh(isPause2) THEN
  165. FMT(voc/v_) addWav(vocw/v)
  166. ENDIF
  167. IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
  168. length 70
  169. ENDIF
  170. FMT(voc/v) addWav(vocw/v)
  171. endphoneme
  172. phoneme t
  173. vls alv stp
  174. lengthmod 2
  175. Vowelin f1=0 f2=1700 -300 300 f3=-100 80 rms=40
  176. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  177. WAV(ustop/t_unasp2, 40)
  178. endphoneme
  179. phoneme th
  180. vls alv stp
  181. lengthmod 2
  182. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  183. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  184. WAV(ustop/t_)
  185. endphoneme
  186. phoneme l
  187. liquid
  188. lengthmod 7
  189. IF prevPh(isPause) THEN
  190. FMT(l/_l)
  191. ENDIF
  192. FMT(l/l)
  193. endphoneme
  194. phoneme k
  195. vls uvl stp
  196. lengthmod 2
  197. Vowelin f1=1 f2=1700 0 200 f3=-300 80 f4
  198. Vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30
  199. WAV(ustop/k_unasp_, 75)
  200. endphoneme
  201. phoneme kh
  202. vls uvl stp
  203. lengthmod 2
  204. Vowelin f1=1 f2=1700 0 200 f3=-300 80 f4
  205. Vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30
  206. WAV(ustop/k_asp, 80)
  207. endphoneme
  208. phoneme h
  209. vls glt apr
  210. lengthmod 3
  211. ipa h
  212. IF nextPh(#@) THEN
  213. WAV(h/h@)
  214. ELIF nextPh(#a) THEN
  215. WAV(h/ha)
  216. ELIF nextPh(#e) THEN
  217. WAV(h/he)
  218. ELIF nextPh(#i) THEN
  219. WAV(h/hi)
  220. ELIF nextPh(#o) THEN
  221. WAV(h/ho)
  222. ELIF nextPh(#u) THEN
  223. WAV(h/hu)
  224. ENDIF
  225. WAV(h/h_, 70) // no vowel following
  226. endphoneme
  227. phoneme tS;
  228. vls alp sib afr
  229. ipa tɕ
  230. lengthmod 2
  231. Vowelin f1=0 f2=2700 400 600 f3=300 80
  232. WAV(ustop/tsh_pzd_unasp)
  233. endphoneme
  234. phoneme tS;h
  235. vls alp sib afr
  236. ipa tɕh
  237. lengthmod 2
  238. Vowelin f1=0 f2=2700 400 600 f3=300 80
  239. WAV(ustop/tsh_pzd, 80)
  240. endphoneme
  241. phoneme S;
  242. vls pla frc sib
  243. lengthmod 2
  244. ipa ɕ
  245. Vowelin f1=0 f2=2700 400 600 f3=300 80
  246. WAV(ufric/sh_pzd2, 20)
  247. endphoneme
  248. phoneme ts
  249. vls alv afr sib
  250. lengthmod 2
  251. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  252. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  253. WAV(ustop/ts_unasp, 70)
  254. endphoneme
  255. phoneme tsh
  256. vls alv afr sib
  257. lengthmod 2
  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/ts, 60)
  261. endphoneme
  262. phoneme s
  263. vls alv frc sib
  264. voicingswitch z
  265. lengthmod 3
  266. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  267. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  268. IF nextPh(isPause) THEN
  269. WAV(ufric/s_)
  270. ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
  271. WAV(ufric/s!)
  272. ENDIF
  273. WAV(ufric/s)
  274. endphoneme
  275. phoneme j
  276. liquid pal
  277. lengthmod 1
  278. IF nextPh(isVowel) THEN
  279. NextVowelStarts
  280. VowelStart(j/j@)
  281. VowelStart(j/ja)
  282. VowelStart(j/je)
  283. VowelStart(j/ji)
  284. VowelStart(j/jo)
  285. VowelStart(j/ju)
  286. EndSwitch
  287. VowelEnding(j/xj, -30)
  288. FMT(j/_j)
  289. ELSE
  290. // no vowel follows
  291. Vowelout len=70
  292. FMT(j/j_)
  293. ENDIF
  294. endphoneme
  295. //Syllablic consonants
  296. //=====================
  297. phoneme m-
  298. vwl starttype #@ endtype #@
  299. ipa mU+0329
  300. lengthmod 4
  301. length 240
  302. IF thisPh(isWordStart) THEN
  303. length 240
  304. ENDIF
  305. IF KlattSynth THEN
  306. FMT(klatt/m-syl)
  307. ENDIF
  308. FMT(m/m-syl)
  309. endphoneme
  310. phoneme n-
  311. vwl starttype #@ endtype #@
  312. ipa nU+0329
  313. lengthmod 4
  314. length 240
  315. IF thisPh(isWordStart) THEN
  316. length 240
  317. ENDIF
  318. IF KlattSynth THEN
  319. FMT(klatt/n-syl)
  320. ENDIF
  321. FMT(n/n-syl)
  322. endphoneme
  323. phoneme N-
  324. vwl starttype #e endtype #e
  325. ipa ŋU+0329
  326. lengthmod 4
  327. length 240
  328. FMT(nn/nn-syl)
  329. endphoneme
  330. //====================================================
  331. // Vowels and Diphtnongs
  332. //====================================================
  333. phoneme i
  334. vwl starttype #i endtype #i
  335. length 250
  336. FMT(vowel/i)
  337. endphoneme
  338. phoneme i.
  339. vwl starttype #i endtype #i
  340. length 250
  341. FMT(vowel/i#_6)
  342. endphoneme
  343. phoneme a
  344. vwl starttype #a endtype #a
  345. length 250
  346. FMT(vowel/a)
  347. endphoneme
  348. phoneme e
  349. vwl starttype #e endtype #e
  350. length 250
  351. FMT(vowel/e)
  352. endphoneme
  353. phoneme o
  354. vwl starttype #o endtype #o
  355. length 250
  356. FMT(vowel/oo)
  357. endphoneme
  358. phoneme u //try more before N
  359. vwl starttype #u endtype #u
  360. length 250
  361. FMT(vowel/u)
  362. endphoneme
  363. phoneme ai
  364. vwl starttype #a endtype #i
  365. length 250
  366. FMT(vdiph/ai_6)
  367. endphoneme
  368. phoneme au
  369. vwl starttype #a endtype #u
  370. length 250
  371. FMT(vdiph/au)
  372. endphoneme
  373. phoneme eu
  374. vwl starttype #e endtype #u
  375. length 250
  376. FMT(vdiph/eu)
  377. endphoneme
  378. phoneme ia
  379. vwl starttype #i endtype #a
  380. length 250
  381. FMT(vwl_zh/iaa)
  382. endphoneme
  383. phoneme iau
  384. vwl starttype #i endtype #u
  385. length 250
  386. FMT(vwl_zh/iaau)
  387. endphoneme
  388. phoneme ie
  389. vwl starttype #i endtype #e
  390. length 250
  391. FMT(vwl_zh/ie)
  392. endphoneme
  393. phoneme io
  394. vwl starttype #i endtype #o
  395. length 250
  396. FMT(vdiph2/iioo)
  397. endphoneme
  398. phoneme iu
  399. vwl starttype #i endtype #u
  400. length 250
  401. FMT(vdiph2/iu)
  402. endphoneme
  403. phoneme oi
  404. vwl starttype #o endtype #i
  405. length 250
  406. FMT(vdiph/ooi)
  407. endphoneme
  408. phoneme ua
  409. vwl starttype #u endtype #a
  410. length 250
  411. FMT(vwl_zh/uaa)
  412. endphoneme
  413. phoneme uai
  414. vwl starttype #u endtype #i
  415. length 250
  416. FMT(vwl_zh/uai)
  417. endphoneme
  418. phoneme ue
  419. vwl starttype #u endtype #e
  420. length 250
  421. FMT(vwl_zh/uei)
  422. endphoneme
  423. phoneme ui
  424. vwl starttype #u endtype #i
  425. length 250
  426. FMT(vdiph/ui)
  427. endphoneme
  428. phoneme o- // er
  429. vwl starttype #o endtype #o
  430. length 180
  431. FMT(vowel/o-)
  432. endphoneme