Browse Source

[1.46.46]

Fix: SAPI5 version, pitch not reset correctly after indicating capital letter.
Language changes: ga, nl, pt.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@312 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
8238f8b09b

+ 4
- 0
dictsource/bg_list View File

@@ -48,6 +48,10 @@ _у u
v _^_EN // not Roman number
x _^_EN // not Roman number

_?? znak
_?A b'ukva


// symbols
% prots'ent $max3
+ plus $max3

+ 5
- 5
dictsource/dict_phonemes View File

@@ -68,7 +68,7 @@ r R R3 s S t T tS
v w x z Z


Dictionary hu_dict 2013-03-10
Dictionary hu_dict 2013-03-11

a A a: e E e: i i:
o o: u u: Y y y: Y:
@@ -331,7 +331,7 @@ k l m n p R s S
t tS v w x


Dictionary nl_dict 2013-03-05
Dictionary nl_dict 2013-03-11

8 @ @- a A a: A~ e
E e# E2 e: EI eU i I
@@ -379,7 +379,7 @@ S s; S; t t; tS ts tS;
ts; v w x z Z Z;


Dictionary pt_dict 2013-03-10
Dictionary pt_dict 2013-03-11

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
@@ -616,7 +616,7 @@ s S s. t T t# t. t.#
v w x z Z z.


Dictionary bg_dict 2012-07-15
Dictionary bg_dict 2013-03-11

@ a e i o u

@@ -885,7 +885,7 @@ n. n^ p p# r r. s S
s. t t# t. t.# v w z


Dictionary ga_dict 2013-03-08
Dictionary ga_dict 2013-03-11

0 0# @ a a# A: aI aI#
aU aU# e E E# e: i I

+ 8
- 7
dictsource/ga_list View File

@@ -9,25 +9,26 @@
// precede by _ to distinguish from pronunciation as a language word

_a eI
b bi:
b bi: $atend
?1 bh v // eclipsis
c si:
d di:
d di: $atend
e i:
f Ef
g dZi:
h eItS
g dZi: $atend
h eItS $atend
_i aI
j dZeI
k keI
l El
m Em
n En
m Em $atend
n En $atend
_o oU
p pi:
q kju:
r ar
s Es
t ti:
t ti: $atend
u ju:
v vi:
w d'O#b@lju:

+ 419
- 357
dictsource/ga_rules View File

@@ -1,430 +1,492 @@
// translation rules for Irish Gaeilge

// translation rules for Irish Gaeilge
// This file is UTF-8 encoded
// written by Ronan McGuirk January 2013
// Version 2.5B


// Conditional rules
// ?1 allow eclipsis as 2 separate words

.L01 e i é í // slender vowels
.L02 c ch d g gh n s // following ea gets ; sounds
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid
.L04 b bh mb // for words like beag
.L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a
.L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h
.L07 b c g ch bh gh mb
.L07 b c g ch bh gh mb
.L08 lc ll nt bhse // for words like cailc
.L09 cl cr chr f
.L10 c ch p ph gl ghl
.L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai
.L10 c ch p ph gl ghl
.L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai
.L12 á é ó eo ua // when followed by i
.L13 oc omb
.L13 oc omb
.L14 río dún gnío // followed with mh
.L15 c ch f m d dh g gc gh mh // aoi following
.L16 b c bh ch gr ghr // for inn word ending
.L17 l le li niste nn
.L18 n nt nte neann neadh ntear nim nfear nfinn
.L19 na nea ra rea la llea arga // word endings with silent dh
.L17 l le li niste nn
.L18 n nt nte neann neadh ntear nim nfear nfinn
.L19 na nea ra rea la llea arga // word endings with silent dh
.L20 eo eoir eá eabh io iu iú // slender m
.L21 ll nn ndán nntán
.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine
.L23 ea eo i
.L23 ea eo i
.L24 b mb bh g gh p ph bp m mh

