Fix: reset phoneme table if speech is cancelled while switched to a second language. "speak": add -z options (same as for "espeak"). Numbers: Add option to speak "and" before hundreds. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@143 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -72,10 +72,10 @@ aU@ E e@ eI I I2 i: i@ | |||
i@3 IR O O: o: O@ o@ OI | |||
oU O~ U u: U@ V VR | |||
: ; b C d D dZ f | |||
g h j k l m n N | |||
p Q r r- s S t T | |||
t2 tS v w x z Z | |||
; b C d D dZ f g | |||
h j k l m n N p | |||
Q r r- s S t T t2 | |||
tS v w x z Z | |||
Dictionary eo_dict | |||
@@ -111,9 +111,9 @@ S s2 t v Z | |||
Dictionary fr_dict | |||
@ @- a A A~ e E E: | |||
E~ i i: o O O~ u W | |||
w^i W~ y Y | |||
@ @- a A A~ e E E~ | |||
i i: o O O~ u W w^i | |||
W~ y Y | |||
* : ; b c d D dZ | |||
f g h j k l L m | |||
@@ -401,3 +401,14 @@ u# W y Y | |||
j k l m n p Q r | |||
R s S t tS v w z | |||
Z | |||
Dictionary ku_dict | |||
a e E eI i I o u | |||
U y | |||
: b d dZ f g h j | |||
k l m n p q r R | |||
s S t tS v w x z | |||
Z |
@@ -67,7 +67,7 @@ _& amp@sand | |||
_' praIm | |||
_( ElbrakIt | |||
_) A@brakIt | |||
_* ast@rIsk: | |||
_* ast@rIsk | |||
_+ plVs | |||
_, k0m@ | |||
_- h,aIf@n | |||
@@ -313,7 +313,7 @@ ague eIgju: | |||
aha a2hA: | |||
ahem a2h'@m | |||
ahoy a2hOI | |||
airbus e@:bVs | |||
airbus e@bVs | |||
airpower 'e@p,aU@ | |||
aisle aI@l | |||
ajar a2dZA@ | |||
@@ -2218,7 +2218,6 @@ Emma Em@ | |||
Evan Ev@n | |||
Gary garI2 | |||
Geraint gEraInt | |||
Gilbert gIlb3t | |||
Giles gaIlz | |||
Glynn glIn | |||
Graeme greI@m |
@@ -2372,6 +2372,7 @@ | |||
g (i dZ | |||
gi (_ gI2 | |||
_) g (il g | |||
g (ilC g | |||
l) ging dZI2N | |||
g (y dZ | |||
_) g (n |
@@ -5,7 +5,7 @@ | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated 2008-02-11 Michel Such <[email protected]> | |||
// Updated 2008-02-14 Michel Such <[email protected]> | |||
// | |||
// * Numbers, a few abbreviations and exceptions. | |||
// | |||
@@ -421,7 +421,6 @@ adéquat adekuat2 | |||
adéquate adekuat | |||
airbus Erbys | |||
anus anys | |||
any Eni | |||
ardent aRdA~ | |||
bissus bisys | |||
bonus bonys | |||
@@ -433,20 +432,18 @@ choeur k@r | |||
cocus coky | |||
discident disidA~ | |||
estomac Estoma | |||
eye aj | |||
eyes ajz | |||
fils fis | |||
imprudent E~pRydA~ | |||
iris iris | |||
juin ZyE~ | |||
malus malys | |||
many mEni | |||
mars maRs | |||
minus minys | |||
occident OksidA~ | |||
orient ORjA~ | |||
pays pEi | |||
phallus falys | |||
polder pOldEr | |||
prudent pRydA~ | |||
secret sYkRE | |||
souris suri | |||
@@ -475,13 +472,13 @@ processus pROsEsys | |||
août ut | |||
azimut azim'yt | |||
brut bR'yt | |||
bouse buz | |||
but by $verb | |||
but byt | |||
club kl@b | |||
(le pub) l@||p'@b | |||
(un pub) W~||p'@b | |||
(du pub) dy||p'@b | |||
connecticut kOnEktikyt | |||
cut cWt | |||
helmut Elmut | |||
hub _|@b | |||
@@ -499,19 +496,15 @@ zut zyt | |||
// et (t is said) | |||
bridget bRidZEt | |||
exocet EgzOsEt | |||
fret fR'Et | |||
gadget gadZEt | |||
budget bydZE | |||
hamlet amlEt | |||
jacket ZakEt | |||
knesset knEsEt | |||
lazaret lazaREt | |||
margaret maRgaREt | |||
net nEt | |||
offset OfsEt | |||
pickpocket pikpOkEt | |||
racket RakEt | |||
set sEt | |||
soviet sOvjEt | |||
@@ -525,7 +518,6 @@ yogourt yoguRt | |||
short SORt | |||
// art (t said) | |||
stewart stiwaRt | |||
steward stiwaRt | |||
stuttgart StutgaRt | |||
hart aRt | |||
@@ -539,95 +531,103 @@ flirt fl@Rt | |||
// words from other languages | |||
about @bawt | |||
about _^_en | |||
acer asEr | |||
again _^_en | |||
against _^_en | |||
alone _^_en | |||
also _^_en | |||
and _^_en | |||
amazon amaz'On | |||
(audible manager) od'ibl||manadZ'@r | |||
be bi | |||
being biiN | |||
by baj | |||
any Eni | |||
apple _^_en | |||
at _^_en | |||
(audible manager) odibl||manadZ@r | |||
be _^_en | |||
being _^_en | |||
bluetooth blut'us | |||
byte bajt | |||
bytes bajts | |||
both _^_en | |||
browser _^_en | |||
can _^_en | |||
computer _^_en | |||
(cyber link) sibEr||link | |||
debian dEbjAn | |||
driver drajv@rz2 | |||
download dOnlod | |||
does _^_en | |||
doesn't _^_en | |||
don't _^_en | |||
driver _^_en | |||
edit edit | |||
emacs Emaks | |||
emacspeak Emakspi:k | |||
end _^_en | |||
enter 'Ent@r | |||
epson EpsOn | |||
espeak @spi:k | |||
ethernet etERnEt | |||
exit egzit | |||
(file zilla) fajl@-||zija | |||
eye _^_en | |||
eyes _^_en | |||
(file zilla) fajl||zija | |||
fire _^_en | |||
firefox faj@RfOks | |||
(fire wire) faj@R||wajr | |||
firewire faj@Rwajr | |||
google gu:g'@l | |||
girl g@Rl | |||
get _^_en | |||
google gu:g@l | |||
gnome gnom | |||
gnu gnu | |||
hamburger _!A~b@rg@r | |||
has _!az $u | |||
his _!iz $u | |||
inside insajd | |||
insight insajt | |||
help _^_en | |||
in _^_en | |||
into _^_en | |||
inside _^_en | |||
insight _^_en | |||
internet E~tERnEt | |||
(internet explorer) E~tErn'Et||EksplOr'@r | |||
is iz | |||
it it | |||
its its | |||
is _^_en | |||
it _^_en | |||
its _^_en | |||
klaxon klaksOn | |||
leader li:d@R | |||
let lEt | |||
layer _^_en | |||
let _^_en | |||
liszt list | |||
lite lajt | |||
lite _^_en | |||
logon _^_en | |||
(mac os x) makoEsiks | |||
mail mE:jl | |||
maker mE:jk@r | |||
made _^_en | |||
mail _^_en | |||
media medja | |||
messenger mesEnZ'@r | |||
movy mu:v'i | |||
my maj | |||
name nejm | |||
not nOt | |||
messenger _^_en | |||
my _^_en | |||
name _^_en | |||
not _^_en | |||
of _^_en | |||
often _^_en | |||
ok oke | |||
open Op'@n | |||
outlook autluk | |||
outside autsajd | |||
outsider autsajd@r | |||
player plEj'@r | |||
quick kwik | |||
outside _^_en | |||
outsider _^_en | |||
player _^_en | |||
redhat REdat | |||
release rili:z | |||
same sejm | |||
same _^_en | |||
sametime _^_en | |||
schubert SubER | |||
screamer skri:m@r | |||
(search & destroy) s@:rS_||end_||dEsstrOj | |||
skype sk'ajp@- | |||
spybot spajbOt | |||
sun s@n | |||
sunlight s@nlajt | |||
since _^_en | |||
sun _^_en | |||
(text aloud) tEkst||@lawd | |||
than Dan | |||
the D@ $u | |||
them DEm $u | |||
then DEn $u | |||
there DEr $u | |||
they DE $u | |||
thunderbird f@ndERb@Rd | |||
time tajm | |||
timer tajm@r | |||
their _^_en | |||
there _^_en | |||
these _^_en | |||
those _^_en | |||
they _^_en | |||
thus _^_en | |||
thunderbird D'@ndYR||b@Rd | |||
time _^_en | |||
timer _^_en | |||
ubuntu ubuntu | |||
update @pd'E:jt | |||
upload @plod | |||
very vEri | |||
viavoice viavOjs | |||
was waz $u | |||
window windo | |||
windows windoz | |||
word wWRd | |||
writer rajt@r | |||
up _^_en | |||
viking vikiN | |||
was _^_en | |||
won't _^_en | |||
yacht jot | |||
yes jEs $brk | |||
@@ -1,12 +1,13 @@ | |||
// French translation rules | |||
// This file is UTF-8 encoded | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated: 2008-02-11 Michel Such <[email protected]> | |||
// Updated: 2008-02-14 Michel Such <[email protected]> | |||
// | |||
// * The rules are based on Cicero TTS. | |||
// | |||
// Y | |||
// Letter classes: | |||
// A all vowels: a e i o u y â ä é ê è î ï ô ö ù û | |||
@@ -28,8 +29,6 @@ | |||
a (il_ a | |||
aie (me E // paiement | |||
ai E // aile | |||
a (lk O // talk | |||
a (ll_ O // football handball | |||
am (b A~ // jambon | |||
am (p A~ // camp | |||
am (m a // programmation | |||
@@ -50,12 +49,32 @@ | |||
ay Ej // paye | |||
a a // bateau | |||
// group a: English section | |||
_C) ad (_ _^_en // bad, had, sad | |||
alk _^_en // talk, walk | |||
all (_ _^_en // football handball | |||
f) all (en_ _^_en // fallen | |||
sm) all _^_en // small, smaller | |||
ally (_ _^_en // really, naturally | |||
a (wC _^_en | |||
.group b | |||
bb b // abbé | |||
om) b (_ // plomb applomb | |||
b b // aube | |||
// group b: English section | |||
bird _^_en // bird | |||
bly (_ _^_en // probably | |||
board _^_en // board, keyboard | |||
box (_ _^_en // box, inbox, outbox | |||
bug (_ _^_en // bug, debug | |||
bug (g _^_en // debugger | |||
buil _^_en // build, built | |||
_) buy _^_en | |||
_) by _^_en // by, bye, bypass | |||
.group c | |||
c' s // s | |||
@@ -98,6 +117,12 @@ | |||
cien (t_ i // ils appr�ient, remercient. | |||
i) cien (t_ sjA~ // coefficient | |||
// group c: English section | |||
cast (_ _^_en // broadcast | |||
calt (_ _^_en // difficult | |||
cut (_ _^_en // cut, shortcut | |||
cy (_ _^_en // currency, frequency | |||
.group d | |||
dd d // addition | |||
@@ -108,8 +133,6 @@ | |||
Csan) d (_ d | |||
_tan) d (_ d // stand | |||
Ctan) d (_ d | |||
for) d (_ d | |||
lor) d (_ d | |||
Can) d (_ t2 // grand ami, grand marchand | |||
Cen) d (_ t2 | |||
@@ -124,29 +147,25 @@ | |||
r) d (_ // lourd placard | |||
d d // don bled | |||
// group d: English section | |||
') d (_ _^_en | |||
lor) d (_ _^_en | |||
day (_ _^_en | |||
dle (X _^_en // bundle, handle | |||
dly (_ _^_en | |||
dy (_ _^_en | |||
.group e | |||
e (Ce_ E | |||
eau o // bateau cheveaux | |||
C) ea (d i: // read | |||
Cr) ea (m i: // stream | |||
Cl) ea (n i: // clean | |||
C) ea (Cer i: // reader, cleaner | |||
g) ea (s_ a // mangeas | |||
j) e (a // Jean Jeanne | |||
sp) ea (k i: // speak speaker | |||
p) ect (_ E // suspect | |||
ect (_ Ekt // direct | |||
_trépi) ed e | |||
_pi) ed e // pied | |||
ee i: // meeting | |||
_cl) ef (_ e // clef | |||
Ck) e (r_ @ // worker, talker | |||
_Cett) e (r_ @ // letter, better | |||
eaC) e (r_ @ // speaker, streamer | |||
gh) e (r_ @ // higher | |||
ght) e (r_ @ // fighter, lighter | |||
ooC) e (r_ @ // scooter | |||
_ov) e (r @ // over | |||
ein (C E~ // peindre | |||
ein (_ E~ | |||
e (il E // vieille | |||
@@ -244,10 +263,6 @@ | |||
_trav) er (_ ER | |||
_ti) er (_ ER | |||
th) er (_ @R // brother | |||
th) er (s_ @R | |||
w) er (_ @R // power | |||
w) er (s_ @R | |||
er (_ e // parler léger | |||
er (s_ e | |||
@@ -283,6 +298,7 @@ | |||
@Cr) es (_C @- | |||
rC) es (_C @- // fortes dames | |||
dg) et (_ Et // Bridget, gadget | |||
') eu (_ y // eu | |||
eu (r_ @ // peur | |||
@@ -301,12 +317,6 @@ | |||
_) eû y // eût | |||
eû Y // jeûne | |||
ew (_ ju // new | |||
ews juz // news, newsreader | |||
r) ew (_ u // crew | |||
r) ews uz | |||
i) ew (_ u // view | |||
i) ews uz | |||
e (x E // exact | |||
ey (_ e // dahomey | |||
ey (C e // ceylan | |||
@@ -367,6 +377,33 @@ | |||
e @ // menue | |||
// group e: English section | |||
C) ead _^_en // read, head | |||
eaf _^_en // leaf | |||
eak _^_en // break, speak | |||
Cr) eam _^_en // stream | |||
Cl) ean _^_en // clean | |||
l) ean _^_en // lean | |||
m) ean _^_en // mean | |||
ear _^_en // ear, search | |||
eas _^_en // please | |||
eat _^_en // eat, seat | |||
ed (_ _^_en | |||
ee _^_en // meeting | |||
eave _^_en // leave | |||
eft (_ _^_en // left | |||
eive _^_en // receive | |||
eith _^_en // either neither | |||
ely (_ _^_en // lately | |||
ooC) er (_ _^_en // scooter | |||
_ov) er _^_en // over | |||
_C) etter (_ _^_en // letter, better | |||
ack) et (_ _^_en // racket, packet | |||
ock) et (_ _^_en // rocket, pocket | |||
ery (_ _^_en // query | |||
qu) est (_ _^_en // request | |||
qu) este (X_ _^_en // requested, requester | |||
.group ë | |||
u) ë // ambiguë | |||
@@ -379,6 +416,17 @@ | |||
_neu) f (_ans v // liaison: neuf ans | |||
_neu) f (_heures v | |||
// group f: English section | |||
fail (_ _^_en // fail | |||
fail (A _^_en // failure | |||
faith _^_en // failure | |||
fly _^_en | |||
ford (_ _^_en | |||
friend _^_en // friend, friendly | |||
full (_ _^_en | |||
fully (_ _^_en | |||
fy (_ _^_en | |||
.group g | |||
g g | |||
@@ -421,6 +469,13 @@ | |||
g (_ g // grog gag goulag | |||
g Z // congé george | |||
// group g: English section | |||
gh _^_en // high, higher | |||
girl _^_en // girl | |||
gly (_ _^_en | |||
give (X _^_en | |||
gy (_ _^_en | |||
.group h | |||
_) h (ac _! // hache | |||
@@ -467,7 +522,6 @@ _) h (ic _! // hic | |||
_) h (ide _! // hideux | |||
_) h (iér _! // hiéroglyphe | |||
_) h (i-fi _! // hi-fi | |||
_) h (igh _! // highlandais | |||
_) h (i-han _! // hi-han | |||
_) h (iss _! // hisser | |||
_) h (it _! // hit, hit-parad | |||
@@ -503,6 +557,11 @@ _) h (umi // humide | |||
_) h (umo // humour | |||
h // ahuri | |||
// group h: English section | |||
_) half _^_en | |||
_) h (As_ _^_en // has, his | |||
here (_ _^_en // here | |||
.group i | |||
i i // cri | |||
@@ -511,9 +570,6 @@ _) h (umo // humour | |||
i (es_ i // parties | |||
i (e_ i | |||
i (A j // fermier portier patio renier | |||
ig (h aj // right, fight, light | |||
wh) ile ajll // while, endwhile | |||
wr) i (tA aj // write | |||
_) ill ill // illégal | |||
_m) ill il // mille | |||
v) ill il // village | |||
@@ -527,18 +583,26 @@ _) h (umo // humour | |||
imm imm // immaculé | |||
im (_ im // karim | |||
im (C E~ // timbre | |||
ing (_ iN // parking | |||
in (h in // inhumain | |||
inct (_ E~ // distinct | |||
ind (_ ajnd // find, mind | |||
ind (ing_ ajnd // find, mind | |||
ink ink // link, pink | |||
in (n i // innombrable | |||
in (C E~ // vingt | |||
// in (_ E~ // vin | |||
in (_ W~ // vin | |||
ique (_ ik | |||
// group i: English section | |||
ike (X _^_en // bike, like | |||
ill (_ _^_en // ill, will, fill | |||
C) illy (_ _^_en // silly | |||
ing (_ _^_en // parking | |||
ind (_ _^_en // find, mind | |||
ind (er_ _^_en // finder, reminder | |||
ink _^_en // link, pink | |||
ious (_ _^_en // various | |||
iously (_ _^_en // previously | |||
ism (_ _^_en // tourism | |||
ize _^_en // realize | |||
.group î | |||
î i // abîme | |||
@@ -560,10 +624,12 @@ _) h (umo // humour | |||
.group k | |||
k k // kafka | |||
ket (_ kEt // basket | |||
kets (_ kEt // basket | |||
// group k: English section | |||
ke (X _^_en // basket, make, take | |||
ky (_ _^_en | |||
.group l | |||
l l // lit | |||
ll l // aller | |||
@@ -572,11 +638,22 @@ _) h (umo // humour | |||
outi) l (_ // outil | |||
ui) ll j // juillet | |||
// group l: English section | |||
') ld (_ _^_en | |||
') ll (_ _^_en | |||
less (_ _^_en // noiseless | |||
lessly (_ _^_en // endlessly | |||
.group m | |||
m m // film | |||
mm m // pomme | |||
// group m: English section | |||
mail (A _^_en // mailer | |||
may _^_en | |||
mov (A _^_en // move, movy | |||
.group n | |||
n n // une | |||
@@ -588,6 +665,10 @@ _) h (umo // humour | |||
A) ng (_ N // parking meeting | |||
nn n // panne | |||
// group n: English section | |||
n't (_ _^_en | |||
ny (_ _^_en | |||
.group o | |||
cr) oc (_ o // escroc | |||
@@ -635,11 +716,8 @@ p) oing (_ wE~ // poing | |||
r) o (ne_ o | |||
alc) oo (l O // alcool | |||
oo (Ce u // boomer | |||
C) oot ut // bootable football | |||
z) oo o // zoo | |||
z) oo (l oo // zoologue | |||
z) oo (ph oo // zoophile | |||
z) oo (C oo // zoologue | |||
z) oo (m u // zoom | |||
oo (X u // pool | |||
_gal) op (_ o // galop | |||
@@ -650,7 +728,6 @@ p) oing (_ wE~ // poing | |||
v) ost (_ o // Prévost | |||
o (sA o // poser | |||
ot (_ o // mot dépots | |||
C) ou (nd aw // sound, found | |||
_C) oup (_ u // coup, loup | |||
uC) oup (_ up2 // beaucoup | |||
@@ -660,8 +737,6 @@ p) oing (_ wE~ // poing | |||
oû u // coûter | |||
oyes (_ wa // troyes | |||
oy (A waj // noyer voyelles | |||
oy (_ Oj // boy, toy | |||
oys (_ Ojz // boys, toys | |||
oy wa // roy | |||
o (_ o // zorro allégro | |||
o (z_ o // berlioz | |||
@@ -672,6 +747,20 @@ p) oing (_ wE~ // poing | |||
o O // sobre notions émotions | |||
// group o: English section | |||
C) oad (_ _^_en // load, road | |||
C) oad (eX _^_en // loaded | |||
C) oat _^_en // boat | |||
old (er_ _^_en // folder, older | |||
oo (Ce _^_en // boomer | |||
C) oot _^_en // bootable football | |||
C) ou (ld_ _^_en // could, should | |||
oun (C _^_en // bounce, found | |||
_C) ouse _^_en // mouse, house | |||
C) outh _^_en // mouth, south | |||
ow _^_en // cow, town, down | |||
oy (X _^_en // boy, toy | |||
.group ô | |||
ôt (_ o // rôt | |||
@@ -700,6 +789,16 @@ p) oing (_ wE~ // poing | |||
se) pt (_ t // sept | |||
se) pt (iè t // septième | |||
// group p: English section | |||
plug _^_en // plug | |||
ply (_ _^_en // simply | |||
print (_ _^_en // print | |||
printer (_ _^_en // printer | |||
_) prove (X _^_en // prove | |||
_AC) prove (X _^_en // improve | |||
_AC) provem _^_en // improvement | |||
py (_ _^_en // copy | |||
.group q | |||
q k // coq | |||
@@ -715,15 +814,21 @@ p) oing (_ wE~ // poing | |||
_) qu' (P3 k // qu'il | |||
n) q (_ k // cinq cent | |||
// group q: English section | |||
quick _^_en // quick, quickly | |||
.group r | |||
right rajt // copyright | |||
_su) rr RR // surréaliste | |||
cou) rr RR // courrai | |||
mou) rr RR // mourrai | |||
rr R // erreur | |||
r r // rien | |||
// group r: English section | |||
_) rule (X _^_en // rule | |||
ry (_ _^_en // theory | |||
.group s | |||
s s // verser sien | |||
@@ -740,6 +845,7 @@ e) s (_h z2 | |||
sch S // schéma | |||
dé) sh (A z // déshabiller | |||
sh S // shérif | |||
CA) sh (_ _^_en // punish | |||
ss s // assez | |||
ai) s (em s // vraisemblable | |||
@@ -767,6 +873,7 @@ e) s (_h z2 | |||
ïu) s (_ s // laïus | |||
Culu) s (_ s // cumulus | |||
plu) s (_ z2 // plus, surplus | |||
ylu) s (_ s // stylus | |||
mu) s (_ s | |||
_mu) s (_ | |||
ému) s (_ | |||
@@ -795,11 +902,27 @@ e) s (_h z2 | |||
s (j z | |||
s (v z | |||
// group s: English section | |||
') s (_ _^_en // possessive | |||
ship _^_en // friendship | |||
shop _^_en // shop | |||
sh (At _^_en // shut, shot | |||
shout _^_en | |||
sky _^_en | |||
_) smil _^_en // smile, smiley | |||
spy _^_en | |||
A) ss (_ _^_en // boss, cross | |||
C) s (ton _^_en // winston | |||
stone (_ _^_en | |||
sy (_ _^_en | |||
.group t | |||
t t // bataille | |||
V) t (_ t2 // silent at end of verb unless next word starts with a vowel | |||
t (_ // silent at end of word | |||
_) th (onX t // thon | |||
_) th (ymX t // shym | |||
ts (_S1 z2 // silent at end of word unless next word starts with a vowel | |||
C) t (_ t // compost watt soft script malttact abrupt | |||
Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel | |||
@@ -813,7 +936,6 @@ C) te (_ t@- // patte | |||
s) th (m // asthme | |||
th t // théorie | |||
sCar) t (_ t // smart, start | |||
hui) t (_ t // huit | |||
_) t t // tien tiers | |||
@@ -856,12 +978,20 @@ C) te (_ t@- // patte | |||
_ce) t (_ t | |||
// group t: English section | |||
_) th (AX _^_en // that, this, then, than | |||
C) th (_ _^_en // month | |||
try (_ _^_en // try, country | |||
sCar) t (_ _^_en // smart, start | |||
sCar) t (er_ _^_en // starter | |||
ty (_ _^_en // party, buty | |||
.group u | |||
u y // cruel nuage brut | |||
ui w^i | |||
_b) usi iz // business, businessman | |||
_b) usi _^_en // business, businessman | |||
c) ueill Wj // cueillir | |||
c) ueil (_ Wj // recueil | |||
_c) ul (_ y | |||
@@ -874,25 +1004,55 @@ C) te (_ t@- // patte | |||
um (b W~ // humble | |||
um (p W~ | |||
un (C W~ // emprunt lundi | |||
C) un (_ W~ // brun | |||
CC) un (_ W~ // brun | |||
uc) un (_ W~n2 // aucun | |||
un (_ W~n2 // un avion | |||
_f) un @n // fun | |||
_g) un @n // gun | |||
_r) un @n // run | |||
_s) un @n // sun, sunday | |||
fl) ux (_ y // flux, reflux | |||
g) u (A // fatigue | |||
g) u (ï y // ambiguïté | |||
g) u (ë y // ambiguë | |||
// group u: English section | |||
C) u (ch_ _^_en // much such | |||
C) ui (ce _^_en // produice, juice | |||
up (C _^_en // upper, update | |||
under _^_en // under, understand, thunder | |||
C) ur (ch _^_en // church | |||
urn (X _^_en // burn, turn | |||
ust (_ _^_en // just, trust | |||
rib) u (teX _^_en // tribute, attribute | |||
.group v | |||
v v | |||
// goup v: English section | |||
') ve (_ _^_en | |||
voice (_ _^_en | |||
void (_ _^_en | |||
vy (_ _^_en | |||
.group w | |||
w w | |||
wa (Ce_ wE // hardware software wave | |||
w (agon v // wagon | |||
w (r // write | |||
// group w: English section | |||
A) w _^_en | |||
wa (Ce_ _^_en // hardware software wave | |||
wr _^_en // write | |||
w (ACh _^_en // wash, wish, with | |||
way _^_en // way, away | |||
wh _^_en // what, which, who | |||
_) wi _^_en // winner, window, wire | |||
wise _^_en | |||
_) wom _^_en // woman | |||
wor _^_en // word, world | |||
.group x |
@@ -202,7 +202,7 @@ language). | |||
t) u (DnK wu@ | |||
uo uo | |||
sh) ui wei | |||
sh) ui rei | |||
sh) u (DnK wo- | |||
sh) uo wo | |||
@@ -73,6 +73,8 @@ will put the Mbrola speech output into a WAV file. Or you can pipe the output f | |||
<p> | |||
The -e option prevents Mbrola from stopping if it finds a combination | |||
of phonemes which it doesn't recognise. | |||
<p> | |||
Some mbrola voices (de5, de6) use a sample rate of 22050 Hz. These need -r22050 rather than -r16000. | |||
</ol> | |||
<h3>Mbrola Voice Files</h3> | |||
@@ -3,5 +3,5 @@ language en | |||
gender female | |||
pitch 140 220 | |||
mbrola de5 de5_phtrans 22050 | |||
mbrola de5 de6_phtrans 22050 | |||
@@ -1,4 +1,4 @@ | |||
48 phoneme tables | |||
49 phoneme tables | |||
new total | |||
base 99 99 | |||
base2 24 118 | |||
@@ -30,7 +30,7 @@ | |||
ru 38 129 | |||
it 17 121 | |||
la 21 117 | |||
es 8 119 | |||
es 9 119 | |||
es_la 1 119 | |||
pt 27 134 | |||
pt_pt 20 134 | |||
@@ -47,6 +47,7 @@ | |||
th 50 142 | |||
id 14 120 | |||
tr 14 123 | |||
ku 12 120 | |||
ja 7 104 | |||
Data file Used by | |||
@@ -621,6 +622,7 @@ ufric/x2 [x2] af | |||
[x2] nl | |||
[x2] pt | |||
ufric/x_hr [x] hr | |||
[x] ku | |||
ufric/x_sr [h] sr | |||
[x] sr | |||
ustop/c [c] base | |||
@@ -678,7 +680,6 @@ ustop/kr [k] base | |||
[k] zhy | |||
[k] sw | |||
ustop/k_unasp [k] base | |||
[q] base | |||
[k] base2 | |||
[k] fi | |||
[k] hi | |||
@@ -738,6 +739,7 @@ ustop/p_unasp_ [p] base2 | |||
[p] sk | |||
[p] la | |||
[p;] ro | |||
ustop/q [q] base | |||
ustop/t [t] base | |||
[t2] en | |||
[t] fr | |||
@@ -940,6 +942,7 @@ vdiph/eei_2 [eI] eo | |||
[eI] id | |||
vdiph/eei_3 [eI] en_rp | |||
[eI] sk | |||
[eI] ku | |||
vdiph/eeu [EU] pt | |||
[EU] grc | |||
[EU] vi | |||
@@ -1169,6 +1172,7 @@ vowel/& [a] en_rp | |||
[&] fi | |||
[&:] hi | |||
[&] sv | |||
[E] ku | |||
vowel/0 [0] en | |||
[O] hi | |||
[O] pt | |||
@@ -1275,6 +1279,7 @@ vowel/aa [a] fi | |||
[aa] zhy | |||
vowel/aa# [0] en_wi | |||
[a2] fi | |||
[a] ku | |||
vowel/aa_2 [A:] en | |||
[A@] en | |||
[A:] cy | |||
@@ -1383,6 +1388,7 @@ vowel/e_mid2 [E] af | |||
[e] fi | |||
[E] nl | |||
[e] sk | |||
[e] es | |||
[e] ro | |||
[e] el | |||
[e] sw | |||
@@ -1442,6 +1448,7 @@ vowel/i_6 [i:] en_us | |||
[i] hr | |||
[i] id | |||
[i] tr | |||
[i] ku | |||
vowel/i#_6 [i.] zh | |||
vowel/i#_7 [i[] zh | |||
vowel/i_en [i:] en | |||
@@ -1460,9 +1467,11 @@ vowel/ii [I] en_rp | |||
[I] nl | |||
[I] is | |||
[i] zhy | |||
[e] ku | |||
vowel/ii# [Y] cy | |||
[y] pl | |||
[Y] ru | |||
[I] ku | |||
vowel/ii_2 [i] zh | |||
vowel/ii_3 [I] cy | |||
[I] fi | |||
@@ -1526,6 +1535,7 @@ vowel/o_4 [oU] en_n | |||
vowel/o-_4 [o] ro | |||
vowel/o_5 [O] nl | |||
vowel/o_6 [O:] nl | |||
vowel/o_7 [o] ku | |||
vowel/oe [W] en | |||
[W] af | |||
[W] de | |||
@@ -1623,6 +1633,7 @@ vowel/u#_4 [U] en_sc | |||
vowel/u_5 [u] sw | |||
vowel/u_6 [U] pt_pt | |||
[u] pt_pt | |||
[u] ku | |||
vowel/u#_6 [u:] en_us | |||
vowel/u_7 [u] vi | |||
vowel/u#_7 [u#] tr | |||
@@ -1649,6 +1660,7 @@ vowel/u_bck2 [u:] la | |||
vowel/u_fnt [u:] en_rp | |||
vowel/uu [U] en | |||
[U] en_wm | |||
vowel/uu# [U] ku | |||
vowel/uu_2 [U] base2 | |||
[U] de | |||
[U] ta | |||
@@ -1706,6 +1718,7 @@ vowel/y#_3 [W] is | |||
vowel/y_4 [y:] no | |||
vowel/y_5 [y:] sv | |||
[y] tr | |||
[y] ku | |||
vowel/yy [y"] fr_ca | |||
[y] no | |||
vowel/yy_3 [y] sv |
@@ -3,6 +3,12 @@ | |||
// Spanish - based on Base2 | |||
//==================================================== | |||
phoneme e | |||
vowel starttype (e) endtype (e) | |||
length 170 | |||
formants vowel/e_mid2 | |||
endphoneme | |||
phoneme E | |||
vowel starttype (e) endtype (e) | |||
length 180 |
@@ -0,0 +1,6 @@ | |||
//==================================================== | |||
// Latin American Spanish - based on Spanish | |||
//==================================================== | |||
@@ -996,8 +996,8 @@ phoneme q | |||
vowelin f1=1 f2=1700 0 200 f3=-300 80 f4 paus rms=35 | |||
vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30 | |||
lengthmod 2 | |||
wave ustop/k_unasp%60 | |||
before _ ustop/k_unasp%50 | |||
wave ustop/q%50 | |||
before _ ustop/q%40 | |||
endphoneme | |||
@@ -1282,5 +1282,8 @@ include ph_indonesian | |||
phonemetable tr base2 | |||
include ph_turkish | |||
phonemetable ku base2 | |||
include ph_kurdish | |||
phonemetable ja base | |||
include ph_japanese |
@@ -1,3 +1,5 @@ | |||
# removed -fno-exceptions because it caused problems with stdio library on some platforms | |||
PREFIX=/ | |||
BINDIR=$(PREFIX)/usr/bin | |||
INCDIR=$(PREFIX)/usr/include/espeak | |||
@@ -66,7 +68,7 @@ all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) | |||
mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG) | |||
.cpp.o: | |||
$(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | |||
$(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c $< | |||
$(BIN_NAME): $(OBJS1) | |||
$(CXX) -o $@ $(OBJS1) $(LIBS1) | |||
@@ -78,7 +80,7 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME) | |||
x_%.o: %.cpp | |||
$(CXX) $(CXXFLAGS) -Wall -fpic -pedantic \ | |||
-I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o | |||
-I. -D LIBRARY -c $< -o x_$*.o | |||
$(LIB_NAME): $(OBJS2) | |||
$(CXX) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2) |
@@ -454,6 +454,7 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous | |||
char ph_digits[50]; | |||
char ph_thousands[50]; | |||
char ph_hundred_and[12]; | |||
char ph_thousand_and[12]; | |||
hundreds = value / 100; | |||
buf1[0] = 0; | |||
@@ -461,6 +462,7 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous | |||
if(hundreds > 0) | |||
{ | |||
ph_thousands[0] = 0; | |||
ph_thousand_and[0] = 0; | |||
Lookup("_0C",ph_100); | |||
@@ -486,6 +488,11 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous | |||
ph_digits[0] = 0; | |||
if(hundreds > 0) | |||
{ | |||
if((langopts.numbers & 0x100000) && (prev_thousands || (ph_thousands[0] != 0))) | |||
{ | |||
Lookup("_0and",ph_thousand_and); | |||
} | |||
suppress_null = 1; | |||
found = 0; | |||
@@ -513,7 +520,7 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous | |||
} | |||
} | |||
sprintf(buf1,"%s%s%s",ph_thousands,ph_digits,ph_100); | |||
sprintf(buf1,"%s%s%s%s",ph_thousands,ph_thousand_and,ph_digits,ph_100); | |||
} | |||
ph_hundred_and[0] = 0; |
@@ -127,6 +127,7 @@ typedef struct { | |||
// Several phoneme tables may be loaded into memory. phoneme_tab points to | |||
// one for the current voice | |||
extern int n_phoneme_tab; | |||
extern int current_phoneme_table; | |||
extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | |||
extern unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited | |||
@@ -91,6 +91,7 @@ static const char *help_text = | |||
"-q\t Quiet, don't produce any speech (may be useful with -x)\n" | |||
"-x\t Write phoneme mnemonics to stdout\n" | |||
"-X\t Write phonemes mnemonics and translation trace to stdout\n" | |||
"-z\t No final sentence pause at the end of the text\n" | |||
"--stdout Write speech output to stdout\n" | |||
"--compile=<voice name>\n" | |||
"\t Compile the pronunciation rules and dictionary in the current\n" | |||
@@ -500,6 +501,7 @@ int main (int argc, char **argv) | |||
option_phonemes = 0; | |||
option_waveout = 0; | |||
option_wordgap = 0; | |||
option_endpause = 1; | |||
option_multibyte = espeakCHARS_AUTO; // auto | |||
f_trans = stdout; | |||
@@ -559,7 +561,7 @@ int main (int argc, char **argv) | |||
#else | |||
while(true) | |||
{ | |||
c = getopt_long (argc, argv, "a:bf:g:hk:l:p:qs:v:w:xXm", | |||
c = getopt_long (argc, argv, "a:bf:g:hk:l:p:qs:v:w:xXmz", | |||
long_options, &option_index); | |||
/* Detect the end of the options. */ | |||
@@ -635,6 +637,10 @@ int main (int argc, char **argv) | |||
strncpy0(wavefile,optarg2,sizeof(wavefile)); | |||
break; | |||
case 'z': | |||
option_endpause = 0; | |||
break; | |||
case 0x100: // --stdin | |||
flag_stdin = 1; | |||
break; |
@@ -35,13 +35,14 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.31.10 12.Feb.08"; | |||
const char *version_string = "1.31.12 16.Feb.08"; | |||
const int version_phdata = 0x013105; | |||
int option_device_number = -1; | |||
// copy the current phoneme table into here | |||
int n_phoneme_tab; | |||
int current_phoneme_table; | |||
PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | |||
unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited | |||
@@ -574,6 +575,7 @@ void SelectPhonemeTable(int number) | |||
n_phoneme_tab = 0; | |||
SetUpPhonemeTable(number,0); // recursively for included phoneme tables | |||
n_phoneme_tab++; | |||
current_phoneme_table = number; | |||
} // end of SelectPhonemeTable | |||
@@ -1544,6 +1544,11 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
return(0); | |||
} | |||
if(current_phoneme_table != voice->phoneme_tab_ix) | |||
{ | |||
SelectPhonemeTable(voice->phoneme_tab_ix); | |||
} | |||
// read the next clause from the input text file, translate it, and generate | |||
// entries in the wavegen command queue | |||
p_text = translator->TranslateClause(f_text,p_text,&clause_tone,&voice_change); |
@@ -440,6 +440,22 @@ SetLengthMods(tr,3); // all equal | |||
} | |||
break; | |||
case L('k','u'): // Kurdish | |||
{ | |||
static const unsigned char stress_amps_ku[8] = {16,16, 20,20, 20,24, 24,22 }; | |||
static const short stress_lengths_ku[8] = {170,170, 190,170, 0,0, 230,240}; | |||
tr = new Translator(); | |||
SetupTranslator(tr,stress_lengths_ku,stress_amps_ku); | |||
tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 | |||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
tr->langopts.numbers = 0x100c69; | |||
tr->langopts.max_initial_consonants = 2; | |||
} | |||
break; | |||
case L('l','a'): //Latin | |||
{ | |||
tr = new Translator(); |
@@ -316,7 +316,7 @@ typedef struct { | |||
// bit3= , decimal separator, not . | |||
// bit4=use three-and-twenty rather than twenty-three | |||
// bit5='and' between tens and units | |||
// bit6=add "and" after hundred and thousand | |||
// bit6=add "and" after hundred or thousand | |||
// bit7=don't have "and" both after hundreds and also between tens and units | |||
// bit8=only one primary stress in tens+units | |||
// bit9=only one vowel betwen tens and units | |||
@@ -328,6 +328,7 @@ typedef struct { | |||
// bit17=recognize roman numbers | |||
// bit18=Roman numbers only if upper case | |||
// bit19=don't add pause after a number | |||
// bit20='and' before hundreds | |||
int numbers; | |||
// bits 1-4 use variant form of numbers before thousands,millions,etc. |