Browse Source

[1.47.04a]

Fix: SSML <voice> </voice> lost the current voice.
Fix: French Mbrola voices.
Command-line, add  --ipa=3  separates phoneme names with underscores.
Language changes, an, hi, pt.


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

+ 52
- 33
dictsource/an_list View File

@@ -57,6 +57,7 @@ _y je
y je $atend
ch tSe
ll 'El^e
ny n^e
á 'a||akTEntw'aDa
é 'e||akTEntw'aDa
í 'i||akTEntw'aDa
@@ -118,9 +119,10 @@ _x#º %o // for 1º 2º 3º
_x#ª %a
º orDin'al||maskul'in
ª orDin'al||femen'in
ºc gr'aUs||T'e
ºf gr'aUs||'Efe
ºk gr'aUs||k'a
(1 ºc) un||gr'aU||T'e
ºc gr'aUs||Tentigr'aUs
ºf gr'aUs||f'arEnxeI
ºk gr'aUs||k'elBin

_1ox prim'Er
_2ox seQ'und
@@ -183,6 +185,7 @@ $ d'olar
\ kontraBaRRa
| b'aRRaBertik'al
° graUs
(1 °) un||gr'aU

_- gj'on
! TaRR'ar||eksklamaTj'on
@@ -471,40 +474,56 @@ witsa $abbrev


// exceptions
barça b'arsa
holio x'olio
jazz dZ'as
banjo Banjo
barça barsa
desenyermar DesenjErmar
halar xalar
halma xalma
harcia xarTja
hibo xiBo
hoder xoDer
holgorio xolg'orio
holio x'olio
hopar xopar
huerga xuerga
huerza xuerTa
jacuzzi jakusi
jazz jas
jet jet
judo juDo


// Foreign words
android andr'oId
apple 'apEl
at 'at
chat tS'at
chrome kr'ome
espeak isp'ik
(e speak) isp'ik
facebook f'eIsbuk
firefox f'aIrfoks
google g'ugEl
hotmail xotm'eIl
android androId
apple 'apEl
at at
chat tSat
chrome krome
espeak ispik
(e speak) ispik
facebook f'eIsbuk
firefox f'aIrfoks
google g'ugEl
hardware x'ardwer
hockey xokeI
hotmail xotmeIl
(i phone) 'aIfon
iphone 'aIfon
(i pod) 'aIpod
ipod 'aIpod
hardware x'ardwer
linux $1
live l'aIB
messenger m'esendZer
mozilla moT'ila
nvda ene|be|de|'a
office 'ofis
skype esk'aIp
iphone 'aIfon
(i pod) 'aIpod
ipod 'aIpod
junior j'unior
linux $1
live laIB
messenger m'esendZer
mozilla moTila
nvda ene|be|de|'a
office ofis
skype eskaIp
software s'oftwer
thunderbird Tanderb'ird
twitter tw'iter
unix j'uniks
whatsapp was'app
windows w'indows
thunderbird Tanderbird
twitter tw'iter
unix j'uniks
whatsapp wasap
windows w'indows

//mobile _^_EN

+ 6
- 0
dictsource/an_rules View File

@@ -1,3 +1,4 @@

// Aragon translation rules
// This file is UTF-8 encoded

