Browse Source

[1.46.43]

language changes: da, pt


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

+ 23
- 18
dictsource/da_list View File

@@ -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

+ 1779
- 1288
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 12
- 11
dictsource/dict_phonemes View File

@@ -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

+ 1
- 0
dictsource/en_list View File

@@ -3678,6 +3678,7 @@ Disney dIzni
Dolce d0ltSeI
Dvorak d@-vo@Zak
Emory Em3ri
Fleming flEmIN
Folger foUldZ3
Genghis dZENgIs
Gibson gIbs@n

+ 2
- 35
dictsource/pt_list View File

@@ -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

+ 18
- 6
dictsource/pt_rules View File

@@ -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 _


+ 25
- 7
phsource/compile_report View File

@@ -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

+ 436
- 25
phsource/ph_danish View File

@@ -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

+ 1
- 3
platforms/windows/espeakedit/src/speech.h View File

@@ -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);

+ 1
- 3
platforms/windows/espeakedit/src_copy/speech.h View File

@@ -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);

+ 6
- 3
platforms/windows/windows_cmd/src/speech.h View File

@@ -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);

+ 6
- 3
platforms/windows/windows_dll/src/speech.h View File

@@ -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);

+ 6
- 3
platforms/windows/windows_sapi/src/speech.h View File

@@ -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);

+ 5
- 0
src/dictionary.cpp View File

@@ -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


+ 2
- 2
src/speech.h View File

@@ -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

+ 1
- 1
src/synthdata.cpp View File

@@ -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;

+ 3
- 2
src/tr_languages.cpp View File

@@ -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()

+ 1
- 0
src/translate.h View File

@@ -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

+ 1
- 1
src/transldlg.cpp View File

@@ -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)
{

+ 1
- 1
src/voice.h View File

@@ -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;

+ 10
- 1
src/voices.cpp View File

@@ -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++)
{

Loading…
Cancel
Save