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_catalan_va 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. //====================================================
  2. // Catalan valencian - based on Catalan (and Spanish and Base2)
  3. //====================================================
  4. // vowels
  5. //=============
  6. phoneme a
  7. vwl starttype #a endtype #a
  8. length 180
  9. FMT(vowel/a_6)
  10. endphoneme
  11. phoneme a2 // does not change in central accent
  12. vwl starttype #a endtype #a
  13. length 180
  14. FMT(vowel/a_6)
  15. endphoneme
  16. phoneme e
  17. vwl starttype #e endtype #e
  18. length 170
  19. IF thisPh(isUnstressed) THEN
  20. IF thisPh(isWordStart) THEN
  21. IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN
  22. ChangePhoneme(a)
  23. ELIF nextPh(j) AND next2Ph(S) THEN
  24. ChangePhoneme(a)
  25. ENDIF
  26. ENDIF
  27. ENDIF
  28. FMT(vowel/e)
  29. endphoneme
  30. phoneme e2 // don't reduce
  31. vwl starttype #e endtype #e
  32. length 170
  33. FMT(vowel/e)
  34. endphoneme
  35. phoneme E
  36. vwl starttype #e endtype #e
  37. length 180
  38. IF thisPh(isUnstressed) THEN
  39. IF thisPh(isWordStart) THEN
  40. IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN
  41. ChangePhoneme(a)
  42. ELIF nextPh(j) AND next2Ph(S) THEN
  43. ChangePhoneme(a)
  44. ELSE
  45. ChangePhoneme(e)
  46. ENDIF
  47. ELSE
  48. ChangePhoneme(e)
  49. ENDIF
  50. ENDIF
  51. FMT(vowel/e_mid)
  52. endphoneme
  53. phoneme E2 // don't reduce
  54. vwl starttype #e endtype #e
  55. length 180
  56. ChangeIfUnstressed(e2)
  57. FMT(vowel/e_mid)
  58. endphoneme
  59. phoneme O
  60. vwl starttype #o endtype #o
  61. length 170
  62. ChangeIfUnstressed(o)
  63. FMT(vowel/oo)
  64. endphoneme
  65. phoneme o2
  66. vwl starttype #o endtype #o
  67. length 170
  68. ChangeIfStressed(O)
  69. FMT(vowel/o)
  70. endphoneme
  71. phoneme o
  72. vwl starttype #o endtype #o
  73. length 170
  74. FMT(vowel/o)
  75. endphoneme
  76. phoneme u
  77. vwl starttype #u endtype #u
  78. length 160
  79. IF thisPh(isUnstressed) THEN
  80. IF thisPh(isWordEnd) THEN
  81. IF nextPh(isVowel) THEN
  82. IF nextPh(u) OR nextPh(w) THEN
  83. ELSE
  84. ChangePhoneme(w)
  85. ENDIF
  86. ENDIF
  87. ELIF thisPh(isWordStart) THEN
  88. IF prevPh(isVowel) THEN
  89. ChangePhoneme(w)
  90. ENDIF
  91. ENDIF
  92. ENDIF
  93. FMT(vowel/u_bck)
  94. endphoneme
  95. phoneme i
  96. vwl starttype #i endtype #i
  97. length 170
  98. IF thisPh(isUnstressed) AND nextPh(isVowel) THEN
  99. ChangePhoneme(j)
  100. ENDIF
  101. FMT(vowel/i)
  102. endphoneme
  103. // nasals
  104. //==============
  105. phoneme n
  106. vcd alv nas
  107. Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
  108. lengthmod 4
  109. IF KlattSynth THEN
  110. Vowelin f1=0 f2=1500 -200 200 f3=0 80
  111. FMT(klatt/n)
  112. ENDIF
  113. NextVowelStarts
  114. VowelStart(n/n@)
  115. VowelStart(n/na)
  116. VowelStart(n/ne)
  117. VowelStart(n/ni)
  118. VowelStart(n/no)
  119. VowelStart(n/nu)
  120. EndSwitch
  121. IF nextPh(f) OR nextPh(v) THEN
  122. ChangePhoneme(M)
  123. ELIF nextPh(k) OR nextPh(g) THEN
  124. ChangePhoneme(N)
  125. ELIF nextPh(p) OR nextPh(b) OR nextPh(m) THEN
  126. ChangePhoneme(m)
  127. ENDIF
  128. IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
  129. FMT(n/nj)
  130. ELIF prevPh(isPause) OR prevPh(n) THEN
  131. FMT(n/_n)
  132. ELIF nextPh(isNotVowel) THEN
  133. FMT(n/n_)
  134. ENDIF
  135. endphoneme
  136. // R
  137. //=====================
  138. phoneme R
  139. liquid trl
  140. lengthmod 6
  141. ipa r
  142. IF thisPh(isWordEnd) THEN
  143. ChangePhoneme(**)
  144. ENDIF
  145. Vowelin f1=0 f2=1600 -300 300 f3=-200 80
  146. Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk
  147. FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65)
  148. endphoneme
  149. // affricates
  150. //================
  151. phoneme Z
  152. vcd pla frc sib
  153. voicingswitch S
  154. lengthmod 6
  155. Vowelin f1=0 f2=2000 0 300 f3=-200 80
  156. Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk
  157. ChangePhoneme(dZ)
  158. endphoneme
  159. phoneme S
  160. vls pla frc sib
  161. voicingswitch Z
  162. lengthmod 3
  163. Vowelin f1=0 f2=2100 100 300 f3=-100 80
  164. Vowelout f1=0 f2=2100 100 300 f3=-100 80
  165. IF prevPh(i) OR prevPh(j) THEN
  166. IF thisPh(isWordEnd) AND nextPh(isVoiced) THEN
  167. ChangePhoneme(Z)
  168. ENDIF
  169. ELSE
  170. ChangePhoneme(tS)
  171. ENDIF
  172. WAV(ufric/sh)
  173. endphoneme
  174. phoneme v
  175. vcd lbd frc
  176. voicingswitch f
  177. lengthmod 6
  178. Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
  179. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
  180. IF KlattSynth THEN
  181. Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
  182. IF nextPh(isPause2) THEN
  183. FMT(klatt/v_) addWav(vocw/v)
  184. ENDIF
  185. FMT(klatt/v) addWav(vocw/v, 150)
  186. ENDIF
  187. IF nextPh(isPause2) THEN
  188. FMT(voc/v_) addWav(vocw/v)
  189. ENDIF
  190. IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
  191. length 70
  192. ENDIF
  193. FMT(voc/v) addWav(vocw/v)
  194. endphoneme
  195. // Occlusive stops
  196. //=================
  197. phoneme b
  198. vcd blb stp
  199. IF thisPh(isWordEnd) THEN
  200. IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
  201. ELIF prevPh(m) THEN
  202. ELSE
  203. ChangePhoneme(p)
  204. ENDIF
  205. ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
  206. ELIF nextPh(isVoiced) THEN
  207. IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
  208. IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN
  209. IF prevPh(**) OR prevPh(R) THEN //***"embarbussa"***
  210. ELSE
  211. ChangePhoneme(B)
  212. ENDIF
  213. ENDIF
  214. ENDIF
  215. ELSE
  216. ChangePhoneme(p)
  217. ENDIF
  218. CALL base1/b
  219. endphoneme
  220. phoneme g
  221. vcd vel stp
  222. lengthmod 5
  223. voicingswitch k
  224. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  225. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  226. IF thisPh(isWordEnd) THEN
  227. IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
  228. ELSE
  229. ChangePhoneme(k)
  230. ENDIF
  231. ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
  232. ELIF nextPh(isVoiced) THEN
  233. IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
  234. IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN
  235. ChangePhoneme(Q)
  236. ENDIF
  237. ELIF nextPh(n) THEN
  238. ChangePhoneme(N)
  239. ENDIF
  240. ELSE
  241. ChangePhoneme(k)
  242. ENDIF
  243. IF PreVoicing THEN
  244. FMT(g/xg)
  245. ENDIF
  246. IF nextPh(isPause2) THEN
  247. FMT(g/g_) addWav(x/g_)
  248. ENDIF
  249. FMT(g/g) addWav(x/g2)
  250. endphoneme