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

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