Browse Source

[1.31.09]

More fixes for &--; sequences.
lang=es: use phoneme [O] for letter 'o' except at end of word.
leng=es: attempt to improve single 'r' between two vowels.


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

+ 8
- 8
dictsource/dict_phonemes View File

@@ -89,12 +89,12 @@ r R s t ts v z Z
Dictionary es_dict

@- a aI e E eI eU i
o oI u
o O oI u

* ** b B d D f g
j J J^ k l l^ m n
n^ p Q r R s t T
tS v w x
* ** : b B d D f
g j J J^ k l l^ m
n n^ p Q r R s t
T tS v w x


Dictionary fi_dict
@@ -341,9 +341,9 @@ i i. i[ iou o o- ou u
uai y

(u) : f h j k kh l
m n N p ph r s S#
s. S; t th ts ts. ts. tS;
tS; tsh v w x z z.
m n N p ph r s s.
S; t th ts ts. ts. tS; tS;
tsh v w x z z.


Dictionary jbo_dict

+ 42
- 42
dictsource/es_list View File

@@ -4,70 +4,70 @@
// letters

_cap m'aJ^us
_?? s'imbolo
_?? s'imbOlo
_#32 Esp'aTjo


// names of symbols
_. punto
_, koma
_; p,untoik'oma
_: d,osp'untos
_! TE*R'aRaDmi**aTj'on
_? TE*R'aRintE*R,oQaTj'on
_¡ aB@-*'iRaDmi**aTj'on
_¿ aB@-*'iRintE*R,oQaTj'on
_, kOma
_; p,untOik'Oma
_: d,Osp'untOs
_! TE*R'aRaDmi**aTj'On
_? TE*R'aRintE*R,OQaTj'On
_¡ aB@-*'iRaDmi**aTj'On
_¿ aB@-*'iRintE*R,OQaTj'On
_= iQw'al
_< mEn'oRke
_> maJ^'oRke
_' apost@-*'ofo
_" kom'iJ^as
_+ s'iQnodesum'aR
_$ dolar
_# almoaD'il^a
_< mEn'ORke
_> maJ^'ORke
_' apOst@-*'Ofo
_" kOm'iJ^as
_+ s'iQnOdesum'aR
_$ dOlar
_# almOaD'il^a
_* astE*'isko
_- gJ^on
_- gJ^On
__ suB@-*aJ^'aDo
_/ ba*Ra
_\ b'a*RaimbERt'iDa
_` aT'Entog@-*'aBe
_` aT'EntOg@-*'aBe
_( ,aB@-*epa**'EntEsis
_) Tj,E*Rapa**'EntEsis
_[ ,aB@-*ekoRtS'Ete
_] Tj,E*RakoRtS'Ete
_[ ,aB@-*ekORtS'Ete
_] Tj,E*RakORtS'Ete
_{ ,aB@-*eJ^'aBe
_} Tj,E*RaJ^'aBe
_« kom'iJ^as||iTkJ^'ERDas
_» kom'iJ^as||dE**'EtSas
_« kOm'iJ^as||iTkJ^'ERDas
_» kOm'iJ^as||dE**'EtSas

^ TiRkumfl'Exo
€ eU*o
% porTj'Ento
% pOrTj'Ento
& ampERs'ant
@ a*R'oBa
@ a*R'OBa
/ ba*Ra
© kopi*R'aIt
© kOpi*R'aIt
£ liB@-*as
¶ p'a*Rafo
§ sEkTj'on
§ sEkTj'On


// numbers
_0 TE*o
_1 'uno
_2 d'os
_2 d'Os
_3 t@-*'es
_4 kw'at@-*o
_5 T'inko
_6 s'eIs
_7 sj'Ete
_8 'otSo
_8 'OtSo
_9 nw'Eve
_1X dj'ET
_11 'onTe
_12 d'oTe
_11 'OnTe
_12 d'OTe
_13 t@-*'ETe
_14 kat'oRTe
_14 kat'ORTe
_15 k'inTe
_20 v'eInte
_2X v'eInt
@@ -76,23 +76,23 @@ _4X kwa*'Enta
_5X Tinkw'Enta
_6X sEs'Enta
_7X sEt'Enta
_8X otS'Enta
_9X nov'Enta
_0C T'ientos
_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
_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
_0M2 mil^'Ones
_1M2 'unmil^'On
_0M4 _bil^'Ones
_1M4 'unbil^'On
_0and i
_dpt koma
//_roman Rom'ano
_dpt kOma
//_roman ROm'ano

vi vi // not a Roman number


+ 11
- 9
dictsource/es_rules View File

@@ -76,7 +76,7 @@


.group j
_) j (_ x'ota
_) j (_ x'Ota
j x


@@ -109,7 +109,8 @@

.group o
_) o (_ o
o o
o O
o (_ o
oy (K oI
oy (_ 'oI

@@ -117,6 +118,7 @@
.group p
_) p (_ pe
p p
p (t p:


.group q
@@ -164,14 +166,14 @@


.group w
_) w (_ ,uBe||d'oBle
_) w (_ ,uBe||d'OBle
w w


.group x
_) x (_ Ekis
x ks
A) x (A Qs
// A) x (A Qs // ??
x (_ =Qs


@@ -194,22 +196,22 @@
á ''a
é ''E
í ''i
ó ''o
ó ''O
ú ''u
ü u
ñ n^
_)ñ (_ En^e

$ d'olar
$ d'Olar

+ m'as
_) ++ (_ masm'as
\+\+\+) + // ignore + after the first 3

# almoaD'il^a
# almOaD'il^a
\#) #

__) - (_D m'Enos
__) - (_D m'EnOs
A_) - (_D _
C_) - (_D _
--) -
@@ -223,4 +225,4 @@
. (. _:
\.) .

, (D koma
, (D kOma

+ 23
- 4
dictsource/fr_list View File

@@ -5,7 +5,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2008-02-08 Michel Such <[email protected]>
// Updated 2008-02-10 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -178,6 +178,7 @@ ac $abbrev
adsl $abbrev
alt $pause
amd $abbrev
anpe $abbrev
api $abbrev
avh $abbrev
cci $abbrev
@@ -198,6 +199,7 @@ mme madam
mr m@sjY
nti $abbrev
nvda $abbrev
ong $abbrev
pci $abbrev
pda $abbrev
p.s postskRiptOm
@@ -417,21 +419,39 @@ absent absA~
accident aksidA~
adéquat adekuat2
adéquate adekuat
airbus Erbys
anus anys
any Eni
ardent aRdA~
bissus bisys
bonus bonys
bus bys
bus by $verb
campus kA~pys
casus kazys
choeur k@r
cocus coky
discident disidA~
eye aj
eyes ajz
fils fis
imprudent E~pRydA~
juin ZyE~
malus malys
many mEni
mars maRs
minus minys
occident OksidA~
orient ORjA~
pays pEi
phallus falys
prudent pRydA~
secret sYkRE
souris suri

sus sys
sus sy $verb
to tu
vénus venys


mens mA~z2
@@ -518,6 +538,7 @@ flirt fl@Rt

// words from other languages
about @bawt
acer asEr
amazon amaz'On
(audible manager) od'ibl||manadZ'@r
be bi
@@ -554,7 +575,6 @@ its its
klaxon klaksOn
leader li:d@R
let lEt
link link
liszt list
lite lajt
(mac os x) makoEsiks
@@ -577,7 +597,6 @@ release rili:z
schubert SubER
screamer skri:m@r
(search & destroy) s@:rS_||end_||dEsstrOj
shrink Sr'ink
skype sk'ajp@-
spybot spajbOt
sun s@n

+ 36
- 11
dictsource/fr_rules View File

@@ -3,7 +3,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2008-02-08 Michel Such <[email protected]>
// Updated: 2008-02-10 Michel Such <[email protected]>
//
// * The rules are based on Cicero TTS.
//
@@ -151,6 +151,7 @@
em (me a // femme patiemment
em (b A~ // décembre
em (m A~ // emmancher
em (manu e // emmanuel
em (p A~
en (_ A~n2 // en
en (hA A~n // enharmonique
@@ -425,12 +426,14 @@ _) h (are _! // hareng, haret
_) h (arf _! // harfang
_) h (argn _! // hargne
_) h (ari _! // haricot haridelle
_) h (ark _! // harka
_) h (arn _! // harnais
_) h (arp _! // harpe
_) h (as _! // hasard, hase
_) h (âs _! // hâte
_) h (au _! // haut
_) h (av _! // havre

_) h (eau _! // heaume
_) h (él _! // hélas, héler
_) h (èl _! // hèlement
@@ -445,6 +448,7 @@ _) h (ertz _! // hertz
_) h (êtr _! // hêtre, hêtraie
_) h (eula _! // heulandite
_) h (eurt _! // heurter

_) h (iat _! // hiatal, hiatus
_) h (ibo _! // hibou
_) h (ic _! // hic
@@ -455,6 +459,7 @@ _) h (igh _! // highlandais
_) h (i-han _! // hi-han
_) h (iss _! // hisser
_) h (it _! // hit, hit-parad

_) h (ob _! // hobby, hobereau
_) h (och _! // hocher
_) h (ock _! // hockey
@@ -476,6 +481,7 @@ _) h (ot _! // hot-dog, hotte
_) h (ou _! // houle, housse

_) h (u _!
_) h (uil // huile
_) h (uiss // huissier
_) h (uî // huître
_) h (umain // humain
@@ -511,6 +517,7 @@ _) h (umo // humour
ing (_ iN // parking
in (h in // inhumain
inct (_ E~ // distinct
ink (_ ink // link, pink
in (n i // innombrable
in (C E~ // vingt
// in (_ E~ // vin
@@ -574,6 +581,7 @@ _) h (umo // humour
o (che_ O // poche, cloche
oe (ll wa // moelleux
_) oe (C Y // oesophage
_ph) oe (t Y // phoetus
oeu @ // soeur coeur
oeufs @ // oeufs boeufs
o (eC o // coefficient
@@ -727,21 +735,35 @@ e) s (_h z2
xpan) s (A s // expansion


ibu) s (_ s
_u) s (_ s
Cu) s (_
Abu) s (_ s
_Abu) s (_
mbu) s (_ s

cu) s (_ s // focus phallus cumulus minus
iu) s (_ s
Acu) s (_ s
écu) s (_
odu) s (_ s
gu) s (_ s
igu) s (_ // aigus
iu) s (_ s // radius
ïu) s (_ s // laïus
Culu) s (_ s // cumulus
plu) s (_ z2 // plus, surplus
mu) s (_ s
nu) s (_ s
pu) s (_ s
llu) s (_ s
ulu) s (_ s
_mu) s (_
ému) s (_
opu) s (_ s // opus, octopus
Aru) s (_ s // virus
aru) s (_ // disparus
psu) s (_ s // lapsus

atu) s (_ s // stratus cactus motus
ctu) s (_ s
ctu) s (_ s // cactus
etu) s (_ s
aitu) s (_
itu) s (_ s
otu) s (_ s
ltu) s (_ s // altus
otu) s (_ s // motus

_tou) s (_C
_tou) s (_ s
@@ -817,8 +839,10 @@ C) te (_ t@- // patte
u y // cruel nuage brut
ui w^i

_b) usi iz // business, businessman
c) ueill Wj // cueillir
c) ueil (_ Wj // recueil
_c) ul (_ y
g) ueill Wj // orgueilleux
g) ueil (_ Wj // orgueil

@@ -883,6 +907,7 @@ C) te (_ t@- // patte
ym (p E~ // tympan
y (nn i
y (nA i
ys (_ is
yx (_ iks

yn E~ // laryngite

+ 1
- 0
dictsource/zh_rules View File

@@ -234,6 +234,7 @@ language).
.group y
y j //before a o e i
y (u //NULL before u
y (uDn j
yo (DngK yu
y (K i // foreign words


+ 9
- 10
phsource/compile_report View File

@@ -41,7 +41,7 @@
is 32 124
vi 42 137
zhy 40 132
zh 64 148
zh 63 147
sw 14 108
th 50 142
id 14 120
@@ -597,15 +597,14 @@ ufric/sh_ [S] base
[s#] pt_pt
ufric/sh_pzd [S;] base
[S;] ro
[S;] zh
ufric/sh_pzd_ [S;] base
[Z;] base
ufric/sh_rfx [s.] base
[s.] zh
ufric/sh_sr [S#] zh
ufric/sh_sr.wav [S] sr
ufric/sh_pzd2 [S] sr
[Z] sr
[dZ] sr
[S;] zh
ufric/sh_rfx [s.] base
[s.] zh
ufric/s_pzd [s;] base
[z;] base
[s;] ro
@@ -802,7 +801,7 @@ ustop/tsh_pzd [tS;] zh
[ch] th
ustop/tsh_pzd_unasp [tS;] zh
[c] th
ustop/tsh_sr.wav [tS] sr
ustop/tsh_sr [tS] sr
ustop/ts_pzd [tS;] base
[ts;] base
[ch] hi
@@ -816,7 +815,7 @@ ustop/t_sr [d] sr
[t] zh
ustop/ts_rfx [ts.] zh
ustop/ts_rfx_unasp [ts.] zh
ustop/ts_sr.wav [tS;] sr
ustop/ts_sr [tS;] sr
[dZ;] sr
ustop/ts_unasp [ts] zh
ustop/t_unasp [t] th
@@ -872,8 +871,8 @@ vdiph2/uu@ [U@] en
[u@] vi
[ua] th
[u:a] th
vdiph2/y@ [y@] zh
vdiph2/y#@ [Y@] af
[y@] zh
vdiph2/yu [yU] nl
[yu] zh
vdiph2/y-y# [yY] fi
@@ -1541,7 +1540,7 @@ vowel/oo [O:] en_sc
[O@] en_wi
[O] de
[o] eo
[o] es
[O] es
[o] el
[O] sv
[O] no

+ 14
- 24
phsource/ph_serbian View File

@@ -1,13 +1,3 @@
// ufric/x_sr
// ufric/ch_sr
// ufric/sh_sr
// ustop/t_sr
// ustop/ts_sr
// ustop/tsh_sr
// r3/r_sr
// m/m_sr
// n/n_sr
// n^/nj_sr

// This file inherits phonemes from ph_croatian
// Only phonemes which differ from the inherited phonemes need
@@ -97,10 +87,10 @@ phoneme dZ
vcd pla afr sibilant
vowelin f1=2 f2=2300 200 400 f3=100 80
vowelout f1=2 f2=2300 250 300 f3=100 80 brk
formants dzh/dzh+ufric/sh_sr.wav
before _ dzh/dzh+ufric/sh_sr.wav
formants dzh/dzh+ufric/sh_pzd2
before _ dzh/dzh+ufric/sh_pzd2
after _ NULL
after @ dzh/dzh+ufric/sh_sr.wav
after @ dzh/dzh+ufric/sh_pzd2
lengthmod 5
switchvoicing tS
endphoneme
@@ -109,10 +99,10 @@ endphoneme
phoneme dZ;
vcd pla afr sibilant palatal
vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
formants dzh/dzh+ustop/ts_sr.wav
before _ dzh/dzh+ustop/ts_sr.wav
formants dzh/dzh+ustop/ts_sr
before _ dzh/dzh+ustop/ts_sr
after _ NULL
after @ dzh/dzh+ustop/ts_sr.wav
after @ dzh/dzh+ustop/ts_sr
lengthmod 5
switchvoicing tS;
endphoneme
@@ -122,8 +112,8 @@ phoneme tS
vls pla afr sibilant
vowelin f1=0 f2=2300 200 400 f3=-100 80
lengthmod 2
wave ustop/tsh_sr.wav%50
before _ ustop/tsh_sr.wav%50
wave ustop/tsh_sr%50
before _ ustop/tsh_sr%50
switchvoicing dZ
endphoneme

@@ -132,8 +122,8 @@ phoneme tS;
vls pal afr sibilant palatal
vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
lengthmod 2
wave ustop/ts_sr.wav
before _ ustop/ts_sr.wav
wave ustop/ts_sr
before _ ustop/ts_sr
switchvoicing dZ;
endphoneme

@@ -144,8 +134,8 @@ phoneme Z
vcd pla frc sibilant
vowelin f1=0 f2=2000 0 300 f3=-200 80
vowelout f1=2 f2=2000 0 300 f3=-200 80 brk
formants voc/zh+ufric/sh_sr.wav%60
before _ voc/zh+ufric/sh_sr.wav%50
formants voc/zh+ufric/sh_pzd2%60
before _ voc/zh+ufric/sh_pzd2%50
lengthmod 6
switchvoicing S
endphoneme
@@ -157,8 +147,8 @@ phoneme S
vowelout f1=0 f2=2100 100 300 f3=-100 80
length 100
lengthmod 3
wave ufric/sh_sr.wav%70
before _ ufric/sh_sr.wav%60
wave ufric/sh_pzd2%70
before _ ufric/sh_pzd2%60
switchvoicing Z
endphoneme


+ 1
- 1
phsource/ph_spanish View File

@@ -9,7 +9,7 @@ phoneme E
formants vowel/e_mid
endphoneme

phoneme o
phoneme O
vowel starttype (o) endtype (o)
length 170
formants vowel/oo

+ 4
- 11
phsource/ph_zh View File

@@ -147,21 +147,14 @@ phoneme tS;h
vls pal afr sibilant palatal
vowelin f1=0 f2=2700 400 600 f3=300 80
lengthmod 2
wave ustop/tsh_pzd
wave ustop/tsh_pzd%80
endphoneme

phoneme S;
vls pla frc sibilant
vowelin f1=0 f2=2700 400 600 f3=300 80
lengthmod 2
wave ufric/sh_pzd
endphoneme

phoneme S#
vls pla frc sibilant
vowelin f1=0 f2=2700 400 600 f3=300 80
lengthmod 2
wave ufric/sh_sr%20
wave ufric/sh_pzd2%20
endphoneme

phoneme s.
@@ -170,7 +163,7 @@ phoneme s.
vowelout f1=0 f2=1800 -100 300 f3=-300 80
length 100
lengthmod 3
wave ufric/sh_rfx%60 // quieter
wave ufric/sh_rfx%50 // quieter
before _ ufric/sh_rfx%50
endphoneme

@@ -429,5 +422,5 @@ endphoneme
phoneme y@
vowel starttype (i) endtype (@)
length 250
formants vdiph2/y#@
formants vdiph2/y@
endphoneme

+ 2
- 2
phsource/phonemes View File

@@ -603,8 +603,8 @@ endphoneme
phoneme ** // TEST flap
liquid alv
vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15
vowelin f1=2 f2=1600 -300 300 f3=-300 80
formants r3/@tap+r3/rx%50
vowelin f1=2 f2=1600 -300 300 f3=-100 80 len=20
formants r3/@tap
vowelin f1=3 f2=1600 -300 300 f3=-300 80
before (i) r3/@tap_i+r3/rx
before (e) r3/@tap_i+r3/rx

BIN
phsource/r3/@tap View File


phsource/ufric/sh_sr.wav → phsource/ufric/sh_pzd2.wav View File


BIN
phsource/ustop/tsh_pzd.wav View File


BIN
phsource/vdiph2/vowelchart.png View File


BIN
phsource/vdiph2/y@ View File


BIN
phsource/vowel/o View File


BIN
phsource/vwl_zh/a_n View File


+ 4
- 4
src/intonation.cpp View File

@@ -275,12 +275,11 @@ static TONE_HEAD tone_head_table[N_TONE_HEAD_TABLE] = {
};

static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = {
{PITCHfall, 30, 5, PITCHfall, 30, 8, NULL, 12, 7, 0}, // 0 statement
{PITCHfall, 30, 5, PITCHfall, 32, 9, NULL, 12, 7, 0}, // 0 statement
{PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma
{PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question
// {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation
{PITCHfall, 43, 3, PITCHfall, 43,35, NULL, 35, 4, T_EMPH}, // 3 exclamation
// {PITCHrisefall,47, 8, PITCHrise, 48,30, NULL, 48, 5, T_EMPH}, // 3 exclamation
{PITCHfall, 41, 4, PITCHfall, 41,35, NULL, 35, 4, T_EMPH}, // 3 exclamation
{PITCHfall, 38, 2, PITCHfall, 42,30, NULL, 15, 5, 0}, // 4 statement, emphatic
{PITCHfall, 28, 5, PITCHfall, 28, 9, NULL, 12, 7, 0}, // 5 statement, less intonation
{PITCHfrise, 30, 8, PITCHfrise2, 30,10, NULL, 13, 20, 0}, // 6 comma, less intonation
@@ -772,6 +771,7 @@ void Translator::CalcPitches_Tone(int clause_tone)
if((p->type == phPAUSE) && (p->ph->std_length > 50))
{
pause = 1; // there is a pause since the previous vowel
prevw_tph = phoneme_tab[phonPAUSE]; // forget previous tone
}

if(p->newword)
@@ -817,7 +817,7 @@ void Translator::CalcPitches_Tone(int clause_tone)
}
}

if(prev_tph->mnemonic == 0x343132) // [214]
if(prevw_tph->mnemonic == 0x343132) // [214]
{
if(tph->mnemonic == 0x343132) // [214]
prev_p->tone_ph = LookupPh("35");

+ 57
- 20
src/readclause.cpp View File

@@ -1695,6 +1695,7 @@ MNEM_TAB xml_char_mnemonics[] = {
{"amp", '&'},
{"quot", '"'},
{"nbsp", ' '},
{"apos", '\''},
{NULL,-1}};


@@ -1723,13 +1724,18 @@ int Translator::ReadClause(FILE *f_in, char *buf, unsigned short *charix, int n_
int n_xml_buf;
int terminator;
int punct;
int found;
int any_alnum = 0;
int self_closing;
int punct_data;
const char *p;
char buf2[40];
wchar_t xml_buf[N_XML_BUF+1];

#define N_XML_BUF2 12
char buf2[N_XML_BUF2+2];
static char ungot_string[N_XML_BUF2+4];
static int ungot_string_ix = -1;

if(clear_skipping_text)
{
skipping_text = 0;
@@ -1752,14 +1758,13 @@ f_input = f_in; // for GetC etc
if(ungot_char2 != 0)
{
c2 = ungot_char2;
ungot_char2 = 0;
}
else
{
c2 = GetC();
}

while(!Eof() || (ungot_char != 0))
while(!Eof() || (ungot_char != 0) || (ungot_char2 != 0) || (ungot_string_ix >= 0))
{
if(!iswalnum(c1))
{
@@ -1782,47 +1787,79 @@ f_input = f_in; // for GetC etc

cprev = c1;
c1 = c2;
c2 = GetC();

if(Eof())
if(ungot_string_ix >= 0)
{
c2 = ' ';
if(ungot_string[ungot_string_ix] == 0)
ungot_string_ix = -1;
}

if((ungot_string_ix == 0) && (ungot_char2 == 0))
{
c1 = ungot_string[ungot_string_ix++];
}
if(ungot_string_ix >= 0)
{
c2 = ungot_string[ungot_string_ix++];
}
else
{
c2 = GetC();

if(Eof())
{
c2 = ' ';
}
}
ungot_char2 = 0;

if((option_ssml) && (phoneme_mode==0))
{
if((ssml_ignore_l_angle != '&') && (c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z'))))
{
n_xml_buf = 0;
c1 = c2;
while(!Eof() && (iswalnum(c1) || (c1=='#')) && (n_xml_buf < 12))
while(!Eof() && (iswalnum(c1) || (c1=='#')) && (n_xml_buf < N_XML_BUF2))
{
buf2[n_xml_buf++] = c1;
c1 = GetC();
}
buf2[n_xml_buf] = 0;
c2 = GetC();
sprintf(ungot_string,"%s%c%c",&buf2[0],c1,c2);

if(buf2[0] == '#')
if(c1 == ';')
{
// character code number
c1 = '#'; // in case there isn't a number
if(buf2[1] == 'x')
sscanf(&buf2[2],"%x",(unsigned int *)(&c1));
else
sscanf(&buf2[1],"%d",&c1);
}
else
{
if((j = LookupMnem(xml_char_mnemonics,buf2)) != -1)
if(buf2[0] == '#')
{
c1 = j;
// character code number
if(buf2[1] == 'x')
found = sscanf(&buf2[2],"%x",(unsigned int *)(&c1));
else
found = sscanf(&buf2[1],"%d",&c1);
}
else
{
c1 = '&';
if((found = LookupMnem(xml_char_mnemonics,buf2)) != -1)
{
c1 = found;
if(c2 == 0)
c2 = ' ';
}
}
}
else
{
found = -1;
}

if(found <= 0)
{
ungot_string_ix = 0;
c1 = '&';
c2 = ' ';
}

if((sayas_mode == 0x14) && (c1 <= 0x20))
{
c1 += 0xe000; // move into unicode private usage area

+ 3
- 0
src/setlengths.cpp View File

@@ -310,6 +310,9 @@ void Translator::CalcLengths()
else
p->prepause = 60;

if(prev->type == phSTOP)
p->prepause = 60;

if((langopts.word_gap & 0x10) && (p->newword))
p->prepause = 60;


+ 1
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.31.08 08.Feb.08";
const char *version_string = "1.31.09 11.Feb.08";
const int version_phdata = 0x013105;

int option_device_number = -1;

Loading…
Cancel
Save