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

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