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.6KB

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