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_russian 9.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623
  1. phoneme g
  2. vcd vel stp prevoice
  3. voicingswitch k
  4. lengthmod 5
  5. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  6. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  7. IF PreVoicing THEN
  8. FMT(g/xg)
  9. ENDIF
  10. IF nextPh(isPause2) THEN
  11. FMT(g/g_) addWav(x/g_)
  12. ENDIF
  13. FMT(g/g) addWav(x/g3, 90)
  14. endphoneme
  15. phoneme p
  16. import_phoneme consonants/p-
  17. endphoneme
  18. phoneme x
  19. vls vel frc
  20. lengthmod 3
  21. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  22. Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
  23. // IF nextPh(isPause) THEN
  24. // WAV(ufric/x, 120)
  25. // ENDIF
  26. WAV(ufric/x_hr, 30)
  27. endphoneme
  28. phoneme k
  29. import_phoneme consonants/k-
  30. endphoneme
  31. phoneme l
  32. liquid rfx
  33. ipa ɭ
  34. lengthmod 7
  35. length 80
  36. IF nextPh(isPause) THEN
  37. FMT(l/l_,120)
  38. ELSE
  39. FMT(l/l_,120)
  40. ENDIF
  41. endphoneme
  42. phoneme l^ // From Latvian ļ
  43. liquid
  44. ipa ʎ
  45. lengthmod 7
  46. Vowelout len=60 lenadd rate
  47. length 80
  48. NextVowelStarts
  49. VowelStart(l^/j2@)
  50. VowelStart(l^/j2a)
  51. VowelStart(l^/j2e)
  52. VowelStart(l^/j2i)
  53. VowelStart(l^/j2o)
  54. VowelStart(l^/j2u)
  55. EndSwitch
  56. IF prevPh(isPause) THEN
  57. FMT(l^/_l^)
  58. ELSEIF nextPh(isPause) THEN
  59. FMT(l^/l^_,120)
  60. ENDIF
  61. FMT(l^/l^)
  62. endphoneme
  63. phoneme s
  64. vls alv frc sib
  65. // voicingswitch z
  66. lengthmod 3
  67. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  68. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  69. // IF nextPh(isPause) THEN
  70. // WAV(ufric/s_)
  71. // ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
  72. // WAV(ufric/s!)
  73. // ENDIF
  74. WAV(ufric/s)
  75. endphoneme
  76. phoneme s;
  77. import_phoneme en/s
  78. //CALL en/s
  79. endphoneme
  80. //phoneme n
  81. // vcd pal nas
  82. // FMT(n/nru)
  83. //
  84. // import_phoneme en/n
  85. // length 200
  86. //endphoneme
  87. phoneme n_
  88. // vcd pal nas
  89. // FMT(n/nru)
  90. import_phoneme en/n
  91. // length 200
  92. endphoneme
  93. phoneme n#
  94. vcd pal nas pzd
  95. ipa ɲ
  96. Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate
  97. lengthmod 4
  98. IF KlattSynth THEN
  99. VowelStart(klatt/n^@)
  100. FMT(klatt/n^)
  101. ENDIF
  102. NextVowelStarts
  103. VowelStart(n^/n^@)
  104. VowelStart(n^/n^a)
  105. VowelStart(n^/n^e)
  106. VowelStart(n^/n^i)
  107. VowelStart(n^/n^o)
  108. VowelStart(n^/n^u)
  109. EndSwitch
  110. IF prevPh(isPause) THEN
  111. FMT(n^/_n^)
  112. ELIF nextPh(isNotVowel) THEN
  113. IF nextPhW(n^) THEN
  114. length 75
  115. ELIF prevPhW(n^) THEN
  116. length 100
  117. ENDIF
  118. FMT(n^/n^_)
  119. ENDIF
  120. endphoneme
  121. phoneme r
  122. liquid rhotic alv trl nolink
  123. length 80
  124. IF prevPhW(isVowel) THEN
  125. ELSE
  126. InsertPhoneme(@-)
  127. ENDIF
  128. FMT(r3/r_trill,80) addWav(r3/r_trill.wav, 50)
  129. endphoneme
  130. phoneme ts
  131. import_phoneme consonants/ts
  132. endphoneme
  133. phoneme dZ;
  134. vcd alp sib afr
  135. voicingswitch tS;
  136. lengthmod 5
  137. Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
  138. IF PreVoicing THEN
  139. FMT(dzh/xdzh)
  140. ENDIF
  141. IF nextPh(isPause2) THEN
  142. FMT(dzh/dzh_) addWav(x/dzh_)
  143. ENDIF
  144. endphoneme
  145. phoneme tS;
  146. vls alp sib afr
  147. voicingswitch dZ;
  148. lengthmod 2
  149. Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
  150. WAV(ustop/ts_pzd)
  151. endphoneme
  152. // Palatalized versions of consonants
  153. phoneme t
  154. import_phoneme pl/t
  155. endphoneme
  156. phoneme t;
  157. import_phoneme pl/t;
  158. endphoneme
  159. phoneme d
  160. import_phoneme pl/d
  161. endphoneme
  162. phoneme d;
  163. import_phoneme pl/d;
  164. endphoneme
  165. //phoneme m;
  166. // import_phoneme ro/m;
  167. //endphoneme
  168. phoneme m;
  169. vcd blb nas
  170. Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
  171. lengthmod 4
  172. length 20
  173. IF KlattSynth THEN
  174. Vowelin f1=0 f2=1000 -50 -200 f3=-200 80
  175. IF nextPh(isPause2) THEN
  176. FMT(klatt/m_)
  177. ENDIF
  178. FMT(klatt/m)
  179. ENDIF
  180. VowelStart(m/mi)
  181. // NextVowelStarts
  182. // VowelStart(m/m@)
  183. // VowelStart(m/ma)
  184. // VowelStart(m/me)
  185. // VowelStart(m/mi)
  186. // VowelStart(m/mo)
  187. // VowelStart(m/mu)
  188. // EndSwitch
  189. // IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  190. FMT(m/mj)
  191. // ELIF prevPh(isPause) THEN
  192. // FMT(m/_m)
  193. // ELIF nextPh(isNotVowel) THEN
  194. // FMT(m/m_)
  195. // ENDIF
  196. endphoneme
  197. phoneme I^ // "silent i", palatilizes the preceding consonant
  198. vwl starttype #i endtype #i
  199. unstressed nsy
  200. length 70
  201. IF nextPh(isVowel) THEN
  202. ChangePhoneme(;)
  203. ENDIF
  204. IF prevPh(m;) THEN
  205. FMT(vwl_ro/mi)
  206. ENDIF
  207. FMT(vwl_ru/ii-)
  208. endphoneme
  209. //*******************************************************************
  210. // VOWELS
  211. //*******************************************************************
  212. phoneme i
  213. IF prevPh(Z) THEN
  214. ChangePhoneme(y)
  215. ENDIF
  216. vwl starttype #i endtype #i
  217. length 50
  218. FMT(vwl_ru/ii)
  219. endphoneme
  220. phoneme I#
  221. vwl starttype #i endtype #i
  222. length 80
  223. IF nextVowel(isMaxStress) THEN
  224. ChangePhoneme(I)
  225. ENDIF
  226. IF thisPh(isMaxStress) THEN
  227. ChangePhoneme(i)
  228. ENDIF
  229. FMT(vwl_ru/ii#)
  230. endphoneme
  231. phoneme y
  232. vwl starttype #i endtype #i
  233. length 100
  234. FMT(vwl_ru/i#)
  235. endphoneme
  236. phoneme I
  237. vwl starttype #i endtype #i
  238. length 80
  239. IF thisPh(isMaxStress) THEN
  240. IF prevPhW(j) THEN
  241. ChangePhoneme(a)
  242. ELSE
  243. ChangePhoneme(i)
  244. ENDIF
  245. ENDIF
  246. FMT(vwl_ru/ii)
  247. endphoneme
  248. phoneme I2
  249. vwl starttype #i endtype #i
  250. length 80
  251. IF thisPh(isMaxStress) THEN
  252. ChangePhoneme(e)
  253. ENDIF
  254. IF prevPhW(isPalatal) THEN
  255. ChangePhoneme(I)
  256. ENDIF
  257. FMT(vwl_ru/ii)
  258. endphoneme
  259. phoneme I3
  260. vwl starttype #i endtype #i
  261. length 80
  262. IF thisPh(isMaxStress) THEN
  263. IF prevPhW(j) THEN
  264. ChangePhoneme(e)
  265. ELSE
  266. ChangePhoneme(ja)
  267. ENDIF
  268. ENDIF
  269. IF prevPhW(isPalatal) THEN
  270. ChangePhoneme(I)
  271. ENDIF
  272. FMT(vwl_ru/ii)
  273. endphoneme
  274. phoneme E
  275. vwl starttype #e endtype #e
  276. length 100
  277. FMT(vwl_ru/e)
  278. endphoneme
  279. phoneme E#
  280. vwl starttype #e endtype #e
  281. length 100
  282. IF thisPh(isMaxStress) THEN
  283. IF prevPhW(j) THEN
  284. ChangePhoneme(e)
  285. ELSE
  286. ChangePhoneme(E)
  287. ENDIF
  288. ENDIF
  289. FMT(vwl_ru/E#)
  290. endphoneme
  291. phoneme E2
  292. vwl starttype #e endtype #e
  293. length 80
  294. IF nextVowel(isMaxStress) THEN
  295. IF prevPh(j) THEN
  296. ChangePhoneme(I3)
  297. ELSE
  298. ChangePhoneme(E#)
  299. ENDIF
  300. ENDIF
  301. IF thisPh(isMaxStress) THEN
  302. IF prevPhW(j) THEN
  303. ChangePhoneme(e)
  304. ELSE
  305. ChangePhoneme(E)
  306. ENDIF
  307. ENDIF
  308. FMT(vwl_ru/E@)
  309. endphoneme
  310. phoneme E3
  311. vwl starttype #e endtype #e
  312. length 80
  313. IF nextVowel(isMaxStress) THEN
  314. ChangePhoneme(I)
  315. ENDIF
  316. IF thisPh(isMaxStress) THEN
  317. ChangePhoneme(e)
  318. ENDIF
  319. IF prevPhW(isPalatal) THEN
  320. ChangePhoneme(E2)
  321. ENDIF
  322. FMT(vwl_ru/E@)
  323. endphoneme
  324. phoneme E% // е in prefix "интер"
  325. vwl
  326. // starttype #e endtype #e
  327. //ChangeIfNotStressed(y)
  328. ChangePhoneme(E#)
  329. endphoneme
  330. phoneme o
  331. vwl starttype #o endtype #o
  332. length 100
  333. ChangeIfNotStressed(V)
  334. FMT(vwl_ru/o)
  335. endphoneme
  336. phoneme O
  337. vwl starttype #o endtype #o
  338. length 80
  339. IF prevPhW(isPalatal) THEN
  340. ChangePhoneme(8)
  341. ENDIF
  342. IF thisPh(isMaxStress) THEN
  343. ChangePhoneme(o)
  344. ENDIF
  345. FMT(vwl_ru/oo)
  346. endphoneme
  347. phoneme u
  348. vwl starttype #u endtype #u
  349. length 80
  350. FMT(vwl_ru/u)
  351. endphoneme
  352. phoneme u#
  353. vwl starttype #u endtype #u
  354. length 80
  355. FMT(vwl_ru/u#)
  356. endphoneme
  357. phoneme u"
  358. vwl starttype #u endtype #u
  359. length 150
  360. FMT(vwl_ru/u#u)
  361. endphoneme
  362. phoneme 8
  363. vwl starttype #o endtype #o
  364. length 100
  365. ChangeIfNotStressed(V)
  366. FMT(vwl_ru/8)
  367. endphoneme
  368. phoneme e
  369. vwl starttype #e endtype #e
  370. length 100
  371. IF prevPh(Z) THEN
  372. ChangeIfNotStressed(y)
  373. ChangePhoneme(E)
  374. ENDIF
  375. IF prevPh(S) THEN
  376. ChangeIfNotStressed(y)
  377. ChangePhoneme(E)
  378. ENDIF
  379. IF prevPh(ts) THEN
  380. ChangeIfNotStressed(y)
  381. ChangePhoneme(E)
  382. ENDIF
  383. ChangeIfNotStressed(i)
  384. FMT(vwl_ru/ee)
  385. endphoneme
  386. phoneme ju
  387. vwl starttype #u endtype #u
  388. length 190
  389. FMT(vwl_ru/ju)
  390. endphoneme
  391. phoneme ja
  392. vwl starttype #i endtype #a
  393. IF thisPh(isMaxStress) THEN
  394. length 200
  395. FMT(vwl_ru/ja)
  396. ELSE
  397. FMT(vdiph2/ii@)
  398. ENDIF
  399. endphoneme
  400. phoneme ja#
  401. vwl starttype #i endtype #a
  402. IF thisPh(isMaxStress) THEN
  403. FMT(vowel/&)
  404. // ChangePhoneme(A)
  405. ELSE
  406. IF prevPhW(isPalatal) THEN
  407. ChangePhoneme(I)
  408. ENDIF
  409. ENDIF
  410. // length 200
  411. // FMT(vwl_ru/ja)
  412. endphoneme
  413. phoneme V#
  414. vwl starttype #a endtype #@
  415. unstressed
  416. length 80
  417. // IF nextVowel(isMaxStress) THEN
  418. // not needed? because V# is only used at end-of-word
  419. // ChangePhoneme(I3)
  420. // ENDIF
  421. IF thisPh(isMaxStress) THEN
  422. IF prevPhW(j) THEN
  423. ChangePhoneme(A)
  424. ELSE
  425. ChangePhoneme(ja)
  426. ENDIF
  427. ENDIF
  428. IF prevPhW(isPalatal) THEN
  429. ChangePhoneme(V)
  430. ENDIF
  431. FMT(vowel/V_2)
  432. endphoneme
  433. phoneme Y // will not be used in future
  434. vwl starttype #u endtype #u
  435. unstressed
  436. length 140
  437. FMT(vowel/ii#)
  438. endphoneme
  439. phoneme A
  440. vwl starttype #a endtype #a
  441. length 100
  442. FMT(vwl_ru/a)
  443. endphoneme
  444. phoneme a
  445. vwl starttype #a endtype #a
  446. length 100
  447. IF prevPhW(j) THEN
  448. ELSE
  449. IF thisPh(isMaxStress) THEN
  450. IF prevPhW(isPalatal) THEN
  451. ChangePhoneme(ja)
  452. ELSE
  453. ChangePhoneme(A)
  454. ENDIF
  455. ELSE
  456. IF prevPhW(isPalatal) THEN
  457. ChangePhoneme(I)
  458. ENDIF
  459. ENDIF
  460. ENDIF
  461. IF thisPh(isWordEnd) THEN
  462. FMT(vowel/a#_3)
  463. ENDIF
  464. FMT(vwl_ru/aa)
  465. endphoneme
  466. phoneme V
  467. vwl starttype #a endtype #@
  468. length 80
  469. unstressed
  470. IF nextVowel(isMaxStress) THEN
  471. ChangePhoneme(a)
  472. ENDIF
  473. IF thisPh(isMaxStress) THEN
  474. IF prevPhW(j) THEN
  475. ChangePhoneme(a)
  476. // ELIF prevPhW(isPalatal) THEN
  477. // ChangePhoneme(ja)
  478. ELSE
  479. ChangePhoneme(A)
  480. ENDIF
  481. ENDIF
  482. FMT(vowel/V_2)
  483. endphoneme
  484. phoneme a#
  485. vwl starttype #a endtype #a
  486. length 100
  487. FMT(vowel/a#_3)
  488. endphoneme
  489. phoneme R4
  490. liquid
  491. lengthmod 6
  492. Vowelin f1=0 f2=1500 -300 300 f3=-200 80 rms=60 brk
  493. Vowelout f1=2 f2=1500 -300 300 f3=-200 80
  494. FMT(r3/r_ru2) addWav(r3/r_ru, 50)
  495. endphoneme