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

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