[1.31.03]

lang=en-r: change to phoneme [t#] (reduced "t")
Added "consonants" attribute to voice files.
Minor change to intonation types 2 and 3.
lang=zh: adjust tone levels
lang=fr: adjust stressAmp, adjust consonant strengths.
Platform RISC_OS. Disable the "breath" attribute in voices because floating point is not allowed in callbacks.
Platform RISC_OS. Implement ListVoices()


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@132 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2008-01-27 11:26:03 +00:00
parent 0d2fa52994
commit e69ec3a676
43 changed files with 619 additions and 291 deletions
+16 -13
View File
@@ -91,10 +91,10 @@ Dictionary es_dict
@- a aI e E eI eU i
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
@@ -115,11 +115,10 @@ Dictionary fr_dict
E~ i i: o O O~ u W
w^i W~ y Y
* - : ; b c d dZ
f g h j k l L m
n N n^ p r R s S
t t2 tS v w z Z z2
z3
* : ; b c d dZ f
g h j k l L m n
N n^ p r R s S t
t2 tS v w z Z z2 z3
Dictionary hi_dict
@@ -214,10 +213,10 @@ Dictionary sk_dict
l- l: o o: oU r- r: u
u:
* b d d; dZ f g h
j k l l^ m n N n^
p r R R^ R^/ s S t
t; tS ts v x z Z
* : b d d; dZ f g
h j k l l^ m n N
n^ p r R R^ R^/ s S
t t; tS ts v x z Z
Dictionary sv_dict
@@ -387,3 +386,7 @@ O u
j k l m n N n^ p
r R s S t tS v w
x z
Dictionary ja_dict
+1
View File
@@ -2567,6 +2567,7 @@ he %hi: $verbsf
she %Si: $only $verbsf
it %It $verbsf
(it has) I2t||h'az $atend
it $allcaps $abbrev
we %wi: $verbf $only
you %ju: $verbf
they %DeI $verbf
+3 -1
View File
@@ -3151,7 +3151,7 @@
lle (_ l
@@o) lled (_$3v d
@@) lled (_$3v d
B) l (_N @L
B) l (_ @L
w) l (_ l
r) l (_ l
Al) l (_
@@ -4743,8 +4743,10 @@
j) une (_ u:n
l) une (_ u:n
r) une (_ u:n
?3 t) une (_ u:n
_) una (b ,Vna2
t) un (e ju:n
?3 t) un (e u:n
_) un (if ju:n
un (ani %ju:n
_) under (@P5 ,Vnd3 // prefix
+1 -1
View File
@@ -148,7 +148,7 @@ siquiera $pause
porque $pause // because
// questions
que $u+ $pause // what
que $u $pause // what
cuál $pause // which
cuáles $pause
cómo $pause // how
+1 -1
View File
@@ -129,7 +129,7 @@
_) r (_ E*e
r R
_) r R
A) r (A *
A) r (A **
C) r (A @-*
rr *R
+27 -34
View File
@@ -1,10 +1,11 @@
// This file in UTF8 encoded
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
//
// Updated 2008-01-21 Michel Such <michel.such@free.fr>
// Updated 2008-01-25 Michel Such <michel.such@free.fr>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -173,11 +174,13 @@ _dpt virg'yl
abc $abbrev
ac $abbrev
adsl $abbrev
alt $pause
amd $abbrev
api $abbrev
avh $abbrev
cci $abbrev
cio $abbrev
ctrl kO~tRol
ctrl kO~tRol $pause
dept depaRt@mA~
etc etseteRa
hmm h@m
@@ -364,23 +367,27 @@ y i:gR'Ek $atend
// pronunciation exceptions
consent kO~s'A~t2
divers div'Erz2
scient si
bénéficient benefisi $verb
concurrent kO~kyR'A~
couvent k'uvt2 $verb
dessus d@sy
dessous d@su
divers divErz2
►évident evid'A~
évident evidt2 $verb
ferment fErm'A~
ferment f'Ermt2 $verb
parent paR'A~
parent p'art2 $verb
pastis pastis
président pRezid'A~
président pRezidt2 $verb
résident Rezid'A~
résident Rezidt2 $verb
ressent r@s'A~t2
►évident evid'A~
évident evidt2 $verb
couvent k'uvt2 $verb
concurrent kO~kyR'A~
récurrent RekyR'A~
ferment fErm'A~
ferment f'Ermt2 $verb
parent paR'A~
parent p'art2 $verb
riz ri
sergent sErZ'A~
serment sErm'A~
serpent sErp'A~
@@ -405,23 +412,18 @@ accident aksidA~
adéquat adekuat2
adéquate adekuat
ardent aRdA~
boeufs bY
bus bys
choeur kWr
choeur k@r
discident disidA~
fils fis
haillon _|ajO~
haricot _|aRiko
imprudent E~pRydA~
juin ZwE~
juin ZuE~
mars maRs
occident OksidA~
oeufs Y
orient ORjA~
pays pEi
prudent pRydA~
secret sYkRE
secrets sYkREz2
souris suri
@@ -435,9 +437,6 @@ s'y si $verbf
qu'y ki $verbf
(sud est) sydEst
(nord est) nOREst
cci $abbrev
nvda $abbrev
open Op'@n
potentiomètre pOtA~sjOmEtR@-
processus pROsEsys
@@ -462,11 +461,10 @@ out aut
rut Ryt
scorbut skORbyt
scout skut
scouts skut
stout staut
uppercut ypERkyt
ut yt
zut syt
zut zyt
// et (t is said)
@@ -509,8 +507,6 @@ flirt fl@Rt
(sweat shirt) swEtS@Rt
(tee shirt) tiS@Rt
parfum paRfW~
forum fOROm
// words from other languages
amazon amaz'On
@@ -551,6 +547,7 @@ new nj'u
news nj'uz
night najt
ok oke
open Op'@n
outlook autluk
player plEj'@r
reader Ri:d@R
@@ -563,7 +560,7 @@ skype sk'ajp@-
spybot spajbOt
sun s@n
sunlight s@nlajt
(text aloud) tEkst||@lau-d
(text aloud) tEkst||@lawd
thunderbird f@ndERb@Rd
ubuntu ubuntu
update @pd'E:jt
@@ -578,26 +575,23 @@ yacht jot
// tions (tjO~ instead of sjO~)
achetions aS@tjO~z2
ajoutions aZutjO~z2
apportions apORtjO~z2
apprêtions apREtjO~z2
arrêtions aREtjO~z2
chantions SA~tjO~z2
citions sitjO~z2
comptions kO~tjO~z2
constations kO~statjO~z2
contentions kO~tA~tjO~z2
dations datjO~z2
discutions diskytjO~z2
doutions dutjO~z2
débutions debytjO~z2
désertions dezERtjO~z2
désertions dezERtjO~z2 $verb
détentions detA~tjO~z2
escomptions EskO~tjO~z2
exploitions EksplwatjO~z2
exportions EkspORtjO~z2
habitions abitjO~z2
heurtions @RtjO~z2
heurtions _!@RtjO~z2
jetions Z@tjO~z2
limitions limitjO~z2
méritions meRitjO~z2
@@ -605,8 +599,7 @@ partions paRtjO~z2
pressentions pREsA~tjO~z2
présentions pRezA~tjO~z2
prêtions pREtjO~z2
rations RatjO~z2
redoutions R@dutjO~z2
rations RatjO~z2 $verb
représentions R@pRezA~tjO~z2
respections REspEktjO~z2
ressentions R@sA~tjO~z2
@@ -618,7 +611,6 @@ supportions sypORtjO~z2
tentions tA~tjO~z2
traitions tREtjO~z2
votions vOtjO~z2 $u
écoutions ekutjO~z2
étions etjO~z2
évitions evitjO~z2
@@ -634,3 +626,4 @@ vincent vE~sA~
+32 -24
View File
@@ -3,7 +3,7 @@
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
//
// Updated: 2008-01-21 Michel Such <michel.such@free.fr>
// Updated: 2008-01-25 Michel Such <michel.such@free.fr>
//
// * The rules are based on Cicero TTS.
//
@@ -107,15 +107,14 @@
quon) d (_ t2
dt (_ t // Schmidt
_ni) d (_ // nid
_noeu) d (_ // noeud
r) d (_ // lourd placard
d d // don bled
.group e
e (Ce_ E
AC) e (_ @- // e muet
CC) e (_ @- // e muet
gu) e (_ @- // e muet
eau o // bateau cheveaux
j) e (a // Jean Jeanne
sp) ea (k i: // speak speaker
@@ -210,6 +209,7 @@
en (s_ A~
en (CA A~ // pentathlon
en (CC A~ // entre
en (ch_ En // french
_C) er (_ ER // fer
_Ch) er (_ ER // cher
@@ -249,14 +249,15 @@
_r) es (A @s // resaisir resaluer
_r) e (ss @ // ressembler
_r) e (ssu e // ressusciter
_r) e (stra @
_r) e (stre @
_r) e (stro @
_r) e (stru @ // restructurer
-) est (_ Est // -est
@Cr) es (_C =@
rC) es (_C =@ // fortes dames
@Cr) es (_C @-
rC) es (_C @- // fortes dames
') eu (_ y // eu
eu (r_ @ // peur
@@ -282,17 +283,20 @@
ez (_ ez2 // nez mangez chez
_C) e (_ @ // je te
_CC) e (_ @
_CC) e (_ @-
_qu) e (_ @ // que
@Cr) e (_C =@ // quatre pattes
rC) e (_C =@
@Cr) e (_C @- // quatre pattes
CC) e (_C @-
ch) e (_C @-
gu) e (_C @-
qu) e (_C @-
e (_ // montre
g) e (A // mangeons
AC) e (ment // vitement sûrement
AC) e (ment @- // vitement sûrement
Aqu) e (ment
enC) e (ment
enqu) e (ment
@@ -386,11 +390,13 @@
.group h
_) h (ac _! // hache
_) h (ai _! // haine haillon
_) h (al _! // halte
_) h (amp _! // hampe
_) h (an _! // hanche
_) h (app _! // happer
_) h (arc _! // harceler
_) h (ari _! // haricot haridelle
_) h (arna _! // harnais
_) h (ard _! // hardi
_) h (arp _! // harpe
@@ -398,6 +404,7 @@ _) h (au _! // haut
_) h (av _! // havre
_) h (ern _! // hernie
_) h (ers _! // herse
_) h (eurt _! // heurter
_) h (ibo _! // hibou
_) h (ide _! // hideux
_) h (oll _! // hollandais
@@ -500,19 +507,22 @@ _) h (utte_ _! // hutte
cr) oc (_ o // escroc
o (ch o // cochon
o (che_ O // poche, cloche
oe (ll wa // moelleux
_) oe (C Y // oesophage
o (eu // soeur oeuf
oeu @ // soeur coeur
oeufs @ // oeufs boeufs
o (eC o // coefficient
_) oi (gnon O // oignons
oin (C wE~
oin (_ wE~ // coin
oi wa // poil
oid (_ wa // froid
oê (l wE // poêle
oê (l wa // poêle
oî wa // boîte
o (mm O // comme
dr) o (me_ o // vélodrome
radi) o (C o // radiophonique
dr) o (me_ O // vélodrome
ph) o (ne_ O // téléphone
om (b O~ // bombe
om (p O~ // pompe
@@ -606,7 +616,6 @@ _) h (utte_ _! // hutte
_A) qu (a ku // équateur
qu k // quatre
_) que (_ k@ // que
que (_ k@- // puisque banque...
_) qu' (P3 k // qu'il
n) q (_ k // cinq cent
@@ -616,8 +625,6 @@ _) h (utte_ _! // hutte
_su) rr RR // surréaliste
cou) rr RR // courrai
mou) rr RR // mourrai
rre (_ R@- // barre
C) re (_ R@- // litre
rr R // erreur
r r // rien
@@ -682,16 +689,11 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe
Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel
n) t (_ // silent at end of word
r) t (_ t2 // fort
tte (_ t@- // fillette
C) te (_ t@- // patte
a) te (_ t@- // tomate
aul) t (_ // Renault
tt t // attitude
tte (_ t@- // fillette
A) te (_ t@- // tomate
C) te (_ t@- // pente
s) th (m // asthme
th t // théorie
@@ -712,6 +714,9 @@ C) te (_ t@- // pente
t (ion s // programmation
Cisi) t (ion t // visitions
ci) t (ion t // citions
ou) t (ion t // ajoutions
s) t (ion t // gestion
t) t (ion t // combattions
@@ -739,13 +744,14 @@ C) te (_ t@- // pente
u y // cruel nuage brut
ui w^i
c) ueill Wj // cueillir
c) ueil (_ Wj // recueil
g) ueill Wj // orgueilleux
g) ueil (_ Wj // orgueil
c) ueill Wj
c) ueil (_ Wj
um (_ Om // album
f) um (_ W~ // parfum
um (b W~ // humble
um (p W~
un (C W~ // emprunt lundi
@@ -763,7 +769,8 @@ C) te (_ t@- // pente
.group w
w w
ware (_ _^_EN // hardware, software
wa (Ce_ wE // hardware software wave
w (agon v // wagon
.group x
@@ -853,3 +860,4 @@ C) te (_ t@- // pente
+85 -45
View File
@@ -2,54 +2,94 @@
// This file is UTF-8 encoded
// Letters
_a a:
á d,l-he:'a:
ä 'a:prehlasovane:
b be:
c tse:
č tSe:
d de:
ď d;e:
e e:
é d,l-he:'e:
f ef
g ge:
h ha:
i i:
í d,l-he:'i:
j je:
_k ka:
l el
ľ el^
ĺ d,l-he:'el
m em
n en
ň en^
_o o:
ó d,l-he:'o:
ô 'o:sv,oka:n^om
p pe:
q kve:
r er
_s es
š eS
t te:
ť t;e:
u u:
ú dl-he:'u:
_v ve:
w dv'ojite:,ve:
x iks
y ipsilon
ý d,l-he:'i:
_z zet
ž Zet
_a a:
á d,l-he:'a:
ä 'a:pRehlasovane:
b be:
c tse:
č tSe:
d de:
ď d;e:
e e:
é d,l-he:'e:
f ef
g ge:
h ha:
i i:
í d,l-he:'i:
j je:
_k ka:
l el
ľ el^
ĺ d,l-he:'el
m em
n en
ň en^
_o o:
ó d,l-he:'o:
ô 'o:sv,oka:n^om
p pe:
q kve:
r eR
ř eR^
_s es
š eS
t te:
ť t;e:
u u:
ú dl-he:'u:
ů 'u:s_kR'oUZkem
_v ve:
w dv'ojite:,ve:
x iks
y ipsilon
ý d,l-he:'i:
_z zet
ž Zet
// character names
_cap vel^ke:
_?? simbol
_#9 tab
_#32 'medzeRa
_?A znak
_! vi:kRitSn^i:k
_" u:vodzovki
_# kRi:Zik
_$ dola:R
_& ampeRsand
_' apostRof
_( za:tvoRka
_) zatvoRit;
_* hviezda
+ plus
_, tSiaRka
_- pomltSka
_. bodka
_/ lomeno
_: dvojbodka
_; bodkotSiaRka
_< menSi:
_= Rovna:sa
_> vetSSi:
_? ota:zn^ik
_@ zavin:atS
_[ hRanata:||za:tvoRka
_\ opatSne:||lomeno
_] hRanata:||zatvoRit;
_^ stRieZka
_` aktsent
_{ zloZena:||za:tvoRka
_| zvisla:||tSiaRa
_} zloZena:||zatvoRit;
_~ vlnovka
€ euRo
// Numbers
_0 n'ula
_1 j'ed;en
_1 j'eden
_2 dv'a
_3 t'@-*i
_4 St'i*i
@@ -59,7 +99,7 @@ _7 s'ed;em
_8 'osem
_9 d;'ev&t;
_10 d;'esat;
_11 j'ed;ena:st;
_11 j'edena:st;
_12 dv'ana:st;
_13 t@-*'ina:st;
_14 Str-n'a:st;
@@ -82,7 +122,7 @@ _0M1 t;'isi:ts
_1M1 t;'isi:ts
_2M1 dv'et;'isi:ts
_0M2 m'ilio:n
_0M3 m'iljarda
_0M3 m'iljaRda
_dpt _:tSj,arka_
+3 -3
View File
@@ -639,7 +639,7 @@ _charak) te (r te
.group
ě e
ů u: // czech
$ dola:r
% pertsento
+ plus
$ dola:R
% peRtsento
D_) % peRtsent
+39 -9
View File
@@ -1,4 +1,4 @@
45 phoneme tables
46 phoneme tables
new total
base 98 98
base2 24 117
@@ -15,7 +15,7 @@
eo 13 110
jbo 4 111
fi 40 129
fr 38 122
fr 42 122
fr_ca 11 122
hi 50 134
ta 15 136
@@ -45,6 +45,7 @@
sw 14 107
th 50 141
id 14 119
ja 7 103
Data file Used by
b/b [b] base
@@ -83,6 +84,7 @@ d/d [d] base
[d[] base
[d] base2
[d] fi
[d] fr
[d] hi
[d.] hi
[d] hu
@@ -98,6 +100,7 @@ d/d_ [d] base
[d[] base
[d] base2
[d] fi
[d] fr
[d] hi
[d.] hi
[d] hu
@@ -115,6 +118,7 @@ d/dr [*] base
[d[] base
[d] base2
[d] fi
[d] fr
[d] hi
[d.] hi
[d] hu
@@ -128,6 +132,7 @@ d/dr [*] base
[d] sw
d/tap [*;] ro
d/tap1 [*] base
d/tap2 [t#] en_us
d/tap3 [*] base
d/tap4 [r] es
d/tap_i [*;] ro
@@ -135,6 +140,7 @@ d/xd [d] base
[d[] base
[d] base2
[d] fi
[d] fr
[d] hi
[d.] hi
[d] hu
@@ -146,6 +152,7 @@ d/xd [d] base
[d] sw
d/xd_pzd [d;] pl
[d;] ru
d/x_tap [t#] en_us
dzh/dzh [dZ] base
[dZ;] base
[dz;] base
@@ -192,11 +199,11 @@ envelope/p_fallrise [4] vi
envelope/p_level [1] vi
[3] zhy
[6] zhy
[44] zh
[55] zh
envelope/p_rise [3] vi
[2] zhy
[5] zhy
[44] zh
[35] zh
[4] th
envelope/vi_5 [5] vi
@@ -209,14 +216,17 @@ g2/xg [g-] base
[g] hi
g/g [g] base
[g] cy
[g] fr
[g] hi
[g] es
g/g_ [g] base
[g] cy
[g] fr
[g] hi
[g] es
g/xg [g] base
[g] cy
[g] fr
[g] es
h/h_ [h] base
[h] fi
@@ -303,6 +313,7 @@ l/_l [l] base
[l] en_wi
[l] af
[l/] de
[l] fr
[l] hu
[l] sk
[l] ru
@@ -353,6 +364,7 @@ l/tl [l] base
[l] en
[l] en_wi
[l] af
[l] fr
[l] hu
[l] sk
[l] ru
@@ -551,11 +563,14 @@ ufric/f_ [f] base
ufric/ll [L] base
[l#] is
ufric/s [s] base
[s] fr
[s] es
[s#] pt
ufric/s_ [s] base
[z] base
[s2] fi
[s] fr
[z] fr
[z2] fr
[z3] fr
[s2] hu
@@ -564,14 +579,17 @@ ufric/s_ [s] base
[z;] ro
ufric/s! [s] base
[s2] fi
[s] fr
[s2] hu
[s] es
[s#] pt
ufric/s_continue [s2] fi
[s2] hu
ufric/sh [S] base
[S] fr
[s#] pt_pt
ufric/sh_ [S] base
[S] fr
[s#] pt_pt
ufric/sh_pzd [S;] base
[S;] ro
@@ -753,6 +771,7 @@ ustop/t_pzd [t;] pl
ustop/tr [t] base
[t[] base
[t2] en
[t] fr
[t.h] hi
[t] ru
ustop/ts [ts] base2
@@ -1022,8 +1041,8 @@ vdiph/y#y_2 [Yy] af
[eoi] zhy
vdiph/y#y_3 [Y:] nl
vnasal/aa_n [A~] en
vnasal/aa_n2 [A~] fr
vnasal/aa_n3 [A~] af
[A~] fr
vnasal/a#_n [&~] pt
vnasal/a#u_n [&U~] pt
[&U~] pt_pt
@@ -1083,6 +1102,7 @@ voc/v_ [B] base
[v;] ro
[v] is
voc/vj [v] base
[v] fr
vocw/dh [D] base
[D] es
vocw/Q [Q] base
@@ -1100,10 +1120,12 @@ vocw/zh [Z] base
[Z;] ro
vocw/zh_rfx [z.] base
voc/z [z] base
[z] fr
[z2] fr
[z3] fr
[z;] ro
voc/z_ [z] base
[z] fr
[z2] fr
[z3] fr
[z;] ro
@@ -1131,7 +1153,6 @@ vowel/@ [@] base
[@4] hi
[@] th
vowel/@- [@-] base
[@-] fr
[r*] hr
vowel/& [a] en_rp
[&] fi
@@ -1148,8 +1169,7 @@ vowel/0_2 [0] en_n
vowel/0_3 [O] en_sc
[0] en_rp
[A] hu
vowel/@_2 [@] fr
[W] fr
vowel/@_2 [W] fr
vowel/@_3 [@] en_sc
[I] en_sc
[@2] en_sc
@@ -1187,6 +1207,7 @@ vowel/a [a] en_n
[a] th
[a:] th
[a] id
[a] ja
vowel/a# [a/] base2
[a2] en_sc
[a2] en_wi
@@ -1341,6 +1362,7 @@ vowel/e_mid [E] en_rp
[E] is
[E] id
[E2] id
[e] ja
vowel/e_mid2 [E] af
[E] de
[E2] de
@@ -1354,6 +1376,7 @@ vowel/e_mid2 [E] af
vowel/@_fnt [@] en_wi
[@2] en_wi
[@2] hr
vowel/@_fr [@] fr
vowel/@_hgh [@] hr
vowel/i [i] base2
[i:] en_n
@@ -1377,6 +1400,7 @@ vowel/i [i] base2
[i] sw
[i] th
[i:] th
[i] ja
vowel/i# [i] en_us
[i] en_rp
[y:] cy
@@ -1507,6 +1531,7 @@ vowel/oo [O:] en_sc
[O] th
[O:] th
[O] id
[o] ja
vowel/oo_1 [O:] en_n
[O:] en_rp
[O@] en_rp
@@ -1565,7 +1590,6 @@ vowel/u [u:] en_wi
vowel/u# [u-] en
[u:] en_sc
vowel/u_2 [u1] fi
[u] fr
[u] sk
[U] hr
[u] ro
@@ -1576,13 +1600,14 @@ vowel/u_4 [u:] en_n
vowel/u#_4 [U] en_sc
[u:] en_sc
vowel/u_5 [u] sw
vowel/u#_5 [u:] en_us
vowel/u_6 [U] pt_pt
[u] pt_pt
vowel/u#_6 [u:] en_us
vowel/u_7 [u] vi
vowel/u_bck [u] base2
[U] cy
[u] fi
[u] fr
[u] fr_ca
[u:] hi
[u:] hu
@@ -1615,6 +1640,7 @@ vowel/uu_bck [U] en_n
[U] pt
[U] no
[u] zhy
vowel/u_unr [u] ja
vowel/V [3] en_sc
vowel/V_2 [V] en
[a] af
@@ -1824,6 +1850,7 @@ x/b [b] base
x/b_ [b] base
x/d [d] base
[t#] en_us
[d] fr
[d.] hi
[d] hr
[d] el
@@ -1832,6 +1859,7 @@ x/d_ [d] base
[d[] base
[d] base2
[d] fi
[d] fr
[d] hi
[d.] hi
[d] pl
@@ -1870,10 +1898,12 @@ x/dz_pzd [dZ;] base
x/dz_pzd_ [J2] hi
x/g_ [g] base
[g] cy
[g] fr
[g] es
[g] is
x/g2 [g] base
[g] cy
[g] fr
[g] hi
[g] es
[g] is
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+12 -13
View File
@@ -27,7 +27,7 @@ endphoneme
phoneme a
vowel starttype (a) endtype (@)
length 200
length 210
formants vwl_en_us/a
reduceto a2 0
endphoneme
@@ -52,7 +52,7 @@ endphoneme
phoneme E
vowel starttype (e) endtype (e)
length 180
length 185
// formants vowel/ee_2
formants vwl_en_us/ee
reduceto I 0
@@ -161,7 +161,7 @@ endphoneme
phoneme o@
vowel starttype (o) endtype (@)
length 260
length 250
formants vwl_en_us/or
appendph r
endphoneme
@@ -178,8 +178,8 @@ endphoneme
phoneme u:
vowel starttype (u) endtype (u)
length 170
formants vowel/u#_5
// before l/2 vwl_en/u_L-40+l/L2_uL
formants vowel/u#_6
// formants vowel/u#_5
endphoneme
@@ -228,7 +228,7 @@ endphoneme
phoneme i@3
vowel starttype (i) endtype (@)
length 260
length 250
formants vwl_en_us/ir
appendph r
endphoneme
@@ -271,12 +271,11 @@ endphoneme
phoneme t# // reduced [t] as in "city"
vls alv stop
vowelin f1=0 f2=1700 -300 300 f3=-100 80
vowelout f1=0 f2=1700 -300 300 f3=-100 80
lengthmod 5
wave x/d%70
vcd alv stop
vowelin f1=1 f2=1700 -300 300 f3=-100 80
vowelout f1=2 f2=1700 -300 300 f3=-100 80
formants d/tap2+x/d%70
after @ d/x_tap
lengthmod 2
endphoneme
+150 -94
View File
@@ -13,16 +13,7 @@ phoneme @
vowel starttype (@) endtype (@)
unstressed
length 170
formants vowel/@_2
endphoneme
phoneme @- // very short schwa
vowel nonsyllabic
starttype (@) endtype (@)
formants vowel/@-
unstressed
length 20
formants vowel/@_fr
endphoneme
@@ -80,8 +71,8 @@ endphoneme
phoneme u
vowel starttype (u) endtype (u)
length 170
formants vowel/u_2
length 160
formants vowel/u_bck
endphoneme
@@ -101,7 +92,8 @@ endphoneme
phoneme w
liquid
length 130
unstressed
length 100
beforenotvowel w/
lengthmod 7
formants w/w
@@ -128,7 +120,7 @@ endphoneme
phoneme A~
vowel starttype (a) endtype (a)
length 180
formants vnasal/aa_n3
formants vnasal/aa_n2
endphoneme
@@ -194,14 +186,74 @@ endphoneme
//===========
// uses the consonants in file "phonemes", unless overridden here
phoneme b
vcd blb stop
vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk
formants b/b+x/b%45
before _ b/b_+x/b%45
before (a) b/ba+x/b%45
before (@) b/b@+x/b%45
before (e) b/be+x/b%45
before (i) b/bi+x/b%45
before (o) b/bo+x/b%45
before (u) b/bu+x/b%45
before @- b/b@2+x/b%45
after _ NULL
after @ b/xb%45
lengthmod 5
switchvoicing p
endphoneme
phoneme d
vcd alv stop
vowelin f1=0 f2=1700 -300 300 f3=-100 80
vowelout f1=0 f2=1700 -300 300 f3=-100 80
formants d/d%30+x/d%30
before _ d/d_%30+x/d_%30
before r d/dr%60+x/d%60
after _ NULL
after @ d/xd%40
lengthmod 5
switchvoicing t
endphoneme
phoneme g
vcd vel stop
vowelin f1=2 f2=2300 200 300 f3=-300 80
vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
formants g/g%30+x/g2%30
before _ g/g_+x/g_
after _ NULL
after @ g/xg%30
lengthmod 5
switchvoicing k
endphoneme
phoneme k
vls vel stop
vowelin f1=0 f2=2300 200 400 f3=-100 80
vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
lengthmod 2
wave ustop/k%45 // reduce strength of noise burst
before _ ustop/k_%45
before r ustop/kr%45
before l ustop/kl%45
before (i) ustop/ki%45
switchvoicing g
endphoneme
phoneme l
liquid
length 100
lengthmod 7
// beforenotvowel l/
formants l/l
// after _ l/_l
// after t l/tl
after _ l/_l
after t l/tl
after l/ l/l_long // double l, make it longer
before (a) l/la
before (e) l/le
@@ -213,15 +265,31 @@ phoneme l
endphoneme
phoneme p
vls blb stop
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
lengthmod 2
wave ustop/p%45
before _ ustop/p_%45
before r ustop/pr%45
before R ustop/pr%45
before @- ustop/p_unasp%45
before l ustop/pl%45
switchvoicing b
endphoneme
phoneme r
vcd uvl frc
vowelin f1=0 f2=800 -100 100 f3=-400 100
vowelout f1=0 f2=800 -100 100 f3=-400 100 len=0 rms=20
length 100
lengthmod 7
beforenotvowel r/
formants vwl_fr/@R%40
after t r/tr
before _ r3/r_
formants vwl_fr/@R%60
after t r/tr%60
before _ r3/r_%60
endphoneme
@@ -231,8 +299,8 @@ phoneme R
length 100
lengthmod 7
beforenotvowel r/
formants vwl_fr/@R%40
after r r/rr
formants vwl_fr/@R%60
after r r/rr%60
endphoneme
@@ -240,8 +308,34 @@ phoneme r/ // used for [r] when not preceding a vowel
vcd uvl frc
length 100
lengthmod 2 //
formants r3/r_+r3/rx
before n r3/r_n+r3/rx
formants r3/r_+r3/rx%60
before n r3/r_n+r3/rx%60
endphoneme
phoneme s
vls alv frc sibilant
vowelin f1=0 f2=1700 -300 300 f3=-100 80
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
lengthmod 3
wave ufric/s%45
before _ ufric/s_%45
before p ufric/s!%45
before t ufric/s!%45
before k ufric/s!%45
switchvoicing z
endphoneme
phoneme S
vls pla frc sibilant
vowelin f1=0 f2=2100 100 300 f3=-100 80
vowelout f1=0 f2=2100 100 300 f3=-100 80
length 100
lengthmod 3
wave ufric/sh%45
before _ ufric/sh_%45
switchvoicing Z
endphoneme
@@ -250,11 +344,11 @@ phoneme t
vowelin f1=0 f2=1700 -100 100 f3=-100 80
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
lengthmod 2
wave ustop/t%50
before _ ustop/t_%40
before @- ustop/t%50
// before r ustop/tr
// before R ustop/tr
wave ustop/t%30
before _ ustop/t_%30
before @- ustop/t%30
before r ustop/tr%30
before R ustop/tr%30
switchvoicing d
endphoneme
@@ -265,8 +359,30 @@ phoneme t2 // silent unless followed by vowel
vowelin f1=0 f2=1600 -300 300 f3=-100 80
vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20
lengthmod 2
wave ustop/t
before _ ustop/t_
wave ustop/t%45
before _ ustop/t_%45
endphoneme
phoneme v
vcd lbd frc
vowelin f1=0 f2=1000 -300 -200 f3=-300 100
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=10
lengthmod 6
formants voc/v+vocw/v%75
before (r) voc/vj+vocw/v%75
before _ voc/v_+vocw/v%75
switchvoicing f
endphoneme
phoneme z
vcd alv frc sibilant
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
formants voc/z+ufric/s_%45
before _ voc/z_+ufric/s_%45
lengthmod 6
switchvoicing s
endphoneme
@@ -274,8 +390,8 @@ phoneme z2 // silent unless followed by vowel
beforenotvowel NULL
vcd alv frc sibilant
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
formants voc/z+ufric/s_
before _ voc/z_+ufric/s_
formants voc/z+ufric/s_%45
before _ voc/z_+ufric/s_%45
lengthmod 6
endphoneme
@@ -284,68 +400,8 @@ phoneme z3 // "six" and "dix". [s] before pause, [z] before vowel, else []
beforenotvowel NULL
vcd alv frc sibilant
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
formants voc/z+ufric/s_
before _ voc/z_+ufric/s_
formants voc/z+ufric/s_%45
before _ voc/z_+ufric/s_%45
lengthmod 6
endphoneme
phoneme k
vls vel stop
vowelin f1=0 f2=2300 200 400 f3=-100 80
vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
lengthmod 2
wave ustop/k%60 // reduce strength of noise burst
before _ ustop/k_
before r ustop/kr
before l ustop/kl
before (i) ustop/ki
switchvoicing g
endphoneme
phoneme v
vcd lbd frc
vowelin f1=0 f2=1000 -300 -200 f3=-300 100
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
lengthmod 6
formants voc/v+vocw/v
before _ voc/v_+vocw/v
switchvoicing f
endphoneme
phoneme p
vls blb stop
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
lengthmod 2
wave ustop/p
before _ ustop/p_
before r ustop/pr%70
before R ustop/pr
before @- ustop/p_unasp
before l ustop/pl
switchvoicing b
endphoneme
phoneme b
vcd blb stop
vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk
formants b/b+x/b
before _ b/b_+x/b
before (a) b/ba+x/b
before (@) b/b@+x/b
before (e) b/be+x/b
before (i) b/bi+x/b
before (o) b/bo+x/b
before (u) b/bu+x/b
before @- b/b@2+x/b
after _ NULL
after @ b/xb
lengthmod 5
switchvoicing p
endphoneme
+4 -4
View File
@@ -5,7 +5,7 @@
phoneme 11 // tone: low level
stress
tone 15 10 envelope/p_fall NULL
tone 12 9 envelope/p_fall NULL
endphoneme
phoneme 21 // tone: low fall
@@ -20,12 +20,12 @@ endphoneme
phoneme 22 // tone: mid-low level
stress
tone 21 19 envelope/p_fall NULL
tone 22 20 envelope/p_fall NULL
endphoneme
phoneme 33 // tone: mid level
stress
tone 31 29 envelope/p_fall NULL
tone 32 30 envelope/p_fall NULL
endphoneme
phoneme 35 // tone: mid rise
@@ -35,7 +35,7 @@ endphoneme
phoneme 44 // tone: mid-high level
stress
tone 41 39 envelope/p_level NULL
tone 38 41 envelope/p_rise NULL
endphoneme
phoneme 51 // tone: high fall
+6 -4
View File
@@ -594,13 +594,13 @@ endphoneme
phoneme ** // TEST flap after consonant
liquid alv
vowelout f1=3 f2=1700 -300 300 f3=-300 80 rms=35 len=15
vowelin f1=0 f2=1700 -300 300 f3=-300 80
vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15
vowelin f1=0 f2=1600 -300 300 f3=-300 80
formants r3/@tap+r3/rx
vowelin f1=0 f2=1700 -300 300 f3=-400 80
vowelin f1=3 f2=1600 -300 300 f3=-300 80
before (i) r3/@tap_i+r3/rx
before (e) r3/@tap_i+r3/rx
vowelin f1=2 f2=1700 -300 300 f3=-300 80
vowelin f1=2 f2=1600 -300 300 f3=-300 80
before (a) r3/@tap+r3/rx
endphoneme
@@ -1270,3 +1270,5 @@ include ph_thai
phonemetable id base2
include ph_indonesian
phonemetable ja base
include ph_japanese
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -177,7 +177,7 @@ int Translator::LoadDictionary(const char *name, int no_error)
length = pw[1];
if(size <= (N_HASH_DICT + sizeof(int)*2))
{
fprintf(stderr,"Empty dictionary: '%s\n",fname);
fprintf(stderr,"Empty _dict file: '%s\n",fname);
return(2);
}
if((pw[0] != N_HASH_DICT) || (length <= 0) || (length > 0x8000000))
+21 -13
View File
@@ -247,7 +247,8 @@ static int drops_0[8] = {0x400,0x400,0x700,0x700,0x700,0xa00,0x1800,0x0e00};
static short oflow[] = {0, 20, 12, 4, 0};
static short oflow_emf[] = {5, 24, 15, 10, 5};
static short oflow_less[] = {1, 17, 10, 5, 1};
static short oflow_less[] = {3, 19, 12, 7, 2};
static short oflow_test2[] = {20, 0, 20, 0, 20};
static short back_emf[] = {35, 32, 0};
typedef struct {
@@ -278,7 +279,7 @@ typedef struct {
unsigned char tail_shape;
} TONE_TABLE;
#define N_TONE_TABLE 11
#define N_TONE_TABLE 13
static TONE_TABLE tone_table[N_TONE_TABLE] = {
{PITCHfall, 30, 5, PITCHfall, 30, 8, // 0 statement
@@ -297,14 +298,14 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = {
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0},
{PITCHfall, 28, 6, PITCHfall, 28, 10, // 5 statement, less intonation
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 12, 6, 0},
{PITCHfall, 28, 5, PITCHfall, 28, 9, // 5 statement, less intonation
20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 12, 7, 0},
{PITCHfrise2, 33,11, PITCHfall, 28,10, // 6 comma, less intonation
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 9,14, 0},
{PITCHfrise2, 32,8, PITCHfrise2, 28,9, // 6 comma, less intonation
20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 10,16, 0},
{PITCHfrise2, 28, 7, PITCHfall, 28, 12, // 7 comma, less intonation, less rise
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 14, 8, 0},
{PITCHfrise2, 28, 7, PITCHfall, 29, 14, // 7 comma, less intonation, less rise
20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 14, 8, 0},
{PITCHrise, 30, 20, PITCHfall, 19, 14, // 8 pitch raises at end of sentence
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 24, 30, 0},
@@ -315,6 +316,12 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = {
{PITCHfrise, 39, 15, PITCHfall, 28, 14, // 10 question
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 20, 36, 0},
{PITCHfall, 28, 6, PITCHfall, 28, 10, // 11 test
20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less, NULL, 12, 6, 0},
{PITCHfall, 35, 9, PITCHfall, 35, 12, // 12 test
19, 26, 36, 20, drops_0, 2, 4, 5, oflow_test2, NULL, 16, 10, 0},
};
@@ -327,8 +334,9 @@ unsigned char punctuation_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS] = {
{5,7,1,0,0,4},
{8,9,10,3,0,0},
{8,8,10,3,0,0},
{0,1,2,3,0,4},
{0,1,2,3,0,0} };
{11,11,11,11,0,0}, // 6 test
{12,12,12,12,0,0}
};
@@ -738,10 +746,10 @@ void Translator::CalcPitches_Tone(int clause_tone)
PHONEME_TAB *prev2_tph; // 2 tones previous
PHONEME_LIST *prev_p;
int pitch_adjust = 10; // pitch gradient through the clause - inital value
int pitch_adjust = 0; // pitch gradient through the clause - inital value
int pitch_decrement = 0; // decrease by this for each stressed syllable
int pitch_low = 10; // until it drops to this
int pitch_high = 10; // then reset to this
int pitch_low = 0; // until it drops to this
int pitch_high = 0; // then reset to this
p = &phoneme_list[0];
+6 -2
View File
@@ -1759,7 +1759,7 @@ f_input = f_in; // for GetC etc
c2 = GetC();
}
while(!Eof())
while(!Eof() || (ungot_char != 0))
{
if(!iswalnum(c1))
{
@@ -1791,7 +1791,7 @@ f_input = f_in; // for GetC etc
if((option_ssml) && (phoneme_mode==0))
{
if((c1 == '&') && ((c2=='#') || isalpha(c2)))
if((c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z'))))
{
n_xml_buf = 0;
c1 = c2;
@@ -1818,6 +1818,10 @@ f_input = f_in; // for GetC etc
{
c1 = j;
}
else
{
c1 = '&';
}
}
if((sayas_mode == 0x14) && (c1 <= 0x20))
{
+119 -12
View File
@@ -76,6 +76,7 @@ char textbuffile[L_tmpnam];
int sample_rate_index; // current value
int current_voice_num=0;
int n_voice_files = 0;
int n_voice_variant_files = 0;
// output sound buffer, 2 bytes per sample
static unsigned short SoundBuf[4096];
@@ -84,7 +85,9 @@ static int callback_inhibit = 0;
static int more_text=0;
#define N_VOICE_NAMES 60
static char *voice_names[40];
#define N_VOICE_VARIANT_NAMES 30
static char *voice_names[N_VOICE_NAMES];
static char *voice_variant_names[N_VOICE_VARIANT_NAMES];
#define N_STATIC_BUF 8000
static char static_buf[N_STATIC_BUF];
@@ -127,9 +130,9 @@ static const char *help_text =
"--punct=\"<characters>\"\n"
"\t Speak the names of punctuation characters during speaking. If\n"
"\t =<characters> is omitted, all punctuation is spoken.\n"
//"--voices=<langauge>\n"
//"\t List the available voices for the specified language.\n"
//"\t If <language> is omitted, then list all voices.\n"
"--voices=<langauge>\n"
"\t List the available voices for the specified language.\n"
"\t If <language> is omitted, then list all voices.\n"
"-k <integer>\n"
"\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n"
"\t higher values = a pitch increase (try -k20).\n";
@@ -169,6 +172,7 @@ int GetFileLength(const char *filename)
void ReadVoiceNames2(char *directory)
{//==================================
int len;
int path_len;
int *type;
char *p;
_kernel_swi_regs regs;
@@ -184,6 +188,8 @@ void ReadVoiceNames2(char *directory)
regs.r[5] = sizeof(buf);
regs.r[6] = 0;
path_len = strlen(directory);
while(regs.r[3] > 0)
{
error = _kernel_swi(0x0c+os_X,&regs,&regs); /* OS_GBPB 10, read directory entries */
@@ -202,11 +208,25 @@ void ReadVoiceNames2(char *directory)
}
else
{
p = Alloc(len+1);
p = (char *)malloc(len+1);
strcpy(p,&buf[20]);
voice_names[n_voice_files++] = p;
if(n_voice_files >= (N_VOICE_NAMES-1))
break;
if(strcmp(&directory[path_len-3],".!v")==0)
{
if(n_voice_variant_files >= (N_VOICE_VARIANT_NAMES-1))
continue;
voice_variant_names[n_voice_variant_files++] = p;
}
else
{
if(n_voice_files >= (N_VOICE_NAMES-1))
continue;
voice_names[n_voice_files++] = p;
if(strcmp(p,"en")==0)
{
voice_names[n_voice_files++] = "en+f2";
}
}
}
}
}
@@ -216,13 +236,15 @@ void ReadVoiceNames()
{//===================
char directory[sizeof(path_home)+10];
for(n_voice_files=0; n_voice_files<N_VOICE_NAMES; n_voice_files++)
voice_names[n_voice_files] = NULL;
n_voice_files = 0;
n_voice_variant_files = 0;
sprintf(directory,"%s.voices",path_home);
ReadVoiceNames2(directory);
voice_names[n_voice_files] = NULL;
voice_variant_names[n_voice_variant_files] = NULL;
}
@@ -557,10 +579,13 @@ void set_say_options(int reg2, int reg3)
void jsd_swi_functions(int *r)
/****************************/
{
espeak_VOICE voice_select;
switch(r[0])
{
case 0: /* major version */
r[0] = 3;
r[0] = 4;
r[1] = 331;
break;
case 1: /* register user */
@@ -579,6 +604,7 @@ void jsd_swi_functions(int *r)
case 5: /* get table of voice names */
r[0] = (int)voice_names;
r[1] = (int)voice_variant_names;
break;
case 6: /* update voice data, r1 = voice_number */
@@ -594,6 +620,15 @@ void jsd_swi_functions(int *r)
// init_voice((char *)r[1]);
break;
case 8:
// list voices, r[1] contains optional language name (or "variant")
voice_select.languages = (char *)r[1];
voice_select.age = 0;
voice_select.gender = 0;
voice_select.name = NULL;
r[0] = (int)espeak_ListVoices(&voice_select);
break;
default:
r[0] = 0;
r[1] = 0;
@@ -709,6 +744,72 @@ void PitchAdjust(int pitch_adjustment)
void DisplayVoices(FILE *f_out, char *language)
{//============================================
int ix;
const char *p;
int len;
int count;
int scores = 0;
const espeak_VOICE *v;
const char *lang_name;
char age_buf[12];
const espeak_VOICE **voices;
espeak_VOICE voice_select;
static char genders[4] = {' ','M','F',' '};
if(language[0] == '=')
{
// display only voices for the specified language, in order of priority
voice_select.languages = &language[1];
voice_select.age = 0;
voice_select.gender = 0;
voice_select.name = NULL;
voices = espeak_ListVoices(&voice_select);
scores = 1;
}
else
{
voices = espeak_ListVoices(NULL);
}
fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n");
for(ix=0; (v = voices[ix]) != NULL; ix++)
{
count = 0;
p = v->languages;
while(*p != 0)
{
len = strlen(p+1);
lang_name = p+1;
if(v->age == 0)
strcpy(age_buf," ");
else
sprintf(age_buf,"%3d",v->age);
if(count==0)
{
fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ",
p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier);
}
else
{
fprintf(f_out,"(%s %d)",lang_name,p[0]);
}
count++;
p += len+2;
}
// if(scores)
// fprintf(f_out,"%3d ",v->score);
fputc('\n',f_out);
}
} // end of DisplayVoices
char *param_string(char **argp)
{//============================
char *p;
@@ -860,6 +961,12 @@ void command_line(char *arg_string, int wait)
return;
}
else
if(memcmp(command,"voices",6)==0)
{
DisplayVoices(stdout,&command[6]);
return;
}
else
if(strcmp(command,"help")==0)
{
printf("\nspeak text-to-speech: %s\n%s",version_string,help_text);
+1 -1
View File
@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"
const char *version_string = "1.31.01 23.Jan.08";
const char *version_string = "1.31.03 26.Jan.08";
const int version_phdata = 0x013100;
int option_device_number = -1;
+6 -1
View File
@@ -269,7 +269,7 @@ Translator *SelectTranslator(const char *name)
case L('f','r'): // french
{
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 235};
static const unsigned char stress_amps_fr[8] = {16,14, 20,20, 20,24, 24,22 };
static const unsigned char stress_amps_fr[8] = {18,16, 20,20, 20,22, 22,22 };
tr = new Translator();
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
@@ -421,6 +421,11 @@ SetLengthMods(tr,3); // all equal
}
break;
case L('j','a'): // TEST
tr = new Translator();
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
break;
case L_jbo: // Lojban
{
static const short stress_lengths_jbo[8] = {185,170, 200,200, 0,0, 290,300};
+2
View File
@@ -38,6 +38,8 @@ typedef struct {
int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer)
int voicing; // 100% = 64, level of formant-synthesized sound
int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths)
int consonant_amp; // amplitude of unvoiced consonants
int consonant_ampv; // amplitude of the noise component of voiced consonants
// parameters used by Wavegen
short freq[N_PEAKS]; // 100% = 256
+65 -5
View File
@@ -29,7 +29,9 @@
#ifdef PLATFORM_WINDOWS
#include "windows.h"
#else
#ifndef PLATFORM_RISCOS
#ifdef PLATFORM_RISCOS
#include "kernel.h"
#else
#include "dirent.h"
#endif
#endif
@@ -103,7 +105,7 @@ espeak_VOICE voice_selected;
// these need a phoneme table to have been specified
#define V_REPLACE 28
#define V_CONSONANTS 29
typedef struct {
@@ -141,6 +143,7 @@ static keywtab_t keyword_tab[] = {
{"numbers", V_NUMBERS},
{"option", V_OPTION},
{"mbrola", V_MBROLA},
{"consonants", V_CONSONANTS},
// these just set a value in langopts.param[]
{"l_dieresis", 0x100+LOPT_DIERESES},
@@ -368,6 +371,9 @@ void VoiceReset(int tone_only)
voice->n_harmonic_peaks = 5;
voice->peak_shape = 1;
voice->voicing = 64;
voice->consonant_amp = 100;
voice->consonant_ampv = 100;
#ifdef PLATFORM_RISCOS
voice->roughness = 1;
#else
@@ -836,6 +842,10 @@ voice_t *LoadVoice(const char *vname, int control)
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
break;
case V_CONSONANTS:
value = sscanf(p,"%d %d",&voice->consonant_amp, &voice->consonant_ampv);
break;
case V_MBROLA:
{
int srate = 16000;
@@ -937,8 +947,10 @@ char *ExtractVoiceVariantName(char *vname, int variant_num)
char *p;
static char variant_name[20];
char variant_prefix[5];
variant_name[0] = 0;
sprintf(variant_prefix,"!v%c",PATHSEP);
if(vname != NULL)
{
@@ -953,7 +965,7 @@ char *ExtractVoiceVariantName(char *vname, int variant_num)
else
{
// voice variant name, not number
strcpy(variant_name,"!v/");
strcpy(variant_name,variant_prefix);
strncpy0(&variant_name[3],p,sizeof(variant_name)-3);
}
}
@@ -962,9 +974,9 @@ char *ExtractVoiceVariantName(char *vname, int variant_num)
if(variant_num > 0)
{
if(variant_num < 10)
sprintf(variant_name,"!v/m%d",variant_num); // male
sprintf(variant_name,"%sm%d",variant_prefix, variant_num); // male
else
sprintf(variant_name,"!v/f%d",variant_num-10); // female
sprintf(variant_name,"%sf%d",variant_prefix, variant_num-10); // female
}
return(variant_name);
@@ -1409,6 +1421,54 @@ void GetVoices(const char *path)
char fname[sizeof(path_home)+100];
#ifdef PLATFORM_RISCOS
int len;
int *type;
char *p;
_kernel_swi_regs regs;
_kernel_oserror *error;
char buf[80];
char directory2[sizeof(path_home)+100];
regs.r[0] = 10;
regs.r[1] = (int)path;
regs.r[2] = (int)buf;
regs.r[3] = 1;
regs.r[4] = 0;
regs.r[5] = sizeof(buf);
regs.r[6] = 0;
while(regs.r[3] > 0)
{
error = _kernel_swi(0x0c+0x20000,&regs,&regs); /* OS_GBPB 10, read directory entries */
if((error != NULL) || (regs.r[3] == 0))
{
break;
}
type = (int *)(&buf[16]);
len = strlen(&buf[20]);
sprintf(fname,"%s.%s",path,&buf[20]);
if(*type == 2)
{
// a sub-directory
GetVoices(fname);
}
else
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
continue;
// pass voice file name within the voices directory
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, &buf[20]);
fclose(f_voice);
if(voice_data != NULL)
{
voices_list[n_voices_list++] = voice_data;
}
}
}
#else
#ifdef PLATFORM_WINDOWS
WIN32_FIND_DATA FindFileData;
+18 -10
View File
@@ -748,12 +748,6 @@ void WavegenInit(int rate, int wavemult_fact)
for(ix=0; ix<N_EMBEDDED_VALUES; ix++)
embedded_value[ix] = embedded_default[ix];
if(rate <= 11000)
{
// adjust some parameters for telephony with low sample rates
consonant_amp = 50;
option_harmonic1 = 6;
}
// set up window to generate a spread of harmonics from a
// single peak for HF peaks
@@ -1011,7 +1005,7 @@ static void AdvanceParameters()
} // end of AdvanceParameters
#ifndef PLATFORM_RISCOS
static double resonator(RESONATOR *r, double input)
{//================================================
double x;
@@ -1055,11 +1049,12 @@ static void setresonator(RESONATOR *rp, int freq, int bwidth, int init)
// a = 1.0 - b - c
rp->a = 1.0 - rp->b - rp->c;
} // end if setresonator
#endif
void InitBreath(void)
{//==================
#ifndef PLATFORM_RISCOS
int ix;
minus_pi_t = -PI / samplerate;
@@ -1069,12 +1064,14 @@ void InitBreath(void)
{
setresonator(&rbreath[ix],2000,200,1);
}
#endif
} // end of InitBreath
void SetBreath()
{//=============
#ifndef PLATFORM_RISCOS
int pk;
if(wvoice->breath[0] == 0)
@@ -1089,15 +1086,17 @@ void SetBreath()
setresonator(&rbreath[pk], peaks[pk].freq >> 16, wvoice->breathw[pk],0);
}
}
#endif
} // end of SetBreath
int ApplyBreath(void)
{//==================
int value = 0;
#ifndef PLATFORM_RISCOS
int noise;
int ix;
int amp;
int value = 0;
// use two random numbers, for alternate formants
noise = (rand() & 0x3fff) - 0x2000;
@@ -1110,6 +1109,7 @@ int ApplyBreath(void)
value += int(resonator(&rbreath[ix],noise) * amp);
}
}
#endif
return (value);
}
@@ -1320,10 +1320,12 @@ int Wavegen()
total = (total >> 6) * voicing;
}
#ifndef PLATFORM_RISCOS
if(wvoice->breath[0])
{
total += ApplyBreath();
}
#endif
// mix with sampled wave if required
z2 = 0;
@@ -1558,6 +1560,12 @@ void WavegenSetVoice(voice_t *v)
else
pk_shape = pk_shape2;
consonant_amp = (v->consonant_amp * 26) /100;
if(samplerate <= 11000)
{
consonant_amp = consonant_amp*2; // emphasize consonants at low sample rates
option_harmonic1 = 6;
}
WavegenSetEcho();
}
@@ -1571,7 +1579,7 @@ static void SetAmplitude(int length, unsigned char *amp_env, int value)
amp_inc = (256 * ENV_LEN * STEPSIZE)/length;
amplitude = (value * general_amplitude)/16;
amplitude_v = amplitude * 15; // for wave mixed with voiced sounds
amplitude_v = (amplitude * wvoice->consonant_ampv * 15)/100; // for wave mixed with voiced sounds
amplitude_env = amp_env;
}