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_danish 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  1. // PB General rules for vowels:
  2. // Short vowels
  3. // ACC: Short "pille" [p?el@-]
  4. // AC[V]: Short "piler" [p?ilV]
  5. // A[N]: Short "bange" [b?AN@-]
  6. // Long vowels
  7. // A + group #@ OR group #e: Long "ae" "aer" [&:@-]
  8. // AC + group #@ OR group #e: Long "pile" [pi:l@-]
  9. // AC[i]: Long "smidig" [smi:Di]
  10. phoneme @
  11. vowel starttype #@ endtype #@
  12. unstressed
  13. length 60
  14. FMT(vowel/@_3)
  15. endphoneme
  16. phoneme @- // very short schwa
  17. vowel starttype #@ endtype #@
  18. unstressed nonsyllabic
  19. ipa ə
  20. IF nextPhW(*) OR nextPhW(r) THEN
  21. ipa NULL // @-* is used to make 'r'
  22. ENDIF
  23. length 40
  24. FMT(vowel/@-)
  25. endphoneme
  26. // ToDo: change [@] to [a#] if adjacent to [r] or [R]
  27. phoneme 3
  28. vowel starttype #a endtype #a
  29. unstressed
  30. length 40
  31. FMT(vowel/a#_3)
  32. endphoneme
  33. // PB sort of schwa [ɐ] (0250+032F)
  34. // "spurgt" [sp'o3-d] – ipa [spˈoɐ̯d]
  35. phoneme 3- // used for 'r' after a vowel (to create a diphthong)
  36. liquid
  37. lengthmod 7
  38. ipa ɐ̯
  39. FMT(r/a_)
  40. endphoneme
  41. phoneme i
  42. vowel starttype #i endtype #i
  43. length 95 //150
  44. // PB long vowel followed by consonant and certain vowels "gide"
  45. IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
  46. length 150
  47. ENDIF
  48. // "gider", vrider"
  49. IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN
  50. length 95
  51. ENDIF
  52. // PB long vowel followed by certain vowels - "pigen" [p'i@-n]
  53. IF nextPhW(#@) OR nextPhW(#e) THEN
  54. length 150
  55. ENDIF
  56. // Only this vowel (in this case [i])
  57. IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
  58. length 150
  59. ENDIF
  60. // This vowel is word end - longer because it sounds too short
  61. // "sig", "si"
  62. IF thisPh(isWordEnd) THEN
  63. length 120
  64. ENDIF
  65. // "vilje" - short followed by 2 consonants
  66. IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
  67. length 95
  68. ENDIF
  69. // PB "tie", "stige", "krige" vowel + vowel: extra length
  70. // What is causing this very short [i] in words with final [@-]?
  71. // NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n]
  72. IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN
  73. length 240
  74. ENDIF
  75. FMT(vowel/i_4)
  76. endphoneme
  77. // PB short i
  78. // sviret vs. svirret
  79. phoneme ?i
  80. vowel starttype #i endtype #i
  81. length 90
  82. IfNextVowelAppend(;)
  83. FMT(vowel/i_4)
  84. endphoneme
  85. // PB English i - Tim
  86. phoneme I
  87. vowel starttype #i endtype #i
  88. length 130
  89. IfNextVowelAppend(;)
  90. FMT(vowel/ii_2)
  91. endphoneme
  92. phoneme e
  93. vowel starttype #e endtype #e
  94. length 95 //150
  95. // "delte", "mente"
  96. IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN
  97. length 150
  98. ENDIF
  99. // PB "ring", "ringe"
  100. IF nextPhW(N) THEN
  101. length 95
  102. ENDIF
  103. // PB "enig", "enige", "evig"
  104. IF nextPhW(isNotVowel) AND next2PhW(i) THEN
  105. length 150
  106. ENDIF
  107. // Only "e"
  108. IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
  109. length 150
  110. ENDIF
  111. // "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
  112. IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
  113. length 95
  114. ENDIF
  115. FMT(vowel/e)
  116. endphoneme
  117. // PB short e
  118. // "skille" vs. "skele", "pille" vs. "pile"
  119. phoneme ?e
  120. vowel starttype #e endtype #e
  121. length 90
  122. FMT(vowel/e)
  123. endphoneme
  124. phoneme E
  125. vowel starttype #e endtype #e
  126. length 100 //150
  127. // "værelse", "breve"
  128. IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
  129. // length 150
  130. ENDIF
  131. // "ræve"
  132. IF nextVowel(#@) OR nextVowel(#e) THEN
  133. length 160
  134. ENDIF
  135. // "ære", "kærester", "ærefrygt" - longer E
  136. IF nextPhW(V) THEN
  137. length 180
  138. ENDIF
  139. // Only the letter "æ" - long
  140. IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
  141. length 160
  142. ENDIF
  143. // "stædig" [st'EDi] long
  144. IF nextPhW(isNotVowel) AND next2PhW(i) THEN
  145. length 160
  146. ENDIF
  147. // "længe" - short - 2 consonants => 1 consonant
  148. IF nextPhW(N) THEN
  149. length 120
  150. ENDIF
  151. // "værelse" [v'E3-Vls@_!]
  152. IF nextPhW(3-) AND next2PhW(V) THEN
  153. length 120
  154. ENDIF
  155. // "mælkebøtte" - short followed by 2 consonants
  156. IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
  157. length 120
  158. ENDIF
  159. FMT(vowel/e_mid2)
  160. endphoneme
  161. // PB short E
  162. // "læsse" vs. "læse"
  163. phoneme ?E
  164. vowel starttype #e endtype #e
  165. ipa ε
  166. length 100
  167. FMT(vowel/e_mid2)
  168. endphoneme
  169. phoneme &
  170. vowel starttype #e endtype #e
  171. ipa a
  172. length 90 //150
  173. // "same", "sale", "bade" - consonant + gooup #e or group #@: long
  174. IF next2PhW(#@) OR next2PhW(#e) THEN
  175. length 150
  176. ENDIF
  177. // ThisPh + gooup #e or group #@
  178. // "ae", "aer" vowel + vowel: extra length
  179. IF nextPhW(#@) OR nextPhW(#e) THEN
  180. length 220
  181. ENDIF
  182. // This vowel is word end - longer because it sounds too short
  183. // "ja", "Omaha"
  184. IF thisPh(isWordEnd) THEN
  185. length 120
  186. ENDIF
  187. // Only this vowel (in this case [&])
  188. IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
  189. length 150
  190. ENDIF
  191. // "stadig" [st&Di], "stadigt" [st&Dit]
  192. IF nextPhW(isNotVowel) AND next2PhW(i) THEN
  193. length 180
  194. ENDIF
  195. // "Alfie", "alfer" - short before 2 consonants
  196. IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
  197. length 90
  198. ENDIF
  199. FMT(vowel/ee_2)
  200. endphoneme
  201. // PB Short &
  202. // e.g. the last a in "staldkarl"
  203. // "sale" vs. "sal"
  204. phoneme ?&
  205. ipa a
  206. vowel starttype #e endtype #e
  207. length 90
  208. FMT(vowel/ee_2)
  209. endphoneme
  210. // PB added for the æ in "dræbt"
  211. phoneme &#
  212. vowel starttype #e endtype #e
  213. length 120
  214. IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
  215. glstop
  216. length 90
  217. ENDIF
  218. IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
  219. length 150
  220. ENDIF
  221. FMT(vowel/&)
  222. endphoneme
  223. // PB short &#
  224. // "revl" vs. "tremme"
  225. phoneme ?&#
  226. vowel starttype #e endtype #e
  227. length 90
  228. FMT(vowel/&)
  229. endphoneme
  230. //phoneme a
  231. // vowel starttype #a endtype #a
  232. // length 90 //150
  233. //IF nextPhW(#@) OR nextPhW(#e) THEN
  234. // length 150
  235. //ENDIF
  236. // FMT(vowel/a_2)
  237. //endphoneme
  238. // PB short (glottal) a
  239. // "bragt"
  240. //phoneme ?a
  241. // vowel starttype #a endtype #a
  242. // length 90
  243. // FMT(vowel/a_2)
  244. //endphoneme
  245. phoneme A // PB changed to a_8
  246. vowel starttype #a endtype #a
  247. length 90 //150
  248. // PB long vowel followed by consonant and certain vowels - "drabelig"
  249. IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
  250. length 150
  251. ENDIF
  252. // "far", "bastard" - a bit longer followed by [r]
  253. IF nextPhW(r) AND nextPhW(isWordEnd) THEN
  254. length 120
  255. ENDIF
  256. // "bange" [bAN@-] - [N] = 2 consonants (ng) => short
  257. IF nextPhW(N) THEN
  258. length 90
  259. ENDIF
  260. // "fare" [f'A:A]
  261. IF nextPhW(A) THEN
  262. length 150
  263. ENDIF
  264. FMT(vowel/a_8)
  265. endphoneme
  266. // PB short A
  267. // "drab" vs. "drabelig"
  268. phoneme ?A
  269. vowel starttype #a endtype #a
  270. length 90
  271. // "straffeattest", "straffe", "rapid" - a bit longer after R
  272. IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
  273. length 110
  274. ENDIF
  275. FMT(vowel/a_8)
  276. endphoneme
  277. phoneme u
  278. vowel starttype #u endtype #u
  279. length 90 //150
  280. // "suge", "uge", "bluse", "julegave"
  281. IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
  282. length 150
  283. ENDIF
  284. // "umulig" [u:m'uli]
  285. IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
  286. length 180
  287. ENDIF
  288. // Only "u"
  289. IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
  290. length 150
  291. ENDIF
  292. // "fugl" [ful] - a bit longer
  293. IF nextPhW(isWordEnd) THEN
  294. length 120
  295. ENDIF
  296. FMT(vowel/u_bck)
  297. endphoneme
  298. // PB glottal u
  299. // "tude" vs. "tuden" - [tuD3] [t?uD@n]
  300. phoneme ?u
  301. vowel starttype #u endtype #u
  302. length 90
  303. FMT(vowel/u_bck)
  304. endphoneme
  305. phoneme o
  306. vowel starttype #o endtype #o
  307. length 90 //150
  308. // "bore", "borer"
  309. IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
  310. length 150
  311. ENDIF
  312. // "modig" - long vowel after consonant + [i]
  313. IF nextPhW(D) AND next2PhW(i) THEN
  314. length 150
  315. ENDIF
  316. FMT(vowel/o_2)
  317. endphoneme
  318. // PB Short o
  319. // "patron" vs. "kone"
  320. phoneme ?o
  321. vowel starttype #o endtype #o
  322. length 95
  323. FMT(vowel/o_2)
  324. endphoneme
  325. phoneme O
  326. vowel starttype #o endtype #o
  327. length 90 // 150
  328. // "sove", "sover" - consonant + #e or #@: long
  329. IF next2PhW(#@) OR next2PhW(#e) THEN
  330. length 150
  331. ENDIF
  332. // PB "gået" - ThisPh + #e or #@
  333. IF nextPhW(#e) OR nextPhW(#@) THEN
  334. length 150
  335. ENDIF
  336. // "rådig"
  337. IF nextVowel(i) AND nextVowel(isFinalVowel) THEN
  338. length 180
  339. ENDIF
  340. FMT(vowel/o_5)
  341. endphoneme
  342. // Short O
  343. // "toget" vs. "tåget"
  344. phoneme ?O
  345. vowel starttype #o endtype #o
  346. length 90
  347. FMT(vowel/o_5)
  348. endphoneme
  349. phoneme V
  350. vowel starttype #@ endtype #@
  351. length 150
  352. // "sport" [spV:t]
  353. IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
  354. glstop
  355. length 90
  356. ENDIF
  357. IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN
  358. length 150
  359. ENDIF
  360. // PB short V in "holder", "solder"
  361. IF nextPhW(isNotVowel) AND next2Ph(V) THEN
  362. length 90
  363. ENDIF
  364. // "snorke", "snorker", årlig
  365. IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN
  366. length 180
  367. ENDIF
  368. // "sove" [sVw3] - longer followed by w + 3
  369. IF nextPhW(w) AND next2PhW(3) THEN
  370. length 220
  371. ENDIF
  372. // PB "konge"
  373. IF nextPhW(N) THEN
  374. length 95
  375. ENDIF
  376. FMT(vowel/V_4)
  377. endphoneme
  378. // PB Short å
  379. // "forstår" vs. "kåre"
  380. phoneme ?V
  381. vowel starttype #@ endtype #@
  382. length 90
  383. FMT(vowel/V_4)
  384. endphoneme
  385. phoneme 0
  386. vowel starttype #o endtype #o
  387. length 150
  388. IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
  389. glstop
  390. length 90
  391. ENDIF
  392. IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
  393. length 150
  394. ENDIF
  395. FMT(vowel/oo_2)
  396. endphoneme
  397. // Short 0 "sukker"
  398. phoneme ?0
  399. vowel starttype #o endtype #o
  400. length 90
  401. FMT(vowel/oo_2)
  402. endphoneme
  403. phoneme y
  404. vowel starttype #i endtype #i
  405. // Length changed to short since most vowels are short.
  406. // It's probably easier only to make rules for long vowels.
  407. length 90 //150
  408. // PB long vowel followed by consonant and certain vowels
  409. // "lyde", "lyder"
  410. IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
  411. length 150
  412. ENDIF
  413. // Only this vowel (in this case [y])
  414. IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
  415. length 150
  416. ENDIF
  417. // "dydig" [dyDi]
  418. IF nextPhW(isNotVowel) AND next2PhW(i) THEN
  419. length 150
  420. ENDIF
  421. // "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD]
  422. IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN
  423. length 200
  424. ENDIF
  425. // "tyve"
  426. IF nextPhW(?u) AND next2PhW(@-) THEN
  427. length 150
  428. ENDIF
  429. FMT(vowel/y)
  430. endphoneme
  431. // PB Short y
  432. // "kylling" vs. "kyle", "krybbe" vs. "krybe"
  433. phoneme ?y
  434. vowel starttype #i endtype #i
  435. length 90
  436. FMT(vowel/y)
  437. endphoneme
  438. phoneme Y
  439. vowel starttype #i endtype #i
  440. length 150
  441. IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
  442. glstop
  443. length 90
  444. ENDIF
  445. IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
  446. length 150
  447. ENDIF
  448. FMT(vowel/yy)
  449. endphoneme
  450. phoneme W
  451. vowel starttype #@ endtype #@
  452. length 90 //160
  453. // "kløe" vowel + vowel: extra length
  454. IF nextPhW(#@) OR nextPhW(#e) THEN
  455. length 220
  456. ENDIF
  457. // røde" W + 1 consonant + 3 or W or @
  458. IF next2PhW(#@) OR next2PhW(#e) THEN
  459. length 160
  460. ENDIF
  461. // "røveri" but NOT "surfer" [sWf?V] TEST
  462. IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN
  463. length 90
  464. ENDIF
  465. // PB "nødig", "nødigt", "kølige"
  466. IF nextVowel(i) THEN
  467. length 160
  468. ENDIF
  469. // "møve" [mWw@-]
  470. IF nextPhW(w) AND nextVowel(@-) THEN
  471. length 160
  472. ENDIF
  473. // "børnebog"
  474. IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN
  475. length 150
  476. ENDIF
  477. FMT(vowel/oe)
  478. endphoneme
  479. // Short W
  480. // "prøv" vs. "prøve"
  481. phoneme ?W
  482. vowel starttype #@ endtype #@
  483. length 95
  484. FMT(vowel/oe)
  485. endphoneme
  486. // Added for the ø in "røv", "røg", "øje" instead of [V3]
  487. phoneme W#
  488. vowel starttype #@ endtype #@
  489. length 90 //150
  490. IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
  491. glstop
  492. // length 90
  493. ENDIF
  494. // PB long vowel followed by consonant and certain vowels
  495. IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN
  496. length 150
  497. ENDIF
  498. FMT(vowel/V)
  499. endphoneme
  500. // Short W#
  501. // "rømme"
  502. phoneme ?W#
  503. vowel starttype #@ endtype #@
  504. length 90
  505. FMT(vowel/V)
  506. endphoneme
  507. phoneme aI
  508. vowel starttype #a endtype #i
  509. length 300
  510. IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN
  511. glstop
  512. length 150
  513. ENDIF
  514. // "dreje" [dR'aI@-_!]
  515. IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
  516. length 280
  517. ENDIF
  518. // PB "drej" vs. "dreje"
  519. IF thisPh(isWordEnd) THEN
  520. length 140
  521. ENDIF
  522. // "lejde" [l'aId@-_!], "lejder" [l'aIdV_!]
  523. IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
  524. length 190
  525. ENDIF
  526. FMT(vdiph/ai)
  527. endphoneme
  528. // CONSONANTS
  529. // PB added l/3
  530. phoneme l
  531. liquid
  532. lengthmod 7
  533. ChangePhoneme(l/3)
  534. // CALL base/l
  535. endphoneme
  536. phoneme l/3 // Replacement for [l/]
  537. liquid
  538. lengthmod 7
  539. IF nextPh(isVowel) THEN
  540. // ChangePhoneme(l)
  541. ENDIF
  542. PrevVowelEndings
  543. VowelEnding(l/l_@)
  544. VowelEnding(l/l_a,-70) // kvalt, kapital
  545. VowelEnding(l/l_e, -40)
  546. VowelEnding(l/l_i, -70)
  547. VowelEnding(l/l_o,-70) // stole, skole, pistol
  548. VowelEnding(l/l_u, -70)
  549. EndSwitch
  550. // IF nextPh(isLiquid) THEN
  551. // FMT(l/_l)
  552. // ENDIF
  553. FMT(l/l_)
  554. endphoneme
  555. phoneme v // approximant, not fricative
  556. import_phoneme base/v#
  557. voicingswitch f
  558. endphoneme
  559. // PB Actually a kind of schwa = [ɐ]? - "byder" [bˈyðɐʌ]
  560. phoneme r // used for 'r' after a vowel (to create a diphthong)
  561. liquid
  562. lengthmod 7
  563. ipa ɐ̯
  564. IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN
  565. ChangePhoneme(R)
  566. ENDIF
  567. FMT(r/a_)
  568. endphoneme
  569. phoneme R
  570. lengthmod 6
  571. liquid
  572. ipa ʁ
  573. FMT(r/aa)
  574. endphoneme
  575. // don't weaken consonants at end of word or before a stop
  576. phoneme s
  577. vls alv frc sibilant
  578. voicingswitch z
  579. lengthmod 3
  580. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  581. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  582. IF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
  583. WAV(ufric/s!)
  584. ENDIF
  585. WAV(ufric/s)
  586. endphoneme
  587. phoneme p
  588. vls blb stop
  589. voicingswitch b
  590. lengthmod 7
  591. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
  592. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
  593. IF nextPh(isPause2) THEN
  594. WAV(ustop/p_unasp)
  595. ELIF nextPh(r) THEN
  596. WAV(ustop/pr, 70)
  597. ELIF nextPh(R) OR nextPh(R2) THEN
  598. WAV(ustop/pr)
  599. ELIF nextPh(@-) THEN
  600. WAV(ustop/p_unasp)
  601. ELIF nextPh(l) THEN
  602. WAV(ustop/pl)
  603. ENDIF
  604. WAV(ustop/p)
  605. endphoneme
  606. phoneme t
  607. vls alv stop
  608. voicingswitch d
  609. lengthmod 7
  610. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  611. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  612. IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
  613. WAV(ustop/tr)
  614. ENDIF
  615. // "respekt" [REsp'Egd]
  616. IF thisPh(isWordEnd) THEN
  617. // ChangePhoneme(d)
  618. ENDIF
  619. WAV(ustop/t, 90)
  620. endphoneme
  621. phoneme j
  622. liquid palatal
  623. lengthmod 7
  624. IF nextPhW(isVowel) THEN
  625. NextVowelStarts
  626. VowelStart(j/j@)
  627. VowelStart(j/ja)
  628. VowelStart(j/je,-35)
  629. VowelStart(j/ji)
  630. VowelStart(j/jo,-65) // "kjole"
  631. VowelStart(j/ju)
  632. EndSwitch
  633. Vowelout len=70
  634. VowelEnding(j/xj, -30)
  635. IF prevPh(isPause) THEN
  636. FMT(j/_j)
  637. ENDIF
  638. ELSE
  639. // no vowel follows
  640. Vowelout len=70
  641. FMT(j/j_)
  642. ENDIF
  643. endphoneme