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_lule_saami 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. //====================================================
  2. // Lule Saami
  3. //====================================================
  4. phoneme : // Lengthen previous vowel by "length"
  5. virtual
  6. length 160
  7. endphoneme
  8. phoneme @ // close schwa
  9. vwl starttype #@ endtype #@
  10. unstressed
  11. length 120
  12. FMT(vowel/@_4)
  13. endphoneme
  14. phoneme i
  15. vwl starttype #i endtype #i
  16. length 140
  17. IfNextVowelAppend(;)
  18. ChangeIfUnstressed(I)
  19. FMT(vowel/i_4)
  20. endphoneme
  21. phoneme I
  22. vwl starttype #i endtype #i
  23. length 140
  24. IfNextVowelAppend(;)
  25. FMT(vowel/ii_3)
  26. endphoneme
  27. phoneme e
  28. vwl starttype #e endtype #e
  29. length 150
  30. FMT(vowel/e_mid2)
  31. endphoneme
  32. phoneme E
  33. vwl starttype #e endtype #e
  34. length 160
  35. FMT(vowel/ee_4)
  36. endphoneme
  37. phoneme &
  38. vwl starttype #a endtype #a
  39. length 150
  40. FMT(vowel/&)
  41. endphoneme
  42. phoneme a
  43. vwl starttype #a endtype #a
  44. length 170
  45. // ChangeIfUnstressed(a2)
  46. FMT(vowel/aa_9)
  47. endphoneme
  48. phoneme a2
  49. vwl starttype #a endtype #a
  50. length 170
  51. FMT(vowel/aa#)
  52. endphoneme
  53. phoneme A
  54. vwl starttype #a endtype #a
  55. length 170
  56. FMT(vowel/aa_8)
  57. endphoneme
  58. phoneme o
  59. vwl starttype #o endtype #o
  60. length 155
  61. FMT(vowel/oo_1)
  62. endphoneme
  63. phoneme O
  64. vwl starttype #o endtype #o
  65. length 150
  66. FMT(vowel/o_mid)
  67. endphoneme
  68. phoneme Y
  69. vwl starttype #@ endtype #@
  70. length 155
  71. FMT(vowel/y#)
  72. endphoneme
  73. phoneme u
  74. vwl starttype #u endtype #u
  75. length 140
  76. FMT(vowel/u_bck)
  77. endphoneme
  78. phoneme u1 // TEST
  79. vwl starttype #u endtype #u
  80. length 140
  81. FMT(vowel/u_2)
  82. endphoneme
  83. phoneme U // TEST
  84. vwl starttype #u endtype #u
  85. length 140
  86. FMT(vowel/uu_4)
  87. endphoneme
  88. phoneme u-
  89. vwl starttype #u endtype #u
  90. ipa ʉ
  91. length 200
  92. FMT(vowel/u#_2)
  93. endphoneme
  94. phoneme y
  95. vwl starttype #u endtype #u
  96. length 150
  97. FMT(vowel/y)
  98. endphoneme
  99. phoneme W
  100. vwl starttype #@ endtype #@
  101. length 120
  102. FMT(vowel/oe_2)
  103. endphoneme
  104. phoneme w
  105. liquid
  106. lengthmod 7
  107. starttype #u
  108. IF nextPh(isVowel) THEN
  109. NextVowelStarts
  110. VowelStart(w/w@)
  111. VowelStart(w/wa)
  112. VowelStart(w/we)
  113. VowelStart(w/wi)
  114. VowelStart(w/wo)
  115. VowelStart(w/wu)
  116. EndSwitch
  117. VowelEnding(w/xw, -30)
  118. IF prevPhW(isNasal) THEN
  119. FMT(w/w)
  120. ELSEIF prevPhW(h) THEN
  121. // none, [hw]
  122. ELSE
  123. FMT(w/_w)
  124. ENDIF
  125. ELSE
  126. // no vowel follows
  127. Vowelout len=50
  128. IF prevPh(#i) THEN
  129. FMT(w/iw_)
  130. ENDIF
  131. FMT(w/w_)
  132. ENDIF
  133. endphoneme
  134. // Diphthongs
  135. //===========
  136. phoneme ai
  137. vwl starttype #a endtype #i
  138. length 310
  139. lng
  140. FMT(vdiph/aai_3)
  141. endphoneme
  142. phoneme &i
  143. vwl starttype #a endtype #i
  144. length 290
  145. lng
  146. FMT(vdiph/&i)
  147. endphoneme
  148. phoneme oi
  149. vwl starttype #o endtype #i
  150. length 280
  151. lng
  152. FMT(vdiph/ooi)
  153. endphoneme
  154. phoneme ei
  155. vwl starttype #e endtype #i
  156. length 280
  157. lng
  158. FMT(vdiph/eei_2)
  159. endphoneme
  160. phoneme Yi
  161. vwl starttype #@ endtype #i
  162. length 270
  163. lng
  164. FMT(vdiph/y#i)
  165. endphoneme
  166. phoneme ui
  167. vwl starttype #u endtype #i
  168. length 270
  169. lng
  170. FMT(vdiph/ui_4)
  171. endphoneme
  172. phoneme yi
  173. vwl starttype #u endtype #i
  174. length 270
  175. lng
  176. FMT(vdiph/yi)
  177. endphoneme
  178. phoneme au
  179. vwl starttype #a endtype #u
  180. length 300
  181. lng
  182. FMT(vdiph/aau)
  183. endphoneme
  184. phoneme ou
  185. vwl starttype #o endtype #u
  186. length 280
  187. lng
  188. FMT(vdiph/ou)
  189. endphoneme
  190. phoneme eu
  191. vwl starttype #e endtype #u
  192. length 280
  193. lng
  194. FMT(vdiph/eu_2)
  195. endphoneme
  196. phoneme iu
  197. vwl starttype #i endtype #u
  198. length 280
  199. lng
  200. FMT(vdiph2/iu_2)
  201. endphoneme
  202. phoneme &y
  203. vwl starttype #a endtype #u
  204. length 280
  205. lng
  206. FMT(vdiph/&y)
  207. endphoneme
  208. phoneme ey
  209. vwl starttype #e endtype #u
  210. length 280
  211. lng
  212. FMT(vdiph/eey)
  213. endphoneme
  214. phoneme Yy
  215. vwl starttype #@ endtype #u
  216. length 270
  217. lng
  218. FMT(vdiph/y#y)
  219. endphoneme
  220. phoneme iy
  221. vwl starttype #i endtype #u
  222. length 260
  223. lng
  224. FMT(vdiph2/iy)
  225. endphoneme
  226. phoneme uo
  227. vwl starttype #u endtype #o
  228. length 280
  229. lng
  230. FMT(vdiph2/uo)
  231. endphoneme
  232. phoneme ie
  233. vwl starttype #i endtype #e
  234. length 280
  235. lng
  236. FMT(vdiph2/ie)
  237. endphoneme
  238. phoneme yY
  239. vwl starttype #u endtype #@
  240. length 280
  241. lng
  242. FMT(vdiph2/y-y#)
  243. endphoneme
  244. // CONSONANTS
  245. //===========
  246. phoneme r
  247. import_phoneme base1/R
  248. endphoneme
  249. phoneme r. // retroflex
  250. liquid rfx
  251. lengthmod 3
  252. Vowelout f1=3 f2=1400 -400 300 f3=-400 80 rms=35 len=15 colr=2
  253. Vowelin f1=2 f2=1400 -400 300 f3=-400 80 len=20
  254. IF nextPh(isNotVowel) THEN
  255. FMT(r3/@tap_rfx_)
  256. ENDIF
  257. FMT(r3/@tap_rfx)
  258. endphoneme
  259. phoneme R2 // this is [R2], but shorter
  260. liquid trl
  261. lengthmod 6
  262. ipa r
  263. Vowelin f1=0 f2=1700 -300 300 f3=-300 80
  264. Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
  265. FMT(r3/r_trill_short) addWav(r3/r_trill.wav, 50)
  266. endphoneme
  267. phoneme P
  268. vls blb stp
  269. lengthmod 2
  270. voicingswitch b
  271. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 gpaus
  272. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
  273. WAV(ustop/p_unasp)
  274. endphoneme
  275. phoneme v // approximant, not fricative
  276. vcd lbd frc
  277. lengthmod 6
  278. voicingswitch f
  279. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  280. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  281. IF nextPh(isPause2) THEN
  282. FMT(voc/v_)
  283. ENDIF
  284. FMT(voc/v)
  285. endphoneme
  286. phoneme t // dental variant of /t/
  287. import_phoneme base1/t[
  288. voicingswitch d
  289. endphoneme
  290. phoneme d
  291. vcd dnt stp
  292. voicingswitch t
  293. lengthmod 5
  294. Vowelin f1=2 f2=1700 -100 200 f3=0 80
  295. Vowelout f1=2 f2=1700 -100 200 f3=0 80 rms=20
  296. IF PreVoicing THEN
  297. FMT(d/xd)
  298. ENDIF
  299. IF nextPh(isPause2) THEN
  300. FMT(d/d_) addWav(x/d_)
  301. ELIF nextPh(r) THEN
  302. FMT(d/dr) addWav(x/d_dnt, 60)
  303. ENDIF
  304. FMT(d/d) addWav(x/d_dnt, 60)
  305. endphoneme
  306. phoneme n
  307. vcd alv nas
  308. lengthmod 4
  309. ipa n
  310. IF nextPhW(isVelar) THEN // /n/ is velarized to /N/ when before velar stops
  311. ChangePhoneme(N)
  312. ENDIF
  313. CALL base1/n
  314. endphoneme
  315. phoneme p
  316. import_phoneme base2/p
  317. voicingswitch b
  318. endphoneme
  319. phoneme k
  320. import_phoneme base2/k
  321. voicingswitch g
  322. endphoneme
  323. phoneme s2 // second part of long [s]
  324. import_phoneme consonants/s2
  325. endphoneme
  326. phoneme h
  327. vls glt apr
  328. lengthmod 3
  329. IF nextPh(#@) THEN
  330. WAV(h/h@)
  331. ELIF nextPh(#a) THEN
  332. WAV(h/ha)
  333. ELIF nextPh(#e) THEN
  334. WAV(h/he)
  335. ELIF nextPh(#i) THEN
  336. WAV(h/hi)
  337. ELIF nextPh(#o) THEN
  338. WAV(h/hu_fi, 70)
  339. ELIF nextPh(#u) THEN
  340. WAV(h/hu_fi, 80)
  341. ENDIF
  342. WAV(h/h_, 70) // no vowel following
  343. endphoneme