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_us_nyc 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. //*******************************************************************
  2. // VOWELS
  3. //*******************************************************************
  4. phoneme 3
  5. CALL @
  6. ipa ə
  7. endphoneme
  8. phoneme @ // Schwa
  9. vwl starttype #@ endtype #@
  10. unstressed
  11. length 130
  12. IfNextVowelAppend(r-)
  13. IF thisPh(isWordEnd) THEN
  14. FMT(vowel/@_6)
  15. ENDIF
  16. FMT(vowel/@_4)
  17. endphoneme
  18. phoneme @2 // Schwa, changes to I before a vowel
  19. vwl starttype #@ endtype #@
  20. unstressed
  21. length 120
  22. IF nextPh(isVowel) THEN
  23. ChangePhoneme(I2)
  24. ENDIF
  25. FMT(vowel/@_low2)
  26. endphoneme
  27. phoneme a
  28. vwl starttype #e endtype #@
  29. ipa æ
  30. length 210
  31. ChangeIfDiminished(a#)
  32. IF nextPh(m) OR nextPh(n) OR nextPh(g) OR nextPh(b) OR nextPh(d) OR nextPh(S) OR nextPh(f) OR nextPh(T) OR nextPh(s) THEN
  33. IF NOT next2Ph(isVowel) THEN
  34. ipa ɛə
  35. FMT(vwl_en_us_nyc/a_raised)
  36. ENDIF
  37. ELSEIF nextPh(r) AND thisPh(isStressed) THEN
  38. length 190
  39. FMT(vwl_en_us/ar)
  40. ENDIF
  41. FMT(vwl_en_us_nyc/a)
  42. endphoneme
  43. phoneme aa // 'bath' etc.
  44. import_phoneme en-us-nyc/a
  45. endphoneme
  46. phoneme a#
  47. vwl starttype #@ endtype #@
  48. ipa ɐ
  49. unstressed
  50. length 150
  51. IF thisPh(isStressed) THEN
  52. ChangePhoneme(a)
  53. ENDIF
  54. IF nextPhW(r) THEN
  55. ChangePhoneme(3)
  56. ENDIF
  57. FMT(vowel/a#_3)
  58. endphoneme
  59. phoneme E
  60. vwl starttype #e endtype #e
  61. length 190
  62. IF nextPhW(n) THEN
  63. ChangeIfDiminished(@)
  64. ELSE
  65. ChangeIfDiminished(I2)
  66. ENDIF
  67. FMT(vwl_en_us/ee)
  68. endphoneme
  69. phoneme I
  70. vwl starttype #i endtype #i
  71. length 160
  72. IfNextVowelAppend(;)
  73. ChangeIfDiminished(I2)
  74. IF nextPhW(r) THEN
  75. length 200
  76. ENDIF
  77. FMT(vowel/ii_4)
  78. endphoneme
  79. phoneme I2
  80. vwl starttype #i endtype #i
  81. unstressed
  82. length 160
  83. IfNextVowelAppend(;)
  84. FMT(vowel/ii#_3)
  85. endphoneme
  86. phoneme I#
  87. vwl starttype #i endtype #i
  88. unstressed
  89. length 160
  90. ipa ᵻ
  91. // FMT(vowel/@_fnt)
  92. FMT(vowel/ii#)
  93. endphoneme
  94. phoneme I2#
  95. vwl starttype #i endtype #i
  96. unstressed
  97. ChangePhoneme(I#)
  98. endphoneme
  99. phoneme 0
  100. vwl starttype #a endtype #a
  101. length 140
  102. ChangeIfDiminished(@)
  103. IF nextPhW(r) AND next2PhW(isVowel) THEN
  104. ChangePhoneme(A:)
  105. ELIF nextPh(r) THEN
  106. ChangePhoneme(O:)
  107. ENDIF
  108. FMT(vowel/0)
  109. endphoneme
  110. phoneme 02 // becomes V in en-us
  111. vwl starttype #o endtype #o
  112. length 140
  113. ChangePhoneme(V)
  114. endphoneme
  115. phoneme O2
  116. vwl starttype #o endtype #o
  117. length 220
  118. IF nextPhW(r) AND next2PhW(isVowel) THEN
  119. ChangePhoneme(A:)
  120. ENDIF
  121. FMT(vwl_en_us_nyc/0_3)
  122. endphoneme
  123. phoneme V
  124. vwl starttype #a endtype #@
  125. length 170
  126. ChangeIfDiminished(@)
  127. FMT(vowel/V_6)
  128. endphoneme
  129. phoneme U
  130. vwl starttype #o endtype #o
  131. length 145
  132. FMT(vowel/8_2)
  133. endphoneme
  134. phoneme A:
  135. vwl starttype #a endtype #a
  136. length 220
  137. IF nextPhW(r) THEN
  138. FMT(vwl_en_us/aar)
  139. ENDIF
  140. FMT(vwl_en_us_nyc/aa_8)
  141. endphoneme
  142. phoneme A@
  143. vwl starttype #a endtype #a
  144. ipa ɑː
  145. length 230
  146. IfNextVowelAppend(r-)
  147. FMT(vowel/aa_2)
  148. endphoneme
  149. phoneme A# // [a] in British [A:] in American
  150. vwl starttype #a endtype #a
  151. ChangePhoneme(A:)
  152. endphoneme
  153. phoneme 3:
  154. vwl starttype #@ endtype #i
  155. ipa əɪ
  156. length 210
  157. IfNextVowelAppend(r-)
  158. ChangeIfDiminished(3)
  159. FMT(vwl_en_us_nyc/@i)
  160. endphoneme
  161. phoneme i:
  162. vwl starttype #i endtype #i
  163. length 180
  164. IfNextVowelAppend(;)
  165. FMT(vowel/i_en)
  166. endphoneme
  167. phoneme O:
  168. vwl starttype #o endtype #@
  169. length 220
  170. ChangeIfDiminished(@)
  171. IF nextPhW(r) AND next2PhW(isVowel) THEN
  172. ChangePhoneme(A:)
  173. ENDIF
  174. IF nextPhW(r) THEN
  175. FMT(vwl_en_us/oor)
  176. ENDIF
  177. FMT(vwl_en_us_nyc/0_3)
  178. endphoneme
  179. phoneme O@
  180. vwl starttype #o endtype #@
  181. length 240
  182. ipa ɔː
  183. IfNextVowelAppend(r)
  184. FMT(vowel/oo_en)
  185. endphoneme
  186. phoneme o@
  187. vwl starttype #o endtype #o
  188. length 250
  189. ipa ɔː
  190. IfNextVowelAppend(r)
  191. FMT(vowel/oo_en)
  192. endphoneme
  193. phoneme O
  194. vwl starttype #o endtype #o
  195. length 200
  196. ChangeIfDiminished(@)
  197. IF nextPhW(r) AND next2PhW(isVowel) THEN
  198. ChangePhoneme(A:)
  199. ENDIF
  200. FMT(vwl_en_us_nyc/0_3)
  201. endphoneme
  202. phoneme u:
  203. vwl starttype #u endtype #u
  204. length 190
  205. IF prevPhW(j) AND NOT thisPh(isWordEnd) THEN
  206. length 160
  207. ENDIF
  208. FMT(vdiph2/uw_6)
  209. endphoneme
  210. phoneme aU
  211. vwl starttype #a endtype #o
  212. length 235
  213. FMT(vdiph/aoo)
  214. endphoneme
  215. phoneme oU
  216. vwl starttype #@ endtype #u
  217. length 230
  218. FMT(vdiph/8u)
  219. endphoneme
  220. phoneme aI
  221. vwl starttype #a endtype #i
  222. length 240
  223. IF nextPh(#a) OR nextPh(#o) THEN
  224. AppendPhoneme(;)
  225. ENDIF
  226. FMT(vwl_en_us/ai)
  227. endphoneme
  228. phoneme eI
  229. vwl starttype #e endtype #i
  230. length 220
  231. FMT(vdiph2/ei_4)
  232. endphoneme
  233. phoneme OI
  234. vwl starttype #o endtype #i
  235. length 270
  236. FMT(vdiph/oi)
  237. endphoneme
  238. phoneme e@
  239. vwl starttype #e endtype #@
  240. length 230
  241. IfNextVowelAppend(r-)
  242. FMT(vowel/ee_1)
  243. endphoneme
  244. phoneme i
  245. vwl starttype #i endtype #i
  246. unstressed
  247. ipa i
  248. length 170
  249. IfNextVowelAppend(;)
  250. IF NOT thisPh(isFinalVowel) THEN
  251. length 130
  252. FMT(vowel/ii_4)
  253. ENDIF
  254. FMT(vowel/ii_final)
  255. endphoneme
  256. phoneme i@
  257. vwl starttype #i endtype #@
  258. length 250
  259. FMT(vdiph2/ii@) // don't append [r] before a vowel
  260. endphoneme
  261. phoneme i@3
  262. vwl starttype #i endtype #@
  263. length 250
  264. IF MbrolaSynth THEN
  265. ChangePhoneme(i@)
  266. ENDIF
  267. IfNextVowelAppend(r-)
  268. FMT(vdiph2/ii@)
  269. endphoneme
  270. phoneme U@
  271. vwl starttype #u endtype #@
  272. length 200
  273. IfNextVowelAppend(r-)
  274. IF thisPh(isUnstressed) THEN
  275. FMT(vdiph2/8@)
  276. ENDIF
  277. FMT(vdiph2/uu@)
  278. endphoneme
  279. phoneme aI@
  280. vwl starttype #a endtype #@
  281. length 300
  282. ipa aɪə
  283. IfNextVowelAppend(r-)
  284. FMT(vwl_en_us/ai@)
  285. endphoneme
  286. phoneme aI3
  287. vwl starttype #a endtype #@
  288. length 280
  289. ChangePhoneme(aI@)
  290. endphoneme
  291. phoneme aU@ // h**our**
  292. vwl starttype #a endtype #@
  293. length 280
  294. IfNextVowelAppend(r-)
  295. FMT(vwl_en/aU@)
  296. endphoneme
  297. //==============
  298. // Consonants
  299. //==============
  300. phoneme h
  301. vls glt apr
  302. lengthmod 3
  303. ipa h
  304. IF nextPh(j) THEN
  305. ChangePhoneme(NULL) // drop "h" for "human", "huge", etc.
  306. ELIF nextPh(#@) THEN
  307. WAV(h/h@)
  308. ELIF nextPh(#a) THEN
  309. WAV(h/ha)
  310. ELIF nextPh(#e) THEN
  311. WAV(h/he)
  312. ELIF nextPh(#i) THEN
  313. WAV(h/hi)
  314. ELIF nextPh(#o) THEN
  315. WAV(h/ho)
  316. ELIF nextPh(#u) THEN
  317. WAV(h/hu)
  318. ENDIF
  319. WAV(h/h_, 70) // no vowel following
  320. endphoneme
  321. phoneme r/ // used for [r] when not preceding a vowel
  322. liquid
  323. lengthmod 2 //
  324. // formants NULL
  325. endphoneme
  326. phoneme t# // reduced [t] as in "city"
  327. vcd alv stp
  328. ipa ɾ
  329. lengthmod 5
  330. Vowelin f1=1 f2=1700 -300 300 f3=-100 80
  331. Vowelout f1=2 f2=1700 -300 300 f3=-100 80
  332. IF nextPh(isNotVowel) THEN
  333. ChangePhoneme(t)
  334. ENDIF
  335. IF KlattSynth THEN
  336. IF PreVoicing THEN
  337. FMT(klatt/x_tap)
  338. ENDIF
  339. FMT(klatt/tap2) addWav(x/d, 70)
  340. ENDIF
  341. IF PreVoicing THEN
  342. FMT(d/x_tap)
  343. ENDIF
  344. FMT(d/tap2) addWav(x/d, 50)
  345. endphoneme
  346. phoneme t
  347. vls alv stp
  348. voicingswitch d
  349. lengthmod 2
  350. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  351. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  352. IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN
  353. IF NOT next2PhW(n) OR nextPhW(3:) THEN
  354. IF prevPhW(isVowel) THEN
  355. ChangePhoneme(t#)
  356. ELIF prevPhW(n) THEN
  357. WAV(ustop/t_hi, 60)
  358. ENDIF
  359. ENDIF
  360. ENDIF
  361. IF nextPh(isPause2) THEN
  362. WAV(ustop/t_dnt)
  363. ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
  364. WAV(ustop/tr)
  365. ELIF nextPh(@-) THEN
  366. WAV(ustop/t_hi, 50)
  367. ENDIF
  368. WAV(ustop/t_dnt, 90)
  369. endphoneme
  370. phoneme d
  371. CALL d[
  372. endphoneme
  373. phoneme t2 // [t] which doesn't reduce
  374. import_phoneme base1/t
  375. endphoneme
  376. phoneme ? // glottal stp
  377. vls glt stp
  378. lengthmod 1 // 5? longer preceding vowel
  379. nolink
  380. Vowelin glstop
  381. Vowelout glstop
  382. WAV(ustop/null)
  383. endphoneme
  384. phoneme l/2 // 'dark' [l] after a vowel
  385. liquid
  386. lengthmod 7
  387. CALL vowelstart_l
  388. IF prevPhW(j) THEN
  389. FMT(l/L2_eL)
  390. ENDIF
  391. IF prevPhW(w) THEN
  392. FMT(l/L2_uL)
  393. ENDIF
  394. PrevVowelEndings
  395. VowelEnding(l/L2_@L, -60)
  396. VowelEnding(l/L2_aL, -50)
  397. VowelEnding(l/L2_eL, -40)
  398. VowelEnding(l/L2_iL, -30)
  399. VowelEnding(l/L2_oL, -50)
  400. VowelEnding(l/L2_uL, -40)
  401. EndSwitch
  402. endphoneme