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-fd96e6ae7743master
@@ -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 |
@@ -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# |
@@ -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: |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -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 |
@@ -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 | |||
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -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,®s,®s); /* 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); |
@@ -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; | |||
} | |||
} | |||
} |
@@ -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; |
@@ -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; |
@@ -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; |
@@ -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) |
@@ -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 |
@@ -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) | |||
{ |