language changes: da, pt git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@309 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -102,16 +102,16 @@ _9 n'i | |||
_10 t'i | |||
_11 'Elv@ | |||
_12 t'Vl | |||
_13 tR'&#d@-n // PB & changed to &# | |||
_13 tR'?&#d@-n // PB & changed to &# | |||
_14 fj'ord@-n | |||
_15 f'emt@-n | |||
_15 f'Emd@-n | |||
_16 s'ajsd@-n | |||
_17 s'Wd@-n // PP Y changed to W | |||
_18 '&d@-n // PB a changed to & | |||
_18 '?&d@-n // PB a changed to & | |||
_19 n'ed@-n | |||
_2X t'y:w | |||
_2X t'y:?u | |||
_3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@] | |||
_4X f'W:V //PB [f'W:*3] changed to [ f'W:V] | |||
_4X f'?W:_|V //PB [f'W:*3] changed to [ f'?W:V] | |||
_5X h&l't*Es // PB [a] changed to [&], e changed to E | |||
_6X t*'Es // PB changed from e to E | |||
_7X h&lfj'&rs // PV a changed to & | |||
@@ -187,7 +187,7 @@ fra $u+ // from | |||
ved $u+ // at | |||
om $u+ $brk // about, within | |||
med $u+ // with | |||
af & // PB changed from [a?] to [&] - sound too short in a sentence | |||
af &_| // PB changed from [a?] to [&] - sound too short in a sentence | |||
// Also removed $u from 'af' and other words. They disappeared. | |||
ad &: // PB added 'ad' | |||
ad &D $atend $sentence // PB "Det må ikke skille os ad." | |||
@@ -221,10 +221,10 @@ hvis ves $u+ // PB - whose | |||
// possessive pronouns | |||
min min $u | |||
mit mit $u | |||
mine m'in@ | |||
mine m'in3 | |||
din d'in $u+ | |||
dit d'it $u | |||
dine d'ine | |||
dine d'in3 | |||
deres dE:Vs $u | |||
hans $u+ | |||
hendes $u+ | |||
@@ -288,7 +288,6 @@ night _^_EN | |||
the _^_EN | |||
skinhead _^_EN | |||
skinheads _^_EN | |||
street _^_EN | |||
boy _^_EN | |||
square _^_EN | |||
apple _^_EN | |||
@@ -11125,18 +11124,18 @@ tournure $alt | |||
// exceptions | |||
alene &l'en@ // alone | |||
egen a:j@n | |||
egen _|aj@-n | |||
mc mak' $capital // PB McDonald | |||
egne a:in@ | |||
egne ajn@- | |||
enter entV | |||
ide id'e // idea | |||
idé id'e // idea | |||
tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] | |||
ny ny // new | |||
også Vs@ // also | |||
også Vs@- // also | |||
idet id'e // in so far as | |||
(rub og stub) R'Ob||V||sd'Ob | |||
tre tr'e // the number 3 | |||
tre tr'E // the number 3 | |||
rejicere rejis'eV // PB should not be pronounced [raje] | |||
rejicerer rejis'eV // PB | |||
rejiceres rejis'eVs // PB | |||
@@ -11151,6 +11150,7 @@ konfirmanderne kVnferm'&nd3-n@ // PB | |||
konfirmandernes kVnferm'&nd3-n@s // PB | |||
giv g'i // PB the v shouldn't be pronounced | |||
giver gir // PB the v shouldn't be pronounced | |||
opgiver Vpgir // PB | |||
jaloux sj&'lu // PB jaloux | |||
aficionado afisjo'na:do // PB | |||
breakdance brEig'da:ns // PB breakdance | |||
@@ -11184,7 +11184,7 @@ shampu Sjambo // PB Danish pronunciation - oo has been replaced b | |||
wien v'i:n // PB Wien - the town of Vienna | |||
calais kal'E // PB Calais - town in France | |||
date dejt // PB date - stævnemøde | |||
siger sir // PB silent d | |||
//siger sir // PB silent d | |||
(tids nok) tis||n'Vk // PB silent d | |||
skateboardet sk'eitbo@d3D // PB | |||
(hole in one) h'oulinw,0n // PB English golf expression used in Danish | |||
@@ -11253,10 +11253,15 @@ ikes ajks // PB | |||
(deres kvarter) dE:Vs||kvA'ter // PB | |||
(det kvarter) de||kvA'ter // PB | |||
(i kvarter) i||kv'A:dV | |||
(at have) &||h&: // PB the verb 'have', not the noun 'have' = garden | |||
(vil have) vel||h'&: // PB | |||
(du have) du||h&: // PB | |||
(må have) m'O:||h&: // PB | |||
(at have) &||h& // PB the verb 'have', not the noun 'have' = garden | |||
(vil have) vel||h'& // PB | |||
(ville have) v?il3||h'& // PB | |||
(du have) du||h& // PB | |||
(må have) mO:||h& // PB | |||
(skal have) sk?&||h& // PB | |||
(helst have) h'Elst||h& | |||
(gerne have) g'Ern3||h& | |||
(kan have) k?&n||h& // PB | |||
(ikke have) ege||h& // PB | |||
// PB 'hav' = ocean - 'hav' = have (a nice day) | |||
(et hav) ed||hAu |
@@ -53,18 +53,19 @@ p r s S t T v w | |||
x z | |||
Dictionary da_dict 2013-01-30 | |||
Dictionary da_dict 2013-03-06 | |||
& &# 0 3 ?& ?e ?E ?i | |||
?O ?u ?W ?y @ @- a A | |||
aI e E i o O u V | |||
& &# 0 3 ?& ?&# ?0 ?a | |||
?A ?e ?E ?i ?o ?O ?u ?V | |||
?W ?W# ?y @ @- a A aI | |||
e E i I o O u V | |||
W W# y Y | |||
* - : ? b B d D | |||
dZ f g h j J k l | |||
l/2 l/3 m n N p r R | |||
R3 s S t T tS v w | |||
x z Z | |||
* - 3- : ; ? b B | |||
d D dZ f g h j J | |||
k l l/2 l/3 m n N p | |||
r R R3 s S t T tS | |||
v w x z Z | |||
Dictionary hu_dict 2013-02-25 | |||
@@ -378,7 +379,7 @@ S s; S; t t; tS ts tS; | |||
ts; v w x z Z Z; | |||
Dictionary pt_dict 2013-03-06 | |||
Dictionary pt_dict 2013-03-07 | |||
& &/ &U~ &~ @ @- a A | |||
aI aU e E eI EI eU EU | |||
@@ -539,7 +540,7 @@ n^ p p` r s S t t` | |||
tS tS` v w x z Z | |||
Dictionary ml_dict 2013-02-28 | |||
Dictionary ml_dict 2013-03-06 | |||
@ a a# a: aI aU e E | |||
e: i I i: o o: r- u |
@@ -3678,6 +3678,7 @@ Disney dIzni | |||
Dolce d0ltSeI | |||
Dvorak d@-vo@Zak | |||
Emory Em3ri | |||
Fleming flEmIN | |||
Folger foUldZ3 | |||
Genghis dZENgIs | |||
Gibson gIbs@n |
@@ -730,7 +730,6 @@ concerto $alt2 $noun | |||
concordo $alt | |||
conforto $alt $verb | |||
consolo $alt2 $noun | |||
contivermos $alt | |||
controle $alt2 $noun | |||
controlo $alt2 $noun | |||
coreia $alt | |||
@@ -741,12 +740,8 @@ corto $alt | |||
corveta $alt2 | |||
corvos $alt | |||
coto $alt2 | |||
couberdes $alt | |||
coubermos $alt | |||
cratera $alt | |||
crede $alt2 | |||
der $alt | |||
derdes $alt | |||
desapego $alt2 $noun | |||
descabelo $alt | |||
descordo $alt | |||
@@ -779,9 +774,6 @@ envelope $alt | |||
envolto $alt2 | |||
enxerto $alt2 $noun | |||
epopeia $alt | |||
erga $alt2 | |||
ergam $alt2 | |||
ergo $alt2 | |||
eritreia $alt | |||
erro $alt2 $noun | |||
erros $alt2 | |||
@@ -799,8 +791,6 @@ espiroqueta $alt2 | |||
espoleta $alt2 | |||
esposa $alt2 | |||
esqueleto $alt2 | |||
estiverdes $alt | |||
estivermos $alt | |||
estrela $alt2 | |||
estrofe $alt | |||
estorno $alt $verb | |||
@@ -818,8 +808,6 @@ fera $alt | |||
ferozes $alt | |||
fezes $alt | |||
?1 fixe fiSy | |||
fizerdes $alt | |||
fizermos $alt | |||
foda $alt2 $verb | |||
folheto $alt2 | |||
folga $alt | |||
@@ -857,8 +845,6 @@ grozo $alt $verb | |||
hemorroida $alt | |||
hoje $alt2 | |||
horrores $alt2 | |||
houverdes $alt | |||
houvermos $alt | |||
ideia $alt | |||
insonoro $alt | |||
interesse $alt2 $noun | |||
@@ -869,9 +855,6 @@ lebre $alt | |||
lopes $alt | |||
maior $alt | |||
maleta $alt2 | |||
mantiverdes $alt | |||
mantiveres $alt | |||
mantivermos $alt | |||
marcelo $alt | |||
marmelo $alt | |||
marreta $alt2 | |||
@@ -892,7 +875,6 @@ minueto $alt2 | |||
miolo $alt2 | |||
miolos $alt | |||
moeda $alt | |||
modos $alt | |||
molho $alt2 $noun | |||
monera $alt | |||
morcego $alt2 | |||
@@ -913,15 +895,13 @@ naquele $alt2 $nounf | |||
nervo $alt2 | |||
novos $alt | |||
obstetra $alt | |||
obtivera $alt | |||
obtivermos $alt | |||
odisseia $alt | |||
onu $1 | |||
olho $alt2 $noun | |||
osso $alt2 | |||
ossos $alt | |||
opereta $alt2 | |||
ordens $alt | |||
osso $alt2 | |||
ossos $alt | |||
ostra $alt2 | |||
ovos $alt | |||
pachorra $alt2 | |||
@@ -937,8 +917,6 @@ pastora $alt2 | |||
pedra $alt | |||
pelego $alt2 | |||
pelo $alt $verb | |||
pesque $alt | |||
pesquem $alt | |||
peso $alt $verb | |||
piloto $alt2 $noun | |||
pintora $alt2 | |||
@@ -957,15 +935,9 @@ poxa p'oS& | |||
preço $alt2 | |||
primavera $alt | |||
provo $alt | |||
puder $alt | |||
puderdes $alt | |||
pudermos $alt | |||
puserdes $alt | |||
quarteto $alt2 | |||
queda $alt | |||
quinteto $alt2 | |||
quiserdes $alt | |||
quisermos $alt | |||
recomeço $alt2 $noun | |||
recordo $alt | |||
recorto $alt | |||
@@ -1006,8 +978,6 @@ sopro $alt2 $noun | |||
soro $alt2 | |||
sorvete $alt2 | |||
sossego $alt2 $noun | |||
souberdes $alt | |||
soubermos $alt | |||
suborno $alt $verb | |||
sufoco $alt2 $noun | |||
sufocos $alt2 | |||
@@ -1017,8 +987,6 @@ tapete $alt2 | |||
tempero $alt2 $noun | |||
teta $alt2 | |||
tetra $alt | |||
tiverdes $alt | |||
tivermos $alt | |||
tocha $alt | |||
toga $alt | |||
topo $alt $verb | |||
@@ -1039,7 +1007,6 @@ valeta $alt2 | |||
vanessa $alt2 | |||
velozes $alt | |||
verme $alt | |||
vierem $alt | |||
violeta $alt2 | |||
violoncelo $alt | |||
voga $alt |
@@ -19,8 +19,8 @@ | |||
.L02 e em | |||
.L03 a am o | |||
.L04 a am e em o ue uem | |||
.L05 r ra ram re rem rdes | |||
.L06 ra ram ste re rem | |||
.L05 r ra ram re rem rde rmo | |||
.L06 ra ram ste re rem rmo | |||
.L07 sse ssem ste | |||
@@ -345,13 +345,18 @@ | |||
sf) e (ra_ E // esfera, biosfera | |||
//sort | |||
_d) e (L05_ E | |||
_vi) e (L05_ E | |||
fiz) e (L05_ E | |||
pus) e (L05_ E / com- im- de- | |||
tiv) e (L05_ E // es- | |||
_com) e (L05_ e | |||
_pud) e (L05_ E | |||
_coub) e (L05_ E | |||
_exag) e (L05_ E | |||
_houv) e (L05_ E | |||
_perd) e (L05_ e | |||
_quis) e (L05_ E | |||
_soub) e (L05_ E | |||
_rend) e (L06_ e | |||
_vend) e (L06_ e | |||
@@ -369,6 +374,7 @@ respond) e (L06_ e // cor- | |||
_tem) e (L07_ e | |||
colh) e (L07_ e // & es- | |||
corr) e (L07_ e // per- con- in- so- dis- | |||
nasc) e (L07_ e / re- | |||
torc) e (L07_ e // con- | |||
venc) e (L07_ e // con- | |||
vert) e (L07_ e // in- re- con- | |||
@@ -384,11 +390,14 @@ respond) e (L06_ e // cor- | |||
_aborrec) e (L07_ e | |||
_adoec) e (L07_ e | |||
_adormec) e (L07_ e | |||
_agradec) e (L07_ e | |||
_amanhec) e (L07_ e | |||
_anoitec) e (L07_ e | |||
_arrepend) e (L07_ e | |||
_cresc) e (L07_ e | |||
_defend) e (L07_ e | |||
_depend) e (L07_ e | |||
_emagrec) e (L07_ e | |||
_enlouquec) e (L07_ e | |||
_entristec) e (L07_ e | |||
_envaidec) e (L07_ e | |||
@@ -416,14 +425,13 @@ respond) e (L07_ e // cor- | |||
_p) e (quL02_ E | |||
_s) e (quL02_ E | |||
l) e (que_ E | |||
_sug) e (rL02_ E | |||
_imp) e (rL03_ E | |||
_sev) e (rL03_ E | |||
_reit) e (rL03_ E | |||
_sinc) e (rL03_ E | |||
_g) e (rL04_ E | |||
g) e (rL04_ E / su- refri- | |||
qu) e (rL04_ E / re- | |||
_op) e (rL04_ E | |||
_qu) e (rL04_ E | |||
_alt) e (rL04_ E | |||
_sup) e (rL04_ E | |||
_tol) e (rL04_ E | |||
@@ -434,6 +442,7 @@ respond) e (L07_ e // cor- | |||
_p) e (rdL02_ E | |||
_l) e (rdL03_ E | |||
_h) e (rdL04_ E | |||
_) e (rgL03_ e | |||
_) e (rguL02_ E | |||
_alb) e (rguL02_ E | |||
_enx) e (rguL02_ E | |||
@@ -445,6 +454,7 @@ respond) e (L07_ e // cor- | |||
_cr) e (scL02_ E | |||
_p) e (scL03_ E | |||
_m) e (sclL04 E | |||
_p) e (squL02_ E | |||
_l) e (ssL02_ e | |||
_esp) e (ssL03_ e | |||
_c) e (stL03_ e | |||
@@ -464,6 +474,7 @@ _obsol) e (tL03_ e | |||
_embel) e (zL04_ E | |||
_acont) e (çL01_ e | |||
_arref) e (çL01_ e | |||
_emagr) e (çL03 | |||
par) e (çL03_ e // a- re- com- rea- desa- | |||
_ado) e (çL03_ e | |||
_aqu) e (çL03_ e | |||
@@ -478,6 +489,7 @@ _arref) e (çL01_ e | |||
_ofer) e (çL03_ e | |||
abast) e (çL03_ e // re- | |||
_aborr) e (çL03_ e | |||
_agrad) e (çL03_ e | |||
_amanh) e (çL03_ e | |||
_anoit) e (çL03_ e | |||
_enfraqu) e (çL03_ e | |||
@@ -803,6 +815,7 @@ _desabr) o (chL04_ O | |||
_c) o (pL03_ O | |||
_ens) o (pL04_ O | |||
_s) o (prL04_ O | |||
_) o (ptL04_ O | |||
_enf) o (rquL02_ O | |||
c) o (rrL01_ o // escorra, incorra, corra, recorra | |||
_m) o (rrL01_ o | |||
@@ -1095,4 +1108,3 @@ _desabr) o (chL04_ O | |||
__) - (_D m'enUs | |||
A_) - (_D _ | |||
C_) - (_D _ | |||
@@ -64,7 +64,7 @@ consonants 10 118 | |||
id 15 127 | |||
sq 33 127 | |||
hy 23 119 | |||
da 36 131 | |||
da 46 139 | |||
ka 20 114 | |||
rw 15 132 | |||
pa 15 152 | |||
@@ -341,37 +341,46 @@ j2/j2u [;] base | |||
j2/xj2 [;] base | |||
j/_j [j] base | |||
[j] zh | |||
[j] da | |||
j/j_ [j] base | |||
[j] de | |||
[j] zh | |||
[j] da | |||
j/j@ [j] base | |||
[j] de | |||
[j/] fr | |||
[j] zh | |||
[j] da | |||
j/ja [j] base | |||
[j] de | |||
[j/] fr | |||
[j] zh | |||
[j] da | |||
j/je [j] base | |||
[j] de | |||
[j/] fr | |||
[j] zh | |||
[j] da | |||
j/ji [j] base | |||
[j] de | |||
[j/] fr | |||
[j] zh | |||
[j] da | |||
j/jo [j] base | |||
[j] de | |||
[j/] fr | |||
[j] zh | |||
[j] da | |||
j/_j_short [j] de | |||
j/ju [j] base | |||
[j] de | |||
[j/] fr | |||
[j] zh | |||
[j] da | |||
j/xj [j] base | |||
[j] de | |||
[j] zh | |||
[j] da | |||
klatt/b [b] base | |||
[b] fr | |||
klatt/bh [B] base | |||
@@ -433,7 +442,7 @@ l/l_ [l] base | |||
[l/] fr | |||
l/l_@ [l/3] base | |||
[l/] fr | |||
l/l@ [¨\-] base | |||
l/l@ [¨-] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -467,7 +476,7 @@ l/L2_oL [l/2] base | |||
l/L2_uL [l/2] base | |||
l/l_3 [l/] de | |||
l/l_4 [ll] sq | |||
l/la [¨\-] base | |||
l/la [¨-] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -475,7 +484,7 @@ l/la [ | |||
[K] tn | |||
l/l_a [l/3] base | |||
[l/] fr | |||
l/le [¨\-] base | |||
l/le [¨-] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -487,7 +496,7 @@ l/L_eL_af [&] af | |||
[&:] af | |||
l/l_front [L] sq | |||
l/l_front_ [l/4] sq | |||
l/li [¨\-] base | |||
l/li [¨-] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -501,7 +510,7 @@ ll/ll [L] base | |||
ll/_ll [L] base | |||
l/l_long [l] base | |||
[l] fr | |||
l/lo [¨\-] base | |||
l/lo [¨-] base | |||
[l#] base | |||
[l/2] fr | |||
[K] nso | |||
@@ -512,7 +521,7 @@ l^/l_rfx [l.] base | |||
[l;] lt | |||
[l] ru | |||
[l^] ru | |||
l/lu [¨\-] base | |||
l/lu [¨-] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -712,6 +721,7 @@ r3/@tap2 [**] base | |||
[*] ko | |||
r3/@tap_rfx [r.] base | |||
r/a_ [r] da | |||
[3-] da | |||
r/aa [R] da | |||
r/r [r] base | |||
[r-] en | |||
@@ -1497,6 +1507,7 @@ vowel/@ [@] base | |||
[U#] ga | |||
vowel/@- [@-] base | |||
[r*] hr | |||
[@-] da | |||
vowel/& [a] en-rp | |||
[&] fi | |||
[&] et | |||
@@ -1507,6 +1518,7 @@ vowel/& [a] en-rp | |||
[ja#] ru | |||
[&] sv | |||
[&#] da | |||
[?&#] da | |||
[&] az | |||
[a] fa | |||
vowel/0 [0] en | |||
@@ -1611,6 +1623,7 @@ vowel/a_2 [a] base2 | |||
[a] ro | |||
[a] el | |||
[a] da | |||
[?a] da | |||
[a] rw | |||
vowel/a#_2 [a] kn | |||
[a] ml | |||
@@ -1640,6 +1653,7 @@ vowel/a_3 [a] en-sc | |||
[A] zh | |||
[a] sq | |||
[A] da | |||
[?A] da | |||
[a:] si | |||
vowel/a#_3 [a#] en | |||
[a#] en-n | |||
@@ -2133,6 +2147,7 @@ vowel/o_2 [o:] cy | |||
[o:] no | |||
[o] vi | |||
[o] da | |||
[?o] da | |||
vowel/o-_2 [V] en-n | |||
[V] en-wm | |||
vowel/o_3 [oU] en-sc | |||
@@ -2218,6 +2233,7 @@ vowel/oo_2 [0] en-sc | |||
[O] cy | |||
[o] cs | |||
[0] da | |||
[?0] da | |||
[O] ak | |||
[@] ko | |||
vowel/oo_3 [O] af | |||
@@ -2388,6 +2404,7 @@ vowel/V [3] en-sc | |||
[@] bg | |||
[@] vi | |||
[W#] da | |||
[?W#] da | |||
vowel/V_2 [V] en | |||
[a] af | |||
[V] fr | |||
@@ -2402,6 +2419,7 @@ vowel/V_3 [V] en-rp | |||
[V] pa | |||
vowel/V_4 [V] en-sc | |||
[V] da | |||
[?V] da | |||
vowel/V_6 [V] en-us | |||
[a#] lv | |||
vowel/y [y] base2 |
@@ -2,22 +2,72 @@ | |||
phoneme @ | |||
vowel starttype #@ endtype #@ | |||
unstressed | |||
length 110 | |||
length 60 | |||
FMT(vowel/@_3) | |||
endphoneme | |||
phoneme @- // very short schwa | |||
vowel starttype #@ endtype #@ | |||
unstressed nonsyllabic | |||
ipa ə | |||
IF nextPhW(*) OR nextPhW(r) THEN | |||
ipa NULL // @-* is used to make 'r' | |||
ENDIF | |||
length 40 | |||
FMT(vowel/@-) | |||
endphoneme | |||
// ToDo: change [@] to [a#] if adjacent to [r] or [R] | |||
phoneme 3 | |||
vowel starttype #a endtype #a | |||
unstressed | |||
length 110 | |||
length 40 | |||
FMT(vowel/a#_3) | |||
endphoneme | |||
// PB sort of schwa [ɐ] (0250+032F) | |||
// "spurgt" [sp'o3-d] – ipa [spˈoɐ̯d] | |||
phoneme 3- // used for 'r' after a vowel (to create a diphthong) | |||
liquid | |||
lengthmod 7 | |||
ipa ɐ̯ | |||
FMT(r/a_) | |||
endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 150 | |||
IfNextVowelAppend(;) | |||
// IfNextVowelAppend(;) | |||
IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// PB "tie", "stige", "krige" vowel + vowel: extra length | |||
// What is causing this very short [i] in words with final [@-]? | |||
// NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n] | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN | |||
length 240 | |||
ENDIF | |||
// "siden" | |||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN | |||
length 150 | |||
ENDIF | |||
// "lise" | |||
IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN | |||
length 150 | |||
ENDIF | |||
// PB "Bishop" | |||
IF nextPhW(S) AND next2PhW(V) THEN | |||
length 90 | |||
ENDIF | |||
// "pjækkeri", "røveri" | |||
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
length 90 | |||
ENDIF | |||
// "vilje" | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
length 90 | |||
ENDIF | |||
FMT(vowel/i_4) | |||
endphoneme | |||
@@ -25,7 +75,7 @@ endphoneme | |||
// sviret vs. svirret | |||
phoneme ?i | |||
vowel starttype #i endtype #i | |||
length 95 | |||
length 90 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i_4) | |||
endphoneme | |||
@@ -41,6 +91,42 @@ endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 150 | |||
ENDIF | |||
// "delte", "mante", "evig" [evi] | |||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@) OR nextVowel(@-) THEN | |||
length 150 | |||
ENDIF | |||
// "prinsen" - TEST | |||
IF nextPhW(n) AND next2PhW(s) THEN | |||
length 90 | |||
ENDIF | |||
// "slesk", "sleske" short vowel | |||
IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN | |||
length 90 | |||
ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN | |||
length 90 | |||
// "skriften" - very broad: short before 2 consonants | |||
ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) THEN | |||
length 90 | |||
ENDIF | |||
// PB "ring", "ringe" | |||
IF nextPhW(N) THEN | |||
length 90 | |||
ENDIF | |||
// PB "enig", "enige", "evig" | |||
IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||
length 150 | |||
ENDIF | |||
// "labyrinter" , "labyrinten" - short followed by 2 consonants | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
length 60 | |||
ENDIF | |||
FMT(vowel/e) | |||
endphoneme | |||
@@ -48,13 +134,44 @@ endphoneme | |||
// "skille" vs. "skele", "pille" vs. "pile" | |||
phoneme ?e | |||
vowel starttype #e endtype #e | |||
length 95 | |||
length 90 | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// example? | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 50 | |||
ENDIF | |||
// "værelse", "breve" | |||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN | |||
length 150 | |||
ENDIF | |||
// "fest", "feste" short vowel | |||
IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN | |||
length 90 | |||
ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN | |||
length 90 | |||
// PB knægten | |||
ELIF nextPhW(g) AND next2PhW(t) AND nextVowel(@-) THEN | |||
length 90 | |||
// "femten", "tænker" - very broad: short before 2 consonants | |||
ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) OR nextVowel(V)THEN | |||
length 90 | |||
// PB "kærlig" [k'Erli]- a bit longer because og the missing [ɐ] [ˈkæɐ̯li] | |||
ELIF nextPhW(r) AND next2PhW(isNotVowel) AND nextVowel(i) THEN | |||
length 130 | |||
ENDIF | |||
// "ære", "kærester", "ærefrygt" - longer E | |||
IF nextPhW(V) THEN | |||
length 180 | |||
ENDIF | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
@@ -62,21 +179,57 @@ endphoneme | |||
// "læsse" vs. "læse" | |||
phoneme ?E | |||
vowel starttype #e endtype #e | |||
length 95 | |||
length 90 | |||
// PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ] | |||
// Changed now [f'?E3-V] but it won't do any harm | |||
IF nextPhW(V) THEN | |||
length 120 | |||
ENDIF | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
phoneme & | |||
vowel starttype #e endtype #e | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// PB "sable", "sabler", "anede", "David" | |||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN | |||
length 150 | |||
ENDIF | |||
// "stadig" [st&Di] | |||
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | |||
length 180 | |||
// "stadigt" [st&Dit] | |||
ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND next2PhW(t) THEN | |||
length 180 | |||
// "latin" [l&t'in] | |||
ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND NOT next2PhW(t) THEN | |||
length 90 | |||
ENDIF | |||
// "ae", "aer", "dagen" vowel + vowel: extra length | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 240 | |||
ENDIF | |||
// "Alfie", "alfer" - short before 2 consonants | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
length 90 | |||
ENDIF | |||
// "Omaha" | |||
IF thisPh(isWordEnd) THEN | |||
length 90 | |||
ENDIF | |||
FMT(vowel/ee_2) | |||
endphoneme | |||
// PB Experimental glottal a | |||
// e.g. the last a in "staldkarl" | |||
// "sale" vs. "sal" | |||
phoneme ?& | |||
vowel starttype #e endtype #e | |||
length 95 | |||
length 90 | |||
FMT(vowel/ee_2) | |||
endphoneme | |||
@@ -84,44 +237,150 @@ endphoneme | |||
phoneme &# | |||
vowel starttype #e endtype #e | |||
length 120 | |||
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 150 | |||
ENDIF | |||
FMT(vowel/&) | |||
endphoneme | |||
// PB short &# | |||
// "revl" vs. "tremme" | |||
phoneme ?&# | |||
vowel starttype #e endtype #e | |||
length 90 | |||
FMT(vowel/&) | |||
endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
length 150 | |||
ENDIF | |||
FMT(vowel/a_2) | |||
endphoneme | |||
// PB short (glottal) a | |||
// "bragt" | |||
phoneme ?a | |||
vowel starttype #a endtype #a | |||
length 90 | |||
FMT(vowel/a_2) | |||
endphoneme | |||
phoneme A | |||
vowel starttype #a endtype #a | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
length 150 | |||
ENDIF | |||
// "far", "bastard" - a bit longer followed by [r] | |||
IF nextPhW(r) THEN | |||
length 120 | |||
ENDIF | |||
FMT(vowel/a_3) | |||
endphoneme | |||
// PB glottal a | |||
// "drab" vs. "drabelig" | |||
phoneme ?A | |||
vowel starttype #a endtype #a | |||
length 90 | |||
// "straffeattest", "straffe" - a bit longer after R | |||
IF prevPhW(R) AND nextPhW(isNotVowel) THEN | |||
length 120 | |||
ENDIF | |||
FMT(vowel/a_3) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 150 | |||
// Short vowel followed by consonant and NOT consonant + 3 or V or @ | |||
// "blus" vs. "bluse" and "bluser" | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// "hue", "suge", "uge" | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 150 | |||
ENDIF | |||
// extra length followed by 3 or V or @ | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 240 | |||
ENDIF | |||
// "umulig" | |||
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | |||
length 180 | |||
ENDIF | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
// PB glottal u | |||
// "gud" vs. "guden" - [guD] [g?D@n] | |||
// "tude" vs. "tuden" - [tuD3] [t?uD@n] | |||
phoneme ?u | |||
vowel starttype #u endtype #u | |||
length 95 | |||
length 90 | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// "tro" | |||
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 150 | |||
ENDIF | |||
// "modig" - long vowel after consonant + [i] | |||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN | |||
length 150 | |||
ENDIF | |||
FMT(vowel/o_2) | |||
endphoneme | |||
// PB Short o | |||
// "patron" vs. "kone" | |||
phoneme ?o | |||
vowel starttype #o endtype #o | |||
length 95 | |||
FMT(vowel/o_2) | |||
endphoneme | |||
phoneme O | |||
vowel starttype #o endtype #o | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// PB "gået" | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
length 150 | |||
ENDIF | |||
// "rådig" | |||
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN | |||
length 180 | |||
ENDIF | |||
FMT(vowel/o_5) | |||
endphoneme | |||
@@ -129,46 +388,151 @@ endphoneme | |||
// "toget" vs. "tåget" | |||
phoneme ?O | |||
vowel starttype #o endtype #o | |||
length 95 | |||
length 90 | |||
FMT(vowel/o_5) | |||
endphoneme | |||
phoneme V | |||
vowel starttype #@ endtype #@ | |||
length 150 | |||
// "sport" [spV:t] | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN | |||
length 150 | |||
ENDIF | |||
// PB short V in "holder", "solder" | |||
IF nextPhW(isNotVowel) AND next2Ph(V) THEN | |||
length 90 | |||
ENDIF | |||
// PB "snorke", "snorker", årlig | |||
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN | |||
length 180 | |||
ENDIF | |||
// "sove" [sVw3] - longer followed by w + 3 | |||
IF nextPhW(w) AND next2PhW(3) THEN | |||
length 220 | |||
ENDIF | |||
FMT(vowel/V_4) | |||
endphoneme | |||
// PB Glottal (short) å | |||
// "forstår" vs. "kåre" | |||
phoneme ?V | |||
vowel starttype #@ endtype #@ | |||
length 100 | |||
FMT(vowel/V_4) | |||
endphoneme | |||
phoneme 0 | |||
vowel starttype #o endtype #o | |||
length 150 | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 150 | |||
ENDIF | |||
FMT(vowel/oo_2) | |||
endphoneme | |||
// ?B short 0 "sukker" | |||
phoneme ?0 | |||
vowel starttype #o endtype #o | |||
length 90 | |||
FMT(vowel/oo_2) | |||
endphoneme | |||
phoneme y | |||
vowel starttype #i endtype #i | |||
// experiment: changed to short from 150 | |||
length 150 | |||
// Short vowel followed by consonant and NOT consonant + 3 or V | |||
// "lyd" vs. "lyde" and "lyder" | |||
IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@)AND NOT next2PhW(@-) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// "syg" [sy] | |||
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
length 90 | |||
ENDIF | |||
// "skyd" | |||
IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN | |||
length 90 | |||
ENDIF | |||
// "dydig" [dyDi] | |||
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN | |||
length 150 | |||
ENDIF | |||
// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN | |||
length 220 | |||
ENDIF | |||
// PB "kryster" - short y | |||
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
length 80 | |||
ENDIF | |||
// PB "gryden" | |||
FMT(vowel/y) | |||
endphoneme | |||
// PB glottal y | |||
// PB Short y | |||
// "kylling" vs. "kyle", "krybbe" vs. "krybe" | |||
phoneme ?y | |||
vowel starttype #i endtype #i | |||
length 95 | |||
length 70 | |||
FMT(vowel/y) | |||
endphoneme | |||
phoneme Y | |||
vowel starttype #i endtype #i | |||
length 150 | |||
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 150 | |||
ENDIF | |||
FMT(vowel/yy) | |||
endphoneme | |||
phoneme W | |||
vowel starttype #@ endtype #@ | |||
length 150 | |||
length 160 | |||
// Shorter vowel when followed by consonant | |||
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
// "kløe" vowel + vowel: extra length | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
length 220 | |||
ENDIF | |||
// "klø" short W when word ends with W | |||
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
length 90 | |||
ENDIF | |||
// røde" W + 1 consonant + 3 or W or @ | |||
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) THEN | |||
length 160 | |||
ENDIF | |||
// PB "nødig", "nødigt", "kølige" | |||
IF nextVowel(i) THEN | |||
length 160 | |||
ENDIF | |||
// "møve" [mWw@-] | |||
IF nextPhW(w) AND nextVowel(@-) THEN | |||
length 160 | |||
ENDIF | |||
// "børnebog" | |||
IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN | |||
length 150 | |||
ENDIF | |||
FMT(vowel/oe) | |||
endphoneme | |||
@@ -176,7 +540,7 @@ endphoneme | |||
// "prøv" vs. "prøve" | |||
phoneme ?W | |||
vowel starttype #@ endtype #@ | |||
length 80 | |||
length 95 | |||
FMT(vowel/oe) | |||
endphoneme | |||
@@ -184,12 +548,38 @@ endphoneme | |||
phoneme W# | |||
vowel starttype #@ endtype #@ | |||
length 150 | |||
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 90 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
length 150 | |||
ENDIF | |||
FMT(vowel/V) | |||
endphoneme | |||
// PB short W# | |||
// "rømme" | |||
phoneme ?W# | |||
vowel starttype #@ endtype #@ | |||
length 90 | |||
FMT(vowel/V) | |||
endphoneme | |||
phoneme aI | |||
vowel starttype #a endtype #i | |||
length 250 | |||
length 300 | |||
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN | |||
glstop | |||
length 150 | |||
ENDIF | |||
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
length 300 | |||
ENDIF | |||
// PB "drej" vs. "dreje" | |||
IF thisPh(isWordEnd) THEN | |||
length 140 | |||
ENDIF | |||
FMT(vdiph/ai) | |||
endphoneme | |||
@@ -209,25 +599,24 @@ phoneme v // approximant, not fricative | |||
voicingswitch f | |||
endphoneme | |||
// PB Actually a kind of schwa = [ɐ]? - "byder" [bˈyðɐʌ] | |||
phoneme r // used for 'r' after a vowel (to create a diphthong) | |||
liquid | |||
lengthmod 7 | |||
IF nextPhW(isVowel) THEN | |||
ipa ɐ̯ | |||
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN | |||
ChangePhoneme(R) | |||
ENDIF | |||
FMT(r/a_) | |||
endphoneme | |||
phoneme R | |||
lengthmod 7 | |||
lengthmod 6 | |||
liquid | |||
ipa ʁ | |||
FMT(r/aa) | |||
endphoneme | |||
// don't weaken consonants at end of word or before a stop | |||
phoneme s | |||
@@ -243,11 +632,10 @@ phoneme s | |||
WAV(ufric/s) | |||
endphoneme | |||
phoneme p | |||
vls blb stop | |||
voicingswitch b | |||
lengthmod 2 | |||
lengthmod 7 | |||
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||
@@ -265,12 +653,10 @@ phoneme p | |||
WAV(ustop/p) | |||
endphoneme | |||
phoneme t | |||
vls alv stop | |||
voicingswitch d | |||
lengthmod 2 | |||
lengthmod 7 | |||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
@@ -280,3 +666,28 @@ phoneme t | |||
WAV(ustop/t, 90) | |||
endphoneme | |||
phoneme j | |||
liquid palatal | |||
lengthmod 7 | |||
IF nextPhW(isVowel) THEN | |||
NextVowelStarts | |||
VowelStart(j/j@) | |||
VowelStart(j/ja) | |||
VowelStart(j/je,-60) | |||
VowelStart(j/ji) | |||
VowelStart(j/jo) | |||
VowelStart(j/ju) | |||
EndSwitch | |||
Vowelout len=70 | |||
VowelEnding(j/xj, -30) | |||
IF prevPh(isPause) THEN | |||
FMT(j/_j) | |||
ENDIF | |||
ELSE | |||
// no vowel follows | |||
Vowelout len=70 | |||
FMT(j/j_) | |||
ENDIF | |||
endphoneme |
@@ -28,8 +28,6 @@ | |||
//#define SPECT_EDITOR | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
#define _ESPEAKEDIT | |||
#include <windows.h> | |||
#define PLATFORM_WINDOWS | |||
@@ -63,7 +61,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 120 | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); |
@@ -28,8 +28,6 @@ | |||
//#define SPECT_EDITOR | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
#define _ESPEAKEDIT | |||
#include <windows.h> | |||
#define PLATFORM_WINDOWS | |||
@@ -63,7 +61,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 120 | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); |
@@ -36,8 +36,6 @@ | |||
#define NO_VARIADIC_MACROS | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
@@ -45,6 +43,11 @@ | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
@@ -57,7 +60,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 220 | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); |
@@ -39,8 +39,6 @@ | |||
#define LIBRARY | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
@@ -48,6 +46,11 @@ | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
@@ -60,7 +63,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 120 | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); |
@@ -41,8 +41,6 @@ | |||
//#define USE_NANOSLEEP | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
@@ -50,6 +48,11 @@ | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
@@ -62,7 +65,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 220 | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); |
@@ -310,6 +310,11 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) | |||
p++; // skip over the zero which terminates the list for this hash value | |||
} | |||
if((tr->dict_min_size > 0) && (size < tr->dict_min_size)) | |||
{ | |||
fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | |||
} | |||
return(0); | |||
} // end of LoadDictionary | |||
@@ -76,9 +76,9 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
#ifdef PLATFORM_WINDOWS | |||
#define N_PATH_HOME 220 | |||
#define N_PATH_HOME 230 | |||
#else | |||
#define N_PATH_HOME 150 | |||
#define N_PATH_HOME 160 | |||
#endif | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.46.42 06.Mar.13"; | |||
const char *version_string = "1.46.43 07.Mar.13"; | |||
const int version_phdata = 0x014640; | |||
int option_device_number = -1; |
@@ -217,6 +217,7 @@ static const char transpose_map_latin[] = { | |||
tr->charset_a0 = charsets[1]; // ISO-8859-1, this is for when the input is not utf8 | |||
dictionary_name[0] = 0; | |||
tr->dict_condition=0; | |||
tr->dict_min_size = 0; | |||
tr->data_dictrules = NULL; // language_1 translation rules file | |||
tr->data_dictlist = NULL; // language_2 dictionary lookup file | |||
@@ -436,7 +437,7 @@ Translator *SelectTranslator(const char *name) | |||
int name2 = 0; | |||
Translator *tr; | |||
static const short stress_lengths_equal[8] = {250, 250, 250, 250, 0, 0, 250, 250}; | |||
static const short stress_lengths_equal[8] = {230, 230, 230, 230, 0, 0, 230, 230}; | |||
static const unsigned char stress_amps_equal[8] = {18,18, 18,18, 18,18, 18,18 }; | |||
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | |||
@@ -445,7 +446,7 @@ Translator *SelectTranslator(const char *name) | |||
static const unsigned char stress_amps_sk[8] = {17,16, 20,20, 20,22, 22,21 }; | |||
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||
static const short stress_lengths_ta[8] = {240, 240, 250, 250, 0, 0, 270, 270}; | |||
static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; | |||
static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; | |||
// convert name string into a word of up to 4 characters, for the switch() |
@@ -555,6 +555,7 @@ typedef struct | |||
unsigned char stress_amps_r[8]; | |||
short stress_lengths[8]; | |||
int dict_condition; // conditional apply some pronunciation rules and dict.lookups | |||
int dict_min_size; | |||
const unsigned short *charset_a0; // unicodes for characters 0xa0 to oxff | |||
const wchar_t *char_plus_apostrophe; // single chars + apostrophe treated as words | |||
const wchar_t *punct_within_word; // allow these punctuation characters within words |
@@ -354,7 +354,7 @@ void TranslDlg::ReadVoice(int variant) | |||
wxString filename; | |||
char *p; | |||
char vname[40]; | |||
char fname[sizeof(path_home)+10]; | |||
char fname[sizeof(path_home)+30]; | |||
if(variant) | |||
{ |
@@ -25,7 +25,7 @@ typedef struct { | |||
int phoneme_tab_ix; // phoneme table number | |||
int pitch_base; // Hz<<12 | |||
int pitch_range; // standard = 0x1000 | |||
int speedf1; | |||
int speedf2; | |||
int speedf3; |
@@ -106,6 +106,7 @@ enum { | |||
V_KLATT, | |||
V_FAST, | |||
V_SPEED, | |||
V_DICTMIN, | |||
// these need a phoneme table to have been specified | |||
V_REPLACE, | |||
@@ -154,6 +155,7 @@ static MNEM_TAB keyword_tab[] = { | |||
{"klatt", V_KLATT}, | |||
{"fast_test2", V_FAST}, | |||
{"speed", V_SPEED}, | |||
{"dict_min", V_DICTMIN}, | |||
// these just set a value in langopts.param[] | |||
{"l_dieresis", 0x100+LOPT_DIERESES}, | |||
@@ -552,9 +554,10 @@ voice_t *LoadVoice(const char *vname, int control) | |||
char phonemes_name[40]; | |||
char option_name[40]; | |||
const char *language_type; | |||
char buf[200]; | |||
char buf[sizeof(path_home)+30]; | |||
char path_voices[sizeof(path_home)+12]; | |||
int dict_min = 0; | |||
int stress_amps[8]; | |||
int stress_lengths[8]; | |||
int stress_add[8]; | |||
@@ -965,6 +968,10 @@ voice_t *LoadVoice(const char *vname, int control) | |||
SetSpeed(3); | |||
break; | |||
case V_DICTMIN: | |||
sscanf(p,"%d",&dict_min); | |||
break; | |||
default: | |||
if((key & 0xff00) == 0x100) | |||
{ | |||
@@ -1007,6 +1014,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
} | |||
voice->phoneme_tab_ix = ix; | |||
new_translator->phoneme_tab_ix = ix; | |||
new_translator->dict_min_size = dict_min; | |||
LoadDictionary(new_translator, new_dictionary, control & 4); | |||
if(dictionary_name[0]==0) | |||
return(NULL); // no dictionary loaded | |||
@@ -1031,6 +1039,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
translator = new_translator; | |||
} | |||
// relative lengths of different stress syllables | |||
for(ix=0; ix<stress_lengths_set; ix++) | |||
{ |