ph_german 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. //=========================================================
  2. // German
  3. //=========================================================
  4. phoneme @ // Schwa
  5. vwl 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 // open Schwa+r
  17. vwl starttype #@ endtype #@
  18. unstressed flag1
  19. length 160
  20. IF thisPh(isFinalVowel) THEN
  21. length 210
  22. ENDIF
  23. FMT(vowel/a#_3) // in eSpeak 1.44, this used vowel/V_3 at end-of-word
  24. endphoneme
  25. phoneme a
  26. vwl starttype #a endtype #a
  27. length 110
  28. IF nextPh(isRhotic) THEN
  29. length 125
  30. ENDIF
  31. FMT(vowel/a)
  32. endphoneme
  33. phoneme E
  34. vwl starttype #e endtype #e
  35. length 120
  36. IF nextPh(*) THEN
  37. length 135
  38. ENDIF
  39. FMT(vowel/e_mid2)
  40. endphoneme
  41. phoneme E2 // as[E] but reduces to @ if unstressed
  42. vwl starttype #e endtype #e
  43. length 120
  44. ChangeIfDiminished(@)
  45. IF nextPh(*) THEN
  46. length 135
  47. ENDIF
  48. FMT(vowel/e_mid2)
  49. endphoneme
  50. phoneme I
  51. vwl starttype #i endtype #i
  52. length 120
  53. IF nextPh(*) THEN
  54. length 135
  55. ENDIF
  56. IfNextVowelAppend(;)
  57. FMT(vowel/ii)
  58. endphoneme
  59. phoneme I:
  60. vwl starttype #i endtype #i
  61. length 190
  62. FMT(vowel/ii)
  63. endphoneme
  64. phoneme O
  65. vwl starttype #o endtype #o
  66. length 120
  67. IF nextPh(*) THEN
  68. length 135
  69. ENDIF
  70. FMT(vowel/oo)
  71. endphoneme
  72. phoneme U
  73. vwl starttype #u endtype #u
  74. length 120
  75. IF nextPh(*) THEN
  76. length 135
  77. ENDIF
  78. IF nextPh(r) AND next2Ph(isNotVowel) THEN
  79. ChangePhoneme(UR)
  80. ENDIF
  81. FMT(vowel/uu_2)
  82. endphoneme
  83. phoneme A:
  84. vwl starttype #a endtype #a
  85. length 250
  86. FMT(vowel/aa_6)
  87. endphoneme
  88. phoneme A // reduces to [a] if not stressed
  89. vwl starttype #a endtype #a
  90. length 250
  91. ChangeIfUnstressed(a)
  92. FMT(vowel/aa_6)
  93. endphoneme
  94. phoneme i:
  95. vwl starttype #i endtype #i
  96. length 180
  97. IF prevPh(w) THEN
  98. VowelStart(w/wi2)
  99. ENDIF
  100. // IF nextPh(r) AND next2Ph(isNotVowel) THEN
  101. // ChangePhoneme(iR)
  102. // ENDIF
  103. FMT(vowel/i_2)
  104. endphoneme
  105. phoneme i2
  106. vwl starttype #i endtype #i
  107. length 180
  108. ChangeIfNotStressed(I)
  109. IF prevPh(w) THEN
  110. VowelStart(w/wi2)
  111. ENDIF
  112. FMT(vowel/i_2)
  113. endphoneme
  114. phoneme u:
  115. vwl starttype #u endtype #u
  116. length 190
  117. FMT(vowel/u)
  118. endphoneme
  119. phoneme aU
  120. vwl starttype #a endtype #u
  121. length 220
  122. FMT(vdiph/aau_6)
  123. endphoneme
  124. phoneme aI
  125. vwl starttype #a endtype #i
  126. length 210
  127. FMT(vdiph/ai_5)
  128. endphoneme
  129. phoneme EI
  130. vwl starttype #e endtype #i
  131. length 210
  132. FMT(vdiph/eei)
  133. endphoneme
  134. phoneme OY
  135. vwl starttype #o endtype #i
  136. length 220
  137. FMT(vdiph/oi)
  138. endphoneme
  139. phoneme E:
  140. vwl starttype #e endtype #e
  141. length 200
  142. FMT(vowel/e_8)
  143. endphoneme
  144. phoneme e:
  145. vwl starttype #e endtype #e
  146. length 200
  147. FMT(vowel/e_2)
  148. endphoneme
  149. phoneme o:
  150. vwl starttype #o endtype #o
  151. length 210
  152. FMT(vowel/o)
  153. endphoneme
  154. phoneme y:
  155. vwl starttype #u endtype #u
  156. length 200
  157. FMT(vowel/y)
  158. endphoneme
  159. phoneme y
  160. vwl starttype #u endtype #u
  161. ipa ʏ
  162. length 110
  163. IF nextPh(*) THEN
  164. length 115
  165. ENDIF
  166. FMT(vowel/yy_4)
  167. endphoneme
  168. phoneme Y:
  169. vwl starttype #@ endtype #@
  170. length 180
  171. FMT(vowel/y#)
  172. endphoneme
  173. phoneme W
  174. vwl starttype #@ endtype #@
  175. length 150
  176. IF nextPh(*) THEN
  177. length 160
  178. ENDIF
  179. FMT(vowel/oe)
  180. endphoneme
  181. // CONSONANTS
  182. //===========
  183. phoneme t
  184. vls alv stp
  185. voicingswitch d
  186. lengthmod 2
  187. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  188. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  189. IF nextPh(isPause2) THEN
  190. WAV(ustop/t_)
  191. ELIF nextPh(r) THEN
  192. WAV(ustop/t_)
  193. ELIF nextPh(@-) THEN
  194. WAV(ustop/t_dnt, 50)
  195. ENDIF
  196. WAV(ustop/t, 90)
  197. endphoneme
  198. phoneme ts
  199. import_phoneme consonants/ts
  200. endphoneme
  201. phoneme pF
  202. vls bld afr
  203. ipa pf
  204. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  205. lengthmod 2
  206. WAV(ufric/f) // could replace this with a [pf] wav file
  207. endphoneme
  208. phoneme g# // for "ig" -> [IC] or [Ig]
  209. vls pal frc
  210. lengthmod 3
  211. IF nextPhW(isVoiced) THEN
  212. ChangePhoneme(g)
  213. ELSE
  214. ChangePhoneme(C)
  215. ENDIF
  216. endphoneme
  217. phoneme l/ // used for [l] when not before a vowel
  218. liquid
  219. lengthmod 7
  220. IF nextPh(isVowel) THEN
  221. ChangePhoneme(l)
  222. ENDIF
  223. PrevVowelEndings
  224. VowelEnding(l/L1_@L, -60)
  225. VowelEnding(l/L1_aL, -40)
  226. VowelEnding(l/L1_eL, -30)
  227. VowelEnding(l/L1_iL, -30)
  228. VowelEnding(l/L1_oL, -40)
  229. VowelEnding(l/L1_uL, -40)
  230. EndSwitch
  231. FMT(l/l_3)
  232. endphoneme
  233. phoneme j
  234. liquid pal
  235. lengthmod 7
  236. IF nextPh(isVowel) THEN
  237. NextVowelStarts
  238. VowelStart(j/j@)
  239. VowelStart(j/ja)
  240. VowelStart(j/je)
  241. VowelStart(j/ji)
  242. VowelStart(j/jo)
  243. VowelStart(j/ju)
  244. EndSwitch
  245. VowelEnding(j/xj, -30)
  246. IF prevPh(isPause) THEN
  247. FMT(j/_j_short) // difference from base1/j
  248. ENDIF
  249. ELSE
  250. // no vowel follows
  251. Vowelout len=70
  252. FMT(j/j_)
  253. ENDIF
  254. endphoneme
  255. phoneme r // note, following consonant must be 'ustop/t_' not 'ustop/tr' etc.
  256. liquid alv rhotic
  257. lengthmod 6
  258. IF prevPhW(@-) THEN
  259. ELSE
  260. IF nextPhW(isVowel) THEN
  261. IF prevPhW(isVowel) THEN
  262. ChangePhoneme(R)
  263. ELSE
  264. IF prevPhW(t) THEN
  265. PauseBefore 30
  266. ELSEIF prevPhW(d) OR prevPhW(b) OR prevPhW(g) OR prevPhW(k) OR prevPhW(p) THEN
  267. PauseBefore 15
  268. ELSE
  269. InsertPhoneme(@-)
  270. ENDIF
  271. ENDIF
  272. ENDIF
  273. ENDIF
  274. IF prevPh(isFlag1) THEN
  275. ChangePhoneme(NULL) // 'r' is already included in the previous vowel
  276. ENDIF
  277. CALL base1/*
  278. endphoneme
  279. phoneme iR // TEST "vier" = [f'iR] not successful
  280. vwl starttype #i endtype #@
  281. ipa iɐ
  282. flag1
  283. length 240
  284. FMT(vdiph2/i@_3)
  285. endphoneme
  286. phoneme UR
  287. vwl starttype #u endtype #@
  288. ipa ʊɐ
  289. flag1
  290. length 180
  291. FMT(vwl_de/uu_@)
  292. endphoneme
  293. phoneme oU // for English words
  294. import_phoneme en-us/oU
  295. endphoneme
  296. phoneme A~
  297. vwl starttype #a endtype #a
  298. length 260
  299. FMT(vnasal/aa_n4)
  300. endphoneme
  301. phoneme l2 // as [l] but devoice previous phoneme
  302. liquid lengthmod 7
  303. ChangePhoneme (l)
  304. endphoneme
  305. phoneme b
  306. vcd alv frc sib
  307. voicingswitch p
  308. IF nextPh(l2) THEN
  309. ChangePhoneme(p)
  310. ENDIF
  311. CALL base1/b
  312. endphoneme
  313. phoneme d
  314. vcd alv stp
  315. voicingswitch t
  316. IF nextPh(l2) THEN
  317. ChangePhoneme(t)
  318. ENDIF
  319. lengthmod 5
  320. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  321. Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk
  322. IF PreVoicing THEN
  323. FMT(d/xd)
  324. ENDIF
  325. IF nextPh(isPause2) THEN
  326. FMT(d/d_) addWav(x/d_)
  327. ELIF nextPh(r) THEN
  328. FMT(d/dr) addWav(x/d)
  329. ENDIF
  330. FMT(d/d) addWav(x/d)
  331. endphoneme
  332. phoneme g
  333. vcd vel stp
  334. voicingswitch k
  335. IF nextPh(l2) THEN
  336. ChangePhoneme(k)
  337. ENDIF
  338. CALL base1/g
  339. endphoneme