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_kyrgyz 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678
  1. // ***************************************************************************/
  2. // * Kyrgyz Language ky ph_kyrgyz *
  3. // * Original Author Joshua Meyer 7-1-2016 *
  4. // * Contact info: [email protected] *
  5. // ***************************************************************************/
  6. // * This program is free software; you can redistribute it and/or modify *
  7. // * it under the terms of the GNU General Public License as published by *
  8. // * the Free Software Foundation; either version 3 of the License, or *
  9. // * (at your option) any later version. *
  10. // * *
  11. // * This program is distributed in the hope that it will be useful, *
  12. // * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  13. // * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  14. // * GNU General Public License for more details. *
  15. // * *
  16. // * You should have received a copy of the GNU General Public License *
  17. // * along with this program; if not, see: *
  18. // * <http://www.gnu.org/licenses/>. *
  19. // ***************************************************************************/
  20. // ============ //
  21. // SHORT VOWELS //
  22. // ============ //
  23. phoneme a
  24. ipa ɑ
  25. vowel starttype #i endtype #i
  26. length 200
  27. FMT(vowel/0_3)
  28. endphoneme
  29. phoneme e
  30. ipa e
  31. vowel starttype #e endtype #e
  32. length 170
  33. FMT(vowel/e)
  34. endphoneme
  35. phoneme i
  36. ipa i
  37. vowel starttype #i endtype #i
  38. length 170
  39. IfNextVowelAppend(;)
  40. FMT(vowel/i)
  41. endphoneme
  42. phoneme o
  43. ipa o
  44. vowel starttype #o endtype #o
  45. length 200
  46. FMT(vowel/o_8)
  47. endphoneme
  48. phoneme u
  49. ipa u
  50. vowel starttype #u endtype #u
  51. length 200
  52. FMT(vowel/u_bck)
  53. endphoneme
  54. phoneme I
  55. ipa ɯ
  56. vowel starttype #@ endtype #@
  57. length 180
  58. FMT(vowel/u#_7)
  59. endphoneme
  60. phoneme y
  61. ipa y
  62. vowel starttype #u endtype #u
  63. length 180
  64. FMT(vowel/y)
  65. endphoneme
  66. phoneme O
  67. ipa oe
  68. vowel starttype #@ endtype #@
  69. length 150
  70. FMT(vowel/oe)
  71. endphoneme
  72. // ============ //
  73. // LONG VOWELS //
  74. // ============ //
  75. phoneme a:
  76. ipa ɑ:
  77. vowel starttype #i endtype #i
  78. length 325
  79. FMT(vowel/0_3)
  80. endphoneme
  81. phoneme e:
  82. ipa e:
  83. vowel starttype #e endtype #e
  84. length 300
  85. FMT(vowel/e)
  86. endphoneme
  87. phoneme i:
  88. ipa i:
  89. vowel starttype #i endtype #i
  90. length 300
  91. IfNextVowelAppend(;)
  92. FMT(vowel/i)
  93. endphoneme
  94. phoneme o:
  95. ipa o:
  96. vowel starttype #o endtype #o
  97. length 325
  98. FMT(vowel/o_8)
  99. endphoneme
  100. phoneme u:
  101. ipa u:
  102. vowel starttype #u endtype #u
  103. length 325
  104. FMT(vowel/u_bck)
  105. endphoneme
  106. phoneme I:
  107. ipa ɯ:
  108. vowel starttype #@ endtype #@
  109. length 300
  110. FMT(vowel/u#_7)
  111. endphoneme
  112. phoneme y:
  113. ipa y:
  114. vowel starttype #u endtype #u
  115. length 275
  116. FMT(vowel/y)
  117. endphoneme
  118. phoneme O:
  119. ipa oe:
  120. vowel starttype #@ endtype #@
  121. length 275
  122. FMT(vowel/oe)
  123. endphoneme
  124. // ========== //
  125. // CONSONANTS //
  126. // ========== //
  127. phoneme r
  128. ipa r
  129. liquid
  130. trill
  131. lengthmod 6
  132. Vowelin f1=0 f2=1600 -300 300 f3=-200 80
  133. Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk
  134. FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65)
  135. endphoneme
  136. phoneme l
  137. ipa l
  138. liquid
  139. starttype l endtype l
  140. lengthmod 7
  141. NextVowelStarts
  142. VowelStart(l/l@)
  143. VowelStart(l/la, -10)
  144. VowelStart(l/le, -15)
  145. VowelStart(l/li, -15)
  146. VowelStart(vwl_fr/lo, -10)
  147. VowelStart(l/lu, -20)
  148. EndSwitch
  149. IF prevPh(#@) THEN
  150. VowelEnding(l/xl, -50)
  151. ELIF prevPh(isVowel) THEN
  152. VowelEnding(l/xl, -40)
  153. ENDIF
  154. IF prevPh(isPause) OR thisPh(isWordStart) THEN
  155. FMT(l/_l)
  156. ENDIF
  157. IF prevPh(isRhotic) OR prevPh(isNasal) THEN
  158. FMT(l/_l)
  159. ENDIF
  160. IF prevPh(t) THEN
  161. FMT(l/tl)
  162. ENDIF
  163. IF prevPh(l/) THEN
  164. FMT(l/l_long) // double l, make it longer
  165. ENDIF
  166. FMT(l/l)
  167. endphoneme
  168. phoneme L
  169. // 'dark' [l]
  170. ipa l-
  171. liquid
  172. lengthmod 7
  173. IF nextPh(isVowel) THEN
  174. ChangePhoneme(l)
  175. ENDIF
  176. CALL vowelstart_l
  177. IF prevPhW(j) THEN
  178. FMT(l/L2_eL)
  179. ENDIF
  180. IF prevPhW(w) THEN
  181. FMT(l/L2_uL)
  182. ENDIF
  183. PrevVowelEndings
  184. VowelEnding(l/L2_@L, -60)
  185. VowelEnding(l/L2_aL, -50)
  186. VowelEnding(l/L2_eL, -40)
  187. VowelEnding(l/L2_iL, -30)
  188. VowelEnding(l/L2_oL, -50)
  189. VowelEnding(l/L2_uL, -40)
  190. EndSwitch
  191. endphoneme
  192. phoneme j // **y**es
  193. ipa j
  194. liquid palatal starttype #i
  195. lengthmod 7
  196. IF nextPhW(isVowel) THEN
  197. NextVowelStarts
  198. VowelStart(j/j@)
  199. VowelStart(j/ja)
  200. VowelStart(j/je)
  201. VowelStart(j/ji)
  202. VowelStart(j/jo)
  203. VowelStart(j/ju)
  204. EndSwitch
  205. VowelEnding(j/xj, -30)
  206. IF prevPh(isPause) THEN
  207. FMT(j/_j)
  208. ENDIF
  209. ELSE
  210. // no vowel follows
  211. Vowelout len=70
  212. FMT(j/j_)
  213. ENDIF
  214. endphoneme
  215. phoneme m
  216. ipa m
  217. vcd blb nasal
  218. Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
  219. lengthmod 4
  220. IF KlattSynth THEN
  221. Vowelin f1=0 f2=1000 -50 -200 f3=-200 80
  222. IF nextPh(isPause2) THEN
  223. FMT(klatt/m_)
  224. ENDIF
  225. FMT(klatt/m)
  226. ENDIF
  227. NextVowelStarts
  228. VowelStart(m/m@)
  229. VowelStart(m/ma)
  230. VowelStart(m/me)
  231. VowelStart(m/mi)
  232. VowelStart(m/mo)
  233. VowelStart(m/mu)
  234. EndSwitch
  235. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  236. FMT(m/mj)
  237. ELIF prevPh(isPause) THEN
  238. FMT(m/_m)
  239. ELIF nextPh(isNotVowel) THEN
  240. FMT(m/m_)
  241. ENDIF
  242. endphoneme
  243. phoneme n
  244. ipa n
  245. vcd alv nasal
  246. Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
  247. lengthmod 4
  248. IF KlattSynth THEN
  249. Vowelin f1=0 f2=1500 -200 200 f3=0 80
  250. FMT(klatt/n)
  251. ENDIF
  252. NextVowelStarts
  253. VowelStart(n/n@)
  254. VowelStart(n/na)
  255. VowelStart(n/ne)
  256. VowelStart(n/ni)
  257. VowelStart(n/no)
  258. VowelStart(n/nu)
  259. EndSwitch
  260. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  261. FMT(n/nj)
  262. ELIF prevPh(isPause) OR prevPh(n) THEN
  263. FMT(n/_n)
  264. ELIF nextPh(isNotVowel) THEN
  265. FMT(n/n_)
  266. ENDIF
  267. endphoneme
  268. phoneme N // si**ng**
  269. ipa N
  270. vcd vel nasal
  271. Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
  272. lengthmod 8 // longer than 'n'
  273. IF KlattSynth THEN
  274. Vowelin f1=0 f2=2100 50 300 f3=0 80
  275. IF nextPh(isPause2) THEN
  276. FMT(klatt/nn_)
  277. ENDIF
  278. FMT(klatt/nn)
  279. ENDIF
  280. NextVowelStarts
  281. VowelStart(nn/nn@)
  282. VowelStart(nn/nna)
  283. VowelStart(nn/nne)
  284. VowelStart(nn/nni)
  285. VowelStart(nn/nno)
  286. VowelStart(nn/nnu)
  287. EndSwitch
  288. IF prevPh(#i) THEN
  289. VowelEnding(nn/inn, -40)
  290. ENDIF
  291. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  292. FMT(nn/nnj)
  293. ELIF prevPh(isPause) THEN
  294. FMT(nn/_nn)
  295. ELIF nextPh(isNotVowel) THEN
  296. FMT(nn/nn_)
  297. ENDIF
  298. endphoneme
  299. phoneme * // flap
  300. ipa ɾ
  301. vcd alv flp rhotic
  302. brkafter
  303. lengthmod 3
  304. IF nextPh(#e) OR nextPh(#i) THEN
  305. Vowelin f1=0 f2=1500 -300 300 f3=-200 80
  306. FMT(d/tap1) addWav(r3/rx, 150)
  307. FMT(d/tap1) addWav(r3/rx, 150)
  308. ENDIF
  309. Vowelin f1=2 f2=1500 -300 300 f3=-200 80
  310. IF nextPh(#a) THEN
  311. FMT(d/tap3) addWav(r3/rx, 200)
  312. ENDIF
  313. IF nextPh(r) THEN
  314. FMT(d/dr)
  315. ENDIF
  316. Vowelout f1=3 f2=1500 -400 300 f3=-200 80 rms=35 len=50
  317. Vowelin f1=0 f2=1500 -300 300 f3=-200 80
  318. FMT(d/tap3) addWav(r3/rx, 200)
  319. endphoneme
  320. phoneme f
  321. ipa f
  322. vls lbd frc
  323. voicingswitch v
  324. lengthmod 3
  325. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  326. WAV(ufric/f)
  327. endphoneme
  328. phoneme v // english v for now
  329. ipa v
  330. vowel starttype #a endtype #@
  331. length 170
  332. ChangeIfDiminished(@)
  333. FMT(vowel/V_6)
  334. endphoneme
  335. phoneme b
  336. ipa b
  337. vcd blb stop
  338. voicingswitch p
  339. Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
  340. lengthmod 5
  341. IF PreVoicing THEN
  342. FMT(b/xb)
  343. ENDIF
  344. IF KlattSynth THEN
  345. Vowelin f1=1 f2=1000 -500 -300 f3=-300 80
  346. IF nextPh(isPause2) THEN
  347. FMT(klatt/b) addWav(x/b_)
  348. ENDIF
  349. FMT(klatt/b) addWav(x/b)
  350. ENDIF
  351. IF nextPh(isPause2) THEN
  352. FMT(b/b_) addWav(x/b_)
  353. ELIF nextPh(@-) THEN
  354. FMT(b/b@2) addWav(x/b)
  355. ELIF nextPh(#@) THEN
  356. FMT(b/b@) addWav(x/b)
  357. ELIF nextPh(#a) THEN
  358. FMT(b/ba) addWav(x/b)
  359. ELIF nextPh(#e) THEN
  360. FMT(b/be) addWav(x/b)
  361. ELIF nextPh(#i) THEN
  362. FMT(b/bi) addWav(x/b)
  363. ELIF nextPh(#o) THEN
  364. FMT(b/bo) addWav(x/b)
  365. ELIF nextPh(#u) THEN
  366. FMT(b/bu) addWav(x/b)
  367. ENDIF
  368. FMT(b/b) addWav(x/b)
  369. endphoneme
  370. phoneme ts
  371. ipa ts
  372. Length 10
  373. import_phoneme consonants/ts
  374. endphoneme
  375. phoneme tS // **ch**urch
  376. ipa tS
  377. vls pla afr sibilant
  378. voicingswitch dZ
  379. lengthmod 2
  380. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  381. IF nextPh(isPause2) THEN
  382. WAV(ustop/tsh_)
  383. ENDIF
  384. WAV(ustop/tsh)
  385. endphoneme
  386. phoneme dZ // **j**udge
  387. ipa dZ
  388. vcd pla afr sibilant
  389. voicingswitch tS
  390. lengthmod 5
  391. Vowelin f1=2 f2=2300 200 400 f3=100 80
  392. Vowelout f1=2 f2=2300 250 300 f3=100 80 brk
  393. IF PreVoicing THEN
  394. FMT(dzh/xdzh)
  395. ENDIF
  396. IF nextPh(isPause2) THEN
  397. FMT(dzh/dzh_) addWav(x/dzh_)
  398. ENDIF
  399. FMT(dzh/dzh) addWav(x/dzh)
  400. endphoneme
  401. phoneme g
  402. vcd vel stop
  403. voicingswitch k
  404. lengthmod 5
  405. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  406. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  407. IF PreVoicing THEN
  408. FMT(g/xg)
  409. ENDIF
  410. IF nextPh(isPause2) THEN
  411. FMT(g/g_) addWav(x/g_)
  412. ENDIF
  413. FMT(g/g) addWav(x/g2, 150)
  414. endphoneme
  415. phoneme k
  416. vls vel stop
  417. voicingswitch g
  418. lengthmod 2
  419. Vowelin f1=0 f2=2300 200 300 f3=-200 80
  420. Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20
  421. IF KlattSynth THEN
  422. Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20
  423. ENDIF
  424. IF nextPh(isPause2) THEN
  425. WAV(ustop/k_)
  426. ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
  427. WAV(ustop/kr)
  428. // ELIF nextPh(#i) OR nextPh(;) THEN
  429. // WAV(ustop/ki)
  430. ELIF nextPh(l) THEN
  431. WAV(ustop/kl)
  432. ELIF nextPh(@-) THEN
  433. WAV(ustop/k_unasp, 70)
  434. ENDIF
  435. WAV(ustop/k)
  436. endphoneme
  437. phoneme z
  438. ipa z
  439. vcd alv frc sibilant
  440. voicingswitch s
  441. lengthmod 6
  442. Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
  443. IF KlattSynth THEN
  444. Vowelin f1=0 f2=1390 -300 300 f3=0 0
  445. Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk
  446. ENDIF
  447. IF nextPh(isPause2) THEN
  448. FMT(voc/z_) addWav(ufric/s_, 70)
  449. ENDIF
  450. FMT(voc/z) addWav(ufric/s_, 85)
  451. endphoneme
  452. phoneme G
  453. vcd uvl frc
  454. ipa ʁ
  455. lengthmod 6
  456. IF nextPh(isPause2) THEN
  457. FMT(voc/Q_ulv) addWav(ufric/xx, 60)
  458. ENDIF
  459. FMT(voc/Q_ulv) addWav(ufric/xx, 80)
  460. endphoneme
  461. phoneme p
  462. ipa p
  463. vls blb stop
  464. voicingswitch b
  465. lengthmod 2
  466. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  467. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  468. IF nextPh(isPause2) THEN
  469. WAV(ustop/p_)
  470. ELIF nextPh(r) THEN
  471. WAV(ustop/pr, 70)
  472. ELIF nextPh(R) OR nextPh(R2) THEN
  473. WAV(ustop/pr)
  474. ELIF nextPh(@-) THEN
  475. WAV(ustop/p_unasp)
  476. ELIF nextPh(l) THEN
  477. WAV(ustop/pl)
  478. ENDIF
  479. WAV(ustop/p)
  480. endphoneme
  481. phoneme t // dental /t/
  482. ipa t[
  483. vls dnt stop
  484. voicingswitch d
  485. lengthmod 2
  486. Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16
  487. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
  488. IF nextPh(isPause2) THEN
  489. WAV(ustop/t_dnt, 35)
  490. ENDIF
  491. WAV(ustop/t_hi, 70)
  492. endphoneme
  493. phoneme d // dental /d/
  494. ipa d[
  495. vcd dnt stop
  496. voicingswitch t
  497. lengthmod 5
  498. Vowelin f1=2 f2=1500 -300 300 f3=-150 80
  499. Vowelout f1=2 f2=1500 -300 300 f3=-150 80
  500. IF PreVoicing THEN
  501. FMT(d/xd)
  502. ENDIF
  503. IF nextPh(isPause2) THEN
  504. FMT(d/d_) addWav(x/d_)
  505. ELIF nextPh(r) THEN
  506. FMT(d/dr) addWav(x/d_dnt, 100)
  507. ENDIF
  508. FMT(d/d) addWav(x/d_dnt, 100)
  509. endphoneme
  510. phoneme q
  511. ipa q
  512. vls uvl stop
  513. lengthmod 2
  514. Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30
  515. Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35
  516. IF nextPh(isPause2) THEN
  517. WAV(ustop/q, 40)
  518. ELIF nextPh(#u) THEN
  519. WAV(ustop/q_u, 80)
  520. ENDIF
  521. WAV(ustop/q, 48)
  522. endphoneme
  523. phoneme s
  524. ipa s
  525. vls alv frc sibilant
  526. voicingswitch z
  527. lengthmod 3
  528. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  529. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  530. IF nextPh(isPause) THEN
  531. WAV(ufric/s_)
  532. ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
  533. WAV(ufric/s!)
  534. ENDIF
  535. WAV(ufric/s)
  536. endphoneme
  537. phoneme S // **sh**op
  538. ipa S
  539. vls pla frc sibilant
  540. voicingswitch Z
  541. lengthmod 3
  542. Vowelin f1=0 f2=2100 100 300 f3=-100 80
  543. Vowelout f1=0 f2=2100 100 300 f3=-100 80
  544. IF nextPh(isPause) THEN
  545. WAV(ufric/sh_)
  546. ENDIF
  547. WAV(ufric/sh)
  548. endphoneme
  549. phoneme X
  550. ipa X
  551. vls uvl frc
  552. voicingswitch Q"
  553. lengthmod 3
  554. IF nextPh(isPause) THEN
  555. WAV(ufric/xx, 70)
  556. ENDIF
  557. WAV(ufric/xx,80)
  558. endphoneme