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

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