[1.29.18] Add data for Serbian voice ("sr").

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-fd96e6ae7743
This commit is contained in:
jonsd
2007-11-10 22:10:43 +00:00
parent c049552f9e
commit f9725f9f64
51 changed files with 1512 additions and 503 deletions
+13 -20
View File
@@ -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
+1
View File
@@ -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
+1 -1
View File
@@ -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
+29
View File
@@ -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 // τάς
+344
View File
@@ -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:
+603
View File
@@ -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
+15 -7
View File
@@ -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
-336
View File
@@ -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 -1
View File
@@ -1,7 +1,7 @@
name bosnian
language bs
phonemes hr
dictionary hr
dictionary hbs
gender male
pitch 81 120
+8
View File
@@ -0,0 +1,8 @@
name greek-ancient
language grc
gender male
stressLength 170 170 190 190 0 0 230 240
dictrules 1
words 1
+3
View File
@@ -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
+14
View File
@@ -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
+29
View File
@@ -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
+79 -39
View File
@@ -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
+8
View File
@@ -146,4 +146,12 @@ phoneme R
lengthmod 6
endphoneme
phoneme r*
vowel nonsyllabic
starttype (@) endtype (@)
formants vowel/@-
unstressed
appendph *
length 50
endphoneme
+7 -7
View File
@@ -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
+15 -15
View File
@@ -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
+7 -7
View File
@@ -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
+220 -7
View File
@@ -1,9 +1,222 @@
// include any phonemes which are different from those
// which are inherited from the base language(s)
// 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
phoneme a
vowel starttype (a) endtype (a)
length 160
formants vowel/a
reduceto & 4
// 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
+10 -8
View File
@@ -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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.
Binary file not shown.
+35 -1
View File
@@ -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);
LoadVoice(dictname,0);
// 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(voicename,0);
if((err = CompileDictionary(path_dsource, dictname,log,NULL)) > 0)
{
+3 -2
View File
@@ -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;
+29 -9
View File
@@ -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
+3 -2
View File
@@ -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
+7 -5
View File
@@ -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)
+1 -1
View File
@@ -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;
+14 -4
View File
@@ -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;
+5 -1
View File
@@ -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);
+1 -1
View File
@@ -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;
-10
View File
@@ -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)
-2
View File
@@ -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;
}
+4 -13
View File
@@ -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;
+3 -4
View File
@@ -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