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_german 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. //=========================================================
  2. // German
  3. //=========================================================
  4. phoneme @ // Schwa
  5. vowel starttype #@ endtype #@
  6. unstressed
  7. length 125
  8. IF nextPh(r/) THEN
  9. FMT(vowel/a#_3) // replace [@r] by [3]
  10. ENDIF
  11. FMT(vowel/@_3)
  12. endphoneme
  13. phoneme 3 // open Schwa
  14. vowel starttype #@ endtype #@
  15. unstressed
  16. length 125
  17. FMT(vowel/a#_3)
  18. endphoneme
  19. phoneme a
  20. vowel starttype #a endtype #a
  21. length 110
  22. IF nextPh(*) THEN
  23. length 150
  24. ENDIF
  25. FMT(vowel/a)
  26. endphoneme
  27. phoneme E
  28. vowel starttype #e endtype #e
  29. length 120
  30. IF nextPh(*) THEN
  31. length 160
  32. ENDIF
  33. FMT(vowel/e_mid2)
  34. endphoneme
  35. phoneme E2 // as[E] but reduces to @ if unstressed
  36. vowel starttype #e endtype #e
  37. length 120
  38. ChangeIfDiminished(@)
  39. IF nextPh(*) THEN
  40. length 160
  41. ENDIF
  42. FMT(vowel/e_mid2)
  43. endphoneme
  44. phoneme I
  45. vowel starttype #i endtype #i
  46. length 120
  47. IF nextPh(*) THEN
  48. length 160
  49. ENDIF
  50. IfNextVowelAppend(;)
  51. FMT(vowel/ii)
  52. endphoneme
  53. phoneme I:
  54. vowel starttype #i endtype #i
  55. length 190
  56. FMT(vowel/ii)
  57. endphoneme
  58. phoneme O
  59. vowel starttype #o endtype #o
  60. length 120
  61. IF nextPh(*) THEN
  62. length 160
  63. ENDIF
  64. FMT(vowel/oo)
  65. endphoneme
  66. phoneme U
  67. vowel starttype #u endtype #u
  68. length 140
  69. IF nextPh(*) THEN
  70. length 180
  71. ENDIF
  72. FMT(vowel/uu_2)
  73. endphoneme
  74. phoneme A:
  75. vowel starttype #a endtype #a
  76. length 250
  77. FMT(vowel/aa_6)
  78. endphoneme
  79. phoneme A // reduces to [a] if not stressed
  80. vowel starttype #a endtype #a
  81. length 240
  82. ChangeIfNotStressed(a)
  83. FMT(vowel/aa_6)
  84. endphoneme
  85. phoneme i:
  86. vowel starttype #i endtype #i
  87. length 180
  88. IF nextPh(*) THEN
  89. length 220
  90. ENDIF
  91. IF prevPh(w) THEN
  92. VowelStart(w/wi2)
  93. ENDIF
  94. FMT(vowel/i_2)
  95. endphoneme
  96. phoneme i2
  97. vowel starttype #i endtype #i
  98. length 180
  99. IF nextPh(*) THEN
  100. length 220
  101. ENDIF
  102. ChangeIfNotStressed(I)
  103. IF prevPh(w) THEN
  104. VowelStart(w/wi2)
  105. ENDIF
  106. FMT(vowel/i_2)
  107. endphoneme
  108. phoneme u:
  109. vowel starttype #u endtype #u
  110. length 190
  111. IF nextPh(*) THEN
  112. length 230
  113. ENDIF
  114. FMT(vowel/u)
  115. endphoneme
  116. phoneme aU
  117. vowel starttype #a endtype #u
  118. length 220
  119. FMT(vdiph/aau_2)
  120. endphoneme
  121. phoneme aI
  122. vowel starttype #a endtype #i
  123. length 210
  124. FMT(vdiph/ai_5)
  125. endphoneme
  126. phoneme EI
  127. vowel starttype #e endtype #i
  128. length 210
  129. FMT(vdiph/eei)
  130. endphoneme
  131. phoneme OY
  132. vowel starttype #o endtype #i
  133. length 220
  134. FMT(vdiph/oi)
  135. endphoneme
  136. phoneme E:
  137. vowel starttype #e endtype #e
  138. length 190
  139. FMT(vowel/e_mid2)
  140. endphoneme
  141. phoneme e:
  142. vowel starttype #e endtype #e
  143. length 190
  144. IF nextPh(*) THEN
  145. length 230
  146. ENDIF
  147. FMT(vowel/e_2)
  148. endphoneme
  149. phoneme o:
  150. vowel starttype #o endtype #o
  151. length 200
  152. IF nextPh(*) THEN
  153. length 240
  154. ENDIF
  155. FMT(vowel/o)
  156. endphoneme
  157. phoneme y:
  158. vowel starttype #u endtype #u
  159. length 200
  160. IF nextPh(*) THEN
  161. length 240
  162. ENDIF
  163. FMT(vowel/y)
  164. endphoneme
  165. phoneme y
  166. vowel starttype #u endtype #u
  167. length 130
  168. IF nextPh(*) THEN
  169. length 170
  170. ENDIF
  171. FMT(vowel/yy_4)
  172. endphoneme
  173. phoneme Y:
  174. vowel starttype #@ endtype #@
  175. length 220
  176. IF nextPh(*) THEN
  177. length 260
  178. ENDIF
  179. FMT(vowel/y#)
  180. endphoneme
  181. phoneme W
  182. vowel starttype #@ endtype #@
  183. length 160
  184. IF nextPh(*) THEN
  185. length 200
  186. ENDIF
  187. FMT(vowel/oe)
  188. endphoneme
  189. // CONSONANTS
  190. //===========
  191. phoneme ts
  192. import_phoneme consonants/ts
  193. endphoneme
  194. phoneme pF
  195. vls blb afr
  196. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  197. lengthmod 2
  198. WAV(ufric/f) // could replace this with a [pf] wav file
  199. endphoneme
  200. phoneme C2 // for "ig" -> [IC] or [Ig]
  201. vls pal frc palatal
  202. lengthmod 3
  203. IF nextPh(isVowel) THEN
  204. ChangePhoneme(g)
  205. ENDIF
  206. CALL C
  207. endphoneme
  208. phoneme l/ // used for [l] when not before a vowel
  209. liquid
  210. lengthmod 7
  211. IF nextPh(isVowel) THEN
  212. ChangePhoneme(l)
  213. ENDIF
  214. PrevVowelEndings
  215. VowelEnding(l/L1_@L, -60)
  216. VowelEnding(l/L1_aL, -40)
  217. VowelEnding(l/L1_eL, -30)
  218. VowelEnding(l/L1_iL, -30)
  219. VowelEnding(l/L1_oL, -40)
  220. VowelEnding(l/L1_uL, -40)
  221. EndSwitch
  222. FMT(l/l_3)
  223. endphoneme
  224. phoneme j
  225. liquid palatal
  226. lengthmod 7
  227. IF nextPh(isVowel) THEN
  228. NextVowelStarts
  229. VowelStart(j/j@)
  230. VowelStart(j/ja)
  231. VowelStart(j/je)
  232. VowelStart(j/ji)
  233. VowelStart(j/jo)
  234. VowelStart(j/ju)
  235. EndSwitch
  236. VowelEnding(j/xj, -30)
  237. IF prevPh(isPause) THEN
  238. FMT(j/_j_short) // difference from base/j
  239. ENDIF
  240. ELSE
  241. // no vowel follows
  242. Vowelout len=70
  243. FMT(j/j_)
  244. ENDIF
  245. endphoneme
  246. // This is actually the ENGLISH "rolling r". For german, we now use * in the dictionary,
  247. // so this phoneme will only be used in english words in german texts.
  248. phoneme r
  249. liquid rhotic
  250. trill
  251. lengthmod 7
  252. CALL base/r
  253. endphoneme