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 15KB

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