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

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