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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  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 thisPh(isWordStart) THEN
  253. // ELSE
  254. InsertPhoneme(@-)
  255. // ENDIF
  256. ENDIF
  257. ENDIF
  258. ENDIF
  259. IF prevPh(isFlag1) THEN
  260. ChangePhoneme(NULL) // 'r' is already included in the previous vowel
  261. ENDIF
  262. CALL base/*
  263. endphoneme
  264. // This version of [r] was used in eSpeak 1.44, but received complaints
  265. phoneme r2 // uvular trill or fricative
  266. vcd uvl frc
  267. ipa ʀ
  268. lengthmod 6
  269. length 110
  270. IF nextPhW(isVowel) THEN
  271. FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50)
  272. ELSE
  273. IF prevPh(isFlag1) THEN
  274. ChangePhoneme(NULL) // 'r' is already included in the previous vowel
  275. ELSE
  276. ChangePhoneme(V#)
  277. ENDIF
  278. ENDIF
  279. endphoneme
  280. phoneme V# // used for 'r' after a vowel (to create a diphthong)
  281. liquid
  282. lengthmod 7
  283. IF nextPhW(isVowel) THEN
  284. ChangePhoneme(r)
  285. ENDIF
  286. ipa ɐ
  287. IF prevPh(#a) OR prevPh(E) THEN
  288. FMT(r/V_2_)
  289. ENDIF
  290. IF prevPh(#u) THEN
  291. FMT(r/@_)
  292. ENDIF
  293. FMT(r/V_)
  294. endphoneme
  295. phoneme UR
  296. vowel starttype #u endtype #@
  297. ipa ʊɐ
  298. flag1
  299. length 180
  300. FMT(vwl_de/uu_@)
  301. endphoneme
  302. phoneme oU // for English words
  303. import_phoneme en-us/oU
  304. endphoneme
  305. phoneme A~
  306. vowel starttype #a endtype #a
  307. length 260
  308. FMT(vnasal/aa_n4)
  309. endphoneme
  310. // translate from English to German phonemes
  311. equivalents en
  312. 0 O
  313. 3 3
  314. 3: W :
  315. @ @
  316. @- @-
  317. @2 @
  318. @5 @
  319. @L U l
  320. a a
  321. a# a
  322. A: A:
  323. A@ A: r
  324. aa a
  325. aI aI
  326. aI@ aI 3
  327. aU aU
  328. aU@ aU 3
  329. A~ A~
  330. E E
  331. e: e:
  332. e@ E: r
  333. eI e j
  334. i I
  335. I I
  336. I2 I
  337. i: i:
  338. i@ i: 3
  339. i@3 i: r
  340. O O
  341. O: O :
  342. o: o:
  343. O@ O : r
  344. o@ O : r
  345. OI OY
  346. oU oU
  347. O~ O n
  348. U U
  349. u: u:
  350. U@ U r
  351. V W
  352. IR I r
  353. VR W r
  354. b b
  355. C C
  356. d d
  357. D D
  358. dZ dZ
  359. f f
  360. g g
  361. h h
  362. j j
  363. k k
  364. l l
  365. l# l#
  366. m m
  367. n n
  368. N N
  369. n^ n^
  370. p p
  371. Q Q
  372. r r
  373. r- r
  374. s s
  375. S S
  376. t t
  377. T T
  378. t2 t
  379. tS tS
  380. v v
  381. w w
  382. x x
  383. z z
  384. Z Z
  385. endphoneme