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_finnish 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. //====================================================
  2. // Finnish
  3. //====================================================
  4. phoneme : // Lengthen previous vowel by "length"
  5. virtual
  6. length 160
  7. endphoneme
  8. phoneme i
  9. vwl starttype #i endtype #i
  10. length 140
  11. IfNextVowelAppend(;)
  12. ChangeIfUnstressed(I)
  13. FMT(vowel/i_4)
  14. endphoneme
  15. phoneme I
  16. vwl starttype #i endtype #i
  17. length 140
  18. IfNextVowelAppend(;)
  19. FMT(vowel/ii_3)
  20. endphoneme
  21. phoneme e
  22. vwl starttype #e endtype #e
  23. length 150
  24. FMT(vowel/e_mid2)
  25. endphoneme
  26. phoneme &
  27. vwl starttype #a endtype #a
  28. length 150
  29. FMT(vowel/&)
  30. endphoneme
  31. phoneme a
  32. vwl starttype #a endtype #a
  33. length 170
  34. // ChangeIfUnstressed(a2)
  35. FMT(vowel/aa_9)
  36. endphoneme
  37. phoneme a2
  38. vwl starttype #a endtype #a
  39. length 170
  40. FMT(vowel/aa#)
  41. endphoneme
  42. phoneme o
  43. vwl starttype #o endtype #o
  44. length 155
  45. FMT(vowel/oo_1)
  46. endphoneme
  47. phoneme Y
  48. vwl starttype #@ endtype #@
  49. length 155
  50. FMT(vowel/y#)
  51. endphoneme
  52. phoneme u
  53. vwl starttype #u endtype #u
  54. length 140
  55. FMT(vowel/u_bck)
  56. endphoneme
  57. phoneme u1 // TEST
  58. vwl starttype #u endtype #u
  59. length 140
  60. FMT(vowel/u_2)
  61. endphoneme
  62. phoneme U // TEST
  63. vwl starttype #u endtype #u
  64. length 140
  65. FMT(vowel/uu_4)
  66. endphoneme
  67. phoneme y
  68. vwl starttype #u endtype #u
  69. length 150
  70. FMT(vowel/y)
  71. endphoneme
  72. // Diphthongs
  73. //===========
  74. phoneme ai
  75. vwl starttype #a endtype #i
  76. length 310
  77. long
  78. FMT(vdiph/aai_3)
  79. endphoneme
  80. phoneme &i
  81. vwl starttype #a endtype #i
  82. length 290
  83. long
  84. FMT(vdiph/&i)
  85. endphoneme
  86. phoneme oi
  87. vwl starttype #o endtype #i
  88. length 280
  89. long
  90. FMT(vdiph/ooi)
  91. endphoneme
  92. phoneme ei
  93. vwl starttype #e endtype #i
  94. length 280
  95. long
  96. FMT(vdiph/eei_2)
  97. endphoneme
  98. phoneme Yi
  99. vwl starttype #@ endtype #i
  100. length 270
  101. long
  102. FMT(vdiph/y#i)
  103. endphoneme
  104. phoneme ui
  105. vwl starttype #u endtype #i
  106. length 270
  107. long
  108. FMT(vdiph/ui_4)
  109. endphoneme
  110. phoneme yi
  111. vwl starttype #u endtype #i
  112. length 270
  113. long
  114. FMT(vdiph/yi)
  115. endphoneme
  116. phoneme au
  117. vwl starttype #a endtype #u
  118. length 300
  119. long
  120. FMT(vdiph/aau)
  121. endphoneme
  122. phoneme ou
  123. vwl starttype #o endtype #u
  124. length 280
  125. long
  126. FMT(vdiph/ou)
  127. endphoneme
  128. phoneme eu
  129. vwl starttype #e endtype #u
  130. length 280
  131. long
  132. FMT(vdiph/eu_2)
  133. endphoneme
  134. phoneme iu
  135. vwl starttype #i endtype #u
  136. length 280
  137. long
  138. FMT(vdiph2/iu_2)
  139. endphoneme
  140. phoneme &y
  141. vwl starttype #a endtype #u
  142. length 280
  143. long
  144. FMT(vdiph/&y)
  145. endphoneme
  146. phoneme ey
  147. vwl starttype #e endtype #u
  148. length 280
  149. long
  150. FMT(vdiph/eey)
  151. endphoneme
  152. phoneme Yy
  153. vwl starttype #@ endtype #u
  154. length 270
  155. long
  156. FMT(vdiph/y#y)
  157. endphoneme
  158. phoneme iy
  159. vwl starttype #i endtype #u
  160. length 260
  161. long
  162. FMT(vdiph2/iy)
  163. endphoneme
  164. phoneme uo
  165. vwl starttype #u endtype #o
  166. length 280
  167. long
  168. FMT(vdiph2/uo)
  169. endphoneme
  170. phoneme ie
  171. vwl starttype #i endtype #e
  172. length 280
  173. long
  174. FMT(vdiph2/ie)
  175. endphoneme
  176. phoneme yY
  177. vwl starttype #u endtype #@
  178. length 280
  179. long
  180. FMT(vdiph2/y-y#)
  181. endphoneme
  182. // CONSONANTS
  183. //===========
  184. phoneme r
  185. import_phoneme base/R
  186. endphoneme
  187. phoneme R2 // this is [R2], but shorter
  188. liquid
  189. trill
  190. lengthmod 6
  191. ipa r
  192. Vowelin f1=0 f2=1700 -300 300 f3=-300 80
  193. Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
  194. FMT(r3/r_trill_short) addWav(r3/r_trill.wav, 50)
  195. endphoneme
  196. phoneme v // approximant, not fricative
  197. vcd lbd frc
  198. lengthmod 6
  199. voicingswitch f
  200. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  201. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  202. IF nextPh(isPause2) THEN
  203. FMT(voc/v_)
  204. ENDIF
  205. FMT(voc/v)
  206. endphoneme
  207. phoneme t // dental variant of /t/
  208. import_phoneme base/t[
  209. voicingswitch d
  210. endphoneme
  211. phoneme d
  212. vcd dnt stop
  213. voicingswitch t
  214. lengthmod 5
  215. Vowelin f1=2 f2=1700 -100 200 f3=0 80
  216. Vowelout f1=2 f2=1700 -100 200 f3=0 80 rms=20
  217. IF PreVoicing THEN
  218. FMT(d/xd)
  219. ENDIF
  220. IF nextPh(isPause2) THEN
  221. FMT(d/d_) addWav(x/d_)
  222. ELIF nextPh(r) THEN
  223. FMT(d/dr) addWav(x/d_dnt, 60)
  224. ENDIF
  225. FMT(d/d) addWav(x/d_dnt, 60)
  226. endphoneme
  227. phoneme p
  228. import_phoneme base2/p
  229. voicingswitch b
  230. endphoneme
  231. phoneme k
  232. import_phoneme base2/k
  233. voicingswitch g
  234. endphoneme
  235. phoneme s2 // second part of long [s]
  236. import_phoneme consonants/s2
  237. endphoneme
  238. phoneme h
  239. vls glt apr
  240. lengthmod 3
  241. IF nextPh(#@) THEN
  242. WAV(h/h@)
  243. ELIF nextPh(#a) THEN
  244. WAV(h/ha)
  245. ELIF nextPh(#e) THEN
  246. WAV(h/he)
  247. ELIF nextPh(#i) THEN
  248. WAV(h/hi)
  249. ELIF nextPh(#o) THEN
  250. WAV(h/hu_fi, 70)
  251. ELIF nextPh(#u) THEN
  252. WAV(h/hu_fi, 80)
  253. ENDIF
  254. WAV(h/h_, 70) // no vowel following
  255. endphoneme