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_english 7.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511
  1. phoneme t2 // [t] which doesn't reduce
  2. vcd alv stop
  3. ChangePhoneme(t)
  4. endphoneme
  5. phoneme t# // reduced [t] as in "city"
  6. vcd alv stop
  7. ipa ɾ
  8. lengthmod 5
  9. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  10. Vowelout f1=2 f2=1700 -300 300 f3=-100 80
  11. IF KlattSynth THEN
  12. IF PreVoicing THEN
  13. FMT(klatt/x_tap)
  14. ENDIF
  15. FMT(klatt/tap2) addWav(x/d, 70)
  16. ENDIF
  17. IF PreVoicing THEN
  18. FMT(d/x_tap)
  19. ENDIF
  20. FMT(d/tap2) addWav(x/d, 70)
  21. endphoneme
  22. phoneme d# // change to [d] or [t] depending on whether previous phoneme is voiced
  23. vls alv stop
  24. IF prevPh(isVoiced) THEN
  25. ChangePhoneme(d)
  26. ELSE
  27. ChangePhoneme(t)
  28. ENDIF
  29. endphoneme
  30. phoneme z# // change to [z] or [s] depending on whether previous phoneme is voiced
  31. vls alv frc sibilant
  32. IF prevPh(isVoiced) THEN
  33. ChangePhoneme(z)
  34. ELSE
  35. ChangePhoneme(s)
  36. ENDIF
  37. endphoneme
  38. phoneme l // use dark [l/2] before not-vowel
  39. liquid
  40. lengthmod 7
  41. IF nextPhW(isVowel) THEN
  42. ELSE
  43. IF prevPh(isVowel) OR prevPh(j) OR prevPh(w) THEN
  44. ChangePhoneme(l/2)
  45. ELSE
  46. ChangePhoneme(l/)
  47. ENDIF
  48. ENDIF
  49. CALL base/l
  50. endphoneme
  51. phoneme g-
  52. vcd vel stop
  53. lengthmod 5
  54. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  55. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  56. IF PreVoicing THEN
  57. FMT(g/xg)
  58. ENDIF
  59. IF nextPh(isPause2) THEN
  60. FMT(g/g_) addWav(x/g2_)
  61. ENDIF
  62. FMT(g/g) addWav(x/g2_)
  63. endphoneme
  64. phoneme r- // linking r, used in English between certain vowels and a following vowel
  65. liquid rhotic
  66. ipa ɹ
  67. lengthmod 0
  68. NextVowelStarts
  69. VowelStart(r2/r2@)
  70. VowelStart(r2/r2a)
  71. VowelStart(r2/r2e)
  72. VowelStart(r2/r2i)
  73. VowelStart(r2/r2o)
  74. VowelStart(r2/r2u)
  75. EndSwitch
  76. IF prevPh(isVowel) THEN
  77. VowelEnding(r/xr, -60)
  78. ENDIF
  79. FMT(r/r)
  80. endphoneme
  81. phoneme z/2 // used for 's suffix
  82. vcd alv frc sibilant
  83. lengthmod 6
  84. IF prevPh(isSibilant) THEN
  85. InsertPhoneme(I2)
  86. ENDIF
  87. IF prevPh(isVoiced) THEN
  88. ELSE
  89. ChangePhoneme(s)
  90. ENDIF
  91. ChangePhoneme(z)
  92. endphoneme
  93. //*******************************************************************
  94. // VOWELS
  95. //*******************************************************************
  96. phoneme @ // Schwa
  97. vowel starttype #@ endtype #@
  98. unstressed
  99. length 140
  100. IfNextVowelAppend(r-)
  101. IF thisPh(isWordEnd) THEN
  102. FMT(vowel/@_6)
  103. ENDIF
  104. FMT(vowel/@)
  105. endphoneme
  106. phoneme 3 // Schwa, used for rhotic schwa in American
  107. CALL @
  108. ipa ə
  109. endphoneme
  110. phoneme @2 // Schwa, changes to I before a vowel
  111. vowel starttype #@ endtype #@
  112. unstressed
  113. length 120
  114. IF nextPh(isVowel) THEN
  115. ChangePhoneme(I2)
  116. ENDIF
  117. FMT(vowel/@)
  118. endphoneme
  119. phoneme @5 // Schwa, changes to U before a vowel
  120. vowel starttype #@ endtype #@
  121. unstressed
  122. length 140
  123. IF nextPh(isVowel) OR nextPh(isPause) THEN
  124. ChangePhoneme(U)
  125. ENDIF
  126. FMT(vowel/@)
  127. endphoneme
  128. phoneme @L
  129. vowel starttype #@ endtype l
  130. ipa əl
  131. unstressed
  132. length 160
  133. CALL vowelstart_l
  134. FMT(vwl_en/@L)
  135. endphoneme
  136. phoneme a
  137. vowel starttype #a endtype #a
  138. length 160
  139. ChangeIfDiminished(a#)
  140. IF thisPh(isUnstressed) THEN
  141. FMT(vowel/a_8)
  142. ENDIF
  143. FMT(vowel/a)
  144. endphoneme
  145. phoneme a#
  146. vowel starttype #@ endtype #@
  147. ipa ɐ
  148. unstressed
  149. length 150
  150. FMT(vowel/a#_3)
  151. endphoneme
  152. phoneme aa // 'bath' etc.
  153. vowel starttype #a endtype #a
  154. ipa a
  155. length 185
  156. IfNextVowelAppend(r-)
  157. FMT(vowel/a)
  158. endphoneme
  159. phoneme E
  160. vowel starttype #e endtype #e
  161. length 140
  162. ChangeIfDiminished(I2)
  163. FMT(vowel/ee_5)
  164. endphoneme
  165. phoneme I
  166. vowel starttype #i endtype #i
  167. length 130
  168. IfNextVowelAppend(;)
  169. FMT(vowel/ii_2)
  170. endphoneme
  171. phoneme I2
  172. vowel starttype #i endtype #i
  173. unstressed
  174. length 130
  175. IfNextVowelAppend(;)
  176. FMT(vowel/ii_4)
  177. endphoneme
  178. phoneme I# // used for [I] which may be [@] in some accents
  179. vowel starttype #i endtype #i
  180. unstressed
  181. length 130
  182. IfNextVowelAppend(;)
  183. ChangePhoneme(I2)
  184. endphoneme
  185. phoneme i // optional variant of [I] for end of words
  186. vowel starttype #i endtype #i
  187. ipa ɪ
  188. length 140
  189. IfNextVowelAppend(;)
  190. FMT(vowel/ii_7)
  191. endphoneme
  192. phoneme 0
  193. vowel starttype #o endtype #o
  194. length 140
  195. ChangeIfDiminished(@)
  196. FMT(vowel/0)
  197. endphoneme
  198. phoneme V
  199. vowel starttype #a endtype #@
  200. length 140
  201. ChangeIfDiminished(@)
  202. FMT(vowel/V_2)
  203. endphoneme
  204. phoneme U
  205. vowel starttype #o endtype #o
  206. length 150
  207. FMT(vowel/uu)
  208. endphoneme
  209. phoneme A:
  210. vowel starttype #a endtype #a
  211. length 230
  212. IfNextVowelAppend(r-)
  213. FMT(vowel/aa_2)
  214. endphoneme
  215. phoneme A@ // Used for [A:] when followed by 'r'
  216. vowel starttype #a endtype #a
  217. ipa ɑː
  218. length 230
  219. IfNextVowelAppend(r-)
  220. FMT(vowel/aa_2)
  221. endphoneme
  222. phoneme 3:
  223. vowel starttype #@ endtype #@
  224. length 210
  225. IfNextVowelAppend(r-)
  226. ChangeIfDiminished(@)
  227. FMT(vowel/3_en)
  228. endphoneme
  229. phoneme i:
  230. vowel starttype #i endtype #i
  231. length 175
  232. IfNextVowelAppend(;)
  233. IF prevPh(w) THEN
  234. VowelStart(w/wi2)
  235. ENDIF
  236. FMT(vowel/i_en)
  237. endphoneme
  238. phoneme O:
  239. vowel starttype #o endtype #o
  240. length 230
  241. ChangeIfDiminished(@)
  242. FMT(vowel/oo_en)
  243. endphoneme
  244. phoneme O
  245. vowel starttype #o endtype #o
  246. length 200
  247. ChangeIfDiminished(@)
  248. FMT(vowel/oo_en)
  249. endphoneme
  250. phoneme O@
  251. vowel starttype #o endtype #o
  252. ipa ɔː
  253. length 240
  254. IfNextVowelAppend(r-)
  255. FMT(vowel/oo_en)
  256. endphoneme
  257. phoneme o@
  258. vowel starttype #o endtype #o
  259. ipa ɔː
  260. length 250
  261. IfNextVowelAppend(r-)
  262. FMT(vowel/oo_en)
  263. endphoneme
  264. phoneme u:
  265. vowel starttype #u endtype #u
  266. length 210
  267. IF nextPh(l/2) THEN
  268. FMT(vwl_en/u_L)
  269. ENDIF
  270. IF prevPhW(j) THEN
  271. length 180
  272. ENDIF
  273. FMT(vdiph2/uw_2)
  274. endphoneme
  275. phoneme aU
  276. vowel starttype #a endtype #u
  277. length 230
  278. FMT(vdiph/au)
  279. endphoneme
  280. phoneme oU
  281. vowel starttype #@ endtype #u
  282. ipa əʊ
  283. length 220
  284. FMT(vdiph/@u_en)
  285. endphoneme
  286. phoneme aI
  287. vowel starttype #a endtype #i
  288. length 240
  289. IF nextPh(#a) THEN
  290. AppendPhoneme(;)
  291. ENDIF
  292. FMT(vdiph/ai_2)
  293. endphoneme
  294. phoneme eI
  295. vowel starttype #e endtype #i
  296. length 210
  297. FMT(vdiph/eei)
  298. endphoneme
  299. phoneme OI
  300. vowel starttype #o endtype #i
  301. length 230
  302. FMT(vdiph/ooi)
  303. endphoneme
  304. phoneme e@
  305. vowel starttype #e endtype #@
  306. length 230
  307. IfNextVowelAppend(r-)
  308. FMT(vowel/ee_1)
  309. endphoneme
  310. phoneme i@
  311. vowel starttype #i endtype #@
  312. length 250
  313. IfNextVowelAppend(r-)
  314. FMT(vdiph2/ii@)
  315. endphoneme
  316. phoneme i@3
  317. vowel starttype #i endtype #@
  318. length 250
  319. IfNextVowelAppend(r-)
  320. FMT(vdiph2/ii@)
  321. endphoneme
  322. phoneme U@
  323. vowel starttype #u endtype #@
  324. length 200
  325. IfNextVowelAppend(r-)
  326. IF thisPh(isUnstressed) THEN
  327. FMT(vdiph2/8@)
  328. ENDIF
  329. FMT(vdiph2/uu@)
  330. endphoneme
  331. phoneme aI@
  332. vowel starttype #a endtype #@
  333. length 280
  334. IfNextVowelAppend(r-)
  335. FMT(vwl_en/aI@)
  336. endphoneme
  337. phoneme aI3
  338. vowel starttype #a endtype #@
  339. length 280
  340. ChangePhoneme(aI@)
  341. endphoneme
  342. phoneme aU@
  343. vowel starttype #a endtype #@
  344. length 280
  345. IfNextVowelAppend(r-)
  346. FMT(vwl_en/aU@)
  347. endphoneme
  348. phoneme IR // used for "ir" when [3:] is split (Scottish)
  349. vowel starttype #@ endtype #@
  350. length 190
  351. ipa əɹ
  352. IF nextPhW(r-) THEN
  353. ipa ə
  354. ENDIF
  355. IfNextVowelAppend(r-)
  356. FMT(vowelr/V_r)
  357. endphoneme
  358. phoneme VR // used for "or"/"ur" when [3:] is split (Scottish)
  359. vowel starttype #@ endtype #@
  360. length 210
  361. ipa ʌɹ
  362. IF nextPhW(r-) THEN
  363. ipa ʌ
  364. ENDIF
  365. IfNextVowelAppend(r-)
  366. FMT(vowelr/V3_r)
  367. endphoneme
  368. phoneme o:
  369. vowel starttype #o endtype #o
  370. length 220
  371. FMT(vowel/o)
  372. endphoneme
  373. phoneme A~
  374. vowel starttype #a endtype #a
  375. length 260
  376. FMT(vnasal/aa_n2)
  377. endphoneme
  378. phoneme O~
  379. vowel starttype #o endtype #o
  380. length 240
  381. FMT(vnasal/oo_n2)
  382. endphoneme
  383. phoneme e:
  384. vowel starttype #e endtype #e
  385. length 210
  386. FMT(vowel/e)
  387. endphoneme
  388. phoneme @# // TEST: [@] which is slightly more 'front'
  389. vowel starttype #i endtype #i
  390. unstressed
  391. length 130
  392. FMT(vowel/@_3)
  393. endphoneme