Browse Source

[1.46.25]

Changes to: pt, tt, ko.

Phoneme definitions: added NOT operator, eg:
   IF NOT nextPh(isVowel) THEN

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

+ 1
- 1
dictsource/de_rules View File

@@ -256,7 +256,7 @@
e) chen (_ C@n
ü) chen (_ C@n

chs ks (_
chs ks
chance SA~s@
chara (kt k%ara
_) ch (ic S

+ 15
- 14
dictsource/dict_phonemes View File

@@ -78,7 +78,7 @@ S s2 t t2 tS ts v w
z Z


Dictionary de_dict 2012-06-27
Dictionary de_dict 2012-09-13

3 @ @- a A A: aI aU
A~ E E2 E: e: EI i I
@@ -102,7 +102,7 @@ p Q r R s s; t T
ts v x z


Dictionary en_dict 2012-09-08
Dictionary en_dict 2012-09-14

0 3 3: @ @- @2 @5 @L
a a# A: A@ aa aI aI3 aI@
@@ -376,7 +376,7 @@ S s; S; t t; tS ts tS;
ts; v w x z Z Z;


Dictionary pt_dict 2012-09-11
Dictionary pt_dict 2012-09-14

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
@@ -508,11 +508,11 @@ i i. i[ iA iE io iou N-
o o- ong ou u u@ ua uai
uei uo y y& y@ yE yi yu

; C f h j k kh l
l# m n N p ph Q q
Q" Q^ r R R2 R3 s s.
S; t th ts ts. ts. tS; tS;
tsh v w x X z.
; C f h j J^ k kh
l l# m n N p ph Q
q Q" Q^ r R R2 R3 s
s. S; t th ts ts. ts. tS;
tS; tsh v w x X z.


Dictionary zhy_dict 2009-01-19
@@ -814,10 +814,10 @@ tS ts tS; v x z Z z;
Z;


Dictionary tt_dict 2012-09-11
Dictionary tt_dict 2012-09-14

a A A2 e e2 i I o
u u2 V W y
& a A e e2 e: i I
o u u2 V W y

: ? b d f g h j
k l m n N p q r
@@ -825,10 +825,11 @@ R s S S; t w x z
Z Z;


Dictionary ko_dict 2012-06-14
Dictionary ko_dict 2012-09-14

@ a e E i o u u-

* - ; b d dZ; g h
j k k- kh l m n p
p- ph s t t- tS tS; w
j k k- kh l m n N
p p- ph q r s t t-
tS tS; w

+ 1
- 0
dictsource/en_list View File

@@ -3054,6 +3054,7 @@ Katie keIti
Keighli keIli
Keanu kI'A:nu:
Kieran ki@r@n
Kris krIs
Laurence l0r@ns
Lawrence l0r@ns
Leann li:'an

+ 3
- 2
dictsource/es_rules View File

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

// Conditional rules
@@ -128,8 +128,9 @@ ll (_ l

.group m
m m
@) m (_ =m
_) mn (em n
_) mb (A mb
_) mb (A mb


.group n

+ 41
- 0
dictsource/ko_list View File

@@ -1,5 +1,6 @@
$textmode

// Number forms:
_0 ᅧᆼ
_1 ᅵᆯ
_2 ᅵ
@@ -23,6 +24,46 @@ _0C 백
_0M1 천
_1M1 천

$phonememode
_0M2 m'an // 10^4
_1M2 m'an
_0M3 tSh-@n||m'an // 10^7
_1M3 tSh-@n||m'an
_0M4 '@q // 10^8
_1M4 '@q
_0M5 tSh-@n||'@q // 10^11
_1M5 tSh-@n||'@q
_0M6 tS;'o // 10^12
_1M6 tS;'o
_0M7 tSh-@n||tS;'o
_1M7 tSh-@n||tS;'o
_0M8 gj'@nN
_1M8 gj'@nN
$textmode


// Character names:
ㄱ ㄱㅣㅇㅕㄱ
ㄲ ㅆㅏㅇㄱㅣㅇㅕㄱ
ㄴ ㄴㅣㅇㅡㄴ
ㄷ ㄷㅣㄱㅡㄷ
ㄸ ㅆㅏㅇㄷㅣㄱㅡㄷ
ㄹ ㄹㅣㅇㅡㄹ
ㅁ ㅁㅣㅇㅡㅁ
ㅂ ㅂㅣㅇㅡㅂ
ㅃ ㅆㅏㅇㅂㅣㅇㅡㅂ
ㅅ ㅅㅣㅇㅗㅅ
ㅆ ㅆㅏㅇㅅㅣㅇㅗㅅ
ㅇ ㅇㅣㅇㅡㅇ
ㅈ ㅈㅣㅇㅡㅈ
ㅉ ㅆㅏㅇㅈㅣㅇㅡㅈ
ㅊ ㅊㅣㅇㅡㅊ
ㅋ ㅋㅣㅇㅡㅋ
ㅌ ㅌㅣㅇㅡㅌ
ㅍ ㅍㅣㅇㅡㅍ
ㅎ ㅎㅣㅇㅡㅎ

// Misc:
// 사ᅵ시ᅩᆺ
고랫재 고랟째
귓밥 귇빱

+ 18
- 18
dictsource/ko_rules View File

@@ -19,20 +19,20 @@
// Order: ㄱㄲㅋ ㄷㄸㅌ ㅂㅃㅍ ㅅㅆㅈㅉㅊ ㄴㅁ ㄹ ㅎ

.group ᄀ // ㄱ
g
_) ᄀ k
q
_) ᄀ g
L01) ᄀ k-
L03) ᄀ kh

.group ᄁ // ㄲ
k-
q-

.group ᄏ // ㅋ
ᄏ kh

.group ᄃ // ㄷ
ᄃ d
_) ᄃ t
_) ᄃ d
L01) ᄃ t-
L03) ᄃ th

