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

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