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

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