lang=en: Don't treat "Mc" prefix as a separate word, combine it with the following word. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@113 d46cf337-b52f-0410-862d-fd96e6ae7743master
| tS v w z | tS v w z | ||||
| Dictionary ta_dict | |||||
| Dictionary pt_dict | Dictionary pt_dict | ||||
| & &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A |
| irc $abbrev | irc $abbrev | ||||
| lbs paUndz | lbs paUndz | ||||
| ltd lImItId | ltd lImItId | ||||
| mc m@k | |||||
| mc m@k $alt2 // combine with the following word | |||||
| oem $abbrev | oem $abbrev | ||||
| ok $abbrev | ok $abbrev | ||||
| omg $abbrev | omg $abbrev |
| li) mb (e m | li) mb (e m | ||||
| o) mb (e m | o) mb (e m | ||||
| du) mb (e m | du) mb (e m | ||||
| _) m (c m@ | |||||
| _) mc m@k | |||||
| _) mc (A mak | |||||
| _) mc (-A mak | |||||
| mn (_ m | mn (_ m | ||||
| _) mn n | _) mn n | ||||
| &B) me (_ mI2 | &B) me (_ mI2 | ||||
| t) y (rann I | t) y (rann I | ||||
| ph) ys (i Iz | ph) ys (i Iz | ||||
| yr (_ @ | yr (_ @ | ||||
| yre (_ aI3 | |||||
| c) y (ni I | c) y (ni I | ||||
| l) y (ri I | l) y (ri I | ||||
| p) y (ra I | p) y (ra I |
| _dpt _:z'api*k&_ | _dpt _:z'api*k&_ | ||||
| _0and i | _0and i | ||||
| // Roman numerals | |||||
| ii $abbrev | |||||
| iii $abbrev | |||||
| iv $abbrev | |||||
| vii $abbrev | |||||
| viii $abbrev | |||||
| ix $abbrev | |||||
| xi $abbrev | |||||
| xii $abbrev | |||||
| xiii $abbrev | |||||
| xiv $abbrev | |||||
| xvi $abbrev | |||||
| xvii $abbrev | |||||
| xviii $abbrev | |||||
| xix $abbrev | |||||
| xxi $abbrev | |||||
| xxii $abbrev | |||||
| xxiii $abbrev | |||||
| xxiv $abbrev | |||||
| xxvi $abbrev | |||||
| xxvii $abbrev | |||||
| xxviii $abbrev | |||||
| xxix $abbrev | |||||
| xxxi $abbrev | |||||
| xxxii $abbrev | |||||
| xxxiii $abbrev | |||||
| xxxiv $abbrev | |||||
| xxxvi $abbrev | |||||
| xxxvii $abbrev | |||||
| xxxviii $abbrev | |||||
| xxxix $abbrev | |||||
| // Abbreviations | // Abbreviations | ||||
| // This file is UTF8 encoded | |||||
| // Spelling to phoneme words and exceptions for Tamil | |||||
| // This file is UTF8 encoded | |||||
| // Spelling to phoneme rules for Tamil | |||||
| .replace | |||||
| ௦ 0 // Tamil numbers | |||||
| ௧ 1 | |||||
| ௨ 2 | |||||
| ௩ 3 | |||||
| ௪ 4 | |||||
| ௫ 5 | |||||
| ௬ 6 | |||||
| ௭ 7 | |||||
| ௮ 8 | |||||
| ௯ 9 | |||||
| .group 0xe0ae | |||||
| ஂ // anusvara | |||||
| ஃ // visarga | |||||
| அ a | |||||
| ஆ a: | |||||
| இ i | |||||
| ஈ i: | |||||
| உ u | |||||
| ஊ u: | |||||
| எ e | |||||
| ஏ e: | |||||
| ஐ E: | |||||
| ஒ o | |||||
| ஓ o: | |||||
| ஔ aU | |||||
| // consonants | |||||
| க ga // inter-vocalic, unless there is virama before or after | |||||
| க (B g | |||||
| க (் g | |||||
| ்) க ga | |||||
| ்) க (B g | |||||
| _) க ka | |||||
| _) க (B k | |||||
| க்க ka | |||||
| க்க (B k | |||||
| ங Na | |||||
| ங (B N | |||||
| ச dZa | |||||
| ச (B dZ | |||||
| _) ச sa | |||||
| _) ச (B s | |||||
| ச்ச tSa | |||||
| ச்ச (B tS | |||||
| ஜ dZa | |||||
| ஜ (B dZ | |||||
| ஞ n^a | |||||
| ஞ (B n^ | |||||
| ட d.a | |||||
| ட (B d. | |||||
| _) ட t.a | |||||
| _) ட (B t. | |||||
| ட்ட t.a | |||||
| ட்ட (B t. | |||||
| ண n.a | |||||
| ண (B n. | |||||
| த da | |||||
| த (B d | |||||
| _) த ta | |||||
| _) த (B t | |||||
| த்த ta | |||||
| த்த (B t | |||||
| ந na | |||||
| ந (B n | |||||
| ன na | |||||
| ன (B n | |||||
| ப ba | |||||
| ப (B b | |||||
| _) ப pa | |||||
| _) ப (B p | |||||
| ப்ப pa | |||||
| ப்ப (B p | |||||
| ம ma | |||||
| ம (B m | |||||
| ய ja | |||||
| ய (B j | |||||
| ர ra | |||||
| ர (B r | |||||
| ற Ra | |||||
| ற (B R | |||||
| ற் (ற t // RR -> tR | |||||
| ல la | |||||
| ல (B l | |||||
| ள l/2a // this should be [l.] not [l/2] | |||||
| ள (B l/2 | |||||
| ழ z.a | |||||
| ழ (B z. | |||||
| வ va | |||||
| வ (B v | |||||
| ஶ Sa | |||||
| ஶ (B S | |||||
| ஷ s.a | |||||
| ஷ (B s. | |||||
| ஸ sa | |||||
| ஸ (B s | |||||
| ஹ ha | |||||
| ஹ (B h | |||||
| // combining vowels | |||||
| ா a: | |||||
| ி i | |||||
| .group 0xe0af | |||||
| ீ i: | |||||
| ு u | |||||
| ூ u: | |||||
| ெ e | |||||
| ே e: | |||||
| ை E: | |||||
| ொ o | |||||
| ோ o: | |||||
| ௌ aU | |||||
| ் // virama | |||||
| ௗ : // aU length mark | |||||
| .group | |||||
| $ dola |
| stressLength 170 170 190 190 0 0 230 240 | stressLength 170 170 190 190 0 0 230 240 | ||||
| dictrules 1 | dictrules 1 | ||||
| words 1 | |||||
| words 3 | |||||
| name tamil-test | |||||
| language ta | |||||
| gender male | |||||
| 41 phoneme tables | |||||
| 42 phoneme tables | |||||
| new total | new total | ||||
| base 96 96 | base 96 96 | ||||
| base2 24 115 | base2 24 115 | ||||
| fr 34 118 | fr 34 118 | ||||
| fr_ca 11 118 | fr_ca 11 118 | ||||
| hi 50 132 | hi 50 132 | ||||
| ta 12 134 | |||||
| hu 23 112 | hu 23 112 | ||||
| nl 26 117 | nl 26 117 | ||||
| pl 15 107 | pl 15 107 | ||||
| cs 6 125 | cs 6 125 | ||||
| hr 20 130 | hr 20 130 | ||||
| mk 3 131 | mk 3 131 | ||||
| sr 11 130 | |||||
| sr 14 130 | |||||
| ru 38 126 | ru 38 126 | ||||
| it 17 118 | it 17 118 | ||||
| la 21 114 | la 21 114 | ||||
| [r] cy | [r] cy | ||||
| [r] nl | [r] nl | ||||
| [R] sk | [R] sk | ||||
| [r*] sr | |||||
| [x] pt | [x] pt | ||||
| r3/r_trill2 [R] base | r3/r_trill2 [R] base | ||||
| [R] hr | [R] hr | ||||
| [r] nl | [r] nl | ||||
| r3/r_trill.wav [R2] base | r3/r_trill.wav [R2] base | ||||
| [R] sk | [R] sk | ||||
| [r*] sr | |||||
| [x] pt | [x] pt | ||||
| r3/r_u [(u)] base | r3/r_u [(u)] base | ||||
| r3/rx [*] base | r3/rx [*] base | ||||
| [t] hu | [t] hu | ||||
| [t] pl | [t] pl | ||||
| [t] hr | [t] hr | ||||
| [t] sr | |||||
| [t] ru | [t] ru | ||||
| [t;] ro | [t;] ro | ||||
| [t[] vi | [t[] vi | ||||
| ustop/ts_pzd2 [c] hi | ustop/ts_pzd2 [c] hi | ||||
| [c] hu | [c] hu | ||||
| ustop/t_sr [d] sr | ustop/t_sr [d] sr | ||||
| [t] sr | |||||
| ustop/ts_rfx [ts.] zh | ustop/ts_rfx [ts.] zh | ||||
| ustop/ts_rfx_unasp [ts.] zh | ustop/ts_rfx_unasp [ts.] zh | ||||
| ustop/ts_sr.wav [tS;] sr | ustop/ts_sr.wav [tS;] sr | ||||
| [a] zh | [a] zh | ||||
| vowel/a# [a/] base2 | vowel/a# [a/] base2 | ||||
| [a2] en_sc | [a2] en_sc | ||||
| [&] sr | |||||
| [&] pt | [&] pt | ||||
| [&/] pt | [&/] pt | ||||
| [a2] en_wi | [a2] en_wi | ||||
| [A:] en_wi | [A:] en_wi | ||||
| [A@] en_wi | [A@] en_wi | ||||
| [aa] en_wi | [aa] en_wi | ||||
| vowel/a#_2 [&] hr | |||||
| vowel/a#_2 [a] ta | |||||
| [&] hr | |||||
| [a2] sv | [a2] sv | ||||
| [&] is | [&] is | ||||
| [a/] sw | [a/] sw | ||||
| [a] sw | [a] sw | ||||
| vowel/aa [a] fi | vowel/aa [a] fi | ||||
| [A] fr_ca | [A] fr_ca | ||||
| [a:] ta | |||||
| [A] no | [A] no | ||||
| [A:] no | [A:] no | ||||
| [aa] zhy | [aa] zhy | ||||
| [e] eo | [e] eo | ||||
| [e] fr | [e] fr | ||||
| [E:] fr | [E:] fr | ||||
| [e] ta | |||||
| [e:] ta | |||||
| [e] hr | [e] hr | ||||
| [e/] it | [e/] it | ||||
| [e:] la | [e:] la | ||||
| [i:] cy | [i:] cy | ||||
| [i] eo | [i] eo | ||||
| [I] fr | [I] fr | ||||
| [i:] ta | |||||
| [i:] hu | [i:] hu | ||||
| [i] pl | [i] pl | ||||
| [i] it | [i] it | ||||
| [i/] pt_pt | [i/] pt_pt | ||||
| [y] ro | [y] ro | ||||
| vowel/i_6 [i:] en_us | vowel/i_6 [i:] en_us | ||||
| [i] ta | |||||
| [i] hr | [i] hr | ||||
| vowel/i_en [i:] en | vowel/i_en [i:] en | ||||
| [i] vi | [i] vi | ||||
| [I2] en_wi | [I2] en_wi | ||||
| vowel/ii_6 [I] en_wm | vowel/ii_6 [I] en_wm | ||||
| [I2] en_wm | [I2] en_wm | ||||
| [I] sr | |||||
| vowel/ii_en [i] en | vowel/ii_en [i] en | ||||
| vowel/@_low [3] en_rp | vowel/@_low [3] en_rp | ||||
| [@] en_rp | [@] en_rp | ||||
| [o:] en | [o:] en | ||||
| [o:] de | [o:] de | ||||
| [o] hi | [o] hi | ||||
| [o] ta | |||||
| [o:] ta | |||||
| [o] it | [o] it | ||||
| [o/] it | [o/] it | ||||
| [o:] la | [o:] la | ||||
| [u] sk | [u] sk | ||||
| [U] hr | [U] hr | ||||
| [u] ro | [u] ro | ||||
| vowel/u#_2 [u-] sv | |||||
| vowel/u#_2 [u-] ta | |||||
| [u-] sv | |||||
| vowel/u_3 [yU] ro | vowel/u_3 [yU] ro | ||||
| vowel/u_4 [u:] en_n | vowel/u_4 [u:] en_n | ||||
| vowel/u#_4 [U] en_sc | vowel/u#_4 [U] en_sc | ||||
| [u] fi | [u] fi | ||||
| [u] fr_ca | [u] fr_ca | ||||
| [u:] hi | [u:] hi | ||||
| [u:] ta | |||||
| [u:] hu | [u:] hu | ||||
| [u] nl | [u] nl | ||||
| [u] pl | [u] pl | ||||
| vowel/uu_bck [U] en_n | vowel/uu_bck [U] en_n | ||||
| [U] fr_ca | [U] fr_ca | ||||
| [U] hi | [U] hi | ||||
| [u] ta | |||||
| [u] hu | [u] hu | ||||
| [U] pt | [U] pt | ||||
| [U] no | [U] no |
| // Only phonemes which differ from the inherited phonemes need | // Only phonemes which differ from the inherited phonemes need | ||||
| // to be included here. | // to be included here. | ||||
| phoneme I | |||||
| vowel starttype (i) endtype (i) | |||||
| length 120 | |||||
| formants vowel/ii_6 | |||||
| linkout ; | |||||
| endphoneme | |||||
| phoneme & | |||||
| vowel starttype (a) endtype (a) | |||||
| length 140 | |||||
| formants vowel/a# | |||||
| endphoneme | |||||
| phoneme r* // this is [R] from Slovak/Czech | |||||
| liquid | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-300 80 | |||||
| vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk | |||||
| formants r3/r_trill+r3/r_trill.wav%50 | |||||
| trill | |||||
| lengthmod 6 | |||||
| endphoneme | |||||
| phoneme t // dental variant of /t/ | phoneme t // dental variant of /t/ | ||||
| vls dnt stop | vls dnt stop | ||||
| vowelin f1=0 f2=1600 -300 300 f3=-100 80 | vowelin f1=0 f2=1600 -300 300 f3=-100 80 | ||||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t_sr%50 | |||||
| before _ ustop/t_sr%35 | |||||
| wave ustop/t_dnt%50 | |||||
| before _ ustop/t_dnt%50 | |||||
| switchvoicing d | switchvoicing d | ||||
| endphoneme | endphoneme | ||||
| vls pla afr sibilant | vls pla afr sibilant | ||||
| vowelin f1=0 f2=2300 200 400 f3=-100 80 | vowelin f1=0 f2=2300 200 400 f3=-100 80 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/tsh_sr.wav | |||||
| before _ ustop/tsh_sr.wav | |||||
| wave ustop/tsh_sr.wav%50 | |||||
| before _ ustop/tsh_sr.wav%50 | |||||
| switchvoicing dZ | switchvoicing dZ | ||||
| endphoneme | endphoneme | ||||
| endphoneme | endphoneme | ||||
| phoneme Z | phoneme Z | ||||
| vcd pla frc sibilant | vcd pla frc sibilant | ||||
| vowelin f1=0 f2=2000 0 300 f3=-200 80 | vowelin f1=0 f2=2000 0 300 f3=-200 80 | ||||
| vowelout f1=2 f2=2000 0 300 f3=-200 80 brk | vowelout f1=2 f2=2000 0 300 f3=-200 80 brk | ||||
| formants voc/zh+ufric/sh_sr.wav | |||||
| before _ voc/zh+ufric/sh_sr.wav | |||||
| formants voc/zh+ufric/sh_sr.wav%60 | |||||
| before _ voc/zh+ufric/sh_sr.wav%50 | |||||
| lengthmod 6 | lengthmod 6 | ||||
| switchvoicing S | switchvoicing S | ||||
| endphoneme | endphoneme | ||||
| vowelout f1=0 f2=2100 100 300 f3=-100 80 | vowelout f1=0 f2=2100 100 300 f3=-100 80 | ||||
| length 100 | length 100 | ||||
| lengthmod 3 | lengthmod 3 | ||||
| wave ufric/sh_sr.wav | |||||
| before _ ufric/sh_sr.wav | |||||
| wave ufric/sh_sr.wav%70 | |||||
| before _ ufric/sh_sr.wav%60 | |||||
| switchvoicing Z | switchvoicing Z | ||||
| endphoneme | endphoneme | ||||
| // Phonemes for Tamil | |||||
| // This inherits from ph_hindi | |||||
| phoneme a | |||||
| vowel starttype (@) endtype (@) | |||||
| length 130 | |||||
| formants vowel/a#_2 | |||||
| endphoneme | |||||
| phoneme a: | |||||
| vowel starttype (a) endtype (a) | |||||
| length 270 | |||||
| formants vowel/aa | |||||
| endphoneme | |||||
| phoneme e | |||||
| vowel starttype (e) endtype (e) | |||||
| length 130 | |||||
| formants vowel/e | |||||
| endphoneme | |||||
| phoneme e: | |||||
| vowel starttype (e) endtype (e) | |||||
| length 270 | |||||
| formants vowel/e | |||||
| endphoneme | |||||
| phoneme i | |||||
| vowel starttype (i) endtype (i) | |||||
| length 130 | |||||
| formants vowel/i_6 | |||||
| endphoneme | |||||
| phoneme i: | |||||
| vowel starttype (i) endtype (i) | |||||
| length 270 | |||||
| formants vowel/i | |||||
| endphoneme | |||||
| phoneme o | |||||
| vowel starttype (o) endtype (o) | |||||
| length 130 | |||||
| formants vowel/o | |||||
| endphoneme | |||||
| phoneme o: | |||||
| vowel starttype (o) endtype (o) | |||||
| length 270 | |||||
| formants vowel/o | |||||
| endphoneme | |||||
| phoneme u | |||||
| vowel starttype (u) endtype (u) | |||||
| length 130 | |||||
| formants vowel/uu_bck | |||||
| endphoneme | |||||
| phoneme u: | |||||
| vowel starttype (u) endtype (u) | |||||
| length 270 | |||||
| formants vowel/u_bck | |||||
| endphoneme | |||||
| phoneme u- | |||||
| vowel starttype (u) endtype (u) | |||||
| length 130 | |||||
| formants vowel/u#_2 | |||||
| endphoneme | |||||
| //based on "phonemes" | |||||
| //==================================================== | |||||
| // Tone Numbers | |||||
| //==================================================== | |||||
| phoneme 11 // tone: low level | |||||
| stress | |||||
| tone 15 10 envelope/p_fall NULL | |||||
| endphoneme | |||||
| phoneme 21 // tone: low fall | |||||
| stress | |||||
| tone 20 10 envelope/p_fall NULL | |||||
| endphoneme | |||||
| phoneme 214 // tone: fall rise | |||||
| stress | |||||
| tone 20 40 envelope/p_214 NULL | |||||
| endphoneme | |||||
| phoneme 22 // tone: mid-low level | |||||
| stress | |||||
| tone 21 19 envelope/p_fall NULL | |||||
| endphoneme | |||||
| phoneme 33 // tone: mid level | |||||
| stress | |||||
| tone 31 29 envelope/p_fall NULL | |||||
| endphoneme | |||||
| phoneme 35 // tone: mid rise | |||||
| stress | |||||
| tone 30 50 envelope/p_rise NULL | |||||
| endphoneme | |||||
| phoneme 44 // tone: mid-high level | |||||
| stress | |||||
| tone 41 39 envelope/p_level NULL | |||||
| endphoneme | |||||
| phoneme 51 // tone: high fall | |||||
| stress | |||||
| tone 50 10 envelope/p_fall NULL | |||||
| endphoneme | |||||
| phoneme 53 // tone: high fall | |||||
| stress | |||||
| tone 50 30 envelope/p_fall NULL | |||||
| endphoneme | |||||
| phoneme 55 // tone: high level | |||||
| stress | |||||
| tone 50 50 envelope/p_level NULL | |||||
| endphoneme | |||||
| //==================================================== | |||||
| // Consonants | |||||
| //==================================================== | |||||
| phoneme p | |||||
| vls blb stop | |||||
| vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||||
| vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||||
| lengthmod 2 | |||||
| wave ustop/p_unasp | |||||
| endphoneme | |||||
| phoneme ph | |||||
| vls blb stop | |||||
| vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||||
| vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||||
| lengthmod 2 | |||||
| wave ustop/p_ | |||||
| endphoneme | |||||
| phoneme m //not clear before some vowel | |||||
| vcd blb nasal | |||||
| vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk | |||||
| lengthmod 2 | |||||
| formants m/_m | |||||
| endphoneme | |||||
| phoneme f //not clear before some vowel | |||||
| vls lbd frc | |||||
| vowelout f1=0 f2=1000 -500 -350 f3=-200 80 | |||||
| lengthmod 2 | |||||
| wave ufric/f | |||||
| endphoneme | |||||
| phoneme t | |||||
| vls alv stop | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||||
| lengthmod 2 | |||||
| wave ustop/t_unasp | |||||
| endphoneme | |||||
| phoneme th | |||||
| vls alv stop | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||||
| lengthmod 2 | |||||
| wave ustop/t_ | |||||
| endphoneme | |||||
| phoneme n | |||||
| vcd alv nasal | |||||
| vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk | |||||
| length 30 | |||||
| lengthmod 2 | |||||
| formants n/_n | |||||
| before _ n/n_ | |||||
| before (i) n/ni | |||||
| endphoneme | |||||
| phoneme l | |||||
| liquid | |||||
| vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=20 | |||||
| lengthmod 2 | |||||
| formants l/_l | |||||
| before (i) l/li | |||||
| endphoneme | |||||
| phoneme k | |||||
| vls uvl stop | |||||
| vowelin f1=1 f2=1700 0 200 f3=-300 80 f4 | |||||
| vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30 | |||||
| lengthmod 2 | |||||
| wave ustop/k_unasp_ | |||||
| endphoneme | |||||
| phoneme kh | |||||
| vls uvl stop | |||||
| vowelin f1=1 f2=1700 0 200 f3=-300 80 f4 | |||||
| vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30 | |||||
| lengthmod 2 | |||||
| wave ustop/k_ | |||||
| endphoneme | |||||
| phoneme tS; | |||||
| vls pal afr sibilant palatal | |||||
| vowelin f1=0 f2=2700 400 600 f3=300 80 | |||||
| lengthmod 2 | |||||
| wave ustop/tsh_pzd_unasp | |||||
| endphoneme | |||||
| phoneme tS;h | |||||
| vls pal afr sibilant palatal | |||||
| vowelin f1=0 f2=2700 400 600 f3=300 80 | |||||
| lengthmod 2 | |||||
| wave ustop/tsh_pzd | |||||
| endphoneme | |||||
| phoneme S; | |||||
| vls pla frc sibilant | |||||
| vowelin f1=0 f2=2700 400 600 f3=300 80 | |||||
| lengthmod 2 | |||||
| wave ufric/sh_pzd | |||||
| endphoneme | |||||
| phoneme ts | |||||
| vls alv afr sibilant | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||||
| lengthmod 2 | |||||
| wave ustop/ts_unasp | |||||
| endphoneme | |||||
| phoneme tsh | |||||
| vls alv afr sibilant | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||||
| lengthmod 2 | |||||
| wave ustop/ts | |||||
| endphoneme | |||||
| phoneme ts. | |||||
| vls pla frc sibilant | |||||
| vowelin f1=0 f2=1800 -100 300 f3=-300 80 | |||||
| vowelout f1=0 f2=1800 -100 300 f3=-300 80 | |||||
| length 100 | |||||
| lengthmod 3 | |||||
| wave ustop/ts_rfx_unasp | |||||
| endphoneme | |||||
| phoneme ts.h | |||||
| vls pla frc sibilant | |||||
| vowelin f1=0 f2=1800 -100 300 f3=-300 80 | |||||
| vowelout f1=0 f2=1800 -100 300 f3=-300 80 | |||||
| length 100 | |||||
| lengthmod 3 | |||||
| wave ustop/ts_rfx | |||||
| endphoneme | |||||
| phoneme j | |||||
| liquid | |||||
| palatal | |||||
| length 40 | |||||
| formants j/_j | |||||
| lengthmod 1 | |||||
| endphoneme | |||||
| phoneme w | |||||
| liquid | |||||
| length 40 | |||||
| lengthmod 1 | |||||
| formants w/_w | |||||
| endphoneme | |||||
| //==================================================== | |||||
| // Vowels and Diphtnongs | |||||
| //==================================================== | |||||
| phoneme N //should be more different from n | |||||
| vcd vel nasal | |||||
| length 10 | |||||
| formants NULL | |||||
| before _ nn/nn_ | |||||
| after _ nn/_nn | |||||
| lengthmod 1 | |||||
| after (i) nn/inn | |||||
| endphoneme | |||||
| phoneme a | |||||
| vowel starttype (a) endtype (a) | |||||
| length 250 | |||||
| formants vowel/a | |||||
| endphoneme | |||||
| phoneme A | |||||
| vowel starttype (a) endtype (a) | |||||
| length 250 | |||||
| formants vowel/aa | |||||
| before N vowel/aa_2 | |||||
| endphoneme | |||||
| phoneme ai | |||||
| vowel starttype (a) endtype (i) | |||||
| length 250 | |||||
| formants vdiph/ae | |||||
| endphoneme | |||||
| phoneme Au | |||||
| vowel starttype (a) endtype (u) | |||||
| length 250 | |||||
| formants vwl_zh/aau | |||||
| endphoneme | |||||
| phoneme @ | |||||
| vowel starttype (@) endtype (@) | |||||
| length 230 | |||||
| formants vowel/3_2%120 | |||||
| before N vowel/@_bck | |||||
| endphoneme | |||||
| phoneme @r //tmp use V3_r | |||||
| vowel starttype (@) endtype (@) | |||||
| length 250 | |||||
| formants vowelr/V3_r | |||||
| endphoneme | |||||
| phoneme E | |||||
| vowel starttype (e) endtype (e) | |||||
| length 250 | |||||
| formants vowel/ee_2 | |||||
| endphoneme | |||||
| phoneme ei | |||||
| vowel starttype (e) endtype (i) | |||||
| length 250 | |||||
| formants vdiph/ei | |||||
| endphoneme | |||||
| phoneme i | |||||
| vowel starttype (i) endtype (i) | |||||
| length 250 | |||||
| formants vowel/i | |||||
| before N vowel/ii_2 | |||||
| endphoneme | |||||
| phoneme i[ //after ts tsh s | |||||
| vowel starttype (i) endtype (i) | |||||
| length 250 | |||||
| formants vwl_zh/i_dnt | |||||
| endphoneme | |||||
| phoneme i. //after ts. ts.h s. z. | |||||
| vowel starttype (i) endtype (i) | |||||
| length 250 | |||||
| formants vwl_zh/i_rfx | |||||
| endphoneme | |||||
| phoneme iA //try more before N | |||||
| vowel starttype (i) endtype (a) | |||||
| length 250 | |||||
| formants vwl_zh/iaa | |||||
| endphoneme | |||||
| phoneme iAu | |||||
| vowel starttype (i) endtype (u) | |||||
| length 250 | |||||
| formants vwl_zh/iaau | |||||
| endphoneme | |||||
| phoneme iE | |||||
| vowel starttype (i) endtype (e) | |||||
| length 250 | |||||
| formants vwl_zh/iee | |||||
| endphoneme | |||||
| phoneme io | |||||
| vowel starttype (i) endtype (o) | |||||
| length 250 | |||||
| formants vdiph2/iioo | |||||
| endphoneme | |||||
| phoneme iou | |||||
| vowel starttype (i) endtype (u) | |||||
| length 250 | |||||
| formants vwl_zh/iou | |||||
| endphoneme | |||||
| phoneme o | |||||
| vowel starttype (o) endtype (o) | |||||
| length 250 | |||||
| formants vowel/o | |||||
| endphoneme | |||||
| phoneme o- | |||||
| vowel starttype (o) endtype (o) | |||||
| length 250 | |||||
| formants vowel/o- | |||||
| endphoneme | |||||
| phoneme ou | |||||
| vowel starttype (o) endtype (u) | |||||
| length 250 | |||||
| formants vdiph/8u | |||||
| endphoneme | |||||
| phoneme u //try more before N | |||||
| vowel starttype (u) endtype (u) | |||||
| length 250 | |||||
| formants vowel/u | |||||
| before N vowel/o | |||||
| endphoneme | |||||
| phoneme uA | |||||
| vowel starttype (u) endtype (a) | |||||
| length 250 | |||||
| formants vwl_zh/uaa | |||||
| endphoneme | |||||
| phoneme ua | |||||
| vowel starttype (u) endtype (a) | |||||
| length 250 | |||||
| formants vdiph2/oa | |||||
| endphoneme | |||||
| phoneme uai | |||||
| vowel starttype (u) endtype (i) | |||||
| length 250 | |||||
| formants vwl_zh/uai | |||||
| endphoneme | |||||
| phoneme u@ | |||||
| vowel starttype (u) endtype (@) | |||||
| length 250 | |||||
| formants vdiph2/o@ | |||||
| endphoneme | |||||
| phoneme uei | |||||
| vowel starttype (u) endtype (i) | |||||
| length 250 | |||||
| formants vwl_zh/uei | |||||
| endphoneme | |||||
| phoneme uo | |||||
| vowel starttype (u) endtype (o) | |||||
| length 250 | |||||
| formants vwl_zh/uo | |||||
| endphoneme | |||||
| phoneme y //try more before N | |||||
| vowel starttype (i) endtype (u) | |||||
| length 250 | |||||
| formants vowel/y | |||||
| before N vdiph2/yu | |||||
| endphoneme | |||||
| phoneme y& | |||||
| vowel starttype (i) endtype (e) | |||||
| length 250 | |||||
| formants vwl_zh/y& | |||||
| endphoneme | |||||
| phoneme yE //try more so not similar to iE | |||||
| vowel starttype (i) endtype (e) | |||||
| length 250 | |||||
| formants vwl_zh/yee | |||||
| endphoneme | |||||
| phoneme y@ | |||||
| vowel starttype (i) endtype (@) | |||||
| length 250 | |||||
| formants vdiph2/y#@ | |||||
| endphoneme |
| phonemetable hi base | phonemetable hi base | ||||
| include ph_hindi | include ph_hindi | ||||
| phonemetable ta hi | |||||
| include ph_tamil | |||||
| phonemetable hu base | phonemetable hu base | ||||
| include ph_hungarian | include ph_hungarian | ||||
| int done; | int done; | ||||
| unsigned char vowel_stress[N_WORD_PHONEMES/2]; | unsigned char vowel_stress[N_WORD_PHONEMES/2]; | ||||
| char syllable_type[N_WORD_PHONEMES/2]; | |||||
| char syllable_weight[N_WORD_PHONEMES/2]; | |||||
| unsigned char phonetic[N_WORD_PHONEMES]; | unsigned char phonetic[N_WORD_PHONEMES]; | ||||
| static char consonant_types[16] = {0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0}; | static char consonant_types[16] = {0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0}; | ||||
| // followed by two consonants, a long consonant, or consonant and end-of-word | // followed by two consonants, a long consonant, or consonant and end-of-word | ||||
| weight++; | weight++; | ||||
| } | } | ||||
| syllable_type[ix] = weight; | |||||
| syllable_weight[ix] = weight; | |||||
| ix++; | ix++; | ||||
| } | } | ||||
| } | } | ||||
| { | { | ||||
| int wt; | int wt; | ||||
| int max_weight = -1; | int max_weight = -1; | ||||
| int min_weight = 10; | |||||
| int prev_stressed; | int prev_stressed; | ||||
| for(ix = 1; ix < vowel_count; ix++) | |||||
| // find the heaviest syllable, excluding the final syllable | |||||
| for(ix = 1; ix < (vowel_count-1); ix++) | |||||
| { | { | ||||
| if(vowel_stress[ix] == 0) | if(vowel_stress[ix] == 0) | ||||
| { | { | ||||
| if((wt = syllable_type[ix]) < min_weight) | |||||
| min_weight = wt; | |||||
| if(wt >= max_weight) | |||||
| if((wt = syllable_weight[ix]) >= max_weight) | |||||
| { | { | ||||
| max_weight = wt; | max_weight = wt; | ||||
| prev_stressed = stressed_syllable; | prev_stressed = stressed_syllable; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if(max_weight > min_weight) | |||||
| if((syllable_weight[vowel_count-1] == 2) && (max_weight< 2)) | |||||
| { | { | ||||
| // different weights, don't stress the final syllable | |||||
| if((stressed_syllable == vowel_count-1) && (syllable_type[vowel_count-2] > 0)) | |||||
| { | |||||
| stressed_syllable = vowel_count-2; | |||||
| } | |||||
| // the only double=heavy syllable is the final syllable, so stress this | |||||
| stressed_syllable = vowel_count-1; | |||||
| } | |||||
| else | |||||
| if(max_weight <= 0) | |||||
| { | |||||
| // all syllables, exclusing the last, are light. Stress the first syllable | |||||
| stressed_syllable = 1; | |||||
| } | } | ||||
| vowel_stress[stressed_syllable] = 4; | vowel_stress[stressed_syllable] = 4; | ||||
| max_stress = 4; | max_stress = 4; | ||||
| } | } | ||||
| if((stress == 3) && (langopts.stress_flags & 0x20)) | if((stress == 3) && (langopts.stress_flags & 0x20)) | ||||
| continue; // don't use secondary stress | continue; // don't use secondary stress | ||||
| if((v > 1) && (langopts.stress_flags & 0x40) && (syllable_type[v]==0) && (syllable_type[v+1]>0)) | |||||
| if((v > 1) && (langopts.stress_flags & 0x40) && (syllable_weight[v]==0) && (syllable_weight[v+1]>0)) | |||||
| { | { | ||||
| // don't put secondary stress on a light syllable which is followed by a heavy syllable | // don't put secondary stress on a light syllable which is followed by a heavy syllable | ||||
| continue; | continue; |
| short pitch2; | short pitch2; | ||||
| } SYLLABLE; | } SYLLABLE; | ||||
| SYLLABLE syllable_tab[N_PHONEME_LIST]; | |||||
| SYLLABLE *syllable_tab; | |||||
| static int tone_pitch_env; /* used to return pitch envelope */ | static int tone_pitch_env; /* used to return pitch envelope */ | ||||
| static short oflow[] = {0, 20, 12, 4, 0}; | static short oflow[] = {0, 20, 12, 4, 0}; | ||||
| static short oflow_emf[] = {5, 24, 15, 10, 5}; | static short oflow_emf[] = {5, 24, 15, 10, 5}; | ||||
| static short oflow_less[] = {1, 17, 10, 5, 1}; | static short oflow_less[] = {1, 17, 10, 5, 1}; | ||||
| static short back_emf[] = {36, 32, 0}; | |||||
| static short back_emf[] = {35, 32, 0}; | |||||
| typedef struct { | typedef struct { | ||||
| unsigned char pitch_env0; /* pitch envelope, tonic syllable at end */ | unsigned char pitch_env0; /* pitch envelope, tonic syllable at end */ | ||||
| 20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 29, 0}, | 20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 29, 0}, | ||||
| {PITCHfall, 41, 4, PITCHfall, 41, 27, // exclamation | {PITCHfall, 41, 4, PITCHfall, 41, 27, // exclamation | ||||
| 20, 25, 34, 24, drops_0, 3, 4, 5, oflow_emf, back_emf, 18, 5, 0}, | |||||
| 20, 25, 34, 24, drops_0, 3, 4, 5, oflow_emf, back_emf, 16, 5, 0}, | |||||
| {PITCHfall, 38, 2, PITCHfall, 42, 30, // statement, emphatic | {PITCHfall, 38, 2, PITCHfall, 42, 30, // statement, emphatic | ||||
| 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0}, | 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0}, | ||||
| if(no_tonic) | if(no_tonic) | ||||
| { | { | ||||
| tone_posn = tone_posn2 = end-1; | |||||
| tone_posn = tone_posn2 = end; // next position after the end of the truncated clause | |||||
| } | } | ||||
| else | else | ||||
| if(last_primary >= 0) | if(last_primary >= 0) | ||||
| int count_primary; | int count_primary; | ||||
| int ph_end=n_phoneme_list; | int ph_end=n_phoneme_list; | ||||
| SYLLABLE syllable_tab2[N_PHONEME_LIST]; | |||||
| syllable_tab = syllable_tab2; // don't use permanent storage. it's only needed during the call of CalcPitches() | |||||
| if(langopts.intonation == 1) | if(langopts.intonation == 1) | ||||
| { | { | ||||
| CalcPitches_Tone(clause_type); | CalcPitches_Tone(clause_type); | ||||
| option = 0; | option = 0; | ||||
| group_tone_emph = group_tone = punct_to_tone[option][clause_type]; | group_tone_emph = group_tone = punct_to_tone[option][clause_type]; | ||||
| group_tone_emph = punct_to_tone[option][4]; // emphatic form of statement | |||||
| group_tone_emph = punct_to_tone[option][5]; // emphatic form of statement | |||||
| if(clause_type == 4) | if(clause_type == 4) | ||||
| no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */ | no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */ | ||||
| if(p->synthflags & SFLAG_SYLLABLE) | if(p->synthflags & SFLAG_SYLLABLE) | ||||
| { | { | ||||
| syllable_tab[n_st].flags = 0; | syllable_tab[n_st].flags = 0; | ||||
| syllable_tab[n_st].env = PITCHfall; | |||||
| syllable_tab[n_st++].stress = p->tone; // stress level | syllable_tab[n_st++].stress = p->tone; // stress level | ||||
| if(p->tone >= 4) | if(p->tone >= 4) |
| } | } | ||||
| ix += utf8_out(c1,&buf[ix]); // buf[ix++] = c1; | ix += utf8_out(c1,&buf[ix]); // buf[ix++] = c1; | ||||
| if(!iswalnum(c1) && (ix > (n_buf-20))) | |||||
| if(((ix > (n_buf-20)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-2))) | |||||
| { | { | ||||
| // clause too long, getting near end of buffer, so break here | // clause too long, getting near end of buffer, so break here | ||||
| // try to break at a word boundary (unless we actually reach the end of buffer). | |||||
| buf[ix] = ' '; | buf[ix] = ' '; | ||||
| buf[ix+1] = 0; | buf[ix+1] = 0; | ||||
| UngetC(c2); | UngetC(c2); | ||||
| return(CLAUSE_NONE); | return(CLAUSE_NONE); | ||||
| } | } | ||||
| if(ix >= (n_buf-2)) | |||||
| { | |||||
| // reached end of buffer, must break now | |||||
| buf[n_buf-2] = ' '; | |||||
| buf[n_buf-1] = 0; | |||||
| UngetC(c2); | |||||
| return(CLAUSE_NONE); | |||||
| } | |||||
| } | } | ||||
| buf[ix] = ' '; | buf[ix] = ' '; | ||||
| buf[ix+1] = 0; | buf[ix+1] = 0; |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.29.26 18.Dec.07"; | |||||
| const char *version_string = "1.29.29 20.Dec.07"; | |||||
| const int version_phdata = 0x012924; | const int version_phdata = 0x012924; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| #include "voice.h" | #include "voice.h" | ||||
| #include "translate.h" | #include "translate.h" | ||||
| #define PITCHfall 0 | |||||
| #define PITCHrise 1 | |||||
| extern FILE *f_log; | extern FILE *f_log; | ||||
| static void SmoothSpect(void); | static void SmoothSpect(void); |
| ***************************************************************************/ | ***************************************************************************/ | ||||
| #define N_PHONEME_LIST 700 // enough for source[] full of text, else it will truncate | |||||
| #define N_PHONEME_LIST 1000 // enough for source[N_TR_SOURCE] full of text, else it will truncate | |||||
| #define MAX_HARMONIC 400 // 400 * 50Hz = 20 kHz, more than enough | #define MAX_HARMONIC 400 // 400 * 50Hz = 20 kHz, more than enough | ||||
| #define N_SEQ_FRAMES 25 // max frames in a spectrum sequence (real max is ablut 8) | #define N_SEQ_FRAMES 25 // max frames in a spectrum sequence (real max is ablut 8) |
| langopts.stress_rule = 0; | langopts.stress_rule = 0; | ||||
| langopts.numbers = 0x41 + NUM_ROMAN; | langopts.numbers = 0x41 + NUM_ROMAN; | ||||
| langopts.param[LOPT_COMBINE_WORDS] = 5; // allow "mc" to cmbine with the following word | |||||
| } | } | ||||
| 0x20, 0x24, 0x20, 0x80, 0x10, 0x00, 0x00, 0x00, | 0x20, 0x24, 0x20, 0x80, 0x10, 0x00, 0x00, 0x00, | ||||
| 0x00, 0x28, 0x08, 0x00, 0x88, 0x22, 0x04, 0x00, // 16 | 0x00, 0x28, 0x08, 0x00, 0x88, 0x22, 0x04, 0x00, // 16 | ||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
| 0x00, 0x88, 0x22, 0x04, 0x00, 0x02, 0x00, 0x00, // 32 | |||||
| 0x00, 0x88, 0x22, 0x04, 0x00, 0x02, 0x00, 0x04, // 32 | |||||
| 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
| 0x00, 0x28, 0x8a, 0x03, 0x00, 0x00, 0x40, 0x00, // 48 | 0x00, 0x28, 0x8a, 0x03, 0x00, 0x00, 0x40, 0x00, // 48 | ||||
| 0x02, 0x00, 0x41, 0xca, 0x9b, 0x06, 0x20, 0x80, | 0x02, 0x00, 0x41, 0xca, 0x9b, 0x06, 0x20, 0x80, |
| #define OFFSET_GREEK 0x380 | #define OFFSET_GREEK 0x380 | ||||
| #define OFFSET_CYRILLIC 0x420 | #define OFFSET_CYRILLIC 0x420 | ||||
| #define OFFSET_DEVANAGARI 0x900 | #define OFFSET_DEVANAGARI 0x900 | ||||
| #define OFFSET_TAMIL 0xb80 | |||||
| static const unsigned int replace_cyrillic_latin[] = | static const unsigned int replace_cyrillic_latin[] = | ||||
| tr->charset_a0 = charsets[19]; // ISCII | tr->charset_a0 = charsets[19]; // ISCII | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = 6; // stress on last heaviest syllable | |||||
| tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable | |||||
| tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | ||||
| tr->langopts.numbers = 0x811; | tr->langopts.numbers = 0x811; | ||||
| tr->langopts.numbers2 = 0x100; | tr->langopts.numbers2 = 0x100; | ||||
| { | { | ||||
| static const unsigned char stress_amps_hr[8] = {16,16, 20,20, 20,24, 24,22 }; | static const unsigned char stress_amps_hr[8] = {16,16, 20,20, 20,24, 24,22 }; | ||||
| static const short stress_lengths_hr[8] = {180,160, 200,200, 0,0, 220,230}; | static const short stress_lengths_hr[8] = {180,160, 200,200, 0,0, 220,230}; | ||||
| static const short stress_lengths_sr[8] = {160,150, 200,200, 0,0, 250,260}; | |||||
| tr = new Translator(); | tr = new Translator(); | ||||
| SetupTranslator(tr,stress_lengths_hr,stress_amps_hr); | |||||
| if(name2 == L('s','r')) | |||||
| SetupTranslator(tr,stress_lengths_sr,stress_amps_hr); | |||||
| else | |||||
| SetupTranslator(tr,stress_lengths_hr,stress_amps_hr); | |||||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
| tr->langopts.stress_rule = 0; | tr->langopts.stress_rule = 0; | ||||
| } | } | ||||
| break; | break; | ||||
| case L('t','a'): | |||||
| { | |||||
| static const short stress_lengths_ta[8] = {190, 190, 210, 210, 0, 0, 230, 250}; | |||||
| static const unsigned char stress_amps_ta[8] = {17,14, 20,19, 20,24, 24,22 }; | |||||
| tr = new Translator(); | |||||
| SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | |||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||||
| tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable | |||||
| tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||||
| tr->langopts.numbers = 0x811; | |||||
| tr->langopts.numbers2 = 0x100; | |||||
| tr->letter_bits_offset = OFFSET_TAMIL; | |||||
| memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | |||||
| SetLetterBitsRange(tr,LETTERGP_A,0x05,0x14); // vowel letters | |||||
| SetLetterBitsRange(tr,LETTERGP_A,0x3e,0x4c); // vowel signs | |||||
| SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs, and virama | |||||
| SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range | |||||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||||
| } | |||||
| break; | |||||
| case L('t','r'): // Turkish | case L('t','r'): // Turkish | ||||
| { | { | ||||
| static const unsigned char stress_amps_tr[8] = {16,16, 20,20, 20,24, 24,22 }; | static const unsigned char stress_amps_tr[8] = {16,16, 20,20, 20,24, 24,22 }; |
| static int embedded_read; | static int embedded_read; | ||||
| unsigned int embedded_list[N_EMBEDDED_LIST]; | unsigned int embedded_list[N_EMBEDDED_LIST]; | ||||
| // the source text of a single clause | |||||
| #define N_TR_SOURCE 350 | |||||
| // the source text of a single clause (UTF8 bytes) | |||||
| #define N_TR_SOURCE 700 | |||||
| static char source[N_TR_SOURCE+40]; // extra space for embedded command & voice change info at end | static char source[N_TR_SOURCE+40]; // extra space for embedded command & voice change info at end | ||||
| int n_replace_phonemes; | int n_replace_phonemes; | ||||
| }; | }; | ||||
| /* index by 0=. 1=, 2=?, 3=! 4=none */ | |||||
| static unsigned char punctuation_to_tone[4][5] = { | |||||
| {0,1,2,3,4}, | |||||
| {5,6,2,0,4}, | |||||
| {0,1,2,3,0}, | |||||
| {0,1,2,3,0} }; | |||||
| /* index by 0=. 1=, 2=?, 3=! 4=none, 5=emphasized */ | |||||
| static unsigned char punctuation_to_tone[4][6] = { | |||||
| {0,1,2,3,0,4}, | |||||
| {5,6,2,0,0,4}, | |||||
| {0,1,2,3,0,0}, | |||||
| {0,1,2,3,0,0} }; | |||||
| void SetLengthMods(Translator *tr, int value) | void SetLengthMods(Translator *tr, int value) | ||||
| if((c >= 0x901) && (c <= 0x957)) | if((c >= 0x901) && (c <= 0x957)) | ||||
| return(1); // Devanagari vowel signs and other signs | return(1); // Devanagari vowel signs and other signs | ||||
| if((c >= 0xb81) && (c <= 0xbe5)) | |||||
| return(1); // Devanagari vowel signs and other signs | |||||
| if((c >= 0x300) && (c <= 0x36f)) | if((c >= 0x300) && (c <= 0x36f)) | ||||
| return(1); // combining accents | return(1); // combining accents | ||||
| #define N_WORD_PHONEMES 160 // max phonemes in a word | #define N_WORD_PHONEMES 160 // max phonemes in a word | ||||
| #define N_WORD_BYTES 160 // max bytes for the UTF8 characters in a word | #define N_WORD_BYTES 160 // max bytes for the UTF8 characters in a word | ||||
| #define N_CLAUSE_WORDS 256 // max words in a clause | |||||
| #define N_CLAUSE_WORDS 300 // max words in a clause | |||||
| #define N_RULE_GROUP2 120 // max num of two-letter rule chains | #define N_RULE_GROUP2 120 // max num of two-letter rule chains | ||||
| #define N_HASH_DICT 1024 | #define N_HASH_DICT 1024 | ||||
| #define N_CHARSETS 20 | #define N_CHARSETS 20 |