@@ -111,6 +112,7 @@
i i
i (u_ i
i (A j


.group j
@@ -168,6 +170,7 @@


.group q
q k
qu (A kw
qü kw
qu (e k
@@ -204,6 +207,9 @@
u) t (_ t#
ei) t (_ t#
n) t (_ = // silent, but stress on last vowel
n) t (m // Silent
_pos) t (h t
_pos) t (C // Silent
tz T
ue) t (_ t#
ui) t (_ t#

+ 17
- 16
dictsource/dict_phonemes View File

@@ -25,7 +25,7 @@ n^ p p` r s S t t`
tS tS` v w x z Z


Dictionary an_dict 2013-03-29
Dictionary an_dict 2013-04-04

a aI aU e E eI eU i
o O oI u U
@@ -49,18 +49,18 @@ s s. S; t t# t. t.# tS
v v# w z


Dictionary pt_dict 2013-04-02
Dictionary pt_dict 2013-04-05

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
i I i/ iU o O oI OI
o~ u U uI u~ y
i I i/ iU i~ o O oI
OI o~ u U uI u~ y

* : ; b c C d dZ
f g h j k l l^ m
n N n^ p Q r R r-
s S s# s; t T tS ts
v w x z Z
* : ; ? b c C d
dZ f g h j k l l^
m n N n^ p Q r R
r- s S s# s; t T tS
ts v w x z Z


Dictionary bg_dict 2013-03-16
@@ -164,21 +164,22 @@ p Q r R s s; t T
ts v x z


Dictionary en_dict 2013-04-02
Dictionary en_dict 2013-04-05

0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3
aI@ aU aU@ A~ e E e: e@
eI i I I# I2 i: i@ i@3
IR o O O: o: O@ o@ OI
oU O~ u U u: U@ V VR
IR n- o O O: o: O@ o@
OI oU O~ u U u: U@ V
VR

* : ; ? b C d D
d# dZ f g h j k l
l# l/ m n N n^ p Q
q Q" r R r- R2 s S
t T t2 tS tS; v w x
z Z z# z.
t T t# t2 tS tS; v w
x z Z z# z.


Dictionary eo_dict 2013-03-08
@@ -239,7 +240,7 @@ l m n N p r R s
S s2 t v w Z


Dictionary fr_dict 2013-03-15
Dictionary fr_dict 2013-04-04

@ @- a a- A~ e E e-
E: E~ i I o O O~ u
@@ -287,7 +288,7 @@ N n^ p r R R2 s S
t tS ts tS; v x z Z


Dictionary hi_dict 2013-03-31
Dictionary hi_dict 2013-04-05

@ @2 a a: aI aU a~ e
E e: E: e~ E~ i I i:

+ 7
- 0
dictsource/en_list View File

@@ -593,6 +593,7 @@ oem $abbrev
ok $abbrev
omg $abbrev
os $abbrev
osx $abbrev
otoh $abbrev
pcie $abbrev
pcmcia $abbrev
@@ -1641,6 +1642,7 @@ gentlemen dZEnt@Lm@n
genuine dZEnju:I#n
geode dZi:oUd
geologist $2
gettin gEt#n-
geyser gi:z3
?3 geyser gaIz3
gibbon gIb@n
@@ -1680,6 +1682,7 @@ gurus gu:ru:z
habitual $alt3
haggis hagIs
haha hA:h'A:
halation $alt3 // in-
halleluiah halI2'lu:j@
hallelujah halI2'lu:j@
halloween $3
@@ -2419,6 +2422,7 @@ puny pju:ni
purist pju:r-Ist
purport $2
purportedly $2
puttin pUt#n-
pyjama p@dZA:m@
pyrites paIr'aIti:z
pythagoras paIT'ag@r@s
@@ -3258,6 +3262,7 @@ Korean kOr'i:@n
Kosovo k0s@voU
Kuala kwA:la#
Lagos leIg0s
Lahore $alt3
Lebanon lEb@n0n
Leipzig laIpsIg
Leone li:'oUn
@@ -3681,6 +3686,7 @@ Persephone p3s'Ef@ni
Phoebe fi:bi:
Rachael reItS@L
Rachel reItS@L
Rae reI
Rafael rA:faI'El
Rashid rA:S'i:d
Raul raU'u:l
@@ -3713,6 +3719,7 @@ Siobhán S@vO:n
Sonia s0nj@
Sophie soUfi
Stephen sti:v@n
Stevie sti:vi
Stewart stju:3t
?3 Stewart stu:3t
Stuart stju:3t

+ 10
- 6
dictsource/en_rules View File

@@ -979,6 +979,7 @@
u) ar (ish e@r
?3 _) ar (istocrat a#r
log) ar (i @r
marg) ar (AtA_ 3r'
m) ar (it ar
p) ar (i ar
p) ar (in e@
@@ -2715,6 +2716,7 @@
g (eek g
_) g (ert g
_) g (ek g
g (eld g
ge (nic_ dZ'E
genesis dZ'EnI2sIs
geous dZ=@s
@@ -3200,7 +3202,7 @@

.group in
@) ing (_+S3dve %IN
@) ings (_S4dve %INz
@) ings (_S1m z
@) ingly (_S5dve %INl%I
@) ingment (_S7dve %INm@nt
logu) ing (_S4v %IN
@@ -4102,7 +4104,7 @@
o (tion oU
m) o (tiv oU
r) o (to oU
pr) oto oUtoU
pr) oto (C oUtoU
pr) oto (n oUt0
m) otor oUt3
n) o (tor oU
@@ -4217,6 +4219,7 @@
Cd) on (_ @n
?3 ag) on (_ 0n
rg) on (_ @n
&k) on (_ @n
&s) on (_ @n
&t) on (_ @n
&tr) on (_ 0n
@@ -4955,7 +4958,6 @@
_) re (arm %ri:
_) re (au@P2 ,ri:
re (ck rE
reckon rEk@n
reco (g rEk@
_) re (comP2 r,i:
_) re (conP2 ,ri:
@@ -5129,7 +5131,7 @@
@) s (hill_ s
@) s (hous s
_) she' %Si:
A) sh (i_ =S
A) sh (A_ =S
&) ship (_S4 SIp
&) ships (_S5 SIps
&) shire (_S5 S3
@@ -5210,6 +5212,7 @@
_) sus (A su:z
su (al Zu:
n) su (al sju:
?3 n) su (al Su:
_) su (b sV
_) su (bdi s,V
su (bdue s%V
@@ -5297,6 +5300,7 @@
ttu (r t@
tz ts
tze (_ tsi
?3 @@A) t (Ary_ t2

.group th
th T
@@ -5503,7 +5507,7 @@
d) u (ly ju:
z) u (l_ 'u:
&) um (_ @m
vol) u (m ju:
vol) u (me ju:
u (ma_ 'u:
h) u (man ju:
u (me ju:
@@ -6009,7 +6013,7 @@


.group '
's (_S2 z
's (_S2m z
f) 's (_S2 s
p) 's (_S2 s
t) 's (_S2 s

+ 2
- 2
dictsource/fr_rules View File

@@ -698,7 +698,7 @@ _quatrevin) gts (_ z2
_) game (X _^_en
girl _^_en // girl
gh (K _^_en
gy (_ _^_en
@) gy (_ _^_en


.group h
@@ -1497,7 +1497,7 @@ A) wn _^_en
y (nn i

// group y: English section
_C) y (_ _^_en
//_C) y (_ _^_en
AC) y (_ _^_en
C) y (e_ _^_en
%C) y (_ _^_en

+ 15
- 6
dictsource/hi_rules View File

@@ -171,6 +171,9 @@
क़ qV
क़ (B q

क्ष kSV
क्ष (B kS
.group ख
ख k#V
ख (B k#
@@ -206,15 +209,20 @@
ज (B J
ज़ zV
ज़ (B z
ज्ञ gjV
ज्ञ (B gj

.group झ
झ J#V
झ (B J#


.group ञ
ञ n^V
ञ (B n^
्) ञ (_ n^
्) ञ (_ n^@


.group ट
ट t.V
@@ -239,7 +247,7 @@
ढ़ (B r.h // nukta

.group ण
ण n.V // (temporary) same as dental [n]
ण n.V
ण (B n.
्) ण (_ n.@

@@ -304,10 +312,11 @@
.group र
र rV
र (B r
र (_ r
्) र (_ r@

.group ऱ // rra
ऱ rV // (temporary) same as [r]
ऱ rV // (temporary) same as [r] should this be [r.] or perhaps [z.] ?
ऱ (B r
्) ऱ (_ r@

@@ -338,15 +347,15 @@
श (B S

.group ष
ष s.V //?? or retroflex [S]
ष (B s. //??
ष s.V
ष (B s.

.group स
स sV
स (B s

.group ह
ह H
ह HV
ह (B H



+ 30
- 21
dictsource/pt_list View File

@@ -115,6 +115,7 @@ _[ ,abRikowS'etSi
_\ b,ax&,iNvertS'id&
_] f,ES&kowS'etSi
_^ s,irku~Nfl'Eksu
_´ as'eINtu,ag'udU
__ s,ublin^'adu
_` gR'avi
_{ ,abRiS'avi
@@ -127,8 +128,8 @@ _¡ ,eskl&mas,&U~,iNvertS'id&
_¿ ,iNtex,ogas,&U~,iNvertS'id&

_" 'abRi;'asp&||d'upl&s#
Oz'in^U
az'in^U
o*@-dZin'almaskul'i~nU
o*@-dZin'alfemin'i~nU
° gR'aU


@@ -662,6 +663,7 @@ apneia $alt
apoio $alt $verb
arredores $alt
arremesso $alt2 $noun
arroto $alt2 $noun
arroz $alt2
assembleia $alt
ateia $alt
@@ -691,7 +693,7 @@ bordo $alt
borra $alt2 $noun
bosque $alt
boto $alt2 $noun
boxe $alt
boxe $alt
brejo $alt
bromelha $alt
cabelo $alt2
@@ -700,26 +702,30 @@ cacete $alt2
cachorra $alt2
caderneta $alt2
cadete $alt2
caibro k'aIbRU
camelha $alt
camelo $alt2
caminhonete $alt
caminhonete $alt
camiseta $alt2
cantora $alt2
capacete $alt2
caractere $alt
carbureto $alt2
careta $alt2
carrapeta $alt2
carreta $alt2
carroça $alt
casebre $alt
cateto $alt2
catorze $alt2
cebola $alt2
cedro $alt
cefaleia $alt
centopeia $alt
cerca $alt
cerca $alt2 $noun
cerco $alt $verb
cetro $alt
chamego $alt2
chefe $alt
checam $alt
@@ -839,7 +845,7 @@ explore $alt
faceta $alt2
fantoche $alt
farofa $alt
farolete $alt2
farolete $alt2
febre $alt
fera $alt
feitora $alt2
@@ -865,7 +871,7 @@ fulgores $alt2
galera $alt
galileia $alt
gameta $alt2
garçonete $alt2
garçonete $alt2
geleia $alt
gelo $alt2
gelo $alt $verb
@@ -894,17 +900,18 @@ jogo $alt2 $noun
joguete $alt2
lagosta $alt2
lambreta $alt2
lanchonete $alt
lanchonete $alt
lebre $alt
lembrete $alt2
lepra $alt
leste $alt2 $verb
?2 lhe ly
lingueta $alt2
lopes $alt
macete $alt2
maior $alt
maleta $alt2
marionete $alt
marionete $alt
marreta $alt2
megera $alt
melhor $alt
@@ -923,7 +930,7 @@ miolos $alt
modelo $alt2
modelo $alt $verb
moeda $alt
moem $alt
moem $alt
mofo $alt $verb
molho $alt2 $noun
monera $alt
@@ -949,8 +956,8 @@ novos $alt
obstetra $alt
odisseia $alt
onu $1
olho $alt2 $noun
olhos $alt
olho $alt2 $noun
olhos $alt
onomatopeia $alt
opereta $alt2
ordens $alt
@@ -968,7 +975,7 @@ pangeia $alt
pantera $alt
parede $alt2
pastora $alt2
patinete $alt
patinete $alt
pedra $alt
pela $alt $verb
pelo $alt2
@@ -1012,17 +1019,18 @@ relevo $alt2 $noun
remorso $alt
renovo $alt $verb
retorno $alt $verb
reuva x'EUv&
reuva x'EUv&
rigores $alt2
rixa x'iS&
rocha $alt
rock $alt
roem $alt
roem $alt
rola $alt2 $noun
rolo $alt2 $noun
rota $alt2
rota $alt $noun
rumores $alt2
saibro s'aIbRU
saleta $alt2
sarjeta $alt2
seborreia $alt
@@ -1047,12 +1055,13 @@ sossego $alt2 $noun
suborno $alt $verb
sufoco $alt2 $noun
sufocos $alt2
super s'Uper
suporto $alt
suor swOr
tapete $alt2
temores $alt2
tempero $alt2 $noun
tenores $alt2
tenores $alt2
terrores $alt2
teta $alt2
tetra $alt
@@ -1110,10 +1119,9 @@ book buk
?1 download d'a,wnl'oud
?2 download daUNl'owd
?3 download dau~Nl'owd
drive dR'aivy
driver dR'aiver
drivers dR'aiveRs
?1 end 'end
drive dR'aIv
driver dR'aIver
drivers dR'aIveRs?1 end 'end
?2 esc 'Esk
?3 esc 'EskI
?1 explorer ,ekspl'O:*&r-
@@ -1195,15 +1203,16 @@ chrome kR'owmi
?1 express ,Ekspr'Es
espeak isp'i:k
?1 espeakedit isp'i:kEd,it
facebook feisybuk
facebook feIsybuk
?1 fedora _^_EN
firefox f'ai@fOks
?1 front fr'ont
?1 jaws dZ'au:z
?1 linux l,in'uks
?2 linux l'inUks
?1 live l'aiv
live l'aiv
?1 maker m'eIk&r-
mac mEk
?1 media m'Ed,i&
?1 messenger m'Es&ndZ&r-
?1 microsoft m,ik:r'os,Oft

+ 16
- 21
dictsource/pt_rules View File

@@ -99,7 +99,7 @@
ái (s ''aI
á (iCK ''a
áy ''aI
ál (C ''aU
ál (B ''aU
áu ''aU
áu (s ''aU
?1 ál ''Al
@@ -544,7 +544,7 @@ _entorp) e (çL03_ e
éi (s ''EI
é (iCK ''E
éy ''eI
él (C ''EU
él (B ''EU
éu ''EU
éu (s ''EU
é (uCK ''E
@@ -566,7 +566,7 @@ _entorp) e (çL03_ e
.group f
?1 _) f (_W Ef; // within an acronym
?1 _) f (_ Ef // individual letter or end-of-acronym
_) f (_ 'Efe
_) f (_ 'Efy
f f
f (f
?3 f (B fI
@@ -668,7 +668,7 @@ _entorp) e (çL03_ e
ím (C ''im
ín (K ''iN
ính ''in^
íl (C ''IU
íl (B ''IU


.group j
@@ -692,12 +692,10 @@ _entorp) e (çL03_ e
.group l
?1 _) l (_W El; // within an acronym
?1 _) l (_ El
_) l (_ 'Ele
_) l (_ 'Ely
l l
l) l
lh lj
A) lh lj
A) lh l^
lh l^
?4 A) lh l^


@@ -786,8 +784,8 @@ _entorp) e (çL03_ e
m) o (vam_ o
o (veCs_ O

?1 o (l_ 'O
?2 ol (_ Ow
o (l_ 'O
?2 ol (B ow

om (_ oN
o (ma_ o
@@ -852,6 +850,7 @@ _pormen) o (L05_ O
_af) o (bL04_ O
_esn) o (bL04_ O
_engl) o (bL04_ O
_) o (cL03_ o
br) o (chL04_ O
_deb) o (chL04_ O
_m) o (fL01_ O
@@ -895,6 +894,7 @@ _remem) o (rL04_ O
_enr) o (squL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_gar) o (tL03_ o
_mar) o (tL03_ O
pr) o (vL03_ O
_g) o (zL04_ O
_esb) o (çL01_ O
@@ -935,7 +935,7 @@ _remem) o (rL04_ O
?3 p (s p
?3 p (t p
?3 p (_C p_
?1 ph f //Didn’t use in European Portuguese (eg: English)
ph f
?1 ple (_ _^_EN


@@ -952,7 +952,8 @@ _remem) o (rL04_ O
?1 _) qua kwa // quatro, etc.
?1 _) que ke // quente, etc.
?1 _) quei (C k'eI // queira, queima, etc
quên kw'eN // quinquênio, etc.
A) quên kw'eN // frequência, etc.
C) quên kw'eN // quinquênio, etc.
ade) qu (e kw
_a) qu (idade_ kw
_a) qu (ífero_ kw
@@ -990,7 +991,7 @@ _remem) o (rL04_ O
A) r (_A *
rr x
XC) r (A R
C) r (A *
C) r (A R
_) r x
l) r x
n) r (+ x
@@ -1001,7 +1002,7 @@ _remem) o (rL04_ O
.group s
?1 _) s (_W Es|; // within an acronym [s]+[;] not [s;] phoneme
?1 _) s (_ Es
?2 _) s (_ 'Ese
?2 _) s (_ 'Esy
s s
ss s
sc (Y s
@@ -1024,14 +1025,8 @@ _remem) o (rL04_ O
?1 A) s (G+ Z
?1 A) s (_KS1 s#
?1 A) s (_G+S1 Z
s (b z
s (d z
s (g z
s (l z
s (m z
s (n z
s (G z
sr zx
s (v z

_) sobre (@P5 sob*e


+ 1
- 0
espeak-data/voices/!v/m3 View File

@@ -13,4 +13,5 @@ formant 6 100 100 100
formant 7 100 100 100
formant 8 100 100 100

consonants 100
stressAdd 10 10 0 0 0 0 -30 -30

+ 1
- 1
phsource/compile_report View File

@@ -23,7 +23,7 @@ consonants 11 119
fr 64 146
fr-ca 11 146
nl 35 130
hi 57 149
hi 58 149
bn 12 152
ne 18 157
ur 6 149

+ 2
- 1
phsource/mbrola/fr1 View File

@@ -1,3 +1,4 @@
volume 17

0 l/2 NULL 0 l
0 l/ NULL 0 l
@@ -10,7 +11,6 @@
0 j/ NULL 0 j
0 ; NULL 0 NULL
0 g- NULL 0 NULL
0 @- NULL 0 NULL
0 @3 NULL 0 NULL
0 * NULL 0 R
0 : NULL 0 NULL
@@ -43,6 +43,7 @@
0 z2 NULL 0 z
0 z3 NULL 0 z

0 @- NULL 0 @
0 a- NULL 0 a
0 e- NULL 0 e
0 y- NULL 0 y

+ 25
- 1
phsource/ph_hindi View File

@@ -24,6 +24,11 @@ phoneme V
vowel flag1 starttype #@ endtype #@
length 130

IF thisPh(isWordStart) THEN
FMT(vowel/V_3)
RETURN
ENDIF

IF thisPh(isNotStressed) THEN
IF prevPh(H) THEN
ChangePhoneme(@)
@@ -33,7 +38,7 @@ phoneme V
ChangePhoneme(NULL)
ENDIF

IF NOT nextVowel(isFlag1) THEN
IF prev2PhW(isVowel) AND NOT nextVowel(isFlag1) THEN
IF thisPh(isSeqFlag1) THEN
// delete the last inherent vowel of a sequence
ChangePhoneme(NULL)
@@ -513,3 +518,22 @@ phoneme #X2 // click, use for indicating combining long vowels
endphoneme


phoneme r
liquid rhotic
lengthmod 3
IF thisPh(isWordEnd) THEN
CALL base/r/
ELSE
IF prevPhW(isVowel) THEN
IF nextPhW(isNotVowel) OR nextPhW(V) THEN
ChangePhoneme(*)
ENDIF
ENDIF
CALL base/r
ENDIF
ipa ɾ
endphoneme


+ 52
- 14
platforms/riscos/cpp/speak_riscos View File

@@ -75,7 +75,7 @@ char path_home[N_PATH_HOME] = "";
char wavefile[120];
char textbuffile[L_tmpnam];
int sample_rate_index; // current value
int current_voice_num=0;
char current_voice_name[40] = {0};
int n_voice_files = 0;
int n_voice_variant_files = 0;

@@ -194,6 +194,9 @@ void ReadVoiceNames2(char *directory)

path_len = strlen(directory);

voice_variant_names[0] = "(none)";
n_voice_variant_files = 1;

while(regs.r[3] > 0)
{
error = _kernel_swi(0x0c+os_X,&regs,&regs); /* OS_GBPB 10, read directory entries */
@@ -452,6 +455,7 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_
{
int c;
int ix;
char *vname;
static static_length=0;
static int user_token=0; /* increment for each call of translate() */
_kernel_swi_regs regs;
@@ -462,12 +466,13 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_

option_endpause = 1;

if((voice_num >= 0) && (voice_num != current_voice_num) && (voice_num < N_VOICE_NAMES))
vname = voice_names[voice_num];
if((voice_num >= 0) && (strcmp(vname, current_voice_name) != 0) && (voice_num < N_VOICE_NAMES))
{
SetVoiceByName(voice_names[voice_num]);
WavegenSetVoice(voice);
WavegenSetVoice(voice);
}
current_voice_num = voice_num;
strcmp(current_voice_name, vname);

/* don't count CR as terminator if length is specified */
if(len > 0) terminator = 0;
@@ -593,8 +598,16 @@ void set_say_options(int reg2, int reg3)
option_waveout = 0;
option_multibyte = 0; // auto
option_capitals = 0;
option_punctuation = 0;
option_punctlist[0] = 0;
if(reg2 >= 0)
{
// not using SWI_SPEAK+14 to set voice and punctiation option
option_punctuation = 0;
option_punctlist[0] = 0;
}
else
{
SetParameter(espeakPUNCTUATION,option_punctuation,0);
}
} /* end of set_say_options */


@@ -621,7 +634,7 @@ void jsd_swi_functions(int *r)
case 3:
// translate into phonemes
use_ipa = 0;
if((r[2] >= 1) && (use_ipa <= 3))
if((r[2] >= 1) && (use_ipa <= 4))
use_ipa = r[2];
TranslateClause(translator,NULL,(char *)r[1],NULL,NULL);
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
@@ -641,7 +654,7 @@ void jsd_swi_functions(int *r)
if(r[1] < N_VOICE_NAMES)
{
SetVoiceByName(voice_names[r[1]]);
current_voice_num = r[1];
strcmp(current_voice_name, voice_names[r[1]]);
WavegenSetVoice(voice);
}
break;
@@ -675,6 +688,8 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw)
int value;
int value2;
int q_length;
char *p;
int ix;
value = r[0];

switch(swi_no)
@@ -682,16 +697,17 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw)

case 0: // ready ?
// returns the index into the source text of the currently speaking word
if(current_source_index > 0)
r[1] = current_source_index-1;
ix = current_source_index & 0x7ff;
if(ix > 0)
r[1] = ix-1;
else
r[1] = current_source_index; /* source index */
r[1] = ix; /* source index */
r[2] = 0; /* source tag */
r[3] = 0; /* for future expansion */
r[4] = 0;
r[5] = 0;

if(WcmdqUsed() < 5)
if((WcmdqUsed() < 5) && (more_text == 0))
{
r[0] = -1; /* ready, or nearly */
}
@@ -774,8 +790,30 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw)
break;

case 14: // set voice by name
SetVoiceByName((char *)r[0]);
WavegenSetVoice(voice);
p = (char *)r[0];
if(strcmp(p, current_voice_name) != 0)
{
SetVoiceByName(p);
WavegenSetVoice(voice);
strcpy(current_voice_name, p);
}
option_punctuation = 0;
if(r[1] != 0)
{
p = (char *)r[1];
if(p[0] == 0)
option_punctuation = 1;
else
{
for(ix=0; ix < N_PUNCTLIST; ix++)
{
if((option_punctlist[ix] = p[ix]) == 0)
break;
}
option_punctlist[N_PUNCTLIST-1] = 0;
option_punctuation = 2;
}
}
break;
}
return(NULL);

+ 17
- 0
src/dictionary.cpp View File

@@ -645,6 +645,7 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
char *buf;
int count;
int flags;
int separate_phonemes = 0;
char phon_buf[30];
char phon_buf2[30];
PHONEME_LIST *plist;
@@ -652,6 +653,13 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
static const char *stress_chars = "==,,''";
static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner

if(use_ipa == 4)
{
// separate individual phonemes with underscores
use_ipa = 1;
separate_phonemes = '_';
}

if(phon_out != NULL)
{
for(ix=1; ix<(n_phoneme_list-2); ix++)
@@ -661,6 +669,13 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
plist = &phoneme_list[ix];
if(plist->newword)
*buf++ = ' ';
else
{
if((separate_phonemes != 0) && (ix > 1))
{
*buf++ = separate_phonemes;
}
}

if(plist->synthflags & SFLAG_SYLLABLE)
{
@@ -683,6 +698,8 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
if(c != 0)
{
buf += utf8_out(c, buf);
if(separate_phonemes)
*buf++ = separate_phonemes;
}
}
}

+ 2
- 2
src/espeak.cpp View File

@@ -67,7 +67,7 @@ static const char *help_text =
"\t Compile pronunciation rules and dictionary from the current\n"
"\t directory. <voice name> specifies the language\n"
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n"
"--path=\"<path>\"\n"
"\t Specifies the directory containing the espeak-data directory\n"
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n"
@@ -620,7 +620,7 @@ int main (int argc, char **argv)
{
value = -1;
sscanf(optarg2,"%d",&value);
if((value<0) || (value>2))
if((value<0) || (value>3))
{
fprintf(stderr,"Bad value for -ipa=\n");
value = 0;

+ 2
- 2
src/speak.cpp View File

@@ -101,7 +101,7 @@ static const char *help_text =
"\t Compile pronunciation rules and dictionary from the current\n"
"\t directory. <voice name> specifies the language\n"
"--ipa Write phonemes to stdout using International Phonetic Alphabet\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n"
"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n"
"--path=\"<path>\"\n"
"\t Specifies the directory containing the espeak-data directory\n"
"--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n"
@@ -739,7 +739,7 @@ int main (int argc, char **argv)
{
value = -1;
sscanf(optarg2,"%d",&value);
if((value<0) || (value>2))
if((value<0) || (value>3))
{
fprintf(stderr,"Bad value for -ipa=\n");
value = 0;

+ 1
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.47.04 02.Apr.13";
const char *version_string = "1.47.04a 05.Apr.13";
const int version_phdata = 0x014701;

int option_device_number = -1;

+ 1
- 1
src/synthesize.cpp View File

@@ -1955,7 +1955,7 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control)
{
int use_ipa = 0;
if(option_phonemes >= 3)
use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ
use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ, 4=ipa with separators

GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
if(option_phonemes > 0)

+ 1
- 0
src/voice.h View File

@@ -21,6 +21,7 @@

typedef struct {
char v_name[40];
char language_name[20];

int phoneme_tab_ix; // phoneme table number
int pitch_base; // Hz<<12

+ 6
- 3
src/voices.cpp View File

@@ -421,7 +421,7 @@ void VoiceReset(int tone_only)
voice->n_harmonic_peaks = 5;
voice->peak_shape = 0;
voice->voicing = 64;
voice->consonant_amp = 90; // change to 85 for v.1.47 was 100
voice->consonant_amp = 90; // change from 100 to 90 for v.1.47
voice->consonant_ampv = 100;
voice->samplerate = samplerate_native;
memset(voice->klattv,0,sizeof(voice->klattv));
@@ -750,6 +750,7 @@ voice_t *LoadVoice(const char *vname, int control)

new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
strncpy0(voice->language_name, language_name, sizeof(voice->language_name));
}
}
break;
@@ -1818,6 +1819,7 @@ espeak_ERROR SetVoiceByName(const char *name)
}

DoVoiceChange(voice);
voice_selector.languages = voice->language_name;
SetVoiceStack(&voice_selector, variant_name);
return(EE_OK);
}
@@ -1834,6 +1836,7 @@ espeak_ERROR SetVoiceByName(const char *name)
LoadVoice(variant_name,2);
}
DoVoiceChange(voice);
voice_selector.languages = voice->language_name;
SetVoiceStack(&voice_selector, variant_name);
return(EE_OK);
}
@@ -1884,8 +1887,8 @@ void FreeVoiceList()
ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
{//========================================================================
char path_voices[sizeof(path_home)+12];
#ifdef PLATFORM_RISCOS
if(n_voices_list == 0)
{

Loading…
Cancel
Save