.group a
a 0#
a (_ @
adh (a aI // words like radharc
adh (C aI
abht aU#t[
amhr aUr // words like amhras
K) amhl aUl
abhra aUr@ // words like slabhra
aghaidh aIg
t) abhair u:@r
th) abhair u:@r
t) abhar u:@r
th) abhar u:@r
_) an (sL01 @n
_) an (- 0n // an prefix
é) a @ // words like féach
X) a (nn_ aU#
X) a (ll_ aU#
abha aU@
am (pla aUm
ama(_ aU#m@
athair 'ah@r
_) amh aU
agha aI@
agh (d aI
agh (s aI
_) ath 0h

ai (m_ @
aí i:
aoi @i:
_) aoi i:
ath) aoi (r 'i:@
r) aoi (nín 'e:@
aoicht (_ 'i:@xt[
C) ao (C @e:@
_L24) ao (C w'e:@
C) ao (th_ @e:
b) ao (++ we:@
b) ao (th_++ we:
ao @e
_) ao e:
ae e:
amhna (_ aUn@
a 0#
a (_ @
adh (a aI // words like radharc
adh (C aI
abht aU#t[
amhr aUr // words like amhras
K) amhl aUl
abhra aUr@ // words like slabhra
aghaidh aIg
t) abhair u:@r
th) abhair u:@r
t) abhar u:@r
th) abhar u:@r
_) an (sL01 @n
_) an (- 0n // an prefix
é) a @ // words like féach
X) a (nn_ aU#
X) a (ll_ aU#
abha aU@
am (pla aUm
ama (_ aU#m@
athair 'ah@r
_) amh aU
agha aI@
agh (d aI
agh (s aI
_) ath 0h

ai (m_ @
aí i:
aoi @i:
_) aoi i:
ath) aoi (r 'i:@
r) aoi (nín 'e:@
aoicht (_ 'i:@xt[
C) ao (C @e:@
_L24) ao (C w'e:@
C) ao (th_ @e:
b) ao (++ we:@
b) ao (th_++ we:
ao @e
_) ao e:
ae e:
amhna (_ aUn@

.group á
á A:
@) á ,A:
ádh A:
áthair (_ A:h@r
áthar A:h@r
ái (p A:
áinig A:nIg
ái 'A:i
á A:
@) á ,A:
ádh A:
áthair (_ A:h@r
áthar A:h@r
ái (p A:
áinig A:nIg
ái 'A:i

.group ai
ai a#
L04) ai (L17 0#
aile (_ '0l;E // words like baile
Xc) ai (l '0#
ch) ai (l '0#
m) ai (n 0#
c) ai (th 0#
ch) ai (th 0#
ai (d 0#
p) ai (l 0#
@) ai (L11_ I
ai (L08+ aI#
c) ai (l_ I
ai (msi 'aI // words like aimsir
_L04) ai (L18_++ u1'I//words like bain
c) ai (t_ u1'I
s) ai (bh E
aighre aIr@
X) aigh 'aI
aigh aI# L04) aill (_ wi:l
aing (_ Ing
ai a#
L04) ai (L17 0#
aile (_ '0l;E // words like baile
Xc) ai (l '0#
ch) ai (l '0#
m) ai (n 0#
c) ai (th 0#
ch) ai (th 0#
ai (d 0#
p) ai (l 0#
@) ai (L11_ I
ai (L08+ aI#
c) ai (l_ I
ai (msi 'aI // words like aimsir
_L04) ai (L18_++ u1'I//words like bain
c) ai (t_ u1'I
s) ai (bh E
aighre aIr@
X) aigh 'aI
aigh aI# L04) aill (_ wi:l
aing (_ Ing

.group b
b b // broad
L01) b b; // slender
b (L22 bj //slender
bh v // broad
bh (_ vv
bh (L22 vj // slender
L01) bh v
_) bhf v /urú broad
_) bhf (L22 v; // urú slender
_) bp b //urú broad
_) bp (L01 b; // urú slender
a) bh (a U// for example cabhair
ear) bha u: // words like Cearbhall
bhfaigh v'aI
b b // broad
L01) b b; // slender
b (L22 bj //slender
bh v // broad
bh (_ vv
bh (L22 vj // slender
L01) bh v
?1 _m_) b (@
_) bhf v // urú broad
_) bhf (L22 v; // urú slender
_) bp b // urú broad
_) bp (L01 b; // urú slender
?1 _) bh (_f v // urú broad
?1 _) bh (_fL22 v; // urú slender
?1 _) b (_p b // urú broad
?1 _) b (_pL01 b; // urú slender
a) bh (a U // for example cabhair
ear) bha u: // words like Cearbhall
bhfaigh v'aI

.group c
c k
c (L01 k; // slender
ch x
ch (L01 C;
ch (é+ C;
ch (ei+ x;
_) cabhr k'aUr
_) chabhr x'aUr
c k
c (L01 k; // slender
ch x
ch (L01 C;
ch (é+ C;
ch (ei+ x;
?1 _g_) c (@
?1 _g_) c (L01
_) cabhr k'aUr
_) chabhr x'aUr

.group d
d d[ // broad
L01) d dZ // slender
d (L22 dZ //slender
d (L01 d; //slender
i) d (i dZ
dh Q // broad
dh (ui Q //broad
dh (ao Q //broad
dh (L01 j // slender
_) dt d[ //broad urú
_) dt (L01 dZ // slender urú
_) d' (@P2 d
i) dh (_ g
a) dh (_ X
o) dh (_ X
L19) dh (_ // silent dh at wrd end
Va) dh (_+
deartháir dr@h'A:r
dheartháir gr@h'A:r
deirfiúr d;r@f'u:r
dheirfiúr g;r@f'u:r
d d[ // broad
L01) d dZ // slender
d (L22 dZ // slender
d (L01 d; // slender
i) d (i dZ
?1 _n_) d (@
dh Q // broad
dh (ui Q // broad
dh (ao Q // broad
dh (L01 j // slender
_) dt d[ // broad urú
_) dt (L01 dZ // slender urú
?1 _) d (_t d[
?1 _) d (_tL01 dZ
_) d' (@P2 d
i) dh (_ g
a) dh (_ X
o) dh (_ X
L19) dh (_ // silent dh at wrd end
Va) dh (_+
deartháir dr@h'A:r
dheartháir gr@h'A:r
deirfiúr d;r@f'u:r
dheirfiúr g;r@f'u:r

.group e
e E#
eá A:
ei E
eidh (C aI
r) ei (m aI
eighea aI
eighea aI
eigh aI
eo o:
eogh o:
d) eo (ch O#
_) eo (ch O#
s) eo (_ @
e E#
eá A:
ei E
eidh (C aI
r) ei (m aI
eighea aI
eighea aI
eigh aI

eo o:
eogh o:
d) eo (ch O#
_) eo (ch O#
s) eo (_ @

.group é
é 'e:
éi 'e:
_) éi (rig aI // words like éirigh
_) éi (rí aI // words like éirí
_) éireoidh aIro:Ig
éacs e:@ks
é 'e:
éi 'e:
_) éi (rig aI // words like éirigh
_) éi (rí aI // words like éirí
_) éireoidh aIro:Ig
éacs e:@ks

.group ea
ea a#
X) ea (L21_ aU
ea (ltaine aU
g) ea (ll aU
X) ea (ch 0
_L04) ea (g @
_L04) ea (dh_ @
_L04) eagn @gn
L04) eaga (_ @g@
eaghl aIl
eabhra aUr@ // words like Feabhra
eanbhean 'an@v,an
eadhb aIb
ea a#
X) ea (L21_ aU
ea (ltaine aU
g) ea (ll aU
X) ea (ch 0
_L04) ea (g @
_L04) ea (dh_ @
_L04) eagn @gn
L04) eaga (_ @g@
eaghl aIl
eabhra aUr@ // words like Feabhra
eanbhean 'an@v,an
eadhb aIb

.group f
f f // broad
f (L22 f; // slender
fh //silent
fh (éin_ h
fh (L22 ; //slender
@) f (L06_ h
f f // broad
f (L22 f; // slender
fh // silent
fh (éin_ h
fh (L22 ; // slender
@) f (L06_ h
?1 _bh_) f (@
?1 _bh_) f (L22 ;

.group g
g g // broad
g (L01 g; // slender
_) gh Q"
_) gh (L01 Q"j
_) gc g // urú broad
_) gc (L01 g; // urú slender
i) gh (_ g
@C) gh (@ X
_) gn g@n
gh(n X@
gheobh j'o:
gabh gaU
g g // broad
g (L01 g; // slender
?1 _n_) g (@
_) gh Q"
_) gh (L01 Q"j
_) gc g // urú broad
_) gc (L01 g; // urú slender
?1 _) g (_c g // urú broad
?1 _) g (_cL01 g; // urú slender
i) gh (_ g
@C) gh (@ X
_) gn g@n
gh (n X@
gheobh j'o:
gabh gaU

.group h
h h // silent
h h // silent

.group i
i I
_) i I
ia i@
ia (tha i:
io O#
_) io (nadh u:// words like ionadh
_pr) io (n u:
L16) inn (_ i:n
iai i:i
impeall i:mp@l
io (s I //words like fios and liosta
L12) i i // non syllabic short i after long vowel
iú u:
m) i (d_ i: // verb ending
.group k
k k
i I
_) i I
ia i@
ia (tha i:
io O#
_) io (nadh u:// words like ionadh
_pr) io (n u:
L16) inn (_ i:n
iai i:i
impeall i:mp@l
io (s I //words like fios and liosta
L12) i i // non syllabic short i after long vowel
iú u:
m) i (d_ i: // verb ending

.group í
í 'i:

.group l
l l // broad
L01) l ( l; // slender
l (L23 l; //slender
ll l
ll (L23 l;
l (g l@
l (b l@
l l // broad
L01) l l; // slender
l (L23 l; //slender
ll l
ll (L23 l;
l (g l@
l (b l@

.group m
m m // broad
m (L20 m; //slender
mh v
mh (L20 v; // slender
_) mb m //urú
_) mb (L22 m; // urú slender
_) m (n m@// words like mná
L14) mh v
_) mh (n v@
léir) mheas vas
r) m @m // words like gorm
m m // broad
m (L20 m; //slender
mh v
mh (L20 v; // slender
_) mb m // urú
_) mb (L22 m; // urú slender
?1 _) m (_b m // urú
?1 _) m (_bL22 m; // urú slender
_) m (n m@// words like mná
L14) mh v
_) mh (n v@
léir) mheas vas
r) m @m // words like gorm

.group n
n n // broad
n (L01 n; // slender
_) nd n // urú
_) nd (L01 n; // urú slender
nn n
nn (L01 n; // slender
n (b n@
n (m n@
n (bh n@ n(ch n@
c) n @n
ch) n @n
n n // broad
n (L01 n; // slender
?1 _) n (_L01 n;
_) nd n // urú
_) nd (L01 n; // urú slender
_) ng n
_) ng (L01 n;
?1 _) n (_d n // urú
?1 _) n (_dL01 n; // urú slender
?1 _) n (_g n
?1 _) n (_gL01 n;
nn n
nn (L01 n; // slender
n (b n@
n (m n@
n (bh n@
n (ch n@
c) n @n
ch) n @n

.group o
o O#
_) o 'O
C) o (cht_ 'O
orn (_ 'Or@n

_C) omh o:
_CC) omh o:
omha o:@
omhai o:@
o (ll_ aU
C) o (nn_ aU
r) o (nn_ O#
C) ogh aU
omhan(_ aU@n
omhain (_ aUIn
odha aU
opaic @pIk
C) odh (_ o:
odl (a O#l
oí i:
o O#
_) o 'O
C) o (cht_ 'O
orn (_ 'Or@n

_C) omh o:
_CC) omh o:
omha o:@
omhai o:@
o (ll_ aU
C) o (nn_ aU
r) o (nn_ O#
C) ogh aU
omhan (_ aU@n
omhain (_ aUIn
odha aU
opaic @pIk
C) odh (_ o:
odl (a O#l
oí i:

.group ó
ó 'o:
ómhai o:@
ó 'o:
ómhai o:@

.group oi
oi O
_L15) oi (+ @'I
_) oi (b I
oi (de I
h) oi (b I
_) oi (r I
r) oi I
l) oi (n I
f) oi (lC aI
l) oi (g I
fh) oi (lC aI
s) oi (ls aI#
c) oi (c aI#
oi (nnío @
oi (mis @
ois (++ O#S
oill w'i:l
_) oi (leá 'I
oidh aI
oir (_ 'ERR
oigh (ea aI
oi O
_L15) oi (+ @'I
_) oi (b I
oi (de I
h) oi (b I
_) oi (r I
r) oi I
l) oi (n I
f) oi (lC aI
l) oi (g I
fh) oi (lC aI
s) oi (ls aI#
c) oi (c aI#
oi (nnío @
oi (mis @
ois (++ O#S
oill w'i:l
_) oi (leá 'I
oidh aI
oir (_ 'ERR
oigh (ea aI

.group p
p p // broad
ph f //broad
p (L22 p; //slender
ph (L20 f; // slender
p p // broad
ph f // broad
p (L22 p; // slender
ph (L20 f; // slender
?1 _b_) p (@

.group q
q k
qu k

.group r
r r // broad
L01) r R // slender
_) r (L01 R
L12i) r (e_ Z
L12i) r (t_ Z
rr R
rg r@g
L01) rg R@g // slender
r (bh r@
ríomh ri:@v
s) r (A R
_) ramh raU
r r // broad
L01) r R // slender
_) r (L01 R
L12i) r (e_ Z
L12i) r (t_ Z
rr R
rg r@g
L01) rg R@g // slender
r (bh r@
ríomh ri:@v
s) r (A R
_) ramh raU

.group s
s s // broad
L01) s S // slender
s (L01 S // slender
s (cL01 S
s (CCL01 S // slender
s (pCé s // broad
sh h
sh (CL01 h
sh (L01 h;
s (lL01 S
s s // broad
L01) s S // slender
s (L01 S // slender
s (cL01 S
s (CCL01 S // slender
s (pCé s // broad
?1 _t_) s (@
sh h
sh (CL01 h
sh (L01 h;
s (lL01 S

.group t
t t[ // broad
L01) t c // slender
t (í++n tS //slender
t (eo++ tS
t (L01 c // slender
L01C) t tS //slender after consonant
t (CL01 tS // slender with following consonant before vowels
th h
th (L01 h;
L01C) th h
_) ts t[ //eclipsis broad
_) ts (L01 t; // eclipsis slender
L01) th h
taine (_ t[In%E
ao) th (_
thne (_ h@nE
A) th (_ // silent th at word end
t t[ // broad
L01) t c // slender
t (í++n tS // slender
t (eo++ tS
t (L01 c // slender
?1 _) t (_L01 c
L01C) t tS // slender after consonant
t (CL01 tS // slender with following consonant before vowels
?1 _d_) t (@
th h
th (L01 h;
L01C) th h
_) ts t[ // eclipsis broad
_) ts (L01 t; // eclipsis slender
?1 _) t (_s t[ // eclipsis broad
?1 _) t (_sL01 t; // eclipsis slender
L01) th h
taine (_ t[In%E
ao) th (_
thne (_ h@nE
A) th (_ // silent th at word end

.group u
u U#
ua u@
uai u@
uai (g ui
uai (d ui
uá u:'A:
ui I
uinn (_ 'i:n
uinti U#'i:ntI
_b) uí wi:
_bh) uí wi:
g) uí wi:
umh u:
L03) ui @I
_d) u (l_ O#
g) ui (gh_ @i:
gh) ui (gh_ @i:
uí i:
uachai 'ux@
u U#
ua u@
uai u@
uai (g ui
uai (d ui
uá u:'A:
ui I
uinn (_ 'i:n
uinti U#'i:ntI
_b) uí wi:
_bh) uí wi:
g) uí wi:
umh u:
L03) ui @I
_d) u (l_ O#
g) ui (gh_ @i:
gh) ui (gh_ @i:
uí i:
uachai 'ux@

.group ú
ú u:
únmh u:nv
ú u:
únmh u:nv

úi (r u:

úi (r u:
// words which contain j k q v w x y z, speak as English
.group j
j dZ
j _^_EN

.group k
k _^_EN

.group q
q k
qu (A kw
q _^_EN

.group v
v v
v _^_EN
.group w
w w
w _^_EN
.group x
x ks
_) x z
x _^_EN

.group y
y (A j
_A) y j
y i
y _^_EN

.group z
z z
z _^_EN



.group
í 'i:


+ 1
- 0
dictsource/hu_list View File

@@ -5419,6 +5419,7 @@ _″ duplA|ApostR2o:f
≠ nEmEJEnlY:
_ˇ lEfEle:n^i:l
_¡ AlSo:indEks
_braille bR2Ail:E


// Alphabets

+ 1
- 0
dictsource/hu_rules View File

@@ -1166,6 +1166,7 @@ _tetszé) s S
körö) s (szeg S
kolbászo) s S
feldolgozá) s S
_ki) s (szín S

.group ss
ssz ss2

+ 6
- 2
dictsource/nl_list View File

@@ -1399,6 +1399,7 @@ vondel $alt
accessoire aksEsw'ar@
accessoires aksEsw'ar@s
actiepunt Aksip8nt
adhesie Ath'e:zi
agenda $2
aldus Ald'8s
alles Al@s
@@ -1409,7 +1410,6 @@ armand _^_FR
augustus VUQ'8st8s
bacterie bAkt'I:ri
banengids $alt3
bascule $2
beha be:_h'a:
beige bEZ@
benard b@nArt
@@ -1438,15 +1438,16 @@ chassis SAs'i
chat tSEt
check tSEk
chiffon Sif'On
cohesie $2
contour ko:nt'ur
controle $2
coureur ku:r'Y:r
crèches krES@s
damascering damA;s'e:rIN
december $2
desillusie dEsIlyzi
dieet $2
diesel diz@l
discipline $3
//discussie $2
divers div'Ers
diftongering dIft,ON'e:rIN
@@ -1456,7 +1457,9 @@ eensgelijks e:nsQ@l'EIks
elfstedentocht ,Elf'ste:d@ntoQt
embouchuur A~buS'yr // embouchure
enorm $2
erosie e:r'o:zi
eucharistie $4
explosie $2
februari fe:bry'a:ri
fiche fiS@
franchise frA'Si:z@
@@ -1474,6 +1477,7 @@ ingevolge $3
ingrediënt $4
ingenieur Inzj@nj'Y:r
informatie $3
invasie $2
januari $3
kadaster $2
mangat $alt3

+ 14
- 2
dictsource/nl_rules View File

@@ -254,12 +254,14 @@
@) es (_S2qd 'Es // double the previous vowel
@) es (_$w_alt2S1 s // just remove 's'
KAC) es (_S2e @s
es (ie_ e:z
@) essen (_S5qd 'Es@n
@) eres (_S4qd @r'Es
@) eressen (_S7sq @r'Es@n
@) etten (_S3 @n
@) es (_$p_alt @s // for wors which end on [@] with multiple on 's'.

@) esisch 'e:zis
euille @'y
eum (_$w_alt 'e:8m
@mus) eum (_ ,e:8m // compounds
@@ -370,6 +372,7 @@
m) ie (_ 'i
p) ie (_ 'i
ss) ie (_ =i
s) ië (_ =i@
ieus (_ ij'Y:s
ieuze (_ ij'Y:z@
ieuzer (_ ij'Y:z@r
@@ -393,6 +396,9 @@
ie (CtjeX_ 'i
ie (ren_ 'i
ie (rd_ 'i
iën (_ 'i@n
CAns) ie (_ =i
CAss) ie (_ =i
@) ig (_S2dq =@x
@) ige (_S3dq =@Q@
@) igen (_ =@Q@n
@@ -409,6 +415,9 @@
&) iko (_ =iko:
_) in (C@P2 'In
// _) in (gP2 'In
_) in (do In
ine (_ 'in@
ines (_ 'in@s
io (nage iO
io (de_ i'o:
iodes (_ i'o:d@s
@@ -532,7 +541,6 @@ _) inn (@P2 'I // ?? inneren
pl) oi (t v#A
c) oi (ffu v#A
pr) o (gram o:
_) on (@P2 %On
oo (X 'o:
oon 'o:n // in compounds, eg. telefoongesprek
oo (C_ 'o:
@@ -555,6 +563,7 @@ _) inn (@P2 'I // ?? inneren


.group on
_) on (@P2 %On
_) onaan (@P5 On'a:n
_) onder (@P5 'Ond@r
_) onge (@P4 ,OnQ@
@@ -579,6 +588,7 @@ _) inn (@P2 'I // ?? inneren




.group p
p p
p) p
@@ -653,6 +663,7 @@ _) inn (@P2 'I // ?? inneren
@) si (o S
A) si (o Z
@) ssi (o S
CAr) sie (_ =zi

_) standaard (@P9 st'Anda:rt
@) straat (_S6 stra:t
@@ -727,6 +738,7 @@ _) inn (@P2 'I // ?? inneren
uw (_ yU

_) uit (@P3 'Wyt
uul (_ 'yl // from -ule
us (_ 8s
u (sie_ 'y
@) ute (_ 'yt

+ 18
- 10
dictsource/pt_list View File

@@ -319,18 +319,19 @@ umas $u $nounf

// pronouns
eu $u+ $verbf
tu $u+
você vose $u2+
ele 'ely $u+
ela $u+
nós $u+
vós $u+
vocês $u2+
eles $u+
elas $u+
tu $u+ $verbf
você vose $u2+ $verbf
ele 'ely $u+ $verbf
ela $u+ $verbf
nós $u+ $verbf
vós $u+ $verbf
vocês $u2+ $verbf
eles $u+ $verbf
elas $u+ $verbf

me $u // reflexive
te $u
me $u $verbf
te $u $verbf
nos $u $nounf
la $u
lo $u
@@ -743,9 +744,12 @@ corvos $alt
coto $alt2
cratera $alt
crede $alt2
decore $alt
desapego $alt2 $noun
descabelo $alt
descordo $alt
desemprego $alt2
desemprego $alt $verb
desespero $alt2 $noun
desfecho $alt2
desprezo $alt2 $noun
@@ -854,6 +858,7 @@ jogo $alt2 $noun
joguete $alt2
lambreta $alt2
lebre $alt
leste $alt2 $verb
lopes $alt
maior $alt
maleta $alt2
@@ -918,6 +923,7 @@ paralelo $alt
parede $alt2
pastora $alt2
pedra $alt
pela $alt $verb
pelego $alt2
pelo $alt $verb
peso $alt $verb
@@ -986,7 +992,9 @@ sufocos $alt2
suporto $alt
suor swOr
tapete $alt2
temores $alt2
tempero $alt2 $noun
terrores $alt2
teta $alt2
tetra $alt
tocha $alt

+ 46
- 25
dictsource/pt_rules View File

@@ -359,30 +359,36 @@
_perd) e (L05_ e
_quis) e (L05_ E
_soub) e (L05_ E
tend) e (L06_ e / a- con- en- es-
_mord) e (L06_ e
_rend) e (L06_ e
_vend) e (L06_ e
tend) e (L06_ e / a- con- en- es-
_compreend) e (L06_ e
prend) e (L06_ e / a- rea- des- desa-
_arrepend) e (L06_ e
_defend) e (L06_ e
_depend) e (L06_ e
_escond) e (L06_ e
preend) e (L06_ e / com- a- re- sur-
respond) e (L06_ e // cor-
_enraivec) e (L07_ e
_espairec) e (L07_ e
bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su-
met) e (L07_ e // co- pro- arre- re- intro- compro- sub-
mov) e (L07_ e / re- co-
viv) e (L07_ e // re-
_beb) e (L07_ e
_com) e (L07_ e
_tem) e (L07_ e
colh) e (L07_ e // & es-
corr) e (L07_ e // per- con- in- so- dis-
ench) e (L07_ e / pre-
nasc) e (L07_ e / re-
tend) e (L07_ e / en- con- a- es-
torc) e (L07_ e // con-
venc) e (L07_ e // con-
vert) e (L07_ e // in- re- con-
volv) e (L07_ e de- en- re-
_eleg) e (L07_ e
_ergu) e (L07_ e
_escond) e (L06_ e
_mord) e (L06_ e
_mord) e (L07_ e
_morr) e (L07_ e
_perd) e (L07_ e
@@ -390,48 +396,54 @@ _escond) e (L06_ e
merec) e (L07_ e // des-
padec) e (L07_ e // com-
parec) e (L07_ e // a- rea- com- desa-
prend) e (L07_ e // a- rea- des-
screv) e (L07_ e / e- in- ree- pre- de-
_abastec) e (L07_ e
_aborrec) e (L07_ e
_absolv) e (L07_ e
_adoec) e (L07_ e
_adormec) e (L07_ e
_agradec) e (L07_ e
_amanhec) e (L07_ e
_amolec) e (L07_ e
_anoitec) e (L07_ e
_arrepend) e (L06_ e
_arrepend) e (L07_ e
_cresc) e (L07_ e
_defend) e (L06_ e
_defend) e (L07_ e
_depend) e (L06_ e
_depend) e (L07_ e
_desguarnec) e (L07_ e
_emagrec) e (L07_ e
_endurec) e (L07_ e
_enlouquec) e (L07_ e
_enraivec) e (L07_ e
_entristec) e (L07_ e
_envaidec) e (L07_ e
_envelhec) e (L07_ e
_esclarec) e (L07_ e
_escond) e (L07_ e
_escurec) e (L07_ e
_espairec) e (L07_ e
_esquec) e (L07_ e
_interromp) e (L07_ e
obedec) e (L07_ e / des-
_suspend) e (L07_ e
_perec) e (L07_ e
_rejuvenec) e (L07_ e
aprend) e (L07_ e // re-
_resolv) e (L07_ e
_suspend) e (L07_ e
conhec) e (L07_ e // & re- des-
tend) e (L07_ e / en- con- a- es-
estabelec) e (L07_ e / re-
favorec) e (L07_ e / des-
obedec) e (L07_ e / des-
preend) e (L07_ e // sur- com-
proteg) e (L07_ e / des-
respond) e (L07_ e // cor-
qu) e (brL04_ E
acel) e (rL04_ E / des-
_hosp) e (dL03_ E
_amort) e (çL03_ e
_in) e (ptL03_ E
_gr) e (gL03_ e
_n) e (grL03_ e
_estr) ei (L03_ EI
_inv) e (jL04_ E
_dec) e (pL04_ E
_in) e (ptL03_ E
_p) e (quL02_ E
_s) e (quL02_ E
l) e (que_ E
@@ -446,6 +458,7 @@ _amort) e (çL03_ e
_sup) e (rL04_ E
_tol) e (rL04_ E
_ven) e (rL04_ E
acel) e (rL04_ E / des-
_coop) e (rL04_ E
_temp) e (rL04_ E
_v) e (rbL03_ E
@@ -459,12 +472,12 @@ _amort) e (çL03_ e
_bez) e (rrL03_ e
_inv) e (rtL03_ e
_f) e (rvL03_ e
_enraiv) e (çL03_ e
_p) e (sL01_ E
_d) e (scL02_ E
_cr) e (scL02_ E
_p) e (scL03_ E
_m) e (sclL04 E
_d) e (spL02_ E
_p) e (squL02_ E
_l) e (ssL02_ e
_esp) e (ssL03_ e
@@ -486,35 +499,39 @@ _embel) e (zL04_ E
_acont) e (çL01_ e
_arref) e (çL01_ e
_emagr) e (çL03
pr) e (çL03_ e / a-
mer) e (çL03_ e / des-
pad) e (çL03_ e // com-
par) e (çL03_ e // a- re- com- rea- desa-
_ado) e (çL03_ e
_aqu) e (çL03_ e
_car) e (çL03_ e
_mer) e (çL03_ e
pad) e (çL03_ e // com-
_per) e (çL03_ e
_per) e (çL03_ e_
conh) e (çL03_ e // re-
obed) e (çL03_ e / des-
_esqu) e (çL03_ e
_forn) e (çL03_ e
obed) e (çL03_ e / des-
_ofer) e (çL03_ e
pr) e (çL03_ e / a-
_espair) e (çL03_ e
abast) e (çL03_ e // re-
_aborr) e (çL03_ e
_agrad) e (çL03_ e
_amanh) e (çL03_ e
_amort) e (çL03_ e
_anoit) e (çL03_ e
_desguarnec) e (çL03_ e
_enfraqu) e (çL03_ e
_enlouqu) e (çL03_ e
_enraiv) e (çL03_ e
_enriqu) e (çL03_ e
_entrist) e (çL03_ e
_envaid) e (çL03_ e
_envelh) e (çL03_ e
_esclar) e (çL03_ e
_espair) e (çL03_ e
_estrem) e (çL03_ e
_fortal) e (çL03_ e
_rejuven) e (çL03_ e
estabel) e (çL03_ e / re-
//endsort


@@ -811,8 +828,9 @@ _rejuven) e (çL03_ e
_deb) o (chL04_ O
_desabr) o (chL04_ O
_s) o (frL02_ O
r) o (gL04_ O / inter-
_j) o (gL04_ O
_r) o (gL04_ O
_af) o (gL04_ O
_adv) o (gL04_ O
_ref) o (gL04_ O
_ap) oi (L01_ OI
@@ -822,6 +840,7 @@ _desabr) o (chL04_ O
_m) o (lhL04_ O
env) o (lvL02_ O / des-
_abs) o (lvL02_ O
_dev) o (lvL02_ O
_res) o (lvL02_ O
_rev) o (lvL02_ O
_ent) o (pL02_ O
@@ -835,6 +854,8 @@ _desabr) o (chL04_ O
_r) o (snL04_ O
_c) o (spL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_ad) o (çL03_ O
_end) o (çL03_ O
//endsort

.group ô
@@ -909,7 +930,7 @@ _desabr) o (chL04_ O
r (C *@-
A) r (A *
A) r (_A *
rr x
rr rx
XC) r (A R
C) r (A *
//?1 C) r (A r

+ 15
- 12
phsource/compile_report View File

@@ -2,7 +2,7 @@
88 phoneme tables
new total
base 109 109
consonants 10 118
consonants 11 119
base2 26 125
en 54 156
en-n 33 156
@@ -48,8 +48,8 @@ consonants 10 118
es-la 1 125
ca 11 127
an 4 125
pt 29 140
pt-pt 20 140
pt 32 143
pt-pt 20 143
ro 36 148
el 10 125
grc 12 129
@@ -450,7 +450,7 @@ l/l_ [l] base
[l/] fr
l/l_@ [l/3] base
[l/] fr
l/l@ [¨\0] base
l/l@ [¨ì,] base
[l#] base
[l] fr
[l/2] fr
@@ -484,7 +484,7 @@ l/L2_oL [l/2] base
l/L2_uL [l/2] base
l/l_3 [l/] de
l/l_4 [ll] sq
l/la [¨\0] base
l/la [¨ì,] base
[l#] base
[l] fr
[l/2] fr
@@ -492,7 +492,7 @@ l/la [
[K] tn
l/l_a [l/3] base
[l/] fr
l/le [¨\0] base
l/le [¨ì,] base
[l#] base
[l] fr
[l/2] fr
@@ -504,7 +504,7 @@ l/L_eL_af [&] af
[&:] af
l/l_front [L] sq
l/l_front_ [l/4] sq
l/li [¨\0] base
l/li [¨ì,] base
[l#] base
[l] fr
[l/2] fr
@@ -518,7 +518,7 @@ ll/ll [L] base
ll/_ll [L] base
l/l_long [l] base
[l] fr
l/lo [¨\0] base
l/lo [¨ì,] base
[l#] base
[l/2] fr
[K] nso
@@ -529,7 +529,7 @@ l^/l_rfx [l.] base
[l;] lt
[l] ru
[l^] ru
l/lu [¨\0] base
l/lu [¨ì,] base
[l#] base
[l] fr
[l/2] fr
@@ -869,13 +869,16 @@ ustop/k_ [k] base
[k] lv
[k] el
[k] sq
ustop/k_asp [kh] consonants
ustop/k_asp [k#] consonants
[kh] consonants
[g#] hi
[kh] zh
[k#] ka
[kh] tn
ustop/k_asp_a [k#] ka
ustop/k_asp_e [k#] ka
ustop/k_asp_a [k#] consonants
[k#] ka
ustop/k_asp_e [k#] consonants
[k#] ka
ustop/k_asp_u [k#] ka
ustop/k_ejc [k`] am
ustop/ki [k] base

BIN
phsource/n/_n View File


BIN
phsource/n/_nr View File


BIN
phsource/n/n@ View File


BIN
phsource/n/na View File


BIN
phsource/n/ne View File


BIN
phsource/n/ni View File


BIN
phsource/n/no View File


BIN
phsource/n/nr@ View File


BIN
phsource/n/nra View File


BIN
phsource/n/nre View File


BIN
phsource/n/nri View File


BIN
phsource/n/nro View File


BIN
phsource/n/nru View File


BIN
phsource/n/nu View File


+ 17
- 0
phsource/ph_consonants View File

@@ -120,6 +120,23 @@ phoneme kh
WAV(ustop/k_asp, 90)
endphoneme

phoneme k#
vls vel stop
lengthmod 2
voicingswitch g
Vowelin f1=1 f2=1400 -100 100 f3=-150 80
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
IF nextPh(isPause2) THEN
WAV(ustop/k_asp, 40)
ENDIF
IF nextPhW(#e) OR nextPhW(#i) THEN
WAV(ustop/k_asp_e, 40)
ELIF nextPhW(#o) OR nextPhW(#u) THEN
WAV(ustop/k_asp_a, 25)
ELSE
WAV(ustop/k_asp_a, 30)
ENDIF
endphoneme

phoneme s2 // second part of a long [s:]
vls alv frc sibilant

+ 2
- 2
phsource/ph_georgian View File

@@ -77,9 +77,9 @@ phoneme k#
IF nextPhW(#e) OR nextPhW(#i) THEN
WAV(ustop/k_asp_e, 40)
ELIF nextPhW(#o) OR nextPhW(#u) THEN
WAV(ustop/k_asp_u, 50)
WAV(ustop/k_asp_u, 30)
ELSE
WAV(ustop/k_asp_a, 45)
WAV(ustop/k_asp_a, 35)
ENDIF
endphoneme


+ 1
- 1
phsource/ph_hindi View File

@@ -478,7 +478,7 @@ phoneme k
endphoneme

phoneme k#
import_phoneme consonants/kh
import_phoneme consonants/k#
voicingswitch g#
endphoneme


+ 0
- 2
phsource/ph_portugal View File

@@ -157,5 +157,3 @@ phoneme s# // This is [s] for Brazil, [S] for Portugal
ipa ʃ
endphoneme




+ 16
- 0
phsource/ph_pt_brazil View File

@@ -218,3 +218,19 @@ phoneme *
endphoneme



// testing
phoneme x2
import_phoneme af/x2
endphoneme

phoneme x3
import_phoneme base/x
endphoneme

phoneme R1
import_phoneme base/R
endphoneme




+ 6
- 7
phsource/phonemes View File

@@ -731,7 +731,7 @@ endphoneme

phoneme n
vcd alv nasal
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
lengthmod 4

IF KlattSynth THEN
@@ -762,8 +762,8 @@ phoneme n.
vcd rfx nasal
ipa ɳ
starttype n endtype n
Vowelin f1=2 f2=1200 -300 250 f3=-500 80 rms=20 colr=2
Vowelout f1=2 f2=1200 -300 250 f3=-500 80 rms=20 brk colr=2
Vowelin f1=2 f2=1700 -300 300 f3=-500 80 rms=20 colr=2
Vowelout f1=2 f2=1700 -300 300 f3=-500 80 rms=20 brk colr=2
lengthmod 4

IF KlattSynth THEN
@@ -1610,9 +1610,9 @@ phoneme x
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20

IF nextPh(isPause) THEN
WAV(ufric/x, 120)
WAV(ufric/x, 110)
ENDIF
WAV(ufric/x_hr, 25)
WAV(ufric/x_hr, 20)
endphoneme


@@ -1624,7 +1624,7 @@ phoneme X
IF nextPh(isPause) THEN
WAV(ufric/xx, 70)
ENDIF
WAV(ufric/xx)
WAV(ufric/xx,80)
endphoneme


@@ -1940,4 +1940,3 @@ include ph_korean
phonemetable kl base
include ph_greenlandic



+ 51
- 41
src/numbers.cpp View File

@@ -578,6 +578,7 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b
} // end of LookupLetter


static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'Ef"}; // using phonemes available to all languages

int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
{//=========================================================================
@@ -593,6 +594,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
char *p2;
char *pbuf;
ALPHABET *alphabet;
int al_offset;
int al_flags;
int language;
int phontab_1;
int speak_letter_number;
@@ -633,14 +636,21 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
return(0);
}

alphabet = AlphabetFromChar(letter);
al_offset = 0;
al_flags = 0;
if((alphabet = AlphabetFromChar(letter)) != NULL)
{
al_offset = alphabet->offset;
al_flags = alphabet->flags;
}

if(alphabet != current_alphabet)
{
// speak the name of the alphabet
current_alphabet = alphabet;
if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset))
if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset))
{
if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet))
if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet))
{
// don't say the alphabet name
}
@@ -680,7 +690,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)

if(ph_buf[0] == 0)
{
if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS))
if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS))
language = alphabet->language;
else
language = L('e','n');
@@ -715,49 +725,27 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
if(ph_buf[0] == 0)
{
// character name not found
if((letter >= 0x2800) && (letter <= 0x28ff))
{
// braille dots symbol
Lookup(translator, "_braille", ph_buf);
if(ph_buf[0] == 0)
{
EncodePhonemes("br'e:l", ph_buf, NULL);
}

if(ph_buf[0] != 0)
{
pbuf = ph_buf + strlen(ph_buf);
for(ix=0; ix<8; ix++)
{
if(letter & (1 << ix))
{
*pbuf++ = phonPAUSE_VSHORT;
LookupLetter(translator, '1'+ix, 0, pbuf, 1);
pbuf += strlen(pbuf);
}
}
}
}

if(ph_buf[0]== 0)
{
if(iswalpha(letter))
Lookup(translator, "_?A", ph_buf);

if((ph_buf[0]==0) && !iswspace(letter))
Lookup(translator, "_??", ph_buf);

speak_letter_number = 1;
if(ph_buf[0] == 0)
if(!(al_flags & AL_NO_SYMBOL))
{
EncodePhonemes("l'et@", ph_buf, NULL);
if(translator->letter_bits_offset != 0)
speak_letter_number = 0; // non-latin alphabet, no _?? entry, may not be able to speak hexadecimal
if(iswalpha(letter))
Lookup(translator, "_?A", ph_buf);

if((ph_buf[0]==0) && !iswspace(letter))
Lookup(translator, "_??", ph_buf);

if(ph_buf[0] == 0)
{
EncodePhonemes("l'et@", ph_buf, NULL);
}
}

if(!(control & 2) && (alphabet != NULL) && (alphabet->flags & AL_NOT_CODE))
if(!(control & 2) && (al_flags & AL_NOT_CODE))
{
// don't speak the character code number
// don't speak the character code number, unless we want full details of this character
speak_letter_number = 0;
}

@@ -766,14 +754,36 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)

if(speak_letter_number)
{
// speak the hexadecimal number of the character code
sprintf(hexbuf,"%x",letter);
if(al_offset == 0x2800)
{
// braille dots symbol, list the numbered dots
p2 = hexbuf;
for(ix=0; ix<8; ix++)
{
if(letter & (1 << ix))
{
*p2++ = '1'+ix;
}
}
*p2 = 0;
}
else
{
// speak the hexadecimal number of the character code
sprintf(hexbuf,"%x",letter);
}

pbuf = ph_buf;
for(p2 = hexbuf; *p2 != 0; p2++)
{
pbuf += strlen(pbuf);
*pbuf++ = phonPAUSE_VSHORT;
LookupLetter(translator, *p2, 0, pbuf, 1);
if(((pbuf[0] == 0) || (pbuf[0]==phonSWITCH)) && (*p2 >= 'a'))
{
// This language has no translation for 'a' to 'f', speak English names using base phonemes
EncodePhonemes(hex_letters[*p2 - 'a'], pbuf, NULL);
}
}
strcat(pbuf, pause_string);
}

+ 25
- 13
src/phonemelist.cpp View File

@@ -47,7 +47,6 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out)
int replace_flags;
int n_plist_out = 0;
int word_end;
int switched_language = 0;
PHONEME_LIST2 *plist2;
PHONEME_TAB *next=NULL;

@@ -55,11 +54,8 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out)
{
plist2 = &ph_list2[ix];

if(plist2->phcode == phonSWITCH)
switched_language ^= 1;

// don't do any substitution if the language has been temporarily changed
if(switched_language == 0)
if(!(plist2->synthflags & SFLAG_SWITCHED_LANG))
{
if(ix < (n_ph_list2 -1))
next = phoneme_tab[ph_list2[ix+1].phcode];
@@ -81,6 +77,9 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out)
if((replace_flags & 2) && ((plist2->stresslevel & 0x7) > 3))
continue; // this replacement doesn't occur in stressed syllables

if((replace_flags & 4) && (plist2->sourceix == 0))
continue; // this replacement only occurs at the start of a word

// substitute the replacement phoneme
plist2->phcode = replace_phonemes[k].new_ph;
if((plist2->stresslevel > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED))
@@ -117,7 +116,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
PHONEME_TAB *next, *next2;
int unstress_count = 0;
int word_stress = 0;
int switched_language = 0;
int current_phoneme_tab;
int max_stress;
int voicing;
int regression;
@@ -166,6 +165,20 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
}
}

// look for switch of phoneme tables
current_phoneme_tab = tr->phoneme_tab_ix;
for(j = 0; j < n_ph_list2; j++)
{
if(plist2[j].phcode == phonSWITCH)
{
current_phoneme_tab = plist2[j].tone_ph;
}
if(current_phoneme_tab != tr->phoneme_tab_ix)
{
plist2[j].synthflags |= SFLAG_SWITCHED_LANG;
}
}

if((regression = tr->langopts.param[LOPT_REGRESSIVE_VOICING]) != 0)
{
// set consonant clusters to all voiced or all unvoiced
@@ -180,10 +193,12 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
if(ph == NULL)
continue;

if(ph->code == phonSWITCH)
switched_language ^= 1;
if(switched_language)
if(plist2[j].synthflags & SFLAG_SWITCHED_LANG)
{
stop_propagation = 0;
voicing = 0;
continue;
}

type = ph->type;

@@ -295,8 +310,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
ph = phoneme_tab[phonPAUSE];
ph_list3[0].ph = ph;

switched_language = 0;

for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++)
{
plist3 = &ph_list3[j];
@@ -333,7 +346,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)

// change phoneme table
SelectPhonemeTable(plist3->tone_ph);
switched_language ^= SFLAG_SWITCHED_LANG;
}
next = phoneme_tab[plist3[1].phcode]; // the phoneme after this one
plist3[1].ph = next;
@@ -534,7 +546,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
phlist[ix].ph = ph;
phlist[ix].type = ph->type;
phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module
phlist[ix].synthflags = plist3->synthflags | switched_language;
phlist[ix].synthflags = plist3->synthflags;
phlist[ix].stresslevel = plist3->stresslevel & 0xf;
phlist[ix].wordstress = plist3->wordstress;
phlist[ix].tone_ph = plist3->tone_ph;

+ 6
- 2
src/prosodydisplay.cpp View File

@@ -224,6 +224,7 @@ void ProsodyDisplay::SelectPh(int index)
const char *name = "?";
char buf[120];
char len_string[20];
char param_string[20];

if(index < 0) return;

@@ -245,11 +246,14 @@ void ProsodyDisplay::SelectPh(int index)
y1 = p->pitch1;
y2 = p->pitch2;
len_string[0] = 0;
param_string[0] = 0;
if(p->std_length > 0)
sprintf(len_string," Length %d", p->std_length*2);
if(p->sound_param != 0)
sprintf(param_string,", %d", p->sound_param);

sprintf(buf,"Stress %s%d Amp %2d LengthMod %2d Pitch %3d %3d %s PhFlags %.2x [%s%s]",
emphasized,p->stresslevel&0x7,p->amp, p->length,y1,y2,name,p->ph->phflags, LookupManifest(p->phontab_addr), len_string);
sprintf(buf,"Stress %s%d Amp %2d LengthMod %2d Pitch %3d %3d %s PhFlags %.2x (%s%s)%s",
emphasized,p->stresslevel&0x7,p->amp, p->length,y1,y2,name,p->ph->phflags, LookupManifest(p->phontab_addr), param_string, len_string);
wxLogStatus(wxString(buf,wxConvLocal));
}


+ 7
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.46.45 10.Mar.13";
const char *version_string = "1.46.46 11.Mar.13";
const int version_phdata = 0x014640;

int option_device_number = -1;
@@ -1225,9 +1225,15 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_
#ifdef _ESPEAKEDIT
plist->std_length = phdata->pd_param[i_SET_LENGTH];
if(phdata->sound_addr[0] != 0)
{
plist->phontab_addr = phdata->sound_addr[0]; // FMT address
plist->sound_param = phdata->sound_param[0];
}
else
{
plist->phontab_addr = phdata->sound_addr[1]; // WAV address
plist->sound_param = phdata->sound_param[1];
}
#endif
} // end of InterpretPhoneme


+ 0
- 1
src/synthesize.cpp View File

@@ -1869,7 +1869,6 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control)
n_phoneme_list = 0;
WcmdqStop();

embedded_value[EMBED_T] = 0;
return(0);
}


+ 2
- 1
src/synthesize.h View File

@@ -56,7 +56,7 @@
#define EMBED_A 3 // amplitude/volume
#define EMBED_R 4 // pitch range/expression
#define EMBED_H 5 // echo/reverberation
#define EMBED_T 6 // different tone for announcing punctuation
#define EMBED_T 6 // different tone for announcing punctuation (not used)
#define EMBED_I 7 // sound icon
#define EMBED_S2 8 // speed (used in synthesize)
#define EMBED_Y 9 // say-as commands
@@ -223,6 +223,7 @@ typedef struct {
#ifdef _ESPEAKEDIT
unsigned char std_length;
unsigned int phontab_addr;
int sound_param;
#endif
} PHONEME_LIST;


+ 1
- 0
src/tr_languages.cpp View File

@@ -94,6 +94,7 @@ ALPHABET alphabets [] = {
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS},
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0},
{"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0},
{"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL},
{"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE},
{"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE},
{NULL, 0, 0, 0, 0, 0}

+ 1
- 1
src/translate.cpp View File

@@ -2489,7 +2489,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c,
}


static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA","nA",NULL};
static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","nd","ng","ts","tA","nA",NULL};

int UpperCaseInWord(Translator *tr, char *word, int c)
{//=====================================================

+ 1
- 0
src/translate.h View File

@@ -277,6 +277,7 @@ extern ALPHABET *current_alphabet;
#define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters
#define AL_WORDS 0x04 // use the language to speak words
#define AL_NOT_CODE 0x08 // don't speak the character code
#define AL_NO_SYMBOL 0x10 // don't repeat "symbol" or "character"


#define N_LOPTS 21

+ 11
- 3
src/voices.cpp View File

@@ -192,6 +192,12 @@ static char *fgets_strip(char *buf, int size, FILE *f_in)
if(fgets(buf,size,f_in) == NULL)
return(NULL);

if(buf[0] == '#')
{
buf[0] = 0;
return(buf);
}

len = strlen(buf);
while((--len > 0) && isspace(buf[len]))
buf[len] = 0;
@@ -389,8 +395,10 @@ void VoiceReset(int tone_only)
// Set voice to the default values

int pk;
static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128};
static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128};
// static unsigned char default_heights[N_PEAKS] = {140,128,120,110,90,90,128,128,128}; // changed for v.1.47
// static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128};
static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128}; // previous version
static unsigned char default_widths[N_PEAKS] = {140,128,128,160,171,171,128,128,128};

static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600};

@@ -411,7 +419,7 @@ void VoiceReset(int tone_only)
voice->n_harmonic_peaks = 5;
voice->peak_shape = 0;
voice->voicing = 64;
voice->consonant_amp = 100;
voice->consonant_amp = 85; // change to 85 for v.1.47 was 100
voice->consonant_ampv = 100;
voice->samplerate = samplerate_native;
memset(voice->klattv,0,sizeof(voice->klattv));

+ 13
- 20
src/wavegen.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -244,7 +244,7 @@ static unsigned char wavemult[N_WAVEMULT] = {
105, 98, 90, 83, 76, 69, 62, 55, 49, 43, 37, 32, 27, 22, 18, 14,
11, 8, 5, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

// set from y = pow(2,x) * 128, x=-1 to 1
unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = {
@@ -592,7 +592,7 @@ static PaError Pa_OpenDefaultStream2( PaStream** stream,
hostApiOutputParameters.device = Pa_GetDefaultOutputDevice();

if( hostApiOutputParameters.device == paNoDevice )
return paDeviceUnavailable;
return paDeviceUnavailable;

hostApiOutputParameters.channelCount = outputChannelCount;
hostApiOutputParameters.sampleFormat = sampleFormat;
@@ -834,15 +834,6 @@ static void WavegenSetEcho(void)
amp = embedded_value[EMBED_H];
delay = 130;
}
#ifdef deleted
if(embedded_value[EMBED_T] > 0)
{
// announcing punctuation, add a small echo
// This seems unpopular
amp = embedded_value[EMBED_T] * 8;
delay = 60;
}
#endif

if(delay == 0)
amp = 0;
@@ -854,7 +845,7 @@ static void WavegenSetEcho(void)
if(amp > 20)
echo_length = echo_head * 2; // perhaps allow 2 echo periods if the echo is loud.

// echo_amp units are 1/256ths of the amplitude of the original sound.
// echo_amp units are 1/256ths of the amplitude of the original sound.
echo_amp = amp;
// compensate (partially) for increase in amplitude due to echo
general_amplitude = GetAmplitude();
@@ -1559,7 +1550,7 @@ static int SetWithRange0(int value, int max)
static void SetPitchFormants()
{//===========================
int ix;
int factor;
int factor = 256;
int pitch_value;

// adjust formants to give better results for a different voice pitch
@@ -1570,11 +1561,13 @@ static void SetPitchFormants()
{
// only adjust if the pitch is higher than normal
factor = 256 + (25 * (pitch_value - 50))/50;
for(ix=0; ix<=5; ix++)
{
wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256;
}
}

for(ix=0; ix<=5; ix++)
{
wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256;
}

factor = embedded_value[EMBED_T]*3;
wvoice->height[0] = (wvoice->height2[0] * (256 - factor*2))/256;
wvoice->height[1] = (wvoice->height2[1] * (256 - factor))/256;
@@ -1755,7 +1748,7 @@ if(option_log_frames)
fprintf(f_log,"%3dmS %3d %3d %4d %4d (%3d %3d %3d %3d) to %3d %3d %4d %4d (%3d %3d %3d %3d)\n",length*1000/samplerate,
fr1->ffreq[0],fr1->ffreq[1],fr1->ffreq[2],fr1->ffreq[3], fr1->fheight[0],fr1->fheight[1],fr1->fheight[2],fr1->fheight[3],
fr2->ffreq[0],fr2->ffreq[1],fr2->ffreq[2],fr2->ffreq[3], fr2->fheight[0],fr2->fheight[1],fr2->fheight[2],fr2->fheight[3] );
fclose(f_log);
f_log=NULL;
}
@@ -2036,7 +2029,7 @@ static int SpeedUp(short *outbuf, int length_in, int length_out, int end_of_text
{
sonicSetSpeed(sonicSpeedupStream, sonicSpeed);
}
sonicWriteShortToStream(sonicSpeedupStream, outbuf, length_in);
}


Loading…
Cancel
Save