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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  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. IF thisPh(isFinalVowel) THEN
  21. Length 210
  22. ENDIF
  23. FMT(vowel/a#_3) // in eSpeak 1.44, this used vowel/V_3 at end-of-word
  24. endphoneme
  25. phoneme a
  26. vowel 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. vowel 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. vowel 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. vowel 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. vowel starttype #i endtype #i
  61. length 190
  62. FMT(vowel/ii)
  63. endphoneme
  64. phoneme O
  65. vowel 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. vowel 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. vowel starttype #a endtype #a
  85. length 250
  86. FMT(vowel/aa_6)
  87. endphoneme
  88. phoneme A // reduces to [a] if not stressed
  89. vowel starttype #a endtype #a
  90. length 250
  91. ChangeIfUnstressed(a)
  92. FMT(vowel/aa_6)
  93. endphoneme
  94. phoneme i:
  95. vowel 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. vowel 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. vowel starttype #u endtype #u
  116. length 190
  117. FMT(vowel/u)
  118. endphoneme
  119. phoneme aU
  120. vowel starttype #a endtype #u
  121. length 220
  122. FMT(vdiph/aau_6)
  123. endphoneme
  124. phoneme aI
  125. vowel starttype #a endtype #i
  126. length 210
  127. FMT(vdiph/ai_5)
  128. endphoneme
  129. phoneme EI
  130. vowel starttype #e endtype #i
  131. length 210
  132. FMT(vdiph/eei)
  133. endphoneme
  134. phoneme OY
  135. vowel starttype #o endtype #i
  136. length 220
  137. FMT(vdiph/oi)
  138. endphoneme
  139. phoneme E:
  140. vowel starttype #e endtype #e
  141. length 200
  142. FMT(vowel/e_8)
  143. endphoneme
  144. phoneme e:
  145. vowel starttype #e endtype #e
  146. length 200
  147. FMT(vowel/e_2)
  148. endphoneme
  149. phoneme o:
  150. vowel starttype #o endtype #o
  151. length 210
  152. FMT(vowel/o)
  153. endphoneme
  154. phoneme y:
  155. vowel starttype #u endtype #u
  156. length 200
  157. FMT(vowel/y)
  158. endphoneme
  159. phoneme y
  160. vowel starttype #u endtype #u
  161. ipa ʏ
  162. length 110
  163. IF nextPh(*) THEN
  164. length 115
  165. ENDIF
  166. FMT(vowel/yy_4)
  167. endphoneme
  168. phoneme Y:
  169. vowel starttype #@ endtype #@
  170. length 180
  171. FMT(vowel/y#)
  172. endphoneme
  173. phoneme W
  174. vowel starttype #@ endtype #@
  175. length 150
  176. IF nextPh(*) THEN
  177. length 160
  178. ENDIF
  179. FMT(vowel/oe)
  180. endphoneme
  181. // CONSONANTS
  182. //===========
  183. phoneme ts
  184. import_phoneme consonants/ts
  185. endphoneme
  186. phoneme pF
  187. vls blb afr
  188. ipa pf
  189. Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
  190. lengthmod 2
  191. WAV(ufric/f) // could replace this with a [pf] wav file
  192. endphoneme
  193. phoneme g# // for "ig" -> [IC] or [Ig]
  194. vls pal frc palatal
  195. lengthmod 3
  196. IF nextPhW(isVoiced) THEN
  197. ChangePhoneme(g)
  198. ELSE
  199. ChangePhoneme(C)
  200. ENDIF
  201. endphoneme
  202. phoneme l/ // used for [l] when not before a vowel
  203. liquid
  204. lengthmod 7
  205. IF nextPh(isVowel) THEN
  206. ChangePhoneme(l)
  207. ENDIF
  208. PrevVowelEndings
  209. VowelEnding(l/L1_@L, -60)
  210. VowelEnding(l/L1_aL, -40)
  211. VowelEnding(l/L1_eL, -30)
  212. VowelEnding(l/L1_iL, -30)
  213. VowelEnding(l/L1_oL, -40)
  214. VowelEnding(l/L1_uL, -40)
  215. EndSwitch
  216. FMT(l/l_3)
  217. endphoneme
  218. phoneme j
  219. liquid palatal
  220. lengthmod 7
  221. IF nextPh(isVowel) THEN
  222. NextVowelStarts
  223. VowelStart(j/j@)
  224. VowelStart(j/ja)
  225. VowelStart(j/je)
  226. VowelStart(j/ji)
  227. VowelStart(j/jo)
  228. VowelStart(j/ju)
  229. EndSwitch
  230. VowelEnding(j/xj, -30)
  231. IF prevPh(isPause) THEN
  232. FMT(j/_j_short) // difference from base/j
  233. ENDIF
  234. ELSE
  235. // no vowel follows
  236. Vowelout len=70
  237. FMT(j/j_)
  238. ENDIF
  239. endphoneme
  240. phoneme r
  241. liquid alv rhotic
  242. lengthmod 6
  243. IF prevPhW(@-) THEN
  244. ELSE
  245. IF nextPhW(isVowel) THEN
  246. IF prevPhW(isVowel) THEN
  247. ChangePhoneme(R)
  248. ELSE
  249. IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN
  250. PauseBefore 40
  251. ELSEIF prevPhW(d) OR prevPhW(b) OR prevPhW(g) THEN
  252. PauseBefore 15
  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. phoneme iR // TEST "vier" = [f'iR] not successful
  265. vowel starttype #i endtype #@
  266. ipa iɐ
  267. flag1
  268. length 240
  269. FMT(vdiph2/i@_3)
  270. endphoneme
  271. phoneme UR
  272. vowel starttype #u endtype #@
  273. ipa ʊɐ
  274. flag1
  275. length 180
  276. FMT(vwl_de/uu_@)
  277. endphoneme
  278. phoneme oU // for English words
  279. import_phoneme en-us/oU
  280. endphoneme
  281. phoneme A~
  282. vowel starttype #a endtype #a
  283. length 260
  284. FMT(vnasal/aa_n4)
  285. endphoneme
  286. phoneme l2 // as [l] but devoice previous phoneme
  287. liquid lengthmod 7
  288. ChangePhoneme (l)
  289. endphoneme
  290. phoneme b
  291. vcd alv frc sibilant
  292. voicingswitch p
  293. IF nextPh(l2) THEN
  294. ChangePhoneme(p)
  295. ENDIF
  296. CALL base/b
  297. endphoneme
  298. phoneme d
  299. vcd alv stop
  300. voicingswitch t
  301. IF nextPh(l2) THEN
  302. ChangePhoneme(t)
  303. ENDIF
  304. lengthmod 5
  305. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  306. Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk
  307. IF PreVoicing THEN
  308. FMT(d/xd)
  309. ENDIF
  310. IF nextPh(isPause2) THEN
  311. FMT(d/d_) addWav(x/d_)
  312. ELIF nextPh(r) THEN
  313. FMT(d/dr) addWav(x/d)
  314. ENDIF
  315. FMT(d/d) addWav(x/d)
  316. endphoneme
  317. phoneme g
  318. vcd vel stop
  319. voicingswitch k
  320. IF nextPh(l2) THEN
  321. ChangePhoneme(k)
  322. ENDIF
  323. CALL base/g
  324. endphoneme
  325. // translate from English to German phonemes
  326. equivalents NULL // disable this table
  327. 0 O
  328. 3 3
  329. 3: W :
  330. @ @
  331. @- @-
  332. @2 @
  333. @5 @
  334. @L U l
  335. a a
  336. a# a
  337. A: A:
  338. A@ A: r
  339. aa a
  340. aI aI
  341. aI@ aI 3
  342. aU aU
  343. aU@ aU 3
  344. A~ A~
  345. E E
  346. e: e:
  347. e@ E: r
  348. eI e j
  349. i I
  350. I I
  351. I2 I
  352. i: i:
  353. i@ i: 3
  354. i@3 i: r
  355. O O
  356. O: O :
  357. o: o:
  358. O@ O : r
  359. o@ O : r
  360. OI OY
  361. oU oU
  362. O~ O n
  363. U U
  364. u: u:
  365. U@ U r
  366. V W
  367. IR I r
  368. VR W r
  369. b b
  370. C C
  371. d d
  372. D D
  373. dZ dZ
  374. f f
  375. g g
  376. h h
  377. j j
  378. k k
  379. l l
  380. l# l#
  381. m m
  382. n n
  383. N N
  384. n^ n^
  385. p p
  386. Q Q
  387. r r
  388. r- r
  389. s s
  390. S S
  391. t t
  392. T T
  393. t2 t
  394. tS tS
  395. v v
  396. w w
  397. x x
  398. z z
  399. Z Z
  400. endphoneme