@@ -55,7 +55,7 @@
ᄑ ph

.group ᄉ // ㅅ
ᄉ s
|s
L01) ᄉ s-

.group ᄊ // ㅆ
@@ -68,16 +68,16 @@
L03) ᄌ tSh;

.group ᄍ // ㅉ
ᄍ tS;- // TODO: phoneme
'tS;- // TODO: phoneme

.group ᄎ // ㅊ
ᄎ tSh; // TODO: phoneme
ᄎ tSh- // TODO: phoneme

.group ᄂ // ㄴ
ᄂ n
;n

.group ᄆ // ㅁ
ᄆ m
;m

.group ᄅ // ㄹ
ᄅ * // TODO: alveolar flap [ɾ]
@@ -87,7 +87,7 @@
ᄒ h // TODO: [ɦ]
_) ᄒ h

// Medials
// Medials or vowels

.group ᅡ // ㅏ
ᅡ a
@@ -157,7 +157,7 @@
// Order: ㄱㄳㄲㅋ ㄷㅌ ㅂㅍ ㅅㅆㅈㅊ ㄴㅁ ㅇㅎ ㄹ

.group ᆨ // ㄱ
k // TODO: final stops
q // It is actually q, as using k adds unnecessary sound.
ᆨᄒ kh

.group ᆪ // ㄳ
@@ -175,14 +175,14 @@
ᆿ (A kh

.group ᆮ // ㄷ
ᆮ t
d- // Actually a soft D.
ᆮᄂ nn
ᆮᄆ mm
ᆮᄒ th
ᆮ (L02 dZ;

.group ᇀ // ㅌ
ᇀ t
ᇀ t-
ᇀᄂ nn
ᇀᄆ mm
ᇀ (A th
@@ -202,14 +202,14 @@
ᇁ (A ph

.group ᆺ // ㅅ
ᆺ t
ᆺ t-
ᆺᄂ nn
ᆺᄆ mm
ᆺ (A s
ᆺᄒ s-

.group ᆻ // ㅆ
ᆻ t
ᆻ t-
ᆻᄂ nn
ᆻᄆ mm
ᆻ (A s-
@@ -241,14 +241,14 @@
ᆷ m

.group ᆼ // ㅇ
ᆼ ng
ᆼ nN

.group ᇂ // ㅎ
ᇂ t
ᇂ t-
ᇂ (A

.group ᆯ // ㄹ
l
rr
ᆯᄅ l
ᆯ (A *


+ 21
- 1
dictsource/pt_list View File

@@ -644,6 +644,7 @@ governo gov'ernU $noun
// $alt changes stressed [e] or [o] phoneme to open [E] or [O]
// $alt2 changes stressed [E] or [O] phoneme to close [e] or [o]

aborto $alt $verb
acerto $alt2 $noun
adereço $alt2
adore $alt
@@ -659,10 +660,12 @@ ameba $alt
amores $alt2
anoiteça $alt2
anoiteço $alt2
apego $alt2
apreço $alt2
aperto $alt2 $noun
apoio $alt $verb
aprendeste $alt2
arremesso $alt2 $noun
assembleia $alt
atrozes $alt
austera $alt
@@ -676,11 +679,13 @@ boleia $alt
bolo $alt2
borboleta $alt2
bordo $alt
bromelha $alt
cabeça $alt2
cacete $alt2
cachorra $alt2
camiseta $alt2
cantora $alt2
caractere $alt
casebre $alt
catorze $alt2
cefaleia $alt
@@ -714,9 +719,12 @@ crede $alt2
cresce $alt
crescem $alt
der $alt
desapego $alt2 $noun
desce $alt
descem $alt
descordo $alt
descova $alt2
desespero $alt2 $noun
desfecho $alt2
desprezo $alt $verb
deva $alt2
@@ -727,8 +735,11 @@ discordo $alt
dobro $alt2 $noun
doce $alt2
droga $alt
emprego $alt2 $noun
endereço $alt2
enumerem $alt
enredo $alt $verb
enterro $alt2 $noun
enxerto $alt2 $noun
epopeia $alt
eritreia $alt
@@ -740,7 +751,7 @@ esforços $alt
esperma $alt
espeto $alt2 $noun
espiroqueta $alt2
enterro $alt2 $noun
esqueleto $alt2
estiverdes $alt
estiveres $alt
estrofe $alt
@@ -750,6 +761,7 @@ expeça $alt2
expeço $alt2
farofa $alt
febre $alt
fera $alt
fere $alt
ferem $alt
fezes $alt
@@ -758,6 +770,7 @@ Fizeram $alt
fizerem $alt
fizerdes $alt
fizeres $alt
folga $alt
fogos $alt
fores $alt2
forro $alt $verb
@@ -765,6 +778,7 @@ fosse $alt2
fossem $alt2
foste $alt2
frevo $alt2
galera $alt
gameta $alt2
geleia $alt
gelo $alt $verb
@@ -850,10 +864,12 @@ povos $alt
poxa p'oS&
preta $alt2
preto $alt2
primavera $alt
profere $alt
proferem $alt
puder $alt
puserdes $alt
recomeço $alt2 $noun
recordo $alt
recorto $alt
rede $alt2
@@ -874,11 +890,14 @@ sincero $alt
sobe $alt
sobem $alt
soco $alt2
soco $alt $verb
sofrem $alt
sofre $alt
sofreste $alt2
sogra $alt
sopre $alt
soprem $alt
sopro $alt $verb
sorvete $alt2
sossego $alt2 $noun
souber $alt
@@ -889,6 +908,7 @@ sugere $alt
sugerem $alt
suor swOr
tapete $alt2
tempero $alt $verb
teta $alt2
tiver $alt
tiveres $alt

+ 11
- 1
dictsource/pt_rules View File

@@ -16,7 +16,7 @@

// endings
.L01 a am o
.L02 a am e em o
.L02 a am e em o ue uem
.L03 a am

.group a
@@ -367,6 +367,13 @@ _compar) e (çL01_ e
_desapar) e (çL01_ e
_esclar) e (çL01_ e
_reapar) e (çL01_ e
_sol) e (trL01_ E
_acont) e (çL03_ e
_envaid) e (çL01_ e
_ofer) e (çL01_ e
_enriqu) e (çL01_ e
_descr) e (vL01_ e
_enfraqu) e (çL01_ e
//endsort

.group é
@@ -653,11 +660,14 @@ _reapar) e (çL01_ e
?1 f) o (rmulá u // eg: formulário, formulários.
?1 v) o (lt O

//sort
_m) o (lhL02_ O
_ref) o (gL02_ O
c) o (rrL03_ o // escorra, incorra, corra, recorra
_m) o (rrL03_ o
_ap) oi (L03_ OI
p) ostos (_ Ost=Us# // dispostos etc.
//endsort

.group ô
ô ''o

+ 4
- 4
dictsource/tt_list View File

@@ -36,8 +36,8 @@
щ SS;A
ъ kAlVnl,Vqbilges'e
ы V:
ь neS;kal,ekbilges'e
э e:
ь neS;k&l,ekbilges'e
э e|:
ю ju
я jA

@@ -69,7 +69,7 @@ _4X kVr'Vk
_5X ill'e
_6X Altm'VS
_7X Z;itm'eS
_8X siks'an
_8X siks'&n
_9X tuks'An
_0C j'Wz
_0M1 m'eN
@@ -80,4 +80,4 @@ _1M3 milli'Ard
_0M4 billi'on
_1M4 billi'on

_dpt bWt,en
_dpt _bWt,en

+ 10
- 6
dictsource/tt_rules View File

@@ -6,7 +6,8 @@
а A

.group ә
ә a
ә &
әе e: // 'әнкәен'

.group б
б b
@@ -15,13 +16,13 @@
в w // [v] in Russian words

.group г
г g // may be [Q] or [r"] ??
г g // changes to [Q] or [Q"]

.group д
д d

.group е
_) е je2 // may be [je] [jV]
_) е je2 // changes to [je] or [jV]
е e

.group ё
@@ -38,6 +39,7 @@

.group и
и i
A) и j

.group й
й j
@@ -54,7 +56,7 @@

.group н
н n
н (к N
// н (к N
н (г N
н (х N

@@ -81,9 +83,11 @@

.group у
у u // or w
A) у w

.group ү
ү y // or w
A) ү w

.group ф
ф f
@@ -120,10 +124,10 @@
э e

.group ю
ю ju2 // or jy
ю ju2 // changes to ju or jy

.group я
я jA2 // or ja
я ja // changes to jA or j&

.group
$ dolAR

+ 96
- 95
phsource/compile_report View File

@@ -1,88 +1,88 @@
83 phoneme tables
new total
base 107 107
consonants 10 116
base2 26 123
en 53 153
en-n 33 153
en-us 41 154
en-sc 40 155
en-rp 34 153
en-wm 31 153
en-wi 30 153
af 39 136
cy 29 132
de 41 139
eo 13 114
jbo 2 114
nci 3 123
fi 41 133
et 40 133
fr 64 144
fr-ca 11 144
hi 57 148
ta 23 152
kn 17 148
ml 21 151
hu 25 122
lt 44 137
lv 29 125
nl 35 128
pl 22 120
sk 28 135
cs 7 135
hr 25 140
mk 3 141
sr 14 142
ru 49 137
bg 14 123
it 19 127
la 21 124
es 15 123
es-la 1 123
ca 11 125
pt 29 138
pt-pt 20 138
ro 36 146
el 10 123
grc 12 127
sv 22 127
no 28 132
is 42 139
vi 41 139
zhy 41 136
zh 64 153
sw 9 108
tr 19 126
ku 18 127
id 15 125
sq 33 126
hy 23 117
da 27 120
ka 19 112
rw 15 130
ne 18 156
pa 15 150
prs 8 111
sl 10 135
gd 6 107
nso 12 111
ht 11 144
az 10 127
ak 8 109
am 15 112
wo 18 118
dv 14 148
te 16 148
si 24 154
tn 27 119
mt 32 127
bo 10 152
kk 20 117
fa 9 110
ga 21 125
tt 18 116
ko 15 114
base 109 109
consonants 10 118
base2 26 125
en 53 155
en-n 33 155
en-us 41 156
en-sc 40 157
en-rp 34 155
en-wm 31 155
en-wi 30 155
af 39 138
cy 29 134
de 41 141
eo 13 116
jbo 2 116
nci 3 125
fi 41 135
et 40 135
fr 64 146
fr-ca 11 146
hi 57 150
ta 23 154
kn 17 150
ml 21 153
hu 25 124
lt 44 139
lv 29 127
nl 35 130
pl 22 122
sk 28 137
cs 7 137
hr 25 142
mk 3 143
sr 14 144
ru 49 139
bg 14 124
it 19 129
la 21 126
es 15 125
es-la 1 125
ca 11 127
pt 29 140
pt-pt 20 140
ro 36 148
el 10 125
grc 12 129
sv 22 129
no 28 134
is 42 141
vi 41 141
zhy 41 138
zh 64 155
sw 9 110
tr 19 128
ku 18 129
id 15 127
sq 33 127
hy 23 119
da 27 122
ka 19 114
rw 15 132
ne 18 158
pa 15 152
prs 8 113
sl 10 137
gd 6 109
nso 12 113
ht 11 146
az 10 129
ak 8 111
am 15 114
wo 18 120
dv 14 150
te 16 150
si 24 156
tn 27 121
mt 32 129
bo 10 154
kk 20 118
fa 9 112
ga 21 127
tt 23 120
ko 15 116

Data file Used by
b/b [b] base
@@ -417,7 +417,7 @@ l/l_ [l] base
[l/] fr
l/l_@ [l/3] base
[l/] fr
l/l@ [hæu] base
l/l@ [h] base
[l#] base
[l] fr
[l/2] fr
@@ -451,7 +451,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 [hæu] base
l/la [h] base
[l#] base
[l] fr
[l/2] fr
@@ -459,7 +459,7 @@ l/la [h
[K] tn
l/l_a [l/3] base
[l/] fr
l/le [hæu] base
l/le [h] base
[l#] base
[l] fr
[l/2] fr
@@ -471,7 +471,7 @@ l/L_eL_af [&] af
[&:] af
l/l_front [L] sq
l/l_front_ [l/4] sq
l/li [hæu] base
l/li [h] base
[l#] base
[l] fr
[l/2] fr
@@ -481,11 +481,11 @@ l/li [h
l/l_i [l/3] base
[l/] fr
[i] sq
ll/ll [L] bg
ll/_ll [L] bg
ll/ll [L] base
ll/_ll [L] base
l/l_long [l] base
[l] fr
l/lo [hæu] base
l/lo [h] base
[l#] base
[l/2] fr
[K] nso
@@ -496,7 +496,7 @@ l^/l_rfx [l.] base
[l;] lt
[l] ru
[l^] ru
l/lu [hæu] base
l/lu [h] base
[l#] base
[l] fr
[l/2] fr
@@ -505,7 +505,7 @@ l/lu [h
l/l_u [l/3] base
[l/] fr
l/l_vi [l] vi
ll/xll [L] bg
ll/xll [L] base
l/l_y [l/] fr
l/tl [l] base
[l] fr
@@ -1493,7 +1493,7 @@ vowel/@_2 [@] vi
[@] sq
[V] sq
[@/] sq
vowel/&_2 [a] tt
[V] tt
vowel/@_3 [@#] en
[@] en-sc
[I] en-sc
@@ -1655,7 +1655,6 @@ vowel/aa [a:] et
[aa] zhy
[a] hy
[a] az
[A] tt
vowel/aa# [O] en-us
[0] en-wi
[a2] fi
@@ -1682,6 +1681,7 @@ vowel/aa_8 [0] en-us
[A1] et
[A] nl
[a:] is
[A] tt
[a] ko
vowel/aa_9 [a] fi
[a] et
@@ -1749,6 +1749,7 @@ vowel/e_3 [i] en-n
vowel/e_5 [i] en-sc
vowel/e_6 [e] ht
[e] ak
[e:] tt
vowel/e_7 [e:] et
vowel/e_8 [E:] de
[e] fr
@@ -1756,6 +1757,7 @@ vowel/e_8 [E:] de
vowel/ee [E] en-n
[E] sv
[e] ka
[&] tt
vowel/e_e [E] en-sc
[E:] is
vowel/ee# [E#] pl
@@ -2083,7 +2085,6 @@ vowel/o-_2 [V] en-n
vowel/o_3 [oU] en-sc
[o] kk
vowel/o-_3 [U] en-rp
[V] tt
vowel/o-_4 [o] ro
[o] am
vowel/o_5 [O] da

+ 1
- 14
phsource/ph_bulgarian View File

@@ -72,20 +72,7 @@ phoneme l
endphoneme

phoneme L // velar L
liquid
lengthmod 7

IF nextPh(isNotVowel) THEN
ChangePhoneme(l/2) // use 'dark' [l] after a vowel
ENDIF

VowelEnding(ll/xll, -40)

IF prevPh(isPause) THEN
FMT(ll/_ll)
ENDIF

FMT(ll/ll)
import_phoneme base/L
endphoneme



+ 2
- 4
phsource/ph_english View File

@@ -51,8 +51,7 @@ phoneme l // use dark [l/2] before not-vowel
liquid
lengthmod 7

IF nextPhW(isVowel) THEN
ELSE
IF NOT nextPhW(isVowel) THEN
IF prevPh(isVowel) OR prevPh(j) OR prevPh(w) THEN
ChangePhoneme(l/2)
ELSE
@@ -110,8 +109,7 @@ phoneme z/2 // used for 's suffix
InsertPhoneme(I2)
ENDIF

IF prevPh(isVoiced) THEN
ELSE
IF NOT prevPh(isVoiced) THEN
ChangePhoneme(s)
ENDIF
ChangePhoneme(z)

+ 88
- 47
phsource/ph_tatar View File

@@ -1,6 +1,6 @@


// use 'flag1' for front vowels
// use 'flag1' for front vowels, 'flag2' for back vowels

phoneme i
vowel flag1 starttype #i endtype #i
@@ -15,93 +15,105 @@ phoneme y
endphoneme

phoneme u
vowel starttype #u endtype #u
vowel flag2 starttype #u endtype #u
length 180
FMT(vowel/u)
endphoneme

phoneme u2 // letter 'ю'
vowel starttype #u endtype #u
length 180
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN
ChangePhoneme(y)
ELSE
ChangePhoneme(u)
ENDIF
endphoneme

phoneme e
vowel flag1 starttype #@ endtype #@
length 100
length 110
FMT(vowel/ii#)
endphoneme

phoneme e2 // 'e' at start of word
vowel starttype #@ endtype #@
length 100
IF nextVowel(isFlag1) THEN
ChangePhoneme(e)
ENDIF
ChangePhoneme(V)
endphoneme

phoneme W
vowel flag1 starttype #@ endtype #@
length 100
length 110
FMT(vowel/oe)
endphoneme

phoneme o
vowel starttype #o endtype #o
length 100
vowel flag2 starttype #o endtype #o
length 110
FMT(vowel/o_mid)
endphoneme

phoneme V
vowel starttype #@ endtype #@
length 100
FMT(vowel/o-_3)
vowel flag2 starttype #@ endtype #@
length 110
ipa ɯ
FMT(vowel/@_2)
endphoneme


phoneme a
vowel flag1 starttype #a endtype #a
phoneme &
vowel flag1 starttype #e endtype #e
length 180
FMT(vowel/&_2)
FMT(vowel/ee)
endphoneme

phoneme A
vowel starttype #a endtype #a
vowel flag2 starttype #a endtype #a
length 180
IF thisPh(isFirstVowel) THEN
ChangePhoneme(0)
ENDIF
IF prevVowel(0) THEN
ChangePhoneme(0)
IF NOT nextPhW(w) AND NOT thisPh(isTranslationGiven) THEN
IF thisPh(isFirstVowel) THEN
ChangePhoneme(0)
ENDIF
IF prevVowel(0) AND thisPh(isSecondVowel) THEN
ChangePhoneme(0)
ENDIF
ENDIF
FMT(vowel/aa)
FMT(vowel/aa_8)
endphoneme

phoneme 0
vowel flag2 starttype #o endtype #o
length 180
FMT(vowel/0_3)
endphoneme


phoneme e:
vowel flag1 starttype #e endtype #e
length 240
FMT(vowel/e_6)
endphoneme

phoneme I
vowel flag1 starttype #i endtype #i
length 110
FMT(vowel/ii)
endphoneme

phoneme A2 // letter 'я'
phoneme a // letter 'я'
vowel starttype #a endtype #a
length 180
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN
ChangePhoneme(a)
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN // front vowels
ChangePhoneme(&)
ENDIF
ChangePhoneme(A)
endphoneme

phoneme 0
vowel starttype #o endtype #o
phoneme u2 // letter 'ю'
vowel starttype #u endtype #u
length 180
FMT(vowel/0_3)
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN
ChangePhoneme(y)
ELSE
ChangePhoneme(u)
ENDIF
endphoneme


phoneme I
vowel flag1 starttype #i endtype #i
phoneme e2 // 'e' at start of word
vowel starttype #@ endtype #@
length 100
FMT(vowel/ii)
IF nextVowel(isFlag2) THEN
ChangePhoneme(V)
ELSE
ChangePhoneme(e)
ENDIF
endphoneme


@@ -113,10 +125,39 @@ phoneme r
endphoneme

phoneme t
import_phoneme base/t[
import_phoneme base2/t
endphoneme

phoneme d
import_phoneme base/d[
endphoneme

phoneme k
vls vel stop
IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN // back vowels
ChangePhoneme(q)
ENDIF
CALL base/k
endphoneme

phoneme G
import_phoneme base/Q"
endphoneme

phoneme g
vcd vel frc
IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN
ChangePhoneme(G)
ELSE
ChangePhoneme(Q)
ENDIF
endphoneme


phoneme l
liquid
IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN
ChangePhoneme(L)
ENDIF
CALL base/l
endphoneme

+ 23
- 0
phsource/phonemes View File

@@ -576,6 +576,29 @@ phoneme l.
endphoneme


phoneme L/
import_phoneme base/l/2
endphoneme

phoneme L // velar L
liquid
lengthmod 7

IF nextPh(isNotVowel) THEN
ChangePhoneme(L/) // use 'dark' [l] after a vowel
ENDIF

VowelEnding(ll/xll, -40)

IF prevPh(isPause) THEN
FMT(ll/_ll)
ENDIF

FMT(ll/ll)
endphoneme




phoneme w
liquid

+ 16
- 2
src/compiledata.cpp View File

@@ -71,6 +71,7 @@ typedef struct {
#define k_AND 1
#define k_OR 2
#define k_THEN 3
#define k_NOT 4

#define kTHISSTRESS 0x800

@@ -90,6 +91,7 @@ static keywtab_t k_conditions[] = {
{"AND", 0, k_AND},
{"OR", 0, k_OR},
{"THEN", 0, k_THEN},
{"NOT", 0, k_NOT},
{"prevPh", tWHICH_PHONEME, 0},
{"prevPhW", tWHICH_PHONEME, 5},
{"thisPh", tWHICH_PHONEME, 1},
@@ -2257,10 +2259,11 @@ int CompileIf(int elif)
int key;
int finish = 0;
int word = 0;
int word2 = 0;
int word2;
int data;
int bitmap;
int brackets;
int not_flag;
USHORT *prog_last_if = NULL;

then_count = 2;
@@ -2268,6 +2271,8 @@ int CompileIf(int elif)

while(!finish)
{
not_flag = 0;
word2 = 0;
if(prog_out >= prog_out_max)
{
error("Phoneme program too large", NULL);
@@ -2277,6 +2282,13 @@ int CompileIf(int elif)
if((key = NextItem(tCONDITION)) < 0)
error("Expected a condition, not '%s'",item_string);

if((item_type == 0) && (key == k_NOT))
{
not_flag = 1;
if((key = NextItem(tCONDITION)) < 0)
error("Expected a condition, not '%s'",item_string);
}

if(item_type == tWHICH_PHONEME)
{
// prevPh(), thisPh(), nextPh(), next2Ph() etc
@@ -2331,7 +2343,9 @@ int CompileIf(int elif)
*prog_out++ = word | i_CONDITION;

if(word2 != 0)
*prog_out++ = word2;
*prog_out++ = word2;
if(not_flag)
*prog_out++ = i_NOT;

// expect AND, OR, THEN
switch(NextItem(tCONDITION))

+ 1
- 1
src/dictionary.cpp View File

@@ -521,7 +521,7 @@ sprintf(outptr,"* ");
unsigned short ipa1[96] = {
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f,
0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294,
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x4c,0x271,0x14b,0x254,
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254,
0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f

+ 12
- 5
src/synthdata.cpp View File

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

const char *version_string = "1.46.24 11.Sep.12";
const char *version_string = "1.46.25 14.Sep.12";
const int version_phdata = 0x014624;

int option_device_number = -1;
@@ -929,6 +929,7 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_
int instn2;
int or_flag;
bool truth;
bool truth2;
int data;
int end_flag;
int ix;
@@ -1044,14 +1045,20 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_
while((instn & 0xe000) == 0x2000)
{
// process a sequence of conditions, using boolean accumulator
truth2 = InterpretCondition(tr, control, plist, prog, worddata);
prog += NumInstnWords(prog);
if(*prog == i_NOT)
{
truth2 = truth2 ^ 1;
prog++;
}

if(or_flag)
truth = (truth || InterpretCondition(tr, control, plist, prog, worddata));
truth = truth || truth2;
else
truth = (truth && InterpretCondition(tr, control, plist, prog, worddata));
truth = truth && truth2;
or_flag = instn & 0x1000;
prog += NumInstnWords(prog);
instn = *prog;
// instn = *(++prog);
}

if(truth == false)

+ 1
- 0
src/synthesize.h View File

@@ -273,6 +273,7 @@ typedef struct {

#define i_RETURN 0x0001
#define i_CONTINUE 0x0002
#define i_NOT 0x0003

// Group 0 instrcutions with 8 bit operand. These values go into bits 8-15 of the instruction
#define i_CHANGE_PHONEME 0x01

+ 2
- 0
src/tr_languages.cpp View File

@@ -957,6 +957,8 @@ SetLengthMods(tr,3); // all equal
tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.numbers = NUM_OMIT_1_HUNDRED;
tr->langopts.break_numbers = 0x9999998;
tr->langopts.max_digits = 20;
}
break;


+ 2
- 1
src/translate.cpp View File

@@ -3206,7 +3206,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
break;

*pn++ = c;
if((--nx > 0) && (tr->langopts.break_numbers & (1 << nx)))
nx--;
if((nx > 0) && (tr->langopts.break_numbers & (1 << nx)))
{
memcpy(&num_wtab[nw++], &words[ix], sizeof(WORD_TAB)); // copy the 'words' entry for each word of numbers


Loading…
Cancel
Save