Moved Croatian/Bosnian/Serbian dictionary source data to hbs_rules, hbs_list. Added data for Ancient Greek voice ("grc"). In voice files, the attribute: word n adds a short pause between words. n = 1 to 4 for increasing pause length. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@103 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -134,28 +134,8 @@ r s S s. t T t. t.h | |||
th v w x z | |||
Dictionary hr_dict | |||
& @ @- @2 a A a: aI | |||
aU E e e: E~ i I i: | |||
l- O o o: oU r- u U | |||
u: y | |||
* b d dZ dZ; f g h | |||
j k l l^ m n N n^ | |||
p r R s S t tS ts | |||
tS; v x z Z | |||
Dictionary hu_dict | |||
A a: E e: i i: o o: | |||
u u: Y Y: | |||
: b c d dZ f g h | |||
j J k l m n n^ p | |||
R R2 s S s2 t tS ts | |||
v z Z | |||
Dictionary it_dict | |||
@@ -354,3 +334,16 @@ f j k kh l m n N | |||
p ph R R2 R3 s s. S; | |||
t th ts ts. ts. tS; tS; tsh | |||
v w x z z. | |||
Dictionary hbs_dict | |||
& @ @2 a A a: aI aU | |||
E e e: E~ i I i: l- | |||
O o o: oU r* r- u U | |||
u: y | |||
* b d dZ dZ; f g h | |||
j k l L l^ m n N | |||
n^ p r R s S t tS | |||
ts tS; v x z Z |
@@ -1229,6 +1229,7 @@ myrrh m3: | |||
naif naI'i:f | |||
naïve naI'i:v | |||
nasa nasa2 | |||
nascent neIs@nt | |||
nativity $2 | |||
natural natS@r@L |
@@ -944,7 +944,7 @@ | |||
as (tern a2s | |||
as (thm as | |||
as (tral as | |||
as (tro aas | |||
as (tro as | |||
as (trolog a2s | |||
as (trono a2s | |||
ass (ym as |
@@ -0,0 +1,29 @@ | |||
?1 _0lang _^_EN // speak numbers in English | |||
// articles | |||
hο $u // ὁ | |||
τὼ $u // τώ | |||
οhι $u // οἱ | |||
hη $u // ἡ | |||
τὰ $u // τά | |||
αhι $u // αἱ | |||
τὸ $u // τό | |||
τοὺ $u // τοῦ | |||
τοὶν $u // τοῖν | |||
τὴς $u // τῆς | |||
ταὶν $u // ταῖν | |||
τὼν $u // τῶν | |||
τῲ $u // τῷ | |||
τοὶς $u // τοῖς | |||
τῂ $u // τῇ | |||
ταὶν $u // ταῖν | |||
ταὶς $u // ταῖς | |||
τὸν $u // τόν | |||
τοὺς $u // τούς | |||
τὴν $u // τήν | |||
τὰς $u // τάς | |||
@@ -0,0 +1,344 @@ | |||
// Spelling to Phoneme rules for: Ancient Greek | |||
// Preliminary character substitution: | |||
// Convert tonos, oxia and perispomeni to varia | |||
// Remove psili (soft breathing) | |||
// Convert dasia accent to a separate prefix character ("h") | |||
// Remove iota subscripts | |||
// Replace Latin characters by same-shape Greek characters | |||
.replace | |||
a α // Latin->Greek | |||
o ο | |||
v ν | |||
A Α | |||
B Β | |||
E Ε | |||
Z Ζ | |||
H Η | |||
I Ι | |||
K Κ | |||
M Μ | |||
N Ν | |||
O Ο | |||
P Ρ | |||
T Τ | |||
Y Υ | |||
X Χ | |||
// alpha | |||
ά ὰ // tonos | |||
ά ὰ // oxia | |||
ᾴ ᾲ | |||
ᾶ ὰ | |||
ᾷ ᾲ | |||
ἀ α | |||
ἁ hα | |||
ἂ ὰ | |||
ἃ hὰ | |||
ἄ ὰ | |||
ἅ hὰ | |||
ἆ ὰ | |||
ἇ hὰ | |||
ᾀ ᾳ | |||
ᾁ hᾳ | |||
ᾂ ᾲ | |||
ᾃ hᾲ | |||
ᾄ ᾲ | |||
ᾅ hᾲ | |||
ᾆ ᾲ | |||
ᾇ hᾲ | |||
// epsilon | |||
έ ὲ | |||
έ ὲ | |||
ἐ ε | |||
ἑ hε | |||
ἒ ὲ | |||
ἓ hὲ | |||
ἔ ὲ | |||
ἕ hὲ | |||
// eta | |||
ή ὴ | |||
ή ὴ | |||
ῄ ῂ | |||
ῆ ὴ | |||
ῇ ῂ | |||
ἠ η | |||
ἡ hη | |||
ἢ ὴ | |||
ἣ hὴ | |||
ἤ ὴ | |||
ἥ hὴ | |||
ἦ ὴ | |||
ἧ hὴ | |||
ᾐ ῃ | |||
ᾑ hῃ | |||
ᾒ ῂ | |||
ᾓ hῂ | |||
ᾔ ῂ | |||
ᾕ hῂ | |||
ᾖ ῂ | |||
ᾗ hῂ | |||
//iota | |||
ί ὶ | |||
ί ὶ | |||
ῖ ὶ | |||
ἰ ι | |||
ἱ hι | |||
ἲ ὶ | |||
ἳ hὶ | |||
ἴ ὶ | |||
ἵ hὶ | |||
ἶ ὶ | |||
ἷ hὶ | |||
ΐ ῒ | |||
ῗ ῒ | |||
// omicron | |||
ό ὸ | |||
ό ὸ | |||
ὀ ο | |||
ὁ hο | |||
ὂ ὸ | |||
ὃ hὸ | |||
ὄ ὸ | |||
ὅ hὸ | |||
// upsilon | |||
ύ ὺ | |||
ύ ὺ | |||
ῦ ὺ | |||
ὐ υ | |||
ὑ hυ | |||
ὒ ὺ | |||
ὓ hὺ | |||
ὔ ὺ | |||
ὕ hὺ | |||
ὖ ὺ | |||
ὗ hὺ | |||
ΰ ῢ | |||
ῧ ῢ | |||
// omega | |||
ώ ὼ | |||
ώ ὼ | |||
ῴ ῲ | |||
ῶ ὼ | |||
ῷ ῲ | |||
ὠ ω | |||
ὡ hω | |||
ὢ ὼ | |||
ὣ hὼ | |||
ὤ ὼ | |||
ὥ hὼ | |||
ὦ ὼ | |||
ὧ hὼ | |||
ᾠ ῳ | |||
ᾡ hῳ | |||
ᾢ ῲ | |||
ᾣ hῲ | |||
ᾤ ῲ | |||
ᾥ hῲ | |||
ᾦ ῲ | |||
ᾧ hῲ | |||
// rho | |||
ῤ ρ | |||
ῥ hρ | |||
.group α | |||
α a | |||
αι aI | |||
αὶ 'aI | |||
αυ aU | |||
αὺ 'aU | |||
αhι haI | |||
αhὶ 'haI | |||
αhυ haU | |||
αhὺ 'haU | |||
.group β | |||
β b | |||
.group γ | |||
γ g | |||
γγ Ng | |||
.group δ | |||
δ d | |||
.group ε | |||
ε e | |||
ει e: | |||
εὶ 'e: | |||
ευ eU | |||
εὺ 'eU | |||
εhι he: | |||
εhὶ 'he: | |||
εhυ heU | |||
εhὺ 'heU | |||
.group ζ | |||
ζ z | |||
.group η | |||
η E: | |||
ηι EI: | |||
ηὶ 'EI: | |||
ηυ EU: | |||
ηὺ 'EU: | |||
ηhι hEI: | |||
ηhὶ 'hEI: | |||
ηhυ hEU: | |||
ηhὺ 'hEU: | |||
.group θ | |||
θ T | |||
.group ι | |||
ι i | |||
.group ϊ | |||
ϊ i | |||
.group κ | |||
κ k | |||
.group λ | |||
λ l | |||
.group μ | |||
μ m | |||
.group ν | |||
ν n | |||
.group ξ | |||
ξ ks | |||
.group ο | |||
ο o | |||
οι oI | |||
οὶ 'oI | |||
ου u: | |||
οὺ 'u: | |||
οhι hoI | |||
οhὶ 'hoI | |||
οhυ hu: | |||
οhὺ 'hu: | |||
.group π | |||
π p | |||
.group ρ | |||
ρ R | |||
.group ς | |||
ς s | |||
.group σ | |||
σ s | |||
.group τ | |||
τ t | |||
.group υ | |||
υ y | |||
υι yI | |||
υὶ 'yI | |||
υhι hyI | |||
υhὶ 'hyI | |||
.group ϋ | |||
ϋ y | |||
ϋι yI | |||
ϋὶ 'yI | |||
ϋhι hyI | |||
ϋhὶ 'hyI | |||
.group φ | |||
φ f | |||
.group χ | |||
χ x | |||
.group ψ | |||
ψ ps | |||
.group ω | |||
ω O: | |||
ωι OI: | |||
ωὶ 'OI: | |||
ωυ OU: | |||
ωὺ 'OU: | |||
ωhι hOI: | |||
ωhὶ 'hOI: | |||
ωhυ hOU: | |||
ωhὺ 'hOU: | |||
.group h // dasia (rough breathing) | |||
h h | |||
.group | |||
ὰ 'a | |||
ᾳ aI: | |||
ᾲ 'aI: | |||
ὲ 'e | |||
ὴ 'E: | |||
ῃ EI: | |||
ῂ 'EI: | |||
ὶ 'i | |||
ῒ 'i | |||
ὸ 'o | |||
ὺ 'y | |||
ῢ 'y | |||
ὼ 'O: | |||
ῳ OI: | |||
ῲ 'OI: | |||
@@ -0,0 +1,603 @@ | |||
// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage | |||
// This file is UTF-8 encoded | |||
// Conditional rules: | |||
// ?1 Croatian | |||
// ?2 Serbian | |||
// ?3 Bosnian (Bosna and Hercegovina) | |||
// ?4 Serbian & Bosnian | |||
// Letters | |||
b b@ | |||
c ts@ | |||
č tS@ | |||
ć tS;@2 | |||
d d@ | |||
dž dZ@ | |||
đ dZ;@2 | |||
f f@ | |||
g g@ | |||
h x@ | |||
j j@2 | |||
k k@ | |||
l l@ | |||
lj l^@ | |||
m m@ | |||
n n@ | |||
nj n^@ | |||
p p@ | |||
q kv@ | |||
r R@ | |||
_s s@ | |||
š S@ | |||
t t@ | |||
v v@ | |||
w dvostr*uko||v@ | |||
?2 w duplo||v@ | |||
x iks | |||
y ipsilon | |||
z z@ | |||
ž Z@ | |||
// symbols | |||
_?? znak // unknown symbol | |||
_?A slovo // unknown letter | |||
© 'aUtoRsk&||pr*av& | |||
% p'osto | |||
+ plus | |||
€ 'euRo | |||
?4 € 'evr*o | |||
@ _'at | |||
?2 @ tRgovatSkoi | |||
& _'end | |||
! 'usklItSnIk | |||
?2 ! 'uzvItSnIk | |||
: dv'ototSk& | |||
?4 : dv'ot&tSk& | |||
# br*'oj_ | |||
/ kr*'oz_ | |||
\\ b'EkslES | |||
^ ts'iRkumfleks | |||
~ t'ild& | |||
¤ v'alut& | |||
§ 'odlom&k | |||
µ m'ikr*o | |||
¶ tSl'an&k | |||
° st'up&n^ | |||
?4 ° st'epen | |||
_" n'avodnIk | |||
?2 _" n'avod | |||
_‚ 'otvoReni||n'avodnIk | |||
_„ sp'uSteni||n'avodnIk | |||
?2 _„ z&tvoReni||n'avodnIk | |||
… tr*'i||t'otSke | |||
?4 … tr*'i||t'atSke | |||
† kr*'iZ | |||
?2 † kr-'st | |||
‡ dv'ostr*Uki||kr*'iZ | |||
?2 ‡ dv'ostRUki||kR'st | |||
‰ pr*'omil | |||
_‹ 'otvoReni||n'avodnIk | |||
_‘ 'otvoReni||n'avodnIk | |||
_’ j'ednostr*'uki||n'avodnIk | |||
_“ 'otvoReni||n'avodnIk | |||
_” z'atvoReni||n'avodnIk | |||
• kr*'upna||t'otSk& | |||
?4 • kr*'upna||t'atSk& | |||
_– En||ts'r-t& | |||
_— Em||ts'r-t& | |||
™ pr*'o'izvodZ&tS | |||
˘ br*'evis | |||
¨ pr*'ijegl&s | |||
?2 ¨ pr*'egl&s | |||
_« 'otvoReni||n'avodnIk | |||
_ pr*'ivr*emen&||ts'r-t'its& | |||
· p'ut& | |||
¸ sed'il& | |||
_» z'atvoReni||n'avodnIk | |||
® R'egistr*atsIj& | |||
ł l@||s&||ts'r-t'itsom | |||
× p'ut& | |||
÷ p'odijel^,eno | |||
?2 ÷ p'odel^,eno | |||
_$ d'ol&R | |||
_- m'inus | |||
_* zvj'ezdits& | |||
?2 _* zv'ezdits& | |||
_= j'edn&ko | |||
_@ t'r-g'ov&tSko||'a | |||
?2 _@ et | |||
_( 'otvoRen&||z'agr*ad& | |||
_) z'atvoRen&||z'agr*ad& | |||
_' 'apostr*of | |||
_, z'aRez | |||
?2 _, z'apeta | |||
_- ts'r-t'its& | |||
_. t'otSk& | |||
?4 _. t'atSk& | |||
_; t'otSk&z,a*Ez | |||
?2 _; t'atSk&z,apeta | |||
?3 _; t'atSk&z,a*Ez | |||
_< m'an^i||'od | |||
_= j'edn&ko | |||
_> v'etSi||'od | |||
_? 'upitnIk | |||
_& t'r-g'ov&tSko||'i | |||
_[ 'otvoRen&||'ugl&t& | |||
?2 _[ 'otvoRen&||'ugl&st& | |||
_] z'atvoRen&||'ugl&t& | |||
?2 _] z'atvoRen&||'ugl&st& | |||
__ ts'r-t& | |||
_` gr*'avis | |||
_{ 'otvoRen&||v'ititS&st& | |||
_| 'okomits& | |||
?2 _| 'uspR&vn& | |||
_} z'atvoRen&||v'ititS&st& | |||
// Numbers | |||
_0 n'ul& | |||
_1 j'ed&n | |||
_2 dv'a | |||
_2f dv'ije | |||
?2 _2f dv'E | |||
_3 tr*'i | |||
_4 tS'EtIRI | |||
_5 p'Et | |||
_6 S'Est | |||
_7 s'Ed&m | |||
_8 'os&m | |||
_9 d'EvEt | |||
_10 d'EsEt | |||
_11 j'ed&naIst | |||
_12 dv'anaIst | |||
_13 tr*'inaIst | |||
_14 tS'Etr-naIst | |||
_15 p'EtnaIst | |||
_16 S'EsnaIst | |||
_17 s'Ed&mnaIst | |||
_18 'os&mnaIst | |||
_19 d'EvEtnaIst | |||
?2 _11 j'ed&naEst | |||
?2 _12 dv'anaEst | |||
?2 _13 tr*'inaEst | |||
?2 _14 tS'Etr-naEst | |||
?2 _15 p'EtnaEst | |||
?2 _16 S'EsnaEst | |||
?2 _17 s'Ed&mnaEst | |||
?2 _18 'os&mnaEst | |||
?2 _19 d'EvEtnaEst | |||
_2X dv'adEsEt | |||
_3X tr*'idEsEt | |||
_4X tS'Etr-dEsEt | |||
_5X p'EdEsEt | |||
_6X S'EzdEsEt | |||
_7X s'Ed&mdEsEt | |||
_8X 'os&mdEsEt | |||
_9X d'EvEdEsEt | |||
_0C st'o_ | |||
?2 _0C st'O_ | |||
_2C dvj'est'o | |||
?2 _2C dv'est'a_ | |||
?2 _3C tR'ist'a_ | |||
?2 _4C tSetR'ist'o_ | |||
_6C S'Est'o | |||
_0M1 t'isUtS;& | |||
_0MA1 t'isUtS;e | |||
_1M1 t'isUtS;U | |||
?2 _0M1 h'il^,&d& | |||
?2 _0MA1 h'il^,&de | |||
?2 _1M1 h'il^,&dU | |||
?2 _1MA1 jedn&||hiL&d& | |||
?3 _0M1 h'il^ad& | |||
?3 _0MA1 h'il^ade | |||
?3 _1M1 h'il^adU | |||
_0M2 m'ilijUna | |||
_0MA2 m'ilijUna | |||
_1M2 m'ilijUn | |||
?4 _0M2 m'ilijOna | |||
?4 _0MA2 m'ilijOna | |||
?4 _1M2 m'ilijOn | |||
_0M3 m'iliaRdI | |||
_0MA3 m'iliaRde | |||
_1M3 m'iliaRdU | |||
?2 _0M3 milijArdI | |||
?2 _0MA3 milijArde | |||
?2 _1M3 milijArdU | |||
_0M4 b'ilijUna | |||
_1M4 b'ilijUn | |||
?4 _0M4 b'ilijOna | |||
?4 _1M4 b'ilijOn | |||
_dpt _:z'a*Ez_ | |||
_roman r*'imsko | |||
// not Roman numerals | |||
// vi vi // not needed if only all-capitals are spoken as Roman numbers | |||
// Abbreviations | |||
aaa $abbrev | |||
aac $abbrev | |||
ab $only $abbrev $capital | |||
abc $abbrev | |||
abk $only $abbrev | |||
abs $abbrev | |||
acc $only $abbrev | |||
acf $only $abbrev | |||
acfm $abbrev | |||
acg $only $abbrev | |||
acgm $abbrev | |||
acl $only $abbrev | |||
acm $only $abbrev | |||
acw $only $abbrev | |||
add $only $abbrev | |||
adn $only $abbrev | |||
adp $only $abbrev | |||
adsl $abbrev | |||
agm $abbrev | |||
ahk $only $abbrev | |||
aif $only $abbrev | |||
aip $only $abbrev | |||
alg $only $abbrev | |||
alm $only $abbrev | |||
amd $only $abbrev | |||
amf $only $abbrev | |||
amg $only $abbrev | |||
aph $only $abbrev | |||
apj $only $abbrev | |||
apl $only $abbrev | |||
apm $only $abbrev | |||
app $only $abbrev | |||
arg $only $abbrev | |||
arj $only $abbrev | |||
asc $only $abbrev | |||
asf $only $abbrev | |||
asm $only $abbrev | |||
asn $only $abbrev | |||
asp $only $abbrev | |||
asx $only $abbrev | |||
atf $only $abbrev | |||
atp $abbrev | |||
av $only $abbrev | |||
avg $abbrev | |||
avr $only $abbrev | |||
awb $only $abbrev | |||
awt $only $abbrev | |||
brf $abbrev | |||
brl $abbrev | |||
brx $abbrev | |||
cca $abbrev | |||
cda $only $abbrev | |||
cdr $abbrev | |||
cdrw $abbrev | |||
cgi $abbrev | |||
clr $abbrev | |||
cpe $only $abbrev | |||
cpu $only $abbrev | |||
cr $only $abbrev | |||
crt $only $abbrev | |||
ctrl $abbrev | |||
daa $only $abbrev | |||
doo $abbrev | |||
dox $only $abbrev | |||
dqy $abbrev | |||
dsr $only $abbrev | |||
ear $only $abbrev | |||
ecdl $only $abbrev | |||
ecp $only $abbrev | |||
ecs $only $abbrev | |||
elm $only $abbrev | |||
emf $only $abbrev | |||
emh $only $abbrev | |||
eml $only $abbrev | |||
ems $only $abbrev | |||
epf $only $abbrev | |||
eq $only $abbrev | |||
esc $only $abbrev | |||
etd $only $abbrev | |||
eu $only $abbrev | |||
eur $only $abbrev | |||
exc $only $abbrev | |||
faq $abbrev | |||
fbi $abbrev | |||
ffa $only $abbrev | |||
fr $only $abbrev | |||
frm $abbrev | |||
frt $only $abbrev | |||
frx $abbrev | |||
gho $only $abbrev | |||
gr $only $abbrev | |||
grr $abbrev | |||
grrr $abbrev | |||
grp $abbrev | |||
grps $abbrev | |||
grs $only $abbrev | |||
grx $only $abbrev | |||
gui $only $abbrev | |||
hho $abbrev | |||
hr $only $abbrev | |||
hrk $only $abbrev | |||
hrt $only $abbrev $capital | |||
hrv $only $abbrev | |||
hta $only $abbrev | |||
hzzo $abbrev | |||
ibm $abbrev | |||
icc $only $abbrev | |||
icm $only $abbrev | |||
ics $only $abbrev | |||
idb $only $abbrev | |||
idc $only $abbrev | |||
idm $only $abbrev | |||
iff $only $abbrev | |||
ifu $only $abbrev | |||
ilk $only $abbrev | |||
img $only $abbrev | |||
iml $only $abbrev | |||
isdn $abbrev | |||
isl $only $abbrev | |||
isp $only $abbrev | |||
iss $only $abbrev | |||
iq $only $abbrev | |||
iqy $only $abbrev | |||
itw $only $abbrev | |||
itz $only $abbrev | |||
ivf $only $abbrev | |||
jpi $only $abbrev | |||
jrr $abbrev | |||
jse $only $abbrev | |||
lha $abbrev | |||
liq $only $abbrev | |||
maq $only $abbrev | |||
maw $only $abbrev | |||
mda $only $abbrev | |||
mde $only $abbrev | |||
mdi $only $abbrev | |||
mga $only $abbrev | |||
mge $only $abbrev | |||
mgi $only $abbrev | |||
mpa $only $abbrev | |||
mpe $only $abbrev | |||
mpr $only $abbrev | |||
msi $only $abbrev | |||
mup $abbrev $capital | |||
nco $only $abbrev | |||
nfo $only $abbrev | |||
nji $only $abbrev | |||
nr $only $abbrev | |||
nra $only $abbrev | |||
nrb $only $abbrev | |||
nrc $only $abbrev | |||
nre $only $abbrev | |||
nrf $only $abbrev | |||
nrg $abbrev | |||
nrh $only $abbrev | |||
nri $only $abbrev | |||
nrm $only $abbrev | |||
nrq $only $abbrev | |||
nrs $only $abbrev | |||
nru $only $abbrev | |||
nrw $only $abbrev | |||
nsa $only $abbrev | |||
nsi $only $abbrev | |||
nvda $abbrev | |||
obd $only $abbrev | |||
obj $only $abbrev | |||
obt $only $abbrev | |||
obz $only $abbrev | |||
ocr $only $abbrev | |||
ocx $only $abbrev | |||
oem $abbrev | |||
off $only $abbrev | |||
oft $only $abbrev | |||
ofx $only $abbrev | |||
ogc $only $abbrev | |||
ogg $only $abbrev | |||
ogl $only $abbrev | |||
omw $abbrev | |||
oqy $only $abbrev | |||
os $only $abbrev $capital | |||
oss $only $abbrev | |||
otf $only $abbrev | |||
otm $only $abbrev | |||
pda $abbrev | |||
pdi $only $abbrev | |||
pgi $only $abbrev | |||
pho $only $abbrev | |||
pko $only $abbrev | |||
pma $only $abbrev | |||
ppa $only $abbrev | |||
pr $only $abbrev | |||
prf $only $abbrev | |||
prg $only $abbrev | |||
prn $abbrev | |||
prt $only $abbrev | |||
qbr $abbrev | |||
qpr $abbrev | |||
raw $only $abbrev | |||
rb $abbrev | |||
rba $abbrev | |||
rc $only $abbrev | |||
rcc $abbrev | |||
rcd $abbrev | |||
rcs $abbrev | |||
rd $only $abbrev | |||
rds $abbrev | |||
rgb $abbrev | |||
rh $only $abbrev | |||
rk $only $abbrev | |||
rm $only $abbrev | |||
rma $only $abbrev | |||
rme $only $abbrev | |||
rmf $only $abbrev | |||
rmi $only $abbrev | |||
rmt $only $abbrev | |||
rmx $abbrev | |||
rn $only $abbrev | |||
rnk $only $abbrev | |||
rp $only $abbrev | |||
rqy $only $abbrev | |||
rs $abbrev | |||
rss $abbrev | |||
rta $abbrev | |||
rtf $abbrev | |||
rtl $abbrev | |||
rttl $abbrev | |||
rtv $abbrev | |||
rw $abbrev | |||
rwo $only $abbrev | |||
rx $abbrev | |||
sbr $only $abbrev | |||
scr $only $abbrev | |||
sr $only $abbrev | |||
srd $only $abbrev | |||
ssa $only $abbrev | |||
sys $only $abbrev | |||
tpu $only $abbrev | |||
udf $only $abbrev | |||
udl $only $abbrev | |||
udt $abbrev | |||
uhh $abbrev | |||
uif $only $abbrev | |||
uip $only $abbrev | |||
url $only $abbrev | |||
usd $only $abbrev | |||
usr $only $abbrev | |||
uss $only $abbrev | |||
uu $only $abbrev | |||
uue $only $abbrev | |||
uup $only $abbrev | |||
uxd $only $abbrev | |||
vba $only $abbrev | |||
vbe $only $abbrev | |||
vbr $abbrev | |||
vga $abbrev | |||
wax $only $abbrev | |||
wbr $abbrev | |||
wiz $only $abbrev | |||
wma $only $abbrev | |||
wri $only $abbrev | |||
wta $abbrev | |||
xam $only $abbrev | |||
xba $only $abbrev | |||
xiw $only $abbrev | |||
xla $only $abbrev | |||
xpa $only $abbrev | |||
xpi $only $abbrev | |||
xsi $only $abbrev | |||
xxa $only $abbrev | |||
xxe $only $abbrev | |||
xy $abbrev | |||
xyz $abbrev | |||
yu $only $abbrev | |||
zaa $only $abbrev | |||
zoo $only $abbrev | |||
br $dot $abbrev | |||
dr $dot $abbrev | |||
mr $dot $abbrev | |||
mrs $dot $abbrev | |||
itd $dot $abbrev | |||
npr $dot $abbrev | |||
str $only $dot $abbrev | |||
inc $dot | |||
prof $dot | |||
sl $dot | |||
tj $dot | |||
tzv $dot | |||
// Demonstratives | |||
tko $u+ | |||
?4 šta $u+ | |||
što $u+ | |||
koga $pause | |||
čega $pause | |||
// Pronouns | |||
// Prepositions | |||
o $u $brk | |||
u $u $brk | |||
s s_ $brk | |||
// Conjunctions | |||
a $u $pause // and | |||
i $u $pause // and | |||
ali $pause // but | |||
nego $pause // but | |||
ili $u $pause // or | |||
// Auxillary verbs | |||
li $u // question | |||
sam $u // to be, short form | |||
si $u | |||
je $u | |||
smo $u | |||
ste $u | |||
su $u | |||
bio $u // to be, past tense | |||
bila $u | |||
bilo $u | |||
bili $u | |||
nisam $u+ // to be, negative | |||
nisi $u+ | |||
nije $u+ | |||
nismo $u+ | |||
niste $u+ | |||
nisu $u+ | |||
imam $u+ // to have | |||
imaš $u+ | |||
ima $u+ | |||
imamo $u+ | |||
imate $u+ | |||
imaju $u+ | |||
nemam $u+ // to have, negative | |||
nemaš $u+ | |||
nema $u+ | |||
nemamo $u+ | |||
nemate $u+ | |||
nemaju $u+ | |||
// treat as letters if at the end of the clause | |||
a a $atend // letter-a | |||
i i $atend // letter-i | |||
o o $atend // letter-o | |||
s s@ $atend | |||
u u $atend | |||
// Exceptions | |||
ctrl tsontRo:l | |||
control tsontRo:l | |||
docx d'ots||'iks | |||
jpeg j@2||p'eg | |||
macx m'ats||'iks | |||
potx p'ot||'iks | |||
sisx s'is||'iks | |||
start st'aRt | |||
utf u||te||ef | |||
?2 ra R& | |||
?2 re Re | |||
?2 ar &R | |||
?2 er eR |
@@ -1,9 +1,15 @@ | |||
// translation rules for Croatian | |||
// "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage | |||
// This file is UTF-8 encoded | |||
//The next line gives a voice which is used to find a phoneme table to use to compile this dictionary | |||
//voice=hr | |||
// Conditional rules: | |||
// ?1 Croatian | |||
// ?2 Bosnian (Bosna and Hercegovina) | |||
// ?2 Serbian | |||
// ?3 Bosnian (Bosna and Hercegovina) | |||
// ?4 Serbian & Bosnian | |||
.group a | |||
a a | |||
@@ -34,7 +40,8 @@ | |||
e E | |||
j) e e | |||
e (j e | |||
._) exe %ekse // filetype | |||
_) exe %ekse // filetype | |||
?2 _) exe %eikse // filetype | |||
.group f | |||
f f | |||
@@ -82,11 +89,12 @@ | |||
.group q | |||
q k | |||
qu kv | |||
?2 qu ku | |||
.group r | |||
r R | |||
A) r (A R | |||
K) r (A @-* | |||
K) r (A r* // this phoneme expands to [@-*] | |||
rr R | |||
r (_ R | |||
@@ -140,7 +148,7 @@ | |||
$ d'ol&R | |||
. totSk& | |||
?2 . tatSk& | |||
?4 . tatSk& | |||
. (. _: | |||
\.) . | |||
@@ -179,7 +187,7 @@ | |||
μ m'i | |||
ν n'i | |||
ξ ks'i | |||
ο 'omIk@-*on_ | |||
ο 'omIkr*on_ | |||
.group 0xcf // Greek letters | |||
@@ -195,6 +203,6 @@ | |||
ψ ps'i | |||
ω 'omeg& | |||
ώ 'omeg&||t'onos | |||
ό 'omIk@-*on||t'onos | |||
ό 'omIkr*on||t'onos | |||
@@ -1,336 +0,0 @@ | |||
// Translations for Hungarian words | |||
// This file is UTF-8 encoded. | |||
// Conditional rules: | |||
// ?1 speak "i" as Roman number | |||
// Numbers | |||
_0 nullA | |||
_1 EJ | |||
_2 kEttY: | |||
_3 ha:R2om | |||
_4 ne:J | |||
_5 Yt | |||
_6 hAt | |||
_7 he:t | |||
_8 n^olts | |||
_9 kilEnts | |||
_10 ti:z | |||
_1X tizEn | |||
_20 hu:s | |||
_2X huson | |||
_3X hAR2mints | |||
_4X nEJvEn | |||
_5X YtvEn | |||
_6X hAtvAn | |||
_7X hEtvEn | |||
_8X n^oltsvAn | |||
_9X kilEntsvEn | |||
_0C sa:z | |||
_1C sa:z | |||
_0M1 EzER2 | |||
_1M1 EzER2 | |||
_2M1 ke:tEzER2 | |||
_0M2 millio: | |||
_1M2 millio: | |||
_2M2 ke:tmillio: | |||
_0M3 millia:R2d | |||
_1M3 millia:R2d | |||
_1M3 ke:tmillia:R2d | |||
_0M4 billio: | |||
_1M4 billio: | |||
_2M4 ke:tbillio: | |||
_dpt ||_vEss2Y:_ | |||
// Abbreviations | |||
km kilo:me:tER2 | |||
mm milime:tER2 | |||
a.m An^n^i||m'int $dot | |||
dr doktoR2 $dot | |||
gpu $abbrev | |||
id idY:SEb: $dot | |||
ill illEdvE $dot | |||
ifj ifjAb: $dot | |||
mta $abbrev | |||
pl pe:lda:ul $dot | |||
stb SAtYb:i $dot | |||
u.n u:JnEvEzEt: $dot | |||
ú.n u:JnEvEzEt: $dot | |||
vö v'EZd||_'Yss2E | |||
?1 i EJ $abbrev // option for Roman number | |||
// Articles | |||
a $u // the | |||
az $u | |||
aki $u+ // that | |||
ez $u+ // this | |||
// Pronouns | |||
// If these are only used for emphasis then then don't need $u | |||
// én $u | |||
// te $u | |||
// ő $u | |||
// mi $u | |||
// ti $u | |||
// ők $u | |||
// maga $u | |||
// maguk $u | |||
// Conjunctions | |||
és $u $strend2 // and | |||
de $u+ $pause // but | |||
vagy $u+ $pause // or | |||
mert $u $pause // because | |||
miatt $u // because | |||
bár $u $pause // although | |||
habár $u $pause // although | |||
ha $u $pause // if | |||
noha $u $pause // even thought | |||
// Prepositions etc. | |||
// Negative | |||
nem $alt2 $strend | |||
ne $u+ | |||
e $u // "-e" question | |||
e $atend // stressed at end of sentence | |||
// Unstressed adverbs prepositions etc. | |||
néhány $u+ | |||
is $u // also | |||
elöl $u // in front of | |||
elől $u | |||
elé $u | |||
előtt $u | |||
mögül $u // behind | |||
mögött $u | |||
mögé $u | |||
kívül $u | |||
után $u // after | |||
alól $u | |||
alá $u | |||
alatt $u // below | |||
felől $u // above | |||
felé $u | |||
fölé $u | |||
felett $u // above | |||
fölött $u | |||
mellől $u // besides | |||
mellé $u | |||
mellett $u | |||
közül $u | |||
közé $u | |||
között $u | |||
an $u // so many persons | |||
as $u | |||
ba $u // into | |||
ban $u // in | |||
be $u | |||
ben $u | |||
ból $u // from inside | |||
ből $u | |||
e $u // in query, his/her | |||
ei $u // his her multiole | |||
en $u | |||
es $u | |||
hez $u | |||
hoz $u // to | |||
höz $u | |||
ig $u // up to | |||
ik $u // -th | |||
nak $u // of, him/her | |||
nek $u | |||
nál $u // by | |||
nél $u | |||
on $u // on | |||
en $u // on | |||
os $u | |||
ra $u // onto | |||
re $u | |||
ról $u // from top of, about | |||
röl $u | |||
ről $u | |||
szer $u | |||
szor $u // times | |||
szór $u | |||
ször $u | |||
tól $u // from | |||
töl $u | |||
től $u | |||
val $u // with | |||
vel $u | |||
án $u // on that day | |||
é $u // his, her | |||
éi $u // his, her multiple | |||
én $u | |||
ón $u | |||
ós $u | |||
ön $u | |||
ös $u | |||
ellen $u // against | |||
elé $u // before | |||
óta $u // since | |||
sok $u // many | |||
kevés $u // few | |||
se $u // neither | |||
sem $u // nor | |||
be $u //into | |||
ki $u // out of | |||
le $u // down | |||
fel $u // up | |||
föl $u // up | |||
meg $u // finish an action | |||
el $u // away | |||
át $u //through | |||
rá $u //onto | |||
ide $u // here | |||
oda $u // there | |||
szét $u //apart | |||
össze $u //connect with | |||
vissza $u //back | |||
ellen $u //against | |||
volna $u // would | |||
részén $u //on ... part of | |||
nélkül $u // without | |||
folytán $u // because of | |||
úgy $u // like that | |||
így $u // like this | |||
egyaránt $u // alike | |||
minden $u // all | |||
részben $u // partly | |||
egyik $u // one of | |||
másik $u // the other | |||
// word pairs | |||
(hogy a) h,oJ,A | |||
(hogy az) h,oJ,Az | |||
(hogy aki) h,oJ,Aki | |||
// Verbs | |||
vagyok $u // to be, present | |||
vagy $u | |||
van $u | |||
vagyunk $u | |||
vagytok $u | |||
vannak $u | |||
voltam $u // to be, past | |||
voltál $u | |||
volt $u | |||
voltunk $u | |||
voltatok $u | |||
voltak $u | |||
leszek $u // to be, future | |||
leszel $u | |||
lesz $u | |||
leszünk $u | |||
lesztek $u | |||
lesznek $u | |||
kell $u+ // should | |||
szabad $u+ // can (allowed) | |||
fog $u+ // going to | |||
fogok $u+ | |||
fogsz $u+ | |||
fogunk $u+ | |||
fogtok $u+ | |||
fognak $u+ | |||
tud $u+ // can | |||
tudok $u+ | |||
tudsz $u+ | |||
tudunk $u+ | |||
tudtok $u+ | |||
tudnak $u+ | |||
// Letters | |||
_a A: | |||
a A: $atend // letter "a" | |||
b be: | |||
c tse: | |||
d de: | |||
_e E | |||
f Eff | |||
g ge: | |||
h ha: | |||
j je: | |||
k ka: | |||
l Ell | |||
m Emm | |||
n Enn | |||
p pe: | |||
q ku | |||
r ERR | |||
s S_ | |||
s ES $atend | |||
_s ES | |||
v ve: | |||
w duplAve: | |||
x iks | |||
y ipsilon | |||
z ze: | |||
_é e: | |||
é $atend | |||
cs tSe: | |||
dz dze: | |||
dzs dZe: | |||
sz Es | |||
zs Ze: | |||
gy Je: | |||
ty ce: | |||
ly Ellipsilon | |||
ny En^ | |||
_. pont | |||
Ft foR2int | |||
// Main Exceptions List | |||
//===================== | |||
nato na:to: | |||
@@ -1,7 +1,7 @@ | |||
name bosnian | |||
language bs | |||
phonemes hr | |||
dictionary hr | |||
dictionary hbs | |||
gender male | |||
pitch 81 120 |
@@ -0,0 +1,8 @@ | |||
name greek-ancient | |||
language grc | |||
gender male | |||
stressLength 170 170 190 190 0 0 230 240 | |||
dictrules 1 | |||
words 1 | |||
@@ -1,7 +1,10 @@ | |||
name croatian | |||
language hr | |||
language hbs | |||
gender male | |||
dictionary hbs | |||
// attributes towards !variant3 | |||
pitch 81 120 | |||
formant 0 100 100 100 |
@@ -0,0 +1,14 @@ | |||
name serbian | |||
language sr | |||
gender male | |||
dictionary hbs | |||
// attributes towards !variant3 pitch 80 120 | |||
formant 0 100 100 100 | |||
formant 1 97 97 100 | |||
formant 2 97 97 100 | |||
formant 3 97 102 100 | |||
formant 4 97 102 100 | |||
formant 5 97 102 100 | |||
stressAdd 10 10 0 0 0 0 -30 -30 |
@@ -0,0 +1,29 @@ | |||
name Mandarin test | |||
language zh | |||
gender male | |||
words 1 | |||
//for some dialects | |||
//[en]: replace ng with n | |||
//[zh]: 无后鼻音,ng读成n | |||
//replace 0 N n | |||
//[en]: replace rfx consonants | |||
//[zh]: 无卷舌音,r读成l或z,er读成e | |||
//replace 0 ts.h tsh | |||
//replace 0 ts. ts | |||
//replace 0 s. s | |||
//replace 0 i. i[ | |||
//replace 0 z. l | |||
//replace 0 z. z | |||
//replace 0 @r @ | |||
//[en]: replace beginning n or l | |||
//[zh]: 不分nl,n读成l或l读成n | |||
//replace 2 n l | |||
//replace 2 l n | |||
//[en]: replace beginning w with v | |||
//[zh]: w读成v | |||
//replace 0 w v |
@@ -21,9 +21,9 @@ | |||
pl 15 107 | |||
sk 29 125 | |||
cs 6 125 | |||
hr 19 129 | |||
mk 3 130 | |||
sr 2 129 | |||
hr 20 130 | |||
mk 3 131 | |||
sr 18 130 | |||
ru 38 126 | |||
it 17 118 | |||
la 21 114 | |||
@@ -95,6 +95,7 @@ d/d_ [d] base | |||
[d;] ro | |||
[d] el | |||
[d] sw | |||
d/d_dnt [d] sr | |||
d/dr [*] base | |||
[d] base | |||
[d[] base | |||
@@ -137,6 +138,8 @@ dzh/dzh [dZ] base | |||
[dz;] base | |||
[J] hi | |||
[dZ;] mk | |||
[dZ] sr | |||
[dZ;] sr | |||
[dZ;] ru | |||
dzh/dzh_ [dZ] base | |||
[dZ;] base | |||
@@ -197,6 +200,42 @@ g/g_ [g] base | |||
g/xg [g] base | |||
[g] cy | |||
[g] es | |||
h/h_ [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
h/h@ [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[th] hi | |||
[h] sr | |||
[<h>] la | |||
h/ha [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
h/he [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
h/hi [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
h/ho [h] base | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
h/hu [h] base | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
h/hu_fi [h] fi | |||
j2/_j2 [;] base | |||
j2/j2@ [(@)] base | |||
j2/j2a [(a)] base | |||
@@ -302,10 +341,12 @@ l/xl [(@)] base | |||
[(o)] base | |||
[(u)] base | |||
m/_m [m] base | |||
[m] sr | |||
[m;] ru | |||
[m;] ro | |||
[m] zh | |||
m/m_ [m] base | |||
[m] sr | |||
[m;] ru | |||
[m;] ro | |||
m/m@ [(@)] base | |||
@@ -314,18 +355,24 @@ m/ma [(a)] base | |||
m/me [(e)] base | |||
m/mi [(i)] base | |||
m/mj [m] base | |||
[m] sr | |||
[m;] ru | |||
[m;] ro | |||
m/mo [(o)] base | |||
m/m_sr.wav [m] sr | |||
m/mu [(u)] base | |||
n^/_n^ [n^] base | |||
[n^] sr | |||
n^/n^_ [n^] base | |||
[n^] sr | |||
n^/n^@ [(@)] base | |||
n^/n^#_ [n^#] is | |||
n/_n [n] base | |||
[n] sr | |||
[n;] ro | |||
[n] zh | |||
n/n_ [n] base | |||
[n] sr | |||
[n;] ro | |||
[n] zh | |||
n/n@ [(@)] base | |||
@@ -342,12 +389,18 @@ nn/inn [(i)] base | |||
n/nj [n] base | |||
[n.] base | |||
[n^] base | |||
[n] sr | |||
[n^] sr | |||
[n;] ro | |||
n^/nj_sr.wav [N] sr | |||
[n^] sr | |||
nn/_nn [N] base | |||
[N] en | |||
[N] sr | |||
[N] zh | |||
nn/nn_ [N] base | |||
[N] en | |||
[N] sr | |||
[N] zh | |||
nn/nn@ [(@)] base | |||
nn/nn#_ [N#] is | |||
@@ -355,12 +408,15 @@ nn/nna [(a)] base | |||
nn/nne [(e)] base | |||
nn/nni [(i)] base | |||
nn/nnj [N] base | |||
[N] sr | |||
nn/nno [(o)] base | |||
nn/nnu [(u)] base | |||
n^/n^o [(o)] base | |||
n/no [(o)] base | |||
n/_nr [n.] base | |||
n/nr_ [n.] base | |||
n/n_sr.wav [N] sr | |||
[n] sr | |||
n^/n^u [(u)] base | |||
n/nu [(u)] base | |||
r2/_r2 [r-] base | |||
@@ -382,12 +438,18 @@ r3/r_i [(i)] base | |||
r3/r_n [r/] base | |||
[r/] ru | |||
r3/r_o [(o)] base | |||
r3/r_sr.wav [R] sr | |||
[r*] sr | |||
[r-] sr | |||
r3/r_trill [R2] base | |||
[R3] base | |||
[r] af | |||
[r] cy | |||
[r] nl | |||
[R] sk | |||
[R] sr | |||
[r*] sr | |||
[r-] sr | |||
[x] pt | |||
r3/r_trill2 [R] base | |||
[R] hr | |||
@@ -467,6 +529,8 @@ r/xr [(@)] base | |||
[(u)] base | |||
ufric/ch [C] base | |||
[C2] de | |||
ufric/ch_sr [h] sr | |||
[x] sr | |||
ufric/f [f] base | |||
[pF] de | |||
[f;] ro | |||
@@ -474,41 +538,6 @@ ufric/f [f] base | |||
[f] zh | |||
ufric/f_ [f] base | |||
[f;] ro | |||
ufric/h_ [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
ufric/h@ [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[th] hi | |||
[<h>] la | |||
ufric/ha [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
ufric/he [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
ufric/hi [h] base | |||
[h] fi | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
ufric/ho [h] base | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
ufric/hu [h] base | |||
[H] hi | |||
[h] hi | |||
[<h>] la | |||
ufric/hu_fi [h] fi | |||
ufric/ll [L] base | |||
[l#] is | |||
ufric/s [s] base | |||
@@ -539,6 +568,9 @@ ufric/sh_pzd [S;] base | |||
ufric/sh_pzd_ [S;] base | |||
[Z;] base | |||
ufric/sh_rfx [s.] base | |||
ufric/sh_sr.wav [S] sr | |||
[Z] sr | |||
[dZ] sr | |||
ufric/s_pzd [s;] base | |||
[z;] base | |||
[s;] ro | |||
@@ -554,6 +586,8 @@ ufric/x2 [x2] af | |||
[x2] nl | |||
[x2] pt | |||
ufric/x_hr [x] hr | |||
ufric/x_sr [h] sr | |||
[x] sr | |||
ustop/c [c] base | |||
ustop/k [k] base | |||
[k] en | |||
@@ -720,6 +754,7 @@ ustop/t_short [t.] hi | |||
[t] el | |||
ustop/tsh_pzd [tS;] zh | |||
ustop/tsh_pzd_unasp [tS;] zh | |||
ustop/tsh_sr.wav [tS] sr | |||
ustop/ts_pzd [tS;] base | |||
[ts;] base | |||
[ch] hi | |||
@@ -728,8 +763,12 @@ ustop/ts_pzd_ [c] hi | |||
[c] hu | |||
ustop/ts_pzd2 [c] hi | |||
[c] hu | |||
ustop/t_sr [d] sr | |||
[t] sr | |||
ustop/ts_rfx [ts.] zh | |||
ustop/ts_rfx_unasp [ts.] zh | |||
ustop/ts_sr.wav [tS;] sr | |||
[dZ;] sr | |||
ustop/ts_unasp [ts] zh | |||
ustop/t_unasp [t] zh | |||
vdiph/0i [OI] pt | |||
@@ -1016,6 +1055,7 @@ voc/z_ [z] base | |||
voc/zh [Z] base | |||
[z.] base | |||
[R^] sk | |||
[Z] sr | |||
[Z;] ro | |||
voc/zh_ [Z] base | |||
[z.] base | |||
@@ -1036,6 +1076,7 @@ vowel/@ [@] base | |||
[@4] hi | |||
[@] hr | |||
vowel/@- [@-] base | |||
[r*] hr | |||
vowel/& [a] en_rp | |||
[&] fi | |||
[&:] hi | |||
@@ -1083,7 +1124,6 @@ vowel/a [a] en_n | |||
[a:] sk | |||
[A] hr | |||
[a] hr | |||
[a] sr | |||
[a] it | |||
[a:] la | |||
[a] zh |
@@ -146,4 +146,12 @@ phoneme R | |||
lengthmod 6 | |||
endphoneme | |||
phoneme r* | |||
vowel nonsyllabic | |||
starttype (@) endtype (@) | |||
formants vowel/@- | |||
unstressed | |||
appendph * | |||
length 50 | |||
endphoneme | |||
@@ -337,12 +337,12 @@ phoneme h | |||
vls glt apr | |||
length 100 | |||
lengthmod 3 | |||
wave ufric/h_%70 // no vowel following | |||
before (@) ufric/h@ | |||
before (a) ufric/ha | |||
before (e) ufric/he | |||
before (i) ufric/hi | |||
before (o) ufric/hu_fi%70 | |||
before (u) ufric/hu_fi%80 | |||
wave h/h_%70 // no vowel following | |||
before (@) h/h@ | |||
before (a) h/ha | |||
before (e) h/he | |||
before (i) h/hi | |||
before (o) h/hu_fi%70 | |||
before (u) h/hu_fi%80 | |||
endphoneme | |||
@@ -233,26 +233,26 @@ phoneme h // use with voiced aspirated conants [bh] [dh] etc | |||
vls glt apr | |||
length 100 | |||
lengthmod 3 | |||
wave ufric/h_%70 // no vowel following | |||
before (@) ufric/h@+35 | |||
before (a) ufric/ha+35 | |||
before (e) ufric/he+35 | |||
before (i) ufric/hi+35 | |||
before (o) ufric/ho+35 | |||
before (u) ufric/hu+35 | |||
wave h/h_%70 // no vowel following | |||
before (@) h/h@+35 | |||
before (a) h/ha+35 | |||
before (e) h/he+35 | |||
before (i) h/hi+35 | |||
before (o) h/ho+35 | |||
before (u) h/hu+35 | |||
endphoneme | |||
phoneme H // use for full "h" | |||
vls glt apr | |||
length 100 | |||
lengthmod 3 | |||
wave ufric/h_%70 // no vowel following | |||
before (@) ufric/h@ | |||
before (a) ufric/ha | |||
before (e) ufric/he | |||
before (i) ufric/hi | |||
before (o) ufric/ho | |||
before (u) ufric/hu | |||
wave h/h_%70 // no vowel following | |||
before (@) h/h@ | |||
before (a) h/ha | |||
before (e) h/he | |||
before (i) h/hi | |||
before (o) h/ho | |||
before (u) h/hu | |||
endphoneme | |||
@@ -345,7 +345,7 @@ phoneme th // dental variant of /t/ Same as [t] for now | |||
vowelin f1=0 f2=1500 -300 300 f3=-100 80 | |||
vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | |||
lengthmod 2 | |||
wave ustop/t_hi%50+ufric/h@ | |||
wave ustop/t_hi%50+h/h@ | |||
switchvoicing d | |||
endphoneme | |||
@@ -149,13 +149,13 @@ phoneme <h> | |||
vls glt apr | |||
length 50 | |||
lengthmod 3 | |||
wave ufric/h_%70 // no vowel following | |||
before (@) ufric/h@ | |||
before (a) ufric/ha | |||
before (e) ufric/he | |||
before (i) ufric/hi | |||
before (o) ufric/ho | |||
before (u) ufric/hu | |||
wave h/h_%70 // no vowel following | |||
before (@) h/h@ | |||
before (a) h/ha | |||
before (e) h/he | |||
before (i) h/hi | |||
before (o) h/ho | |||
before (u) h/hu | |||
endphoneme | |||
@@ -1,9 +1,222 @@ | |||
// include any phonemes which are different from those | |||
// which are inherited from the base language(s) | |||
phoneme a | |||
vowel starttype (a) endtype (a) | |||
length 160 | |||
formants vowel/a | |||
reduceto & 4 | |||
// ufric/x_sr | |||
// ufric/ch_sr | |||
// ufric/sh_sr | |||
// ustop/t_sr | |||
// ustop/ts_sr | |||
// ustop/tsh_sr | |||
// r3/r_sr | |||
// m/m_sr | |||
// n/n_sr | |||
// n^/nj_sr | |||
// This file inherits phonemes from ph_croatian | |||
// Only phonemes which differ from the inherited phonemes need | |||
// to be included here. | |||
phoneme t // dental variant of /t/ | |||
vls dnt stop | |||
vowelin f1=0 f2=1600 -300 300 f3=-100 80 | |||
vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||
lengthmod 2 | |||
wave ustop/t_sr%50 | |||
before _ ustop/t_sr%35 | |||
switchvoicing d | |||
endphoneme | |||
phoneme d | |||
vcd alv stop | |||
vowelin f1=2 f2=1700 -300 300 f3=-100 80 amp=16 | |||
vowelout f1=2 f2=1700 -300 300 f3=-100 80 | |||
formants d/d_dnt+ustop/t_sr%50 | |||
before _ d/d_dnt+ustop/t_sr | |||
before r d/d_dnt+ustop/t_sr%50 | |||
after _ d/d_dnt+ustop/t_sr | |||
after @ d/d_dnt+ustop/t_sr | |||
lengthmod 5 | |||
switchvoicing t | |||
endphoneme | |||
// This is for letter "h" at the beginning of a word | |||
phoneme x | |||
vls vel frc | |||
lengthmod 3 | |||
wave ufric/x_sr%70 // no vowel following | |||
before (a) ufric/x_sr | |||
before (e) ufric/ch_sr | |||
before (i) ufric/ch_sr | |||
before (o) ufric/x_sr | |||
before (u) ufric/x_sr | |||
endphoneme | |||
// This is for letter "h" not at the beginning of word | |||
phoneme h | |||
vls vel frc | |||
lengthmod 3 | |||
wave ufric/x_sr%70 // no vowel following | |||
before (@) h/h@ | |||
before (a) ufric/x_sr | |||
before (e) ufric/ch_sr | |||
before (i) ufric/ch_sr | |||
before (o) ufric/x_sr | |||
before (u) ufric/x_sr | |||
endphoneme | |||
phoneme R | |||
liquid | |||
vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||
vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||
formants r3/r_trill+r3/r_sr.wav%65 | |||
after & r3/r_trill+r3/r_sr.wav | |||
after e r3/r_trill+r3/r_sr.wav | |||
after i r3/r_trill+r3/r_sr.wav | |||
after o r3/r_trill+r3/r_sr.wav | |||
after u r3/r_trill+r3/r_sr.wav | |||
after y r3/r_trill+r3/r_sr.wav | |||
trill | |||
lengthmod 6 | |||
endphoneme | |||
// This is "r" which doesn't follow a vowel | |||
phoneme r* | |||
liquid | |||
vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||
vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||
formants r3/r_trill+r3/r_sr.wav%65 | |||
trill | |||
lengthmod 6 | |||
endphoneme | |||
// This is "r" which doesn't have a vowel before or after it | |||
phoneme r- | |||
liquid | |||
vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||
vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||
formants r3/r_trill+r3/r_sr.wav%65 | |||
trill | |||
lengthmod 6 | |||
endphoneme | |||
phoneme dZ | |||
vcd pla afr sibilant | |||
vowelin f1=2 f2=2300 200 400 f3=100 80 | |||
vowelout f1=2 f2=2300 250 300 f3=100 80 brk | |||
formants dzh/dzh+ufric/sh_sr.wav | |||
before _ dzh/dzh+ufric/sh_sr.wav | |||
after _ NULL | |||
after @ dzh/dzh+ufric/sh_sr.wav | |||
lengthmod 5 | |||
switchvoicing tS | |||
endphoneme | |||
phoneme dZ; | |||
vcd pla afr sibilant palatal | |||
vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | |||
formants dzh/dzh+ustop/ts_sr.wav | |||
before _ dzh/dzh+ustop/ts_sr.wav | |||
after _ NULL | |||
after @ dzh/dzh+ustop/ts_sr.wav | |||
lengthmod 5 | |||
switchvoicing tS; | |||
endphoneme | |||
phoneme tS | |||
vls pla afr sibilant | |||
vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||
lengthmod 2 | |||
wave ustop/tsh_sr.wav | |||
before _ ustop/tsh_sr.wav | |||
switchvoicing dZ | |||
endphoneme | |||
phoneme tS; | |||
vls pal afr sibilant palatal | |||
vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | |||
lengthmod 2 | |||
wave ustop/ts_sr.wav | |||
before _ ustop/ts_sr.wav | |||
switchvoicing dZ; | |||
endphoneme | |||
phoneme Z | |||
vcd pla frc sibilant | |||
vowelin f1=0 f2=2000 0 300 f3=-200 80 | |||
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 | |||
lengthmod 6 | |||
switchvoicing S | |||
endphoneme | |||
phoneme S | |||
vls pla frc sibilant | |||
vowelin f1=0 f2=2100 100 300 f3=-100 80 | |||
vowelout f1=0 f2=2100 100 300 f3=-100 80 | |||
length 100 | |||
lengthmod 3 | |||
wave ufric/sh_sr.wav | |||
before _ ufric/sh_sr.wav | |||
switchvoicing Z | |||
endphoneme | |||
phoneme m | |||
vcd blb nasal | |||
vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk | |||
length 100 | |||
lengthmod 4 | |||
formants NULL | |||
after _ m/_m+m/m_sr.wav | |||
before _ m/m_+m/m_sr.wav | |||
before (r) m/mj+m/m_sr.wav | |||
endphoneme | |||
phoneme n | |||
vcd alv nasal | |||
vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk | |||
length 100 | |||
lengthmod 4 | |||
formants NULL | |||
after _ n/_n+n/n_sr.wav | |||
after n n/_n+n/n_sr.wav // lengthen [nn] | |||
before _ n/n_+n/n_sr.wav | |||
before (r) n/nj+n/n_sr.wav | |||
endphoneme | |||
phoneme n^ | |||
vcd pal nasal palatal | |||
vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate | |||
length 100 | |||
lengthmod 4 | |||
formants NULL | |||
after _ n^/_n^+n^/nj_sr.wav | |||
before _ n^/n^_+n^/nj_sr.wav | |||
before (r) n/nj+n^/nj_sr.wav | |||
endphoneme | |||
phoneme N | |||
vcd vel nasal | |||
// vowelout brk | |||
vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | |||
length 100 | |||
formants NULL | |||
after _ nn/_nn+n/n_sr.wav | |||
before _ nn/nn_+n/n_sr.wav | |||
before (r) nn/nnj+n^/nj_sr.wav | |||
lengthmod 8 // longer than 'n' | |||
endphoneme |
@@ -27,7 +27,8 @@ phonemenumber 20 - // syllabic consonant | |||
phonemenumber 21 _^_ // Change language | |||
phonemenumber 22 _X1 // a language specific action | |||
phonemenumber 23 _| // very short pause | |||
phonemenumber 24 t# // reduced version of [t] | |||
phonemenumber 24 _:: // long pause | |||
phonemenumber 25 t# // reduced version of [t] | |||
// The base phoneme table contains the utility phonemes, the consonants, | |||
// and a schwa. The vowels are defined in the language specific phoneme | |||
@@ -148,6 +149,7 @@ phoneme ? // glottal stop | |||
starttype _ endtype _ | |||
length 45 | |||
lengthmod 5 // ?? | |||
beforenotvowel _ // change to pause_short | |||
nolink | |||
endphoneme | |||
@@ -1109,13 +1111,13 @@ phoneme h | |||
vls glt apr | |||
length 100 | |||
lengthmod 3 | |||
wave ufric/h_%70 // no vowel following | |||
before (@) ufric/h@ | |||
before (a) ufric/ha | |||
before (e) ufric/he | |||
before (i) ufric/hi | |||
before (o) ufric/ho | |||
before (u) ufric/hu | |||
wave h/h_%70 // no vowel following | |||
before (@) h/h@ | |||
before (a) h/ha | |||
before (e) h/he | |||
before (i) h/hi | |||
before (o) h/ho | |||
before (u) h/hu | |||
endphoneme | |||
@@ -2072,11 +2072,15 @@ wxString CompileAllDictionaries() | |||
int err; | |||
int errors = 0; | |||
int dict_count = 0; | |||
FILE *f_in; | |||
FILE *log; | |||
FILE *f_phused; | |||
char dictname[80]; | |||
char fname_log[sizeof(path_dsource)+20]; | |||
char save_voice_name[80]; | |||
char path[sizeof(path_home)+40]; // path_dsource+20 | |||
char buf[200]; | |||
char voicename[80]; | |||
if(!wxDirExists(path_dictsource)) | |||
{ | |||
@@ -2121,8 +2125,38 @@ wxString CompileAllDictionaries() | |||
dictstr = fname.GetName().BeforeLast('_'); | |||
strcpy(dictname,dictstr.mb_str(wxConvLocal)); | |||
dict_count++; | |||
strcpy(voicename,dictname); | |||
// read the *_rules file to see if a phoneme table is specified though a voice name | |||
sprintf(path,"%s%s_rules",path_dsource,dictname); | |||
if((f_in = fopen(path,"r")) != NULL) | |||
{ | |||
unsigned int ix; | |||
unsigned int c; | |||
for(ix=0; ix<20; ix++) | |||
{ | |||
if(fgets(buf,sizeof(buf),f_in) == NULL) | |||
break; | |||
if(memcmp(buf,"//voice=",8)==0) | |||
{ | |||
for(ix=0; ix<sizeof(voicename); ix++) | |||
{ | |||
if(isspace(c = buf[ix+8])) | |||
{ | |||
break; | |||
} | |||
voicename[ix] = c; | |||
} | |||
voicename[ix] = 0; | |||
break; | |||
} | |||
} | |||
fclose(f_in); | |||
} | |||
LoadVoice(dictname,0); | |||
LoadVoice(voicename,0); | |||
if((err = CompileDictionary(path_dsource, dictname,log,NULL)) > 0) | |||
{ |
@@ -34,6 +34,7 @@ | |||
//#define OPT_FORMAT // format the text and write formatted copy to Log file | |||
//#define OUTPUT_FORMAT | |||
extern void Write4Bytes(FILE *f, int value); | |||
int HashDictionary(const char *string); | |||
static FILE *f_log = NULL; | |||
@@ -1378,8 +1379,8 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) | |||
} | |||
if(replace1 != 0) | |||
{ | |||
fwrite(&replace1,1,4,f_out); | |||
fwrite(&replace2,1,4,f_out); | |||
Write4Bytes(f_out,replace1); // write as little-endian | |||
Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary() | |||
} | |||
} | |||
break; |
@@ -86,6 +86,21 @@ void strncpy0(char *to,const char *from, int size) | |||
to[size-1] = 0; | |||
} | |||
#ifdef ARCH_BIG | |||
int reverse_word_bytes(int word) | |||
{//============================= | |||
// reverse the order of bytes from little-endian to big-endian | |||
int ix; | |||
int word2 = 0; | |||
for(ix=24; ix>=0; ix -= 8) | |||
{ | |||
word2 |= (word >> ix) & 0xff; | |||
word2 = word2 << 8; | |||
} | |||
return(word2); | |||
} | |||
#endif | |||
int LookupMnem(MNEM_TAB *table, char *string) | |||
@@ -237,6 +252,15 @@ void Translator::InitGroups(void) | |||
pw += 2; // find the end of the replacement list, each entry is 2 words. | |||
} | |||
p = (char *)(pw+1); | |||
#ifdef ARCH_BIG | |||
pw = (unsigned int *)langopts.replace_chars; | |||
while(*pw != 0) | |||
{ | |||
*pw = reverse_word_bytes(*pw); | |||
pw++; | |||
} | |||
#endif | |||
continue; | |||
} | |||
@@ -1280,23 +1304,19 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
if((ph = phoneme_tab[*p]) != NULL) | |||
{ | |||
int gap = langopts.word_gap & 0xf00; | |||
if(ph->type == phSTRESS) | |||
ph = phoneme_tab[p[1]]; | |||
if(((gap) && (vowel_stress[1] >= 4) && (prev_stress >= 4)) || (langopts.word_gap & 0x8)) | |||
#ifdef deleted | |||
int gap = langopts.word_gap & 0x700; | |||
if((gap) && (vowel_stress[1] >= 4) && (prev_stress >= 4)) | |||
{ | |||
/* two primary stresses together, insert a short pause */ | |||
if(gap == 0x0300) | |||
*output++ = phonPAUSE; | |||
else | |||
if((gap == 0x0200) && (ph->type == phVOWEL)) | |||
*output++ = phonGLOTTALSTOP; | |||
else | |||
*output++ = phonPAUSE_SHORT; | |||
*output++ = pause_phonemes[gap >> 8]; | |||
} | |||
else | |||
#endif | |||
if((langopts.vowel_pause & 0x30) && (ph->type == phVOWEL)) | |||
{ | |||
// word starts with a vowel |
@@ -81,8 +81,9 @@ | |||
#define phonSWITCH 21 | |||
#define phonX1 22 // a language specific action | |||
#define phonPAUSE_VSHORT 23 | |||
#define phonT_REDUCED 24 | |||
#define phonPAUSE_LONG 24 | |||
#define phonT_REDUCED 25 | |||
extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, glottalstop | |||
// place of articulation | |||
#define phPLACE 0xf0000 |
@@ -30,6 +30,7 @@ | |||
#include "translate.h" | |||
const unsigned char pause_phonemes[8] = {0, phonPAUSE_VSHORT, phonPAUSE_SHORT, phonPAUSE, phonPAUSE_LONG, phonGLOTTALSTOP, phonPAUSE_LONG, phonPAUSE_LONG}; | |||
int Translator::ChangePhonemes(PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch) | |||
@@ -497,10 +498,6 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) | |||
{ | |||
int x; | |||
if(langopts.word_gap & 1) | |||
{ | |||
insert_ph = phonPAUSE_VSHORT; | |||
} | |||
if(langopts.vowel_pause && (ph->type != phPAUSE) && (next->type == phVOWEL)) | |||
{ | |||
if(langopts.vowel_pause & 0x04) | |||
@@ -524,6 +521,11 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) | |||
insert_ph = phonPAUSE_SHORT; | |||
} | |||
} | |||
if((x = (langopts.word_gap & 0x7)) != 0) | |||
{ | |||
insert_ph = pause_phonemes[x]; | |||
} | |||
} | |||
next2 = phoneme_tab[(plist2+2)->phcode]; | |||
@@ -540,7 +542,7 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) | |||
} | |||
} | |||
else | |||
if(((langopts.word_gap & 2)==0) || ((plist2+1)->sourceix == 0)) | |||
if(((langopts.word_gap & 8)==0) || ((plist2+1)->sourceix == 0)) | |||
{ | |||
// This phoneme can be linked to a following vowel by inserting a linking phoneme | |||
if(next->type == phVOWEL) |
@@ -455,7 +455,7 @@ void Translator::CalcLengths() | |||
{ | |||
len = langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod]; | |||
if((next->newword) && (langopts.word_gap & 0x4)) | |||
if((next->newword) && (langopts.word_gap & 0x20)) | |||
{ | |||
// consider as a pause + first phoneme of the next word | |||
length_mod = (len + langopts.length_mods0[next->ph->length_mod *10+ 1])/2; |
@@ -221,12 +221,13 @@ void MarkerEvent(int type, unsigned int char_position, int value, unsigned char | |||
static void init_path(void) | |||
{//======================== | |||
static void init_path(char *argv0) | |||
{//=============================== | |||
#ifdef PLATFORM_WINDOWS | |||
HKEY RegKey; | |||
unsigned long size; | |||
unsigned long var_type; | |||
char *p; | |||
char *env; | |||
unsigned char buf[sizeof(path_home)-12]; | |||
@@ -234,9 +235,18 @@ static void init_path(void) | |||
{ | |||
sprintf(path_home,"%s\\espeak-data",env); | |||
if(GetFileLength(path_home) == -2) | |||
return; // an espeak-data directory exists | |||
return; // an espeak-data directory exists in the directory specified by environment variable | |||
} | |||
strcpy(path_home,argv0); | |||
if((p = strrchr(path_home,'\\')) != NULL) | |||
{ | |||
strcpy(&p[1],"espeak-data"); | |||
if(GetFileLength(path_home) == -2) | |||
return; // an espeak-data directory exists in the same directory as the espeak program | |||
} | |||
// otherwise, look in the Windows Registry | |||
buf[0] = 0; | |||
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | |||
size = sizeof(buf); | |||
@@ -383,7 +393,7 @@ int main (int argc, char **argv) | |||
option_multibyte = espeakCHARS_AUTO; // auto | |||
f_trans = stdout; | |||
init_path(); | |||
init_path(argv[0]); | |||
#ifdef NEED_GETOPT | |||
optind = 1; |
@@ -63,8 +63,12 @@ typedef struct { | |||
int LookupMnem(MNEM_TAB *table, char *string); | |||
#ifdef PLATFORM_WINDOWS | |||
#define N_PATH_HOME 220 | |||
#else | |||
#define N_PATH_HOME 150 | |||
#endif | |||
#define N_PATH_HOME 120 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.29.17 08.Nov.07"; | |||
const char *version_string = "1.29.18 10.Nov.07"; | |||
const int version_phdata = 0x012901; | |||
int option_device_number = -1; |
@@ -1142,16 +1142,6 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
DoMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++); | |||
} | |||
if((translator->langopts.word_gap & 1) || (translator->langopts.vowel_pause && (next->type == phVOWEL))) | |||
{ | |||
// prevent word merging into next, make it look as though next is a pause | |||
if((next->newword) && (next->type != phPAUSE)) | |||
{ | |||
// next_pause.ph = phoneme_tab[phonPAUSE]; | |||
// next = &next_pause; | |||
} | |||
} | |||
EndAmplitude(); | |||
if(p->prepause > 0) |
@@ -40,9 +40,7 @@ Translator_English::Translator_English() : Translator() | |||
static const short stress_lengths2[8] = {182,140, 220,220, 0,0, 248,275}; | |||
memcpy(stress_lengths,stress_lengths2,sizeof(stress_lengths)); | |||
langopts.vowel_pause = 0; | |||
langopts.stress_rule = 0; | |||
langopts.word_gap = 0; | |||
langopts.numbers = 0x41 + NUM_ROMAN; | |||
} |
@@ -123,8 +123,6 @@ Translator *SelectTranslator(const char *name) | |||
// 'diminished' is an unstressed final syllable | |||
tr->langopts.stress_flags = 0x6 | 0x10; | |||
tr->langopts.word_gap = 0; | |||
tr->langopts.vowel_pause = 0; | |||
tr->langopts.unstressed_wd1 = 0; | |||
tr->langopts.unstressed_wd2 = 2; | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
@@ -141,7 +139,7 @@ Translator *SelectTranslator(const char *name) | |||
static const short stress_lengths_de[8] = {150,130, 190,190, 0, 0, 260,275}; | |||
tr = new Translator(); | |||
tr->langopts.stress_rule = 0; | |||
tr->langopts.word_gap = 0x2; // don't use linking phonemes | |||
tr->langopts.word_gap = 0x8; // don't use linking phonemes | |||
tr->langopts.vowel_pause = 0x30; | |||
tr->langopts.param[LOPT_PREFIXES] = 1; | |||
memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths)); | |||
@@ -184,8 +182,6 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
tr->langopts.stress_rule = 2; | |||
tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||
tr->langopts.word_gap = 0; | |||
tr->langopts.vowel_pause = 0; | |||
tr->langopts.unstressed_wd1 = 0; | |||
tr->langopts.unstressed_wd2 = 2; | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
@@ -238,8 +234,6 @@ Translator *SelectTranslator(const char *name) | |||
// stress last syllable if it doesn't end in vowel or "s" or "n" | |||
// 'diminished' is an unstressed final syllable | |||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; | |||
tr->langopts.word_gap = 0; | |||
tr->langopts.vowel_pause = 0; | |||
tr->langopts.unstressed_wd1 = 0; | |||
tr->langopts.unstressed_wd2 = 2; | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
@@ -398,7 +392,6 @@ SetLengthMods(tr,3); // all equal | |||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
tr->langopts.stress_rule = 2; | |||
tr->langopts.word_gap = 0; | |||
tr->langopts.vowel_pause = 1; | |||
tr->langopts.unstressed_wd1 = 2; | |||
tr->langopts.unstressed_wd2 = 2; | |||
@@ -449,7 +442,6 @@ SetLengthMods(tr,3); // all equal | |||
tr = new Translator(); | |||
tr->langopts.stress_rule = 0; | |||
tr->langopts.word_gap = 0; | |||
tr->langopts.vowel_pause = 1; | |||
tr->langopts.param[LOPT_DIERESES] = 1; | |||
tr->langopts.param[LOPT_PREFIXES] = 1; | |||
@@ -637,7 +629,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
tr->langopts.stress_rule = 0; | |||
tr->langopts.word_gap = 0x4; // length of a final vowel is less dependent on the next consonant | |||
tr->langopts.word_gap = 0x20; // length of a final vowel is less dependent on the next consonant | |||
tr->langopts.vowel_pause = 4; | |||
tr->letter_groups[0] = vowels_vi; | |||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
@@ -650,7 +642,7 @@ SetLengthMods(tr,3); // all equal | |||
case L('z','h'): | |||
case L_zhy: | |||
{ | |||
static const short stress_lengths_zh[8] = {220,150, 230,230, 230,0, 230,250}; | |||
static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 230,250}; | |||
static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 }; | |||
tr = new Translator; | |||
@@ -663,7 +655,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) | |||
tr->langopts.ideographs = 1; | |||
tr->langopts.word_gap = 0x5; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word | |||
tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word | |||
if(name2 == L('z','h')) | |||
{ | |||
tr->langopts.textmode = 1; | |||
@@ -955,7 +947,6 @@ Translator_Afrikaans::Translator_Afrikaans() : Translator() | |||
static const short stress_lengths2[8] = {170,140, 220,220, 0, 0, 250,270}; | |||
langopts.stress_rule = 0; | |||
langopts.word_gap = 0; | |||
langopts.vowel_pause = 0x30; | |||
langopts.param[LOPT_DIERESES] = 1; | |||
langopts.param[LOPT_PREFIXES] = 1; |
@@ -254,11 +254,10 @@ extern const int param_defaults[N_SPEECH_PARAM]; | |||
typedef struct { | |||
// bit0=don't link consonants with the next word | |||
// bit1=don't add linking phonemes | |||
// bit2=length of a final vowel doesn't depend on the next phoneme | |||
// bits0-2 separate words with (1=pause_vshort, 2=pause_short, 3=pause, 4=pause_long 5=[?] phonemme) | |||
// bit 3=don't use linking phoneme | |||
// bit4=longer pause before STOP, VSTOP,FRIC | |||
// bit8-11=separate words with adjacent stressed syllables with (1=pause, 2=long pausem 3=[?] phoneme) | |||
// bit5=length of a final vowel doesn't depend on the next phoneme | |||
int word_gap; | |||
int vowel_pause; | |||
int stress_rule; // 1=first syllable, 2=penultimate, 3=last |