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.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  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. length 100
  157. IF nextPh(*) THEN
  158. length 110
  159. ENDIF
  160. FMT(vowel/yy_4)
  161. endphoneme
  162. phoneme Y:
  163. vwl starttype #@ endtype #@
  164. length 220
  165. FMT(vwl_de/y#)
  166. endphoneme
  167. phoneme W
  168. vwl starttype #@ endtype #@
  169. length 150
  170. IF nextPh(*) THEN
  171. length 160
  172. ENDIF
  173. FMT(vowel/oe)
  174. endphoneme
  175. // CONSONANTS
  176. //===========
  177. phoneme t
  178. vls alv stp
  179. voicingswitch d
  180. lengthmod 2
  181. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  182. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  183. IF nextPh(isPause2) THEN
  184. WAV(ustop/t_)
  185. ELIF nextPh(r) THEN
  186. WAV(ustop/t_)
  187. ELIF nextPh(@-) THEN
  188. WAV(ustop/t_dnt, 50)
  189. ENDIF
  190. WAV(ustop/t, 90)
  191. endphoneme
  192. phoneme ts
  193. import_phoneme consonants/ts
  194. endphoneme
  195. phoneme pF
  196. vls bld afr
  197. ipa pf
  198. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  199. lengthmod 2
  200. WAV(ufric/f) // could replace this with a [pf] wav file
  201. endphoneme
  202. phoneme g# // for "ig" -> [IC] or [Ig]
  203. vls pal frc
  204. lengthmod 3
  205. IF nextPhW(isVoiced) THEN
  206. ChangePhoneme(g)
  207. ELSE
  208. ChangePhoneme(C)
  209. ENDIF
  210. endphoneme
  211. phoneme l/ // used for [l] when not before a vowel
  212. liquid
  213. lengthmod 7
  214. IF nextPh(isVowel) THEN
  215. ChangePhoneme(l)
  216. ENDIF
  217. PrevVowelEndings
  218. VowelEnding(l/L1_@L, -60)
  219. VowelEnding(l/L1_aL, -40)
  220. VowelEnding(l/L1_eL, -30)
  221. VowelEnding(l/L1_iL, -30)
  222. VowelEnding(l/L1_oL, -40)
  223. VowelEnding(l/L1_uL, -40)
  224. EndSwitch
  225. FMT(l/l_3)
  226. endphoneme
  227. phoneme j
  228. liquid pal
  229. lengthmod 7
  230. IF nextPh(isVowel) THEN
  231. NextVowelStarts
  232. VowelStart(j/j@)
  233. VowelStart(j/ja)
  234. VowelStart(j/je)
  235. VowelStart(j/ji)
  236. VowelStart(j/jo)
  237. VowelStart(j/ju)
  238. EndSwitch
  239. VowelEnding(j/xj, -30)
  240. IF prevPh(isPause) THEN
  241. FMT(j/_j_short) // difference from base1/j
  242. ENDIF
  243. ELSE
  244. // no vowel follows
  245. Vowelout len=70
  246. FMT(j/j_)
  247. ENDIF
  248. endphoneme
  249. phoneme r // note, following consonant must be 'ustop/t_' not 'ustop/tr' etc.
  250. liquid alv rhotic
  251. lengthmod 6
  252. IF prevPhW(@-) THEN
  253. ELSE
  254. IF nextPhW(isVowel) THEN
  255. IF prevPhW(isVowel) THEN
  256. ChangePhoneme(R)
  257. ELSE
  258. IF prevPhW(t) THEN
  259. PauseBefore 30
  260. ELSEIF prevPhW(d) OR prevPhW(b) OR prevPhW(g) OR prevPhW(k) OR prevPhW(p) THEN
  261. PauseBefore 15
  262. ELSE
  263. FMT(r3/r_, 40) addWav(r3/rx, 150)
  264. ENDIF
  265. ENDIF
  266. ENDIF
  267. ENDIF
  268. IF prevPh(isFlag1) THEN
  269. ChangePhoneme(NULL) // 'r' is already included in the previous vowel
  270. ENDIF
  271. CALL base1/*
  272. endphoneme
  273. phoneme iR // TEST "vier" = [f'iR] not successful
  274. vwl starttype #i endtype #@
  275. ipa i?
  276. flag1
  277. length 240
  278. FMT(vdiph2/i@_3)
  279. endphoneme
  280. phoneme UR
  281. vwl starttype #u endtype #@
  282. ipa ??
  283. flag1
  284. length 180
  285. FMT(vwl_de/uu_@)
  286. endphoneme
  287. phoneme oU // for English words
  288. import_phoneme en-us/oU
  289. endphoneme
  290. phoneme A~
  291. vwl starttype #a endtype #a
  292. length 260
  293. FMT(vnasal/aa_n4)
  294. endphoneme
  295. phoneme W~
  296. vwl starttype #@ endtype #@
  297. length 200
  298. FMT(vnasal/W_n)
  299. endphoneme
  300. phoneme l2 // as [l] but devoice previous phoneme
  301. liquid lengthmod 7
  302. ChangePhoneme (l)
  303. endphoneme
  304. phoneme b
  305. vcd blb stp
  306. voicingswitch p
  307. IF nextPh(l2) THEN
  308. ChangePhoneme(p)
  309. ENDIF
  310. CALL base1/b
  311. endphoneme
  312. phoneme d
  313. vcd alv stp
  314. voicingswitch t
  315. IF nextPh(l2) THEN
  316. ChangePhoneme(t)
  317. ENDIF
  318. lengthmod 5
  319. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  320. Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk
  321. IF PreVoicing THEN
  322. FMT(d/xd)
  323. ENDIF
  324. IF nextPh(isPause2) THEN
  325. FMT(d/d_) addWav(x/d_)
  326. ELIF nextPh(r) THEN
  327. FMT(d/dr) addWav(x/d)
  328. ENDIF
  329. FMT(d/d) addWav(x/d)
  330. endphoneme
  331. phoneme g
  332. vcd vel stp
  333. voicingswitch k
  334. IF nextPh(l2) THEN
  335. ChangePhoneme(k)
  336. ENDIF
  337. CALL base1/g
  338. endphoneme
  339. phoneme k
  340. vls vel stp
  341. voicingswitch g
  342. lengthmod 2
  343. Vowelin f1=0 f2=2300 200 300 f3=-200 80
  344. Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20
  345. IF KlattSynth THEN
  346. Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20
  347. ENDIF
  348. IF nextPh(isPause2) THEN
  349. WAV(ustop/k_)
  350. ELIF nextPh(r) THEN
  351. WAV(ustop/k, 70)
  352. ELIF nextPh(R) OR nextPh(R2) THEN
  353. WAV(ustop/k_)
  354. ELIF nextPh(i:) OR nextPh(j) OR nextPh(;) THEN
  355. WAV(ustop/ki)
  356. ELIF nextPh(l) THEN
  357. WAV(ustop/kl)
  358. ELIF nextPh(@-) THEN
  359. WAV(ustop/k, 70)
  360. ENDIF
  361. WAV(ustop/k)
  362. endphoneme
  363. phoneme x
  364. vls vel frc
  365. voicingswitch Q
  366. lengthmod 3
  367. Vowelin f1=0 f2=2300 200 400 f3=-100 80
  368. Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
  369. IF nextPh(isPause) THEN
  370. WAV(ufric/x2, 60)
  371. ENDIF
  372. WAV(ufric/x_hr, 20)
  373. endphoneme
  374. phoneme O~ // saison, Pardon, Fond
  375. vwl starttype #o endtype #o
  376. length 190
  377. FMT(vnasal/o_n5)
  378. endphoneme