ph_english_sc 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. //*******************************************************************
  2. // VOWELS
  3. //*******************************************************************
  4. phoneme @ // Schwa
  5. vwl starttype #@ endtype #@
  6. unstressed
  7. length 140
  8. IfNextVowelAppend(r-)
  9. FMT(vowel/@_3)
  10. endphoneme
  11. phoneme 3 // Schwa, used for rhotic schwa in American
  12. vwl starttype #@ endtype #@
  13. unstressed
  14. length 140
  15. IF nextPh(isVowel) THEN
  16. ChangePhoneme(@)
  17. ENDIF
  18. IfNextVowelAppend(r-)
  19. IF nextPh(isPause) THEN
  20. FMT(vowelr/V3_r)
  21. ENDIF
  22. FMT(vowel/V)
  23. endphoneme
  24. phoneme @2 // Schwa, changes to I before a vowel
  25. vwl starttype #@ endtype #@
  26. unstressed
  27. length 120
  28. IF nextPh(isVowel) THEN
  29. ChangePhoneme(I2)
  30. ENDIF
  31. ChangePhoneme(@)
  32. endphoneme
  33. phoneme @5 // Schwa, changes to U before a vowel
  34. vwl starttype #@ endtype #@
  35. unstressed
  36. length 140
  37. IF nextPh(isVowel) OR nextPh(isPause) THEN
  38. ChangePhoneme(U)
  39. ENDIF
  40. ChangePhoneme(@)
  41. endphoneme
  42. phoneme a
  43. vwl starttype #a endtype #a
  44. length 200
  45. ChangeIfDiminished(a#)
  46. ChangeIfNotStressed(a/)
  47. FMT(vowel/a_3)
  48. endphoneme
  49. phoneme a/
  50. vwl starttype #a endtype #a
  51. length 160
  52. ChangeIfDiminished(a#)
  53. FMT(vowel/a_3)
  54. endphoneme
  55. phoneme a#
  56. vwl starttype #@ endtype #@
  57. ipa ɐ
  58. unstressed
  59. length 140
  60. IfNextVowelAppend(r-)
  61. FMT(vowel/a#)
  62. endphoneme
  63. phoneme aa // 'bath' etc.
  64. vwl starttype #a endtype #a
  65. ipa a:
  66. length 220
  67. IfNextVowelAppend(r-)
  68. FMT(vowel/a_3)
  69. endphoneme
  70. phoneme E
  71. vwl starttype #e endtype #e
  72. length 170
  73. IF nextPhW(n) THEN
  74. ChangeIfDiminished(@)
  75. ELSE
  76. ChangeIfDiminished(I2)
  77. ENDIF
  78. FMT(vowel/e_e)
  79. endphoneme
  80. phoneme I
  81. vwl starttype #@ endtype #@
  82. length 110
  83. IF nextPh(l/2) THEN
  84. VowelEnding(l/L2_@L, -30)
  85. FMT(vowel/@_3)
  86. ENDIF
  87. FMT(vowel/e#)
  88. endphoneme
  89. phoneme I2
  90. vwl starttype #@ endtype #@
  91. unstressed
  92. length 110
  93. CALL I
  94. endphoneme
  95. phoneme I#
  96. vwl starttype #@ endtype #@
  97. ChangePhoneme(I2)
  98. endphoneme
  99. phoneme i // optional variant of [I] for end of words
  100. vwl starttype #i endtype #e
  101. ipa e
  102. length 150
  103. IfNextVowelAppend(;)
  104. FMT(vowel/e_5)
  105. endphoneme
  106. phoneme 0
  107. vwl starttype #o endtype #o
  108. length 200
  109. ChangeIfDiminished(@)
  110. FMT(vowel/oo_2)
  111. endphoneme
  112. phoneme 02 // becomes V in en-us
  113. vwl starttype #o endtype #o
  114. length 140
  115. ChangePhoneme(V)
  116. endphoneme
  117. phoneme V
  118. vwl starttype #a endtype #@
  119. length 140
  120. ChangeIfDiminished(@)
  121. FMT(vowel/V_4)
  122. endphoneme
  123. phoneme U
  124. vwl starttype #u endtype #u
  125. ipa ʉ
  126. length 140
  127. FMT(vowel/u#_4)
  128. endphoneme
  129. phoneme A:
  130. vwl starttype #a endtype #a
  131. length 220
  132. ipa a:
  133. IfNextVowelAppend(r-)
  134. IF nextPh(r) THEN
  135. length 250
  136. FMT(vowelr/aa_r)
  137. ENDIF
  138. FMT(vowel/a_3)
  139. endphoneme
  140. phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American
  141. vwl starttype #a endtype #@
  142. length 250
  143. ipa aː
  144. IF NOT nextPhW(r) THEN
  145. AppendPhoneme(r)
  146. ENDIF
  147. FMT(vowelr/aa_r)
  148. endphoneme
  149. phoneme 3:
  150. vwl starttype #e endtype #@
  151. length 230
  152. ChangeIfNotStressed(VR) // also need "replace 02 3: VR" in voice file
  153. ipa e
  154. FMT(vowelr/e_r)
  155. endphoneme
  156. phoneme i:
  157. vwl starttype #i endtype #i
  158. length 130
  159. IfNextVowelAppend(;)
  160. IF prevPh(w) THEN
  161. VowelStart(w/wi2)
  162. ENDIF
  163. IF nextPh(isVFricative) OR nextPh(isPause) THEN
  164. length 180
  165. ENDIF
  166. FMT(vowel/i_5)
  167. endphoneme
  168. phoneme O:
  169. vwl starttype #o endtype #o
  170. length 200
  171. ChangeIfDiminished(@)
  172. IF nextPh(r) THEN
  173. FMT(vwl_en_us/or)
  174. ENDIF
  175. FMT(vowel/oo)
  176. endphoneme
  177. phoneme O@
  178. vwl starttype #o endtype #@
  179. length 230
  180. ipa ɔ
  181. IF NOT nextPhW(r) THEN
  182. AppendPhoneme(r)
  183. ENDIF
  184. FMT(vowelr/oo_r)
  185. endphoneme
  186. phoneme o@
  187. vwl starttype #o endtype #@
  188. length 230
  189. ipa o
  190. IF NOT nextPhW(r) THEN
  191. AppendPhoneme(r)
  192. ENDIF
  193. FMT(vowelr/oo_r)
  194. endphoneme
  195. phoneme O
  196. vwl starttype #o endtype #o
  197. length 150
  198. ChangeIfDiminished(@)
  199. FMT(vowel/0_3)
  200. endphoneme
  201. phoneme u:
  202. vwl starttype #u endtype #u
  203. ipa ʉː
  204. length 160
  205. IF nextPh(isVFricative) THEN
  206. length 200
  207. ENDIF
  208. IF nextPh(isPause) THEN
  209. length 200
  210. FMT(vowel/u#_4)
  211. ENDIF
  212. FMT(vowel/u#)
  213. endphoneme
  214. phoneme aU
  215. vwl starttype #a endtype #u
  216. ipa ʌʉ
  217. length 200
  218. FMT(vdiph/au#)
  219. endphoneme
  220. phoneme oU
  221. vwl starttype #o endtype #u
  222. ipa oː
  223. length 190
  224. FMT(vowel/o_3)
  225. endphoneme
  226. phoneme aI
  227. vwl starttype #a endtype #i
  228. length 190
  229. IF nextPh(isVowel) OR nextPh(isVFricative) THEN
  230. ChangePhoneme(aI2)
  231. ENDIF
  232. IF nextPh(l/2) THEN
  233. // before l/2 vwl_en/aI@_2+vwl_en/@L_2
  234. FMT(vwl_en/aI@_2)
  235. ENDIF
  236. // FMT(vdiph/&i_2
  237. FMT(vdiph/ai_7)
  238. endphoneme
  239. phoneme aI2
  240. vwl starttype #a endtype #i
  241. length 240
  242. FMT(vdiph/ai_7)
  243. endphoneme
  244. phoneme eI
  245. vwl starttype #e endtype #i
  246. ipa eː
  247. length 190
  248. FMT(vowel/e_2)
  249. endphoneme
  250. phoneme OI
  251. vwl starttype #o endtype #i
  252. length 210
  253. FMT(vdiph/0i_2)
  254. endphoneme
  255. phoneme e@
  256. vwl starttype #e endtype #@
  257. length 220
  258. ipa e
  259. IF NOT nextPhW(r) THEN
  260. AppendPhoneme(r)
  261. ENDIF
  262. FMT(vdiph2/e@)
  263. endphoneme
  264. phoneme i@3
  265. vwl starttype #i endtype #@
  266. ipa ɪ
  267. length 240
  268. IF NOT nextPhW(r) THEN
  269. AppendPhoneme(r)
  270. ENDIF
  271. FMT(vowelr/i_r)
  272. endphoneme
  273. phoneme U@
  274. vwl starttype #u endtype #@
  275. ipa ʉɹ
  276. IF nextPh(r-) THEN
  277. ipa ʉ
  278. ENDIF
  279. length 240
  280. IfNextVowelAppend(r-)
  281. FMT(vdiph2/u#@)
  282. endphoneme
  283. phoneme aU@
  284. vwl starttype #a endtype #@
  285. length 270
  286. IfNextVowelAppend(r-)
  287. FMT(vwl_en/aU@)
  288. endphoneme
  289. phoneme aI@
  290. vwl starttype #a endtype #@
  291. length 270
  292. IfNextVowelAppend(r-)
  293. FMT(vwl_en/aI@_2)
  294. endphoneme
  295. phoneme aI3
  296. vwl starttype #a endtype #@
  297. length 280
  298. ChangePhoneme(aI@)
  299. endphoneme
  300. phoneme @L
  301. vwl starttype #@ endtype l
  302. ipa əl
  303. unstressed
  304. length 160
  305. CALL vowelstart_l
  306. FMT(vwl_en/@L_2)
  307. endphoneme
  308. //==============
  309. // Consonants
  310. //==============
  311. phoneme r/ // used for [r] when not preceding a vowel
  312. liquid
  313. lengthmod 2 //
  314. FMT(NULL)
  315. endphoneme
  316. phoneme r
  317. liquid rhotic trl
  318. lengthmod 7
  319. IF nextPh(isNotVowel) THEN
  320. ChangePhoneme(r/)
  321. ENDIF
  322. CALL base1/r
  323. ipa r
  324. endphoneme