Browse Source

[1.27.06] Roman number translation added (for some languages).

espeak_Char(32) can speak "space" by adding an entry for _#32 in *_list file. Similarly for Tab.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@61 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
f3a4623535

+ 2
- 1
dictsource/af_list View File

@@ -1,4 +1,4 @@
//maintainer: Willem van der Walt
//maintainer: Willem van der Walt
// email: [email protected]
// tel: +27 12 8413996
// Meraka Institute, CSIR
@@ -541,6 +541,7 @@ rukkerig rWk@r@x2
samelewing sA:m@l,e@v@N
sedert se@d@rt
sektore $2
sinteties $2
skepsele skEps@l@
s'n s'@n
sobere s'o@b@r@

+ 16
- 4
dictsource/af_rules View File

@@ -16,6 +16,7 @@
a (C a
C) a (Csier %a // (ge)finansier/kassier
j) a (pan %a //japan first a sound and stress

C) abie 'A:bi
abo (C %abO // move default stress and fix a and o sounds: abominasie/abonnement/aborsie
_) a (bC %a // abdy/ablatief/ablusie/abstrak, etdc.
@@ -37,6 +38,11 @@
_) aka a%k@ //akademie etc.
akkedis a%k@d'Is //akkedis and compounds
ae A: //should be A:@ but sounds wrong
konst) abel A:b@l //exception for konstabel in compounds
t) abel %ab'&l //tabelopskrif temperatuurtabel etc.
t) abell %ab'&l //tabelle fix double l
w) a (tering A: //watering exception to the rest
C) a (tering %a //short unstressed a before tering formatering etc. except watering
ai aI
adres %adrEs // fix last e sound of adres as last part of compounds
_) alle (C al@ // alledaags/e/allerhande
@@ -734,7 +740,8 @@
CoeC) e (C @ //fix e in boetedoening, boedelbelasting and many others
orr) e (l @ //fix e in borrel, orrel, korrel in compounds
intell) e (k %E //intellek, and friends

p) e (ring 'e@ //imansipering and others e sound and stress
roep) e (ring 'e@ //groepering e sound and stress
eval (u %iv%al // evaluasie/evalueer/evaluering
CAt) e (gn & //fix e in mikrotegnologie and others
ei) e @ //eiewys and others
@@ -924,6 +931,7 @@
iber (i@ %ibe@r // Liberië/Siberië/Liberiese/Siberiese/Iberiese
ie i
h) i (dro i //hidro in compounds
_) in (a@ In_ //inasem inagneming etc.
_) iese (C ,is@ // iesegrimmig and derivitives
ieus i'Y@s // this ending always takes stress
C) i (g @// figuur/figure/stoksielsaligalleenA
@@ -1320,7 +1328,6 @@
minder (jar m@n@r // move default stress: minderjarig and derivitives
miner (A m@n@r // mineraal and many compounds
mi (neur m%i // move default stress: mineur and compounds
minnares (_ m@n%arEs // fix stress and e sound: minnares/medeminnares and similar
mikr (o mikr
ministers m@n'Ist@rs
mise (ra m@s // fix stress and drop e: miserabel/-e/-s/-ste
@@ -1449,6 +1456,7 @@
_) na (skeer n''A: // restore default stress: naskeermiddel/-room
_) na (tC na // many compounds beginning with nat
na (tuur n%a // natuur and compounds and derivitives
navig n%av%ix2 //navigasie, navigeer etc.
@) na (_ na // shorten final na, except for:
r) na (_ nA: // daarna/hierna/waarna
nadruklik nA:dr'Wkl@k // nadruklik/e
@@ -2176,12 +2184,15 @@
te (oo t@ // geboorteoorskot/kosteoorweging/siekteoorsaak/terroristeoorlog
_) teraarde t%&r?A:rd@ // move default stress and fix e sounds: teraardebestelling/-s
n) terie t@r'i // galanterie/infanterie and compounds
wa) te (ring t@ //water exception to rest
Ca) te (ring t'e@ //opdatering formatering etc.
_) tering te@r@N // tering and compounds
tesou (rie t%Es%u //tesourie and compounds
moles) tering te@r@N // molestering/kindermolestering
_) ter (l t@r // move default stress: terloops/-e
@) term (_ t&r@ // correct pronunciation of e
@) terme (_ t&rm@ // correct pronunciation of 1st e
sin) te (ti te@ //sintetiseer, compounds and derivitives
tern (K t'&:r@-n //lantern ekstern etc.
tern (e_ t'&rn // interne/eksterne
_) ter (nA t@r // terneergedruk/ternouernood
@@ -2302,6 +2313,7 @@
ven (ster fe~n // nasalise
ven (yn f@n // venyn/venynig
ver f@r
virtu v@rtS%y //virtueel virtuose etc. fix v and t sounds and assure lack of stress
_) ver (@P3 f@r
verant (w f@r%ant // (on)verantwoordelik/-heid/verantwoording
verende f'e@r@nd@
@@ -2459,7 +2471,7 @@
woe (styn v%u // move default stress: woestyn and compounds
wolke vOlk@ // nimbuswolke/wolkekrabber
woorde vo@rd@
w (yser v //padwyser and many others with wyser in compounds
nt) w (A v

.group x
@@ -2515,7 +2527,7 @@
**
**) * (_ _::

+ plus
+ pl'Ws
_) ++ (_ pluspl'us
\+\+\+) + // ignore + after the first 3


+ 3
- 3
dictsource/dict_phonemes View File

@@ -307,9 +307,9 @@ y Y yI yU
* *; b b; c C d d;
dZ f f; g h j k l
l; m m; n N n; p p;
r s S s; S; t t; tS
ts ts; v v; w z Z z;
Z;
r s S S; t T t; tS
ts ts; v v; w w2 x z
Z z; Z;


Dictionary is_dict

+ 3
- 4
dictsource/en_list View File

@@ -54,6 +54,8 @@ z zEd
_cap k,ap@-t@L
_?A lEt3
_?? sImb@L
_#9 tab
_#32 speIs

_! Ekskl@m'eIS@n
_" kwoUts
@@ -135,6 +137,7 @@ _0M3 b'Ili@n
_0and @n
?3 _0and
_dpt pOInt
_roman roUm@n_


// ABBREVIATIONS
@@ -187,10 +190,6 @@ u.s ju:'Es
wwii dVb@Lju:dVb@Lju:t'u:
xy $abbrev

ii tu: $abbrev // roman numerals
iii Tri: $abbrev
iv fo@ $abbrev


nd $only
rd $only

+ 40
- 38
dictsource/es_list View File

@@ -3,43 +3,45 @@


// numbers
_0 TE*o
_1 'uno
_2 d'os
_3 t@-*'es
_4 kw'at@-*o
_5 T'inko
_6 s'eIs
_7 sj'Ete
_8 'otSo
_9 nw'Eve
_1X dj'ET
_11 'onTe
_12 d'oTe
_13 t@-*'ETe
_14 kat'oRTe
_15 k'inTe
_20 v'eInte
_2X v'eInt
_3X t@-*'eInta
_4X kwa*'Enta
_5X Tinkw'Enta
_6X sEs'Enta
_7X sEt'Enta
_8X otS'Enta
_9X nov'Enta
_0C T'ientos
_1C0 T'ien // exactly one hundred
_1C T'iento
_5C kinj'Entos
_0M1 m'il
_1M1 m'il // no '1' before thousand
_0M2 mil^'ones
_1M2 'unmil^'on
_0M4 _bil^'ones
_1M4 'unbil^'on
_0and i
_dpt koma
_0 TE*o
_1 'uno
_2 d'os
_3 t@-*'es
_4 kw'at@-*o
_5 T'inko
_6 s'eIs
_7 sj'Ete
_8 'otSo
_9 nw'Eve
_1X dj'ET
_11 'onTe
_12 d'oTe
_13 t@-*'ETe
_14 kat'oRTe
_15 k'inTe
_20 v'eInte
_2X v'eInt
_3X t@-*'eInta
_4X kwa*'Enta
_5X Tinkw'Enta
_6X sEs'Enta
_7X sEt'Enta
_8X otS'Enta
_9X nov'Enta
_0C T'ientos
_1C0 T'ien // exactly one hundred
_1C T'iento
_5C kinj'Entos
_7C s,EtETj'Entos
_9C n,ovETj'Entos
_0M1 m'il
_1M1 m'il // no '1' before thousand
_0M2 mil^'ones
_1M2 'unmil^'on
_0M4 _bil^'ones
_1M4 'unbil^'on
_0and i
_dpt koma



@@ -101,7 +103,7 @@ os $u+


// possessives
mi $u+
mi mi $u+
mis $u+
tu $u+
tus $u+

+ 9
- 5
dictsource/es_rules View File

@@ -1,12 +1,16 @@
// translation rules
// translation rules for Spanish
// This file is UTF-8 encoded

// Conditional rules
// ?1 Castilian
// ?2 Latin America


.group a
_) a (_ a
a a
ai aI
ay aI
ay (K aI
ay (_ 'aI


@@ -39,7 +43,7 @@
e E
e (_ e
ei eI
ey eI
ey (K eI
ey (_ 'eI
_) eu eU

@@ -153,7 +157,7 @@


.group v
_) v (_ ve
_) v (_ uve
v v
_) v v
m) v v
@@ -161,7 +165,7 @@


.group w
_) w (_ d'oBle,u
_) w (_ ,uve||d'oBle
w w



+ 1
- 31
dictsource/hr_list View File

@@ -155,37 +155,7 @@ _0M4 b'ilijUna
_1M4 b'ilijUn
_dpt _:z'a*Ez_

// Roman numerals
ii $abbrev
iii $abbrev
iv $abbrev
vii $abbrev
viii $abbrev
ix $abbrev
xi $abbrev
xii $abbrev
xiii $abbrev
xiv $abbrev
xvi $abbrev
xvii $abbrev
xviii $abbrev
xix $abbrev
xxi $abbrev
xxii $abbrev
xxiii $abbrev
xxiv $abbrev
xxvi $abbrev
xxvii $abbrev
xxviii $abbrev
xxix $abbrev
xxxi $abbrev
xxxii $abbrev
xxxiii $abbrev
xxxiv $abbrev
xxxvi $abbrev
xxxvii $abbrev
xxxviii $abbrev
xxxix $abbrev


// Abbreviations
aaa $abbrev

+ 10
- 28
dictsource/hu_list View File

@@ -63,34 +63,7 @@ u.n u:JnEvEzEt: $dot
ú.n u:JnEvEzEt: $dot
vö v'EZd||_'Yss2E

?1 i EJ $abbrev
ii kEttY: $abbrev
iii ha:R2om $abbrev
iv ne:J $abbrev
vi hAt $abbrev
vii he:t $abbrev
viii n^olts $abbrev
ix kilEnts $abbrev
xi tizEnEJ $abbrev
xii tizEnkEttY: $abbrev
xiii tizEnha:Rom $abbrev
xiv tizEnne:J $abbrev
xv tizEnYt $abbrev
xvi tizEnhAt $abbrev
xvii tizEnhe:t $abbrev
xviii tizEnn^olts $abbrev
xix tizEnkilEnts $abbrev
xx hu:s $abbrev
xxi husonEJ $abbrev
xxii husonkEttY: $abbrev
xxiii husonha:Rom $abbrev
xxiv husonne:J $abbrev
xxv husonYt $abbrev
xxvi husonhAt $abbrev
xxvii husonhe:t $abbrev
xxviii husonn^olts $abbrev
xxix husonkilEnts $abbrev
xxx hARmints $abbrev
?1 i EJ $abbrev // option for Roman number


// Articles
@@ -135,6 +108,8 @@ noha $u $pause // even thought
nem $alt2 $strend
ne $u+

e $u // "-e" question
e $atend // stressed at end of sentence

// Unstressed adverbs prepositions etc.
néhány $u+
@@ -189,6 +164,8 @@ ről $u
on $u // on
en $u
ön $u
an $u // so many persons
ón $u
szor $u // times
szer $u
ször $u
@@ -241,6 +218,9 @@ egyaránt $u // alike
minden $u // all
részben $u // partly

egyik $u // one of
másik $u // the other


// word pairs

@@ -341,5 +321,7 @@ $ dolla:R2
// Main Exceptions List
//=====================

nato na:to:




+ 9
- 7
dictsource/hu_rules View File

@@ -6,14 +6,12 @@
a A
_) a (_ %A

!_n) ato a:to: // NATO

.group á
á a:

.group b
b b
bb b:
// bb b:

biz (A b'iz, // bizalmas etc.
biedermeier bi:dER2ma:jER2
@@ -59,7 +57,7 @@ hierar) ch (i C

.group d
d d
dd d:
// dd d:
dz dz
A) dz (A d:z
dzs dZ
@@ -82,7 +80,6 @@ hierar) ch (i C

.group e
e E

D_-_) es (_ %ES

.group é
@@ -97,7 +94,7 @@ hierar) ch (i C

.group g
g g
gg g:
// gg g:
gy J
ggy J:

@@ -109,7 +106,8 @@ hierar) ch (i C
A) gyj (A J:

_e) gy (es J:
_e) gy (et J:
_e) gy (et_ J:
_e) gy (etlen J:
_e) gy (ik J:
_e) gy (üt J:
_minde) gy (ik J:
@@ -135,6 +133,7 @@ _minde) gy (ik J:
.group k
k k
kk k:
kk (C kk
_) köz kYz

.group l
@@ -186,6 +185,7 @@ szamue) ly lli
.group p
p p
pp p:
pp (C pp
p (v p_

_) potsdam potsda:m
@@ -199,6 +199,7 @@ szamue) ly lli
r R2
rr RR
rm R2_m
r (cc R

_) richa (rd R2iCa:
_) richá (rd R2iCa:
@@ -232,6 +233,7 @@ _munká) s S
-) t (_ t
t t
tt t:
tt (C tt
ty c
// s) ty c: //
// z) ty c: // keztyű

+ 2
- 2
dictsource/it_list View File

@@ -118,8 +118,8 @@ mi $u+
ti $u+
si $u+
ci $u+
vi $u+
li $u+
vi vi $u+
li li $u+


// words that double the following consonant

+ 36
- 110
dictsource/la_list View File

@@ -259,118 +259,44 @@ estote $u
sunto $u


// numerals 1-100
// numerals

ii II // word, not numeric
vi wI // word, not numeric

i 'u:nUs $capital
ii d'UO $capital
iii t@-*,e:s
iv kw'at:UOR
v kw'i:NkwE
vi s,Eks $capital
vii s'EptEm
viii 'Okto:
ix n'OwEm
x d'EkEm

xi 'u:ndEkIm
xii dU'OdEkIm
xiii t@-*,e:d'EkIm
xiv kwat:w'ORdEkIm
xv kw,i:nd'EkIm
xvi s'EdEkIm
xvii sEpt'EndEkIm
xviii dUOdEwIg'IntI
xix u:ndEwIg'IntI
xx wi:g'Inti:

xxi wi:g'Inti:||'u:nUs
xxii wi:g'Inti:||d'UO
xxiii wi:g'Inti:||t@-*,e:s
xxiv wi:g'Inti:||kw'at:UOR
xxv wi:g'Inti:||kw'i:NkwE
xxvi wi:g'Inti:||s,Eks
xxvii wi:g'Inti:||s'EptEm
xxviii wi:g'Inti:||'Okto:
xxix wi:g'Inti:||n'OwEm
xxx t@-*i:g'Inta:

xxxi t@-*i:g'Inta:||'u:nUs
xxxii t@-*i:g'Inta:||d'UO
xxxiii t@-*i:g'Inta:||t@-*,e:s
xxxiv t@-*i:g'Inta:||kw'at:UOR
xxxv t@-*i:g'Inta:||kw'i:NkwE
xxxvi t@-*i:g'Inta:||s,Eks
xxxvii t@-*i:g'Inta:||s'EptEm
xxxviii t@-*i:g'Inta:||'Okto:
xxxix t@-*i:g'Inta:||n'OwEm
xl kwad@-*a:g'Inta:

xli kwad@-*a:g'Inta:||'u:nUs
xlii kwad@-*a:g'Inta:||d'UO
xliii kwad@-*a:g'Inta:||t@-*,e:s
xliv kwad@-*a:g'Inta:||kw'at:UOR
xlv kwad@-*a:g'Inta:||kw'i:NkwE
xlvi kwad@-*a:g'Inta:||s,Eks
xlvii kwad@-*a:g'Inta:||s'EptEm
xlviii kwad@-*a:g'Inta:||'Okto:
xlix kwad@-*a:g'Inta:||n'OwEm
l kwi:Nkwa:g'Inta:

li kwi:Nkwa:g'Inta:||'u:nUs $capital
lii kwi:Nkwa:g'Inta:||d'UO
liii kwi:Nkwa:g'Inta:||t@-*,e:s
liv kwi:Nkwa:g'Inta:||kw'at:UOR
lv kwi:Nkwa:g'Inta:||kw'i:NkwE
lvi kwi:Nkwa:g'Inta:||s,Eks
lvii kwi:Nkwa:g'Inta:||s'EptEm
lviii kwi:Nkwa:g'Inta:||'Okto:
lix kwi:Nkwa:g'Inta:||n'OwEm
lx sEksa:g'Inta:

lxi sEksa:g'Inta:||'u:nUs
lxii sEksa:g'Inta:||d'UO
lxiii sEksa:g'Inta:||t@-*,e:s
lxiv sEksa:g'Inta:||kw'at:UOR
lxv sEksa:g'Inta:||kw'i:NkwE
lxvi sEksa:g'Inta:||s,Eks
lxvii sEksa:g'Inta:||s'EptEm
lxviii sEksa:g'Inta:||'Okto:
lxix sEksa:g'Inta:||n'OwEm
lxx sEptUa:g'Inta: $capital

lxxi sEptUa:g'Inta:||'u:nUs
lxxii sEptUa:g'Inta:||d'UO
lxxiii sEptUa:g'Inta:||t@-*,e:s
lxxiv sEptUa:g'Inta:||kw'at:UOR
lxxv sEptUa:g'Inta:||kw'i:NkwE
lxxvi sEptUa:g'Inta:||s,Eks
lxxvii sEptUa:g'Inta:||s'EptEm
lxxviii sEptUa:g'Inta:||'Okto:
lxxix sEptUa:g'Inta:||n'OwEm
lxxx Okto:g'Inta:

lxxxi Okto:g'Inta:||'u:nUs
lxxxii Okto:g'Inta:||d'UO
lxxxiii Okto:g'Inta:||t@-*,e:s
lxxxiv Okto:g'Inta:||kw'at:UOR
lxxxv Okto:g'Inta:||kw'i:NkwE
lxxxvi Okto:g'Inta:||s,Eks
lxxxvii Okto:g'Inta:||s'EptEm
lxxxviii Okto:g'Inta:||'Okto:
lxxxix Okto:g'Inta:||n'OwEm
xc no:na:g'Inta:

xci no:na:g'Inta:||'u:nUs
xcii no:na:g'Inta:||d'UO
xciii no:na:g'Inta:||t@-*,e:s
xciv no:na:g'Inta:||kw'at:UOR
xcv no:na:g'Inta:||kw'i:NkwE
xcvi no:na:g'Inta:||s,Eks
xcvii no:na:g'Inta:||s'EptEm
xcviii no:na:g'Inta:||'Okto:
xcix no:na:g'Inta:||n'OwEm
c k'EntUm

// This list could be expanded further, however programming
// the pronunciation would be more efficient.

_0 n'Ulla
_1 'u:nUs
_2 d'UO
_3 t@-*,e:s
_4 kw'at:UOR
_5 kw'i:NkwE
_6 s,Eks
_7 s'EptEm
_8 'Okto:
_9 n'OwEm
_10 d'EkEm

_11 'u:ndEkIm
_12 dU'OdEkIm
_13 t@-*,e:d'EkIm
_14 kwat:w'ORdEkIm
_15 kw,i:nd'EkIm
_16 s'EdEkIm
_17 sEpt'EndEkIm
_18 dUOdEwIg'IntI
_19 u:ndEwIg'IntI

_2X wi:g'Inti:
_3X t@-*i:g'Inta:
_4X kwad@-*a:g'Inta:
_5X kwi:Nkwa:g'Inta:
_6X sEksa:g'Inta:
_7X sEptUa:g'Inta:
_8X Okto:g'Inta:
_9X no:na:g'Inta:
_0C k'EntUm
_0M1 m'IllE

+ 26
- 26
dictsource/pt_list View File

@@ -28,6 +28,11 @@ _õ ,otS'iU
_ú ,u&g'udU
_ü ,utR'em&

i i // speak i v x as letters, not Roman numbers
v ve
x Sis#


_cap maI'uskulU
_?A l'etR&
_?? s'imbolU
@@ -80,23 +85,23 @@ _" 'abRi;'asp&||d'upl&s#
// numeric
//********

?1_0 z'Eru
?2_0 z'E*U
?1_1 'um
?2_1 'uN
_2 d'oIs#
?1 _0 z'Eru
?2 _0 z'E*U
?1 _1 'um
?2 _1 'uN
_2 d'oIs#
?1 _3 tr'es#
?2 _3 tR'es#
?1 _4 kw'atru
?2 _4 kw'atRu
_5 s'iNku
_6 s'eIs#
?1_7 s'Ety
?2_7 s'EtSi
_8 'oItu
?1_9 n'Ovy
?2_9 n'Ovi
10 d'Es#
_5 s'iNku
_6 s'eIs#
?1 _7 s'Ety
?2 _7 s'EtSi
_8 'oItu
?1 _9 n'Ovy
?2 _9 n'Ovi
_10 d'Es#

?1_11 'oNzy
?2_11 'oNzi
@@ -200,20 +205,15 @@ ue $abbrev
unts $abbrev
usb $abbrev

// roman numerals
?1 ii d'oIs# $abbrev
?1 iii tr'es# $abbrev
?1 iv kw'atru $abbrev


dr $dot
dra $dot
mr $dot
mrs $dot
prof pr'Of $dot
sr $dot
?1 sra ,Es;'Errj'a $dot
?2 sra $dot
dr $dot
dra $dot
mr $dot
mrs $dot
prof pr'Of $dot
sr $dot
?1 sra ,Es;'Errj'a $dot
?2 sra $dot

// articles
o $u+

+ 0
- 2
dictsource/pt_rules View File

@@ -603,7 +603,6 @@
únh ''u~n^

.group v
_) v (_ ve
v v
v (v

@@ -616,7 +615,6 @@


.group x
_) x (_ Sis#
x (A S
A) x (A ks
_e) x (A z

+ 1159
- 227
dictsource/ro_list
File diff suppressed because it is too large
View File


+ 186
- 83
dictsource/ro_rules View File

@@ -1,8 +1,10 @@

// translation rules for Romanian
// This file is UTF-8 encoded




.group a
a a
ai aI
@@ -11,52 +13,58 @@
au (_ 'aU
a (AAA a
&) a (_S1q a

gi) a (_S1q 'a
V@) a (_ 'a
V@) a (N_ 'a
ăi) a (_ 'a
@) abil (_ 'abil
_) anti (@P4 anti
@) ale (_ 'ale
@ion) a (_ 'a


.group ă
ă @
ăi @I
ăi (_ @I
ău @U // ?? only at end of word ??
ău (_ @U

ăi (m_ @'i
ăi (t_ @'i
ăi (ţi_ @'i


ăi (te @'i
ăi (n_ @'i
ăi (na_ @'i
ăi (ni_ @'i
ăi (ne_ @'i
ău (_ '@U
@) ăte (_S3t @te
@) ătă (_S3t @t@
@) ătul (_S4t @tul
@) ătele (_S5t @tele
@) ătului (_S6t @tuluI
@) ătelor (_S6t @telor
&) ă (_S1 @
&ec) ă (_ @
@ăC) ă (_ @
@er) ă (_ @
@iţ) ă (_ @
@) ă (Că_ =@
ări (A_ @*'i
ării (_ @*'iI
ări (AA_ @*'i
@) ăt (_S2t @t
@) ătă (_S3t @t@
@) ătul (_S4t @tul
@) ătele (_S5t @tele
@) ătului (_S6t @tuluI
@) ătelor (_S6t @telor
@) ăie (_ =@Ie


.group â
â y
âi yI
âu yU
@) âie (_ =yIe


.group b
b b
@) b (i_ b;
bb b

@) b (i_ b;
@) b (il_ =b
@) b (ila_ =b
@) b (ili_ =b
@) b (ilii_ =b
@) b (ilului_ =b
@) b (ililor_ =b
@) b (ilile_ =b
mo) bil (_ b'il


@@ -70,55 +78,70 @@
@@) col (_ =kol
@@) coli (_S1t =I^
@@) cole (_S1t e


@) cni (_ kn'i
@) cnea (_ kne'a


.group d
d d
dd d
@) d (i_ d;


.group e
e e
ei eI
// eu eU // only at end of word ??
// eu e[u // ??
_) ei eI
ei (_ eI
// eu eU // only at end of word ??
// eu e[u // ??
eu (_ 'eU
ea ea
&) ea (_S2q ea
&) eSi eaj
eau eaw

eo eo
eoa eO'a

e (AAA e
@) eş (_ =eS

@) eşul (_ =eSul
@) eşi (_ =eSI^
@) eşului (_ =eSuluI
@) eşilor (_ =eSilor

@) ec (a_ =ek
@) ec (ă_ =ek
@) ec (ii_ =ek
@) ec (ile_ =ek
@) ec (ilor_ =ek
@At) ec (i@_ etS
@At) ec (A_ ek
@At) ec (ii_ eTtS
// &) es (_S1q e
&C) e (re_ %e
_ac) ee (a eI

r) ei (er_ 'eI

@) e (re_ =e
@) e (ri_ =e
@) e (rea_ =e
@) e (rii_ =e
i) e (re_ e
i) e (ri_ e
i) e (rii_ e
i) e (rea_ e

_ac) ee (a eI
r) ei (er_ 'eI

@) eş (_ =eS

@) eşul (_ =eSul
@) eşi (_ =eSI^
@) eşului (_ =eSuluI
@) eşilor (_ =eSilor
// &) es (_S1q e

@) e (ra_ =e
@) e (ră_ =e
@f) e (ra_ e
@f) e (ra_ e
i) e (ră_ e
i) e (ra_ e
eoa eO'a


.group f
f f
ff f
@) f (i_ f;


@@ -138,22 +161,48 @@
.group i
i i
i (A j

@) i (e_ j
&C) i (_N$1q i/
&) i (_N$1q i
&) i (-N$1q i // don't reduce to [I^] if a hyphen follows

ţ) i (-Că i
ţ) i (-Ci i

ţ) i (-l i
ţ) i (-ne i
&') i (_ i
ţi-) i (_ _ // combined with previous word as [iI]
Cr) i (_ i
V&) i (_ 'i // verb
V&) i (N_ 'i // verb
ăC) ia (_ 'ia
âC) ia (_ 'ia

ăC) ie (_ 'ie
âC) ie (_ 'ie
@) ie (_S1q ie

g) i (ne_ =i
g) i (nea_ =i
c) i (uC
cţ) ie (_ =ie
cţ) iei (_ =ieI
cţ) ia (_ =ja
graf) ie (_ 'ie
graf) ia (_ 'ia
graf) iei (_ 'ieI
graf) ii (_ 'iI
scop) ie (_ 'ie
scop) ia (_ 'ia
scop) iei (_ ieI
scop) ii (_ 'iI
er) ia (_ 'ia
er) iei (_ 'ieI
on) ie (_ 'ie
on) ia (_ 'ia
on) iei (_ 'ieI
uş) ie (_ 'ie
uş) ia (_ 'ia
uş) iei (_ 'ieI
// @) ie (_S1q ie

iei (_ 'ieI
ii iI
@@ -163,15 +212,26 @@
iu ju

&) ic (_ =ik
&) ica (_ =ika
&) ice (_ =itSe
&) icile (_ =itSile
&) icile (_ =itSile
&) icilor (_ =itSilor
@) icii (_ =itSiI

scr) i (e 'i
&) ing (_ %iNg // foreign words

i (t_ 'i
ioa iO'a
ioa iO'a

@) işte (_ =iSte
@) iştea (_ =iStea
@) i (ţă_++++++++ =i
@) i (ţe_ =i
@) i (ţei_ =i
@) i (ţelor_ =i
-) i (_ j
@) i (ţele_ =i


.group î
@@ -190,6 +250,7 @@

.group l
l l
ll l
@) l (i_ l;
_) l (_ le
-) l (_ l // -l
@@ -205,6 +266,7 @@
.group m
_) m (_ me
m m
mm m
@) m (i_ m;
_) m (-a m

@@ -220,69 +282,75 @@
@) n (tic_ =n
@) n (ic_ =n
_) n (-a n
-) n (_ n

-) n (_ n
@itudi) ne (_S2t ne
@itudi) nea (_S3t nea
@itudi) nii (_S3t niI
@itudi) ni (_S2t ni
@itudi) nile (_S4t nile
@itudi) nilor (_S5t nilor


.group o
o o
oa Oa
oai Oaj
oi oI
_) oi oI
oi (_ 'oI
ou oU
ou (_ 'oU
o (AAA o

@) oi (t_ o'i
@) oi (tă_ o'i
@) oi (ţi_ o'i
@) oi (te_ o'i


.group p
p p
pp p
@) p (i_ p;



.group q
q k
qu kw


.group r
r r
A) r (A *
C) r (A @-*
rr *r
A) r (i_ *;

_) re (@P2v re
_) re (gul re
@u) ri (_NS2t rI^
r r
rr r
A) r (A *
C) r (A @-*
rr *r
A) r (i_ *;

_) re (@P2T re
_) re (gul re
@u) ri (_NS2t rI^
C) ri (_ @-*i
@u) rii (_S3t riI
@u) rile (_S4t rile
@) rilor (_S5t rilor
@u) rilor (_S5t rilor

C) ri (_ @-*i
@) răm (_S1t m
@) răţi (_S4t *@tsI^
@u) re (_S2t *e


.group s
_) s (_ se
_) s (-a s
s s
@) s (i_ s;
-) s (_ s
sh S
ss s

&) sprezece (_S8t sp@-*ez,etSe

@) sem (_S1t m
@) seră (_S2t *@
@) serăm (_S3t *@m
@) serăm (_S3t *@m
@) serăţi (_S4t *@tsI^
@) seşi (_S2t SI^
@) sni (_ sn'i
@) sni (_ sn'i


.group ş
@@ -298,6 +366,10 @@
tt (_ t
@) t (i_ t;

ts ts
tz ts
tt t


.group ţ
ţ ts
@@ -314,19 +386,34 @@
.group u
u u
u (A w
ui uI
_) ui uI
ui (_ uI
ui (e wi
V&) ui (_ u'i
ui (m_ u'i
ui (t_ u'i
ui (ţi_ u'i
ui (se_ u'i
&) ul (_S2t ul

@ic) ul (_S2 ul
@ic) uri (_S3 urI^
V&) ui (_N u'i

&) ul (_S2t ul
@ic) ul (_S2t ul
@ic) ule (_S3t ule
@ic) ului (_S4t uluI
@ic) uri (_S3 urI^
@ic) urile (_S5 urile

&) ului (_S4t uluI
@) us (_S2t us
@) usul (_S4t usul
@) usuri (_S5t usuri
@) usului (_S6t usuluI
@) usurile (_SS´7t usurile
@) usurilor (_S8t usurilor
@ăC) u (N_ 'u
@) um (_S2t um
@) umul (_S4t umul
@) umului (_S6t umuluI
@) umuri (_S5t umuri
@) umurile (_S7t umurile
@) umurilor (_S8t umurilor
c) um (_ um
@) uie (_ =wie


.group v
@@ -342,10 +429,17 @@
x ks
A) x (A gz
ma) x (i ks
e) x (e ks
cone) x (iu ks
i) x (e ks
o) x (e ks // boxele
u) x (a ks
a) x (a ks
a) x (ă ks
a) x (e ks
i) x (a ks
o) x (a ks
A) x (â ks
@) x (ibil ks
o) x (i ks // oxigen
a) x (ia ks // axial
ale) x ks
@@ -359,15 +453,22 @@

.group z
z z
zz z
@) z (i_ z;



.group
ö Y

% protSent
D_) % la_sut@
% p@-*otSent
$ dolar
+ plus
& ampersand
© k'apiraIt
@ a*'ond
/ sleS
€ 'eU*o
° g@-*ade

, (D v'irgul@

@@ -384,3 +485,5 @@
*) * (*
**
**) * (_ _::



+ 6
- 4
phsource/mbrola/ro1 View File

@@ -6,24 +6,26 @@
0 r/ NULL 0 r
0 r- NULL 0 r
0 g- NULL 0 NULL
0 w/ NULL 0 w
0 w NULL 0 u
0 w/ NULL 0 u
0 * NULL 0 r
0 ; NULL 0 NULL
0 a e 15 a _
0 a NULL 0 a
0 @- NULL 0 NULL
0 j/ NULL 0 j
0 I^ _ 0 I
0 I^ NULL 20 I _
0 @U NULL 60 @ w
0 aU NULL 60 a w
0 eU NULL 60 e w
0 eU NULL 80 e u
0 iU NULL 60 i w
0 yU NULL 60 l w
0 yU NULL 60 1 w
0 oU NULL 60 o w
0 @I NULL 60 @ j
0 iI NULL 60 i j
0 aI NULL 60 a j
0 eI NULL 60 e j
0 eI NULL 100 e i
0 oI NULL 60 o j
0 uI NULL 60 u j
0 yI NULL 60 1 j

+ 1
- 1
phsource/ph_english_us View File

@@ -154,7 +154,7 @@ phoneme 3:
vowel starttype (@) endtype (@)
length 230
formants vwl_en_us/3_us
reduceto @ 0
// reduceto @ 0
linkout r-
endphoneme


+ 78
- 3
src/numbers.cpp View File

@@ -51,13 +51,18 @@ int Translator::TranslateLetter(char *word, char *phonemes, int control)
char capital[20];
char ph_buf[30];
char ph_buf2[50];
static char single_letter[8] = {0};
static char single_letter[10] = {0,0};

ph_buf[0] = 0;
capital[0] = 0;

n_bytes = utf8_in(&letter,word,0);

if((letter & 0xfff00) == 0x0e000)
{
letter &= 0xff; // uncode private usage area
}

if(control > 2)
{
// include CAPITAL information
@@ -68,8 +73,17 @@ int Translator::TranslateLetter(char *word, char *phonemes, int control)
}
letter = towlower(letter);

if((letter <= 32) || iswspace(letter))
{
// lookup space as _&32 etc.
sprintf(&single_letter[1],"_#%d ",letter);
Lookup(&single_letter[1],ph_buf);
strcat(phonemes,ph_buf);
return(n_bytes);
}

len = utf8_out(letter,&single_letter[2]);
single_letter[2+len] = ' ';
single_letter[len+2] = ' ';

next = RULE_SPELLING;
if(word[n_bytes] == ' ')
@@ -186,6 +200,67 @@ void Translator::SetSpellingStress(char *phonemes, int control)



int Translator::TranslateRoman(char *word, char *ph_out)
{//=====================================================
int c;
char *p;
int acc;
int prev;
int value;
int subtract;
unsigned int flags;
char number_chars[N_WORD_BYTES];

static char *roman_numbers = "ixcmvld";
static int roman_values[] = {1,10,100,1000,5,50,500};
if((langopts.numbers & NUM_ROMAN) == 0)
return(0);

acc = 0;
prev = 0;
subtract = 0x7fff;

while((c = *word++) != ' ')
{
if((p = strchr(roman_numbers,c)) == NULL)
return(0);

value = roman_values[p - roman_numbers];

if((prev==5) || (prev==50) || (prev==500))
{
if(value >= prev)
return(0);
}
if((prev != 0) && (prev < value))
{
if(((acc % 10) != 0) || ((prev*10) < value))
return(0);
subtract = prev;
value -= subtract;
}
else
if(value >= subtract)
return(0);
else
acc += prev;
prev = value;
}
acc += prev;
if(acc < 2)
return(0);

if(acc > langopts.max_roman)
return(0);

Lookup("_roman",ph_out); // precede by "roman" if _rom is defined in *_list
p = &ph_out[strlen(ph_out)];

sprintf(number_chars," %d ",acc);
TranslateNumber(&number_chars[1],p,&flags,0);
return(1);
} // end of TranslateRoman


int Translator::LookupNum2(int value, int control, char *ph_out)
@@ -589,7 +664,7 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags,
{
if((thousandplex > 0) && (value < 1000))
{
if(langopts.numbers & 0x40000)
if(langopts.numbers2 & 0x100)
{
if((thousandplex == 1) && (value >= 100))
{

+ 4
- 0
src/readclause.cpp View File

@@ -1546,6 +1546,10 @@ f_input = f_in; // for GetC etc
c1 = j;
}
}
if((sayas_mode == 0x14) && (c1 <= 0x20))
{
c1 += 0xe000; // move into unicode private usage area
}
}
else
if(c1 == '<')

+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.27.05 05.Jul.07";
const char *version_string = "1.27.06 07.Jul.07";
const int version_phdata = 0x012701;

int option_device_number = -1;

+ 1
- 2
src/tr_english.cpp View File

@@ -44,8 +44,7 @@ Translator_English::Translator_English() : Translator()
langopts.stress_rule = 0;
langopts.word_gap = 0;

langopts.numbers = 0x41;

langopts.numbers = 0x41 + NUM_ROMAN;
}



+ 14
- 10
src/tr_languages.cpp View File

@@ -122,7 +122,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.param[LOPT_PREFIXES] = 1;
memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths));
tr->langopts.numbers = 0x11c19;
tr->langopts.numbers = 0x11c19 + NUM_ROMAN;
SetLetterVowel(tr,'y');
}
break;
@@ -213,7 +213,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels

tr->langopts.numbers = 0x529;
tr->langopts.numbers = 0x529 + NUM_ROMAN;
}
break;

@@ -271,7 +271,8 @@ Translator *SelectTranslator(const char *name)

tr->langopts.stress_rule = 6; // stress on last heaviest syllable
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.numbers = 0x811 + 0x40000;
tr->langopts.numbers = 0x811;
tr->langopts.numbers2 = 0x100;
tr->letter_bits_offset = OFFSET_DEVANAGARI;
tr->langopts.replace_chars = replace_chars_hi;
tr->langopts.replacement_chars = replacement_chars_hi;
@@ -302,7 +303,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.max_initial_consonants = 5;
tr->langopts.spelling_stress = 1;

tr->langopts.numbers = 0x1c0d + 0x4000;
tr->langopts.numbers = 0x1c0d + 0x4000 + NUM_ROMAN;
tr->langopts.numbers2 = 0x4a; // variant numbers before thousands,milliards
tr->langopts.replace_chars = replace_cyrillic;
tr->langopts.replacement_chars = replace_cyrillic_latin;
@@ -336,7 +337,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.param[LOPT_COMBINE_WORDS] = 99; // combine some prepositions with the following word
tr->langopts.long_stop = 130;

tr->langopts.numbers = 0x1809;
tr->langopts.numbers = 0x1809 + NUM_ROMAN;
SetLetterVowel(tr,'y');
tr->langopts.spelling_stress = 1;
//SetLengthMods(tr,3); // all equal
@@ -384,7 +385,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.param[LOPT_IT_DOUBLING] = 2; // double the first consonant if the previous word ends in a stressed vowel
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels
tr->langopts.param[LOPT_REDUCE] = 1; // reduce vowels even if phonemes are specified in it_list
tr->langopts.numbers = 0x2709 + 0x800;
tr->langopts.numbers = 0x2709 + 0x800 + NUM_ROMAN;
}
break;

@@ -397,6 +398,8 @@ Translator *SelectTranslator(const char *name)
tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_DIERESES] = 1;
tr->langopts.numbers = 0x1 + NUM_ROMAN;
tr->langopts.max_roman = 5000;
}
break;

@@ -483,7 +486,7 @@ Translator *SelectTranslator(const char *name)
// tr->langopts.vowel_pause = 1;
tr->langopts.stress_rule = 3; // stress on final syllable
tr->langopts.stress_flags = 0x6 | 0x10 | 0x20000;
tr->langopts.numbers = 0xa69 + 0x2000;
tr->langopts.numbers = 0xa69 + 0x2000 + NUM_ROMAN;
tr->punct_to_tone[0][3] = 2; // use exclamation intonation
SetLetterVowel(tr,'y');
}
@@ -505,7 +508,7 @@ Translator *SelectTranslator(const char *name)
tr->charset_a0 = charsets[2]; // ISO-8859-2
tr->langopts.replace_chars = replace_chars_ro;
tr->langopts.replacement_chars = replacement_chars_ro;
tr->langopts.numbers = 0x1829+0x6000;
tr->langopts.numbers = 0x1829+0x6000 + NUM_ROMAN;
tr->langopts.numbers2 = 0x1e; // variant numbers before all thousandplex
}
break;
@@ -576,7 +579,8 @@ Translator *SelectTranslator(const char *name)
tr->langopts.stress_rule = 2;
tr->langopts.stress_flags = 0x6 | 0x10;

tr->langopts.numbers = 0x408e1;
tr->langopts.numbers = 0x8e1;
tr->langopts.numbers2 = 0x100;
}
break;

@@ -942,7 +946,7 @@ Translator_Afrikaans::Translator_Afrikaans() : Translator()
langopts.param[LOPT_PREFIXES] = 1;
SetLetterVowel(this,'y'); // add 'y' to vowels

langopts.numbers = 0x0d1;
langopts.numbers = 0x0d1 + NUM_ROMAN;
memcpy(stress_lengths,stress_lengths2,sizeof(stress_lengths));
}


+ 14
- 3
src/translate.cpp View File

@@ -438,6 +438,7 @@ Translator::Translator()
langopts.length_mods0 = length_mods_en0;
langopts.long_stop = 100;

langopts.max_roman = 49;
langopts.thousands_sep = ',';
langopts.decimal_sep = '.';

@@ -667,7 +668,13 @@ if((wmark > 0) && (wmark < 8))
found = TranslateNumber(word,phonemes,&dictionary_flags,wflags);
}

if((wflags & FLAG_ALL_UPPER) && (clause_upper_count <= clause_lower_count) &&
if(!found & ((word_flags & FLAG_UPPERS) != FLAG_FIRST_UPPER))
{
// either all upper or all lower case
found = TranslateRoman(word,phonemes);
}

if(!found && (wflags & FLAG_ALL_UPPER) && (clause_upper_count <= clause_lower_count) &&
!(dictionary_flags & (FLAG_ABBREV | FLAG_SKIPWORDS)) && (word_length>1) && (word_length<4) && iswalpha(first_char))
{
// An upper case word in a lower case clause. This could be an abbreviation.
@@ -1635,6 +1642,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_
int phoneme_mode = 0;
int dict_flags; // returned from dictionary lookup
int word_flags; // set here
int next_word_flags;
int embedded_count = 0;
int letter_count = 0;
char *word;
@@ -1715,6 +1723,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_
word_count = 0;
single_quoted = 0;
word_flags = 0;
next_word_flags = 0;
expect_verb=0;
expect_past=0;
expect_verb_s=0;
@@ -1827,7 +1836,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_
}
}
else
if((option_sayas2 & 0xf0) != 1)
if((option_sayas2 & 0xf0) != 0x10)
{
if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out))
{
@@ -1937,6 +1946,7 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out)
c = ' '; // change from upper to lower case, start new word at the last uppercase
prev_in2 = c;
source_index = prev_source_index; // unget
next_word_flags |= FLAG_NOSPACE;
}
//#endif
}
@@ -2116,7 +2126,8 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out)
for(k=j; charix[k]!=0; k++);
words[word_count].length = k-j;

word_flags = 0;
word_flags = next_word_flags;
next_word_flags = 0;
pre_pause = 0;
word_mark = 0;
all_upper_case = FLAG_ALL_UPPER;

+ 7
- 2
src/translate.h View File

@@ -69,12 +69,14 @@
// wordflags, flags in source word
#define FLAG_ALL_UPPER 0x1 /* no lower case letters in the word */
#define FLAG_FIRST_UPPER 0x2 /* first letter is upper case */
#define FLAG_UPPERS 0x3 // FLAG_ALL_UPPER | FLAG_FIRST_UPPER
#define FLAG_HAS_PLURAL 0x4 /* upper-case word with s or 's lower-case ending */
#define FLAG_PHONEMES 0x8 /* word is phonemes */
#define FLAG_LAST_WORD 0x10 /* last word in clause */
#define FLAG_STRESSED_WORD 0x20 /* this word has explicit stress */
#define FLAG_EMBEDDED 0x40 /* word is preceded by embedded commands */
#define FLAG_HYPHEN 0x80
#define FLAG_NOSPACE 0x100 // word is not seperated from previous word by a space
#define FLAG_DONT_SWITCH_TRANSLATOR 0x1000
#define FLAG_SUFFIX_REMOVED 0x2000
#define FLAG_HYPHEN_AFTER 0x4000
@@ -275,6 +277,7 @@ typedef struct {
unsigned char *length_mods;
unsigned char *length_mods0;

#define NUM_ROMAN 0x20000
// bits0-1=which numbers routine to use.
// bit2= thousands separator must be space
// bit3= , decimal separator, not .
@@ -289,15 +292,16 @@ typedef struct {
// bit12=allow space as thousands separator (in addition to langopts.thousands_sep)
// bits13-15 post-decimal-digits 0=single digits, 1=(LANG=it) 2=(LANG=pl) 3=(LANG=ro)
// bit16=dot after number indicates ordinal
// bit18=special word for 100,000s LANG=sw
// bit17=recognize roman numbers

int numbers;

// bits 1-4 use variant form of numbers before thousands,millions,etc.
// bit6=(LANG=pl) two forms of plural, M or MA
// bit7=(LANG-ru) use MB for 1 thousand, million, etc
// bit8=(LANG=sw) special word for 100,000s
int numbers2;
int max_roman;
int thousands_sep;
int decimal_sep;
int intonation; // 1=tone language
@@ -388,6 +392,7 @@ private:
int LookupNum3(int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands);
int LookupThousands(int value, int thousandplex, char *ph_out);
int TranslateNumber_1(char *word1, char *ph_out, unsigned int *flags, int wflags);
int TranslateRoman(char *word, char *ph_out);

void InitGroups(void);
void AppendPhonemes(char *string, int size, const char *ph);

Loading…
Cancel
Save