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 5.3KB

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