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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. //=========================================================
  2. // German
  3. //=========================================================
  4. phoneme @ // Schwa
  5. vowel 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. vowel starttype #@ endtype #@
  18. unstressed flag1
  19. length 160
  20. FMT(vowel/a#_3) // in eSpeak 1.44, this used vowel/V_3 at end-of-word
  21. endphoneme
  22. phoneme 3: // open Schwa+r
  23. vowel starttype #@ endtype #@
  24. unstressed flag1
  25. length 210
  26. FMT(vowel/a#_3)
  27. endphoneme
  28. phoneme a
  29. vowel starttype #a endtype #a
  30. length 110
  31. IF nextPh(isRhotic) THEN
  32. length 125
  33. ENDIF
  34. FMT(vowel/a)
  35. endphoneme
  36. phoneme E
  37. vowel starttype #e endtype #e
  38. length 120
  39. IF nextPh(*) THEN
  40. length 135
  41. ENDIF
  42. FMT(vowel/e_mid2)
  43. endphoneme
  44. phoneme E2 // as[E] but reduces to @ if unstressed
  45. vowel starttype #e endtype #e
  46. length 120
  47. ChangeIfDiminished(@)
  48. IF nextPh(*) THEN
  49. length 135
  50. ENDIF
  51. FMT(vowel/e_mid2)
  52. endphoneme
  53. phoneme I
  54. vowel starttype #i endtype #i
  55. length 120
  56. IF nextPh(*) THEN
  57. length 135
  58. ENDIF
  59. IfNextVowelAppend(;)
  60. FMT(vowel/ii)
  61. endphoneme
  62. phoneme I:
  63. vowel starttype #i endtype #i
  64. length 190
  65. FMT(vowel/ii)
  66. endphoneme
  67. phoneme O
  68. vowel starttype #o endtype #o
  69. length 120
  70. IF nextPh(*) THEN
  71. length 135
  72. ENDIF
  73. FMT(vowel/oo)
  74. endphoneme
  75. phoneme U
  76. vowel starttype #u endtype #u
  77. length 120
  78. IF nextPh(*) THEN
  79. length 135
  80. ENDIF
  81. IF nextPh(r) THEN
  82. IF next2Ph(isVowel) THEN
  83. ELSE
  84. ChangePhoneme(UR)
  85. ENDIF
  86. ENDIF
  87. FMT(vowel/uu_2)
  88. endphoneme
  89. phoneme A:
  90. vowel starttype #a endtype #a
  91. length 250
  92. FMT(vowel/aa_6)
  93. endphoneme
  94. phoneme A // reduces to [a] if not stressed
  95. vowel starttype #a endtype #a
  96. length 250
  97. ChangeIfUnstressed(a)
  98. FMT(vowel/aa_6)
  99. endphoneme
  100. phoneme i:
  101. vowel starttype #i endtype #i
  102. length 180
  103. IF prevPh(w) THEN
  104. VowelStart(w/wi2)
  105. ENDIF
  106. FMT(vowel/i_2)
  107. endphoneme
  108. phoneme i2
  109. vowel starttype #i endtype #i
  110. length 180
  111. ChangeIfNotStressed(I)
  112. IF prevPh(w) THEN
  113. VowelStart(w/wi2)
  114. ENDIF
  115. FMT(vowel/i_2)
  116. endphoneme
  117. phoneme u:
  118. vowel starttype #u endtype #u
  119. length 190
  120. FMT(vowel/u)
  121. endphoneme
  122. phoneme aU
  123. vowel starttype #a endtype #u
  124. length 220
  125. FMT(vdiph/aau_6)
  126. endphoneme
  127. phoneme aI
  128. vowel starttype #a endtype #i
  129. length 210
  130. FMT(vdiph/ai_5)
  131. endphoneme
  132. phoneme EI
  133. vowel starttype #e endtype #i
  134. length 210
  135. FMT(vdiph/eei)
  136. endphoneme
  137. phoneme OY
  138. vowel starttype #o endtype #i
  139. length 220
  140. FMT(vdiph/oi)
  141. endphoneme
  142. phoneme E:
  143. vowel starttype #e endtype #e
  144. length 200
  145. FMT(vowel/e_8)
  146. endphoneme
  147. phoneme e:
  148. vowel starttype #e endtype #e
  149. length 200
  150. FMT(vowel/e_2)
  151. endphoneme
  152. phoneme o:
  153. vowel starttype #o endtype #o
  154. length 210
  155. FMT(vowel/o)
  156. endphoneme
  157. phoneme y:
  158. vowel starttype #u endtype #u
  159. length 200
  160. FMT(vowel/y)
  161. endphoneme
  162. phoneme y
  163. vowel starttype #u endtype #u
  164. ipa ʏ
  165. length 110
  166. IF nextPh(*) THEN
  167. length 115
  168. ENDIF
  169. FMT(vowel/yy_4)
  170. endphoneme
  171. phoneme Y:
  172. vowel starttype #@ endtype #@
  173. length 220
  174. FMT(vowel/y#)
  175. endphoneme
  176. phoneme W
  177. vowel starttype #@ endtype #@
  178. length 150
  179. IF nextPh(*) THEN
  180. length 160
  181. ENDIF
  182. FMT(vowel/oe)
  183. endphoneme
  184. // CONSONANTS
  185. //===========
  186. phoneme ts
  187. import_phoneme consonants/ts
  188. endphoneme
  189. phoneme pF
  190. vls blb afr
  191. ipa pf
  192. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  193. lengthmod 2
  194. WAV(ufric/f) // could replace this with a [pf] wav file
  195. endphoneme
  196. phoneme g# // for "ig" -> [IC] or [Ig]
  197. vls pal frc palatal
  198. lengthmod 3
  199. IF nextPhW(isVoiced) THEN
  200. ChangePhoneme(g)
  201. ELSE
  202. ChangePhoneme(C)
  203. ENDIF
  204. endphoneme
  205. phoneme l/ // used for [l] when not before a vowel
  206. liquid
  207. lengthmod 7
  208. IF nextPh(isVowel) THEN
  209. ChangePhoneme(l)
  210. ENDIF
  211. PrevVowelEndings
  212. VowelEnding(l/L1_@L, -60)
  213. VowelEnding(l/L1_aL, -40)
  214. VowelEnding(l/L1_eL, -30)
  215. VowelEnding(l/L1_iL, -30)
  216. VowelEnding(l/L1_oL, -40)
  217. VowelEnding(l/L1_uL, -40)
  218. EndSwitch
  219. FMT(l/l_3)
  220. endphoneme
  221. phoneme j
  222. liquid palatal
  223. lengthmod 7
  224. IF nextPh(isVowel) THEN
  225. NextVowelStarts
  226. VowelStart(j/j@)
  227. VowelStart(j/ja)
  228. VowelStart(j/je)
  229. VowelStart(j/ji)
  230. VowelStart(j/jo)
  231. VowelStart(j/ju)
  232. EndSwitch
  233. VowelEnding(j/xj, -30)
  234. IF prevPh(isPause) THEN
  235. FMT(j/_j_short) // difference from base/j
  236. ENDIF
  237. ELSE
  238. // no vowel follows
  239. Vowelout len=70
  240. FMT(j/j_)
  241. ENDIF
  242. endphoneme
  243. phoneme r
  244. vcd alv flp rhotic
  245. lengthmod 6
  246. IF prevPhW(@-) THEN
  247. ELSE
  248. IF nextPhW(isVowel) THEN
  249. IF prevPhW(isVowel) THEN
  250. ChangePhoneme(R)
  251. ELSE
  252. IF prevPhW(isUStop) THEN
  253. ChangePhoneme(R)
  254. ELSE
  255. InsertPhoneme(@-)
  256. ENDIF
  257. ENDIF
  258. ENDIF
  259. ENDIF
  260. IF prevPh(isFlag1) THEN
  261. ChangePhoneme(NULL) // 'r' is already included in the previous vowel
  262. ENDIF
  263. CALL base/*
  264. endphoneme
  265. // This version of [r] was used in eSpeak 1.44, but received complaints
  266. phoneme r2 // uvular trill or fricative
  267. vcd uvl frc
  268. ipa ʀ
  269. lengthmod 6
  270. length 110
  271. IF nextPhW(isVowel) THEN
  272. FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50)
  273. ELSE
  274. IF prevPh(isFlag1) THEN
  275. ChangePhoneme(NULL) // 'r' is already included in the previous vowel
  276. ELSE
  277. ChangePhoneme(V#)
  278. ENDIF
  279. ENDIF
  280. endphoneme
  281. phoneme V# // used for 'r' after a vowel (to create a diphthong)
  282. liquid
  283. lengthmod 7
  284. IF nextPhW(isVowel) THEN
  285. ChangePhoneme(r)
  286. ENDIF
  287. ipa ɐ
  288. IF prevPh(#a) OR prevPh(E) THEN
  289. FMT(r/V_2_)
  290. ENDIF
  291. IF prevPh(#u) THEN
  292. FMT(r/@_)
  293. ENDIF
  294. FMT(r/V_)
  295. endphoneme
  296. phoneme UR
  297. vowel starttype #u endtype #@
  298. ipa ʊɐ
  299. flag1
  300. length 180
  301. FMT(vwl_de/uu_@)
  302. endphoneme
  303. phoneme oU // for English words
  304. import_phoneme en-us/oU
  305. endphoneme
  306. phoneme A~
  307. vowel starttype #a endtype #a
  308. length 260
  309. FMT(vnasal/aa_n4)
  310. endphoneme
  311. // translate from English to German phonemes
  312. equivalents NULL // disable this table
  313. 0 O
  314. 3 3
  315. 3: W :
  316. @ @
  317. @- @-
  318. @2 @
  319. @5 @
  320. @L U l
  321. a a
  322. a# a
  323. A: A:
  324. A@ A: r
  325. aa a
  326. aI aI
  327. aI@ aI 3
  328. aU aU
  329. aU@ aU 3
  330. A~ A~
  331. E E
  332. e: e:
  333. e@ E: r
  334. eI e j
  335. i I
  336. I I
  337. I2 I
  338. i: i:
  339. i@ i: 3
  340. i@3 i: r
  341. O O
  342. O: O :
  343. o: o:
  344. O@ O : r
  345. o@ O : r
  346. OI OY
  347. oU oU
  348. O~ O n
  349. U U
  350. u: u:
  351. U@ U r
  352. V W
  353. IR I r
  354. VR W r
  355. b b
  356. C C
  357. d d
  358. D D
  359. dZ dZ
  360. f f
  361. g g
  362. h h
  363. j j
  364. k k
  365. l l
  366. l# l#
  367. m m
  368. n n
  369. N N
  370. n^ n^
  371. p p
  372. Q Q
  373. r r
  374. r- r
  375. s s
  376. S S
  377. t t
  378. T T
  379. t2 t
  380. tS tS
  381. v v
  382. w w
  383. x x
  384. z z
  385. Z Z
  386. endphoneme