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 8.6KB

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