Browse Source

[1.46.47]

Fix bug in SAPI5 version: speed suddenly changes to very slow when speaking a word which contains foreign characters.
Language changes: da, fa, hu, pt, ur.


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

+ 18
- 17
dictsource/da_list View File

@@ -67,7 +67,7 @@ _? spWrgsmVlstajn
_! udRVbstejn
_- binnesdrai
__ b'Onsdrai
& Vw
& _Vw
£ pun?
€ euro
© kVpirajt
@@ -117,8 +117,8 @@ _6X t*'Es // PB changed from e to E
_7X h&lfj'&rs // PV a changed to &
_8X f'irs
_9X h&lf'Ems // PB a changed to &
_0C h'un*@:D
_1C ed||h'unR@:D // PB added 'et hundrede'
_0C h'un*VD
_1C ed||h'unRV:D // PB added 'et hundrede'
_0M1 t'u:s@-n
_1M1 ed||t'u:s@-n // PB added 'et' to tusind
_1M2 'e:n||milij'o:n
@@ -177,8 +177,8 @@ for
fordi fVd'i $pause // because - PB: changed stress
når nVr $pause // while
der dEr $u+ $u // PB changed from [dA]
hvor v'Vr // where
hvorfor vVf'V // why - final r deleted
hvor v'O // where
hvorfor v?Of'?V // why - final r deleted

// prepositions
på pO $u
@@ -187,16 +187,16 @@ 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 & // PB added 'ad'
ad &D $atend $sentence // PB "Det må ikke skille os ad."
at &: $u // PB changed from [at] to [&:]
at & $u // PB changed from [at] to [&:]
hos // at - PB: removed [$u+]
som sVm $u // which / that - PB: removed [$u+]

// pronouns
jeg jai $u+ // I
jeg jaj $u+ // I
du du $u
de $u
han $u
@@ -272,11 +272,11 @@ q ku
r Er
s es
//t te: mooved to da_rules because of clash with T-shirt
u u?
u u
v ve
w d'Vbeltve:
x Eks
y Y?
y y
z sEt
ø W

@@ -7196,6 +7196,7 @@ suffler $alt
suggerer $alt
sulfoner $alt
summere $alt
opsummere $alt
superviser $alt
suppler $alt
supponer $alt
@@ -7303,7 +7304,7 @@ valuter $alt
vandaliser $alt
varedeklarer $alt
varier $alt
vatter $alt
vattere $alt
vegeter $alt
ventilere $alt
verbaliser $alt
@@ -11142,7 +11143,7 @@ rejiceres rejis'eVs // PB
rejicering rejis'eRiN // PB
nogle n'o:@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen'
nogen n'o:@-n // PB
ligesom lisVm // PB
ligesom l?isVm // PB
bliver blir // PB
konfirmand kVnferm'&nd // PB
konfirmander kVnferm'&nd3 // PB
@@ -11286,12 +11287,12 @@ steget ste@d
// PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v]
(et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day
// PB legende = legend/myth and = playing
(en legende) en||leg'End@
legenden leg'End@n
(en legende) en||leg'End@-
legenden leg'End@-n
legender leg'EndV
legenders leg'EndVs
legenderne leg'EndVn3
legenderne leg'EndVn3s
legenderne leg'EndVn@-
legendernes leg'EndVn@-s
// PB verb "forsyne" noun "forsyn" - stress problem
(et forsyn) ed||f'Vrsyn
(forsynet har) f'Vrsyn@d||hAr

+ 7589
- 7564
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 12
- 12
dictsource/dict_phonemes View File

@@ -53,12 +53,12 @@ p r s S t T v w
x z


Dictionary da_dict 2013-03-06
Dictionary da_dict 2013-03-13

& &# 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
& &# 0 3 ?& ?&# ?0 ?A
?e ?E ?i ?o ?O ?u ?V ?W
?W# ?y @ @- a A aI e
E i I n- o O u V
W W# y Y

* - 3- : ; ? b B
@@ -68,7 +68,7 @@ r R R3 s S t T tS
v w x z Z


Dictionary hu_dict 2013-03-11
Dictionary hu_dict 2013-03-12

a A a: e E e: i i:
o o: u u: Y y y: Y:
@@ -104,7 +104,7 @@ p Q r R s s; t T
ts v x z


Dictionary en_dict 2013-03-10
Dictionary en_dict 2013-03-12

0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3
@@ -117,8 +117,8 @@ oU O~ u U u: U@ V VR
d# dZ f g h j k l
l# l/ m n N n^ p Q
q Q" r R r- R2 s S
t T t2 tS v w x z
Z z#
t T t2 tS tS; v w x
z Z z#


Dictionary eo_dict 2013-03-08
@@ -379,7 +379,7 @@ S s; S; t t; tS ts tS;
ts; v w x z Z Z;


Dictionary pt_dict 2013-03-11
Dictionary pt_dict 2013-03-13

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
@@ -603,7 +603,7 @@ N n^ p q R s S S;
t tS v w x z


Dictionary ur_dict 2013-03-09
Dictionary ur_dict 2013-03-13

@ a a: aI aU e E e:
i I i: O o: U u: V
@@ -850,7 +850,7 @@ p p- ph q r R s t
t- tS tS; w


Dictionary fa_dict 2013-02-13
Dictionary fa_dict 2013-03-12

a A e i o u


+ 11
- 4
dictsource/en_list View File

@@ -274,7 +274,7 @@ _lo l'aU
_ti tI2b'Et@n
_my mj'A:nmA@
_ka dZ'O@dZ@n
_ko k3r'i@n
_ko h'angul
_eth i:TI'0pIk
_ja dZ'ap@ni:z
_zh tS'aIni:z
@@ -308,11 +308,15 @@ _zh tS'aIni:z
ш Sa
щ StSa
ъ jEr
ы _^_RU
ь jer
ы j'Eru
ь j'eri
э E
ю ju
я ja
ћ tS;E
ђ djE
ќ kjE


// Arabic letters

@@ -1020,6 +1024,7 @@ canine keInaIn
canoe k@nu:
canoes k@nu:z
canon kan@n
?3 cantaloupe kant@loUp
canton kant0n
canvas kanv@s
capita kapIt@
@@ -1192,6 +1197,8 @@ conger k0Ng3
congressional k@ngrES@n@L
conker $1
conscience k0nS@ns
consort $1
consort $verb
constitute $1
construct $1 $onlys
construct $verb
@@ -2621,7 +2628,7 @@ sierra si:'e@r@
signage saInI2dZ
signal sIgn@l // signaled
signer saIn3
signoff s,aIn'0f
signoff s'aIn0f
signon s,aIn'0n
signup saInVp
sikh si:k

+ 3
- 3
dictsource/en_rules View File

@@ -387,6 +387,7 @@
_r) adio (@P5 r,eIdI%oU
r) adi (oL10+ eIdI
b) ad (os_ eId
_s) ado (ma ,eIdoU
ad (iA eId
s) ad (is eId
_tr) ad (it a#d
@@ -3382,6 +3383,7 @@
&) ion (_ =i@n
?8 &) ion (_ =IVn
ll) ion i@n
ll) ion (_ =i@n
n) ion =i@n
v) io (l aI@
ione (_ 'aI@ni
@@ -3572,7 +3574,6 @@
_l) iv (eB aIv
XC) iv (el Iv
_g) iv (e Iv
_l) iv (e Iv
l) iv (er Iv
r) iv (er Iv
dr) iv (er aIv
@@ -3753,8 +3754,7 @@
_) metall (ic m@tal
metabo m@t'ab0
_) meta (llu m%Eta
_) mobile moUbaIl
mobile m@bi:l
&) mobile m@bi:l
mono (ga m@n'0
mo (noto m@
_) mono m0noU

+ 1653
- 12
dictsource/fa_list
File diff suppressed because it is too large
View File


+ 37
- 6
dictsource/fa_rules View File

@@ -23,13 +23,15 @@
// Text to phoneme rules for Farsi


// replace Arabic character numbers with Latin character numbers
// replacing unknown characters and Arabic numbers with Farsi characters and Latin numbers
.replace
٪ %
ي ی
ۍ ی
ى ی
ك ک
ە ه
ھ ه
٠ 0
۰ 0
۱ 1
@@ -59,12 +61,12 @@
.L01 آ ا ی ي و

// short vowels (commonly unwritten )
.L02 َ ُ ِ ً ٌ ٍ ّ ؤ أ إ ء ۀ
.L02 َ ُ ِ ْ ً ٌ ٍ ّ ؤ أ إ ء ۀ

// All consonants
.L03 ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه ة ئ

// all Farsi characters without ا آ
// all Farsi characters without ا آ and Short vowels
.L04 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ت ن م ک گ ۀ ظ ط ز ر ذ د ئ و ة ي ژ ؤ إ أ ء ؟ پ

// Group one of consonants
@@ -77,7 +79,7 @@
.L07 ن م ت ش ک مان تان شان ند نده ندۀ ندگی ندگان گی گان گانه گانۀ ستان ست

// All vowels (long + Short)
.L08 آ ا ی ي و َ ُ ِ ً ٌ ٍ ّ ؤ أ إ ء ۀ
.L08 آ ا ی ي و َ ُ ِ ْ ً ٌ ٍ ّ ؤ أ إ ء ۀ

// all Farsi characters without short vowels
.L09 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ا ت ن م ک گ ۀ آ ظ ط ز ر ذ د ئ و ة ي ژ پ ؤ إ أ ء ؟ ّ
@@ -100,6 +102,9 @@
L09L04) آلود (_Sm4 Alud
L09L04) آباد (_Sm4 AbAd
L09L04) آفرین (_Sm5 AfaRin
L09L09) آموخته (_Sm6 Amuxte:
L09L09) آموختۀ (_Sm6 Amuxteje
L09L09) آگاه (_Sm4 AgAh


.group ا
@@ -108,7 +113,7 @@
-) ا (للّه_+ o
_) ا (L02_ alef?
_) ا (L02L09
_) ا (L01
_) ا (L01L03
_) ا 'a:
_) ا (ع e
ا 'A
@@ -346,6 +351,8 @@
L09L09) بخت (_Sm3 baxt
L09L09) باش (_Sm3 bAS
L09L09) بزرگ (_Sm4 bozoRg
L09L09) باور (_Sm4 bAvaR
L09L09) برانگیز (_Sm baRangiz

// arabic form of words (Babs) ب
//فواعل eg. جوامع
@@ -518,6 +525,7 @@
L09L09) پرداز (_Sm5 paRdAz
L09L09) پندار (_Sm5 pendAR
L09L09) پرست (_Sm4 paRast
L09L09) پناه (_Sm4 panAh

// arabic form of words (Babs) پ
//فواعل eg. جوامع
@@ -1670,6 +1678,7 @@
L09L09) درد (_Sm3 daRd
L09L09) دوش (_Sm3 duS
L09L09) دهی (_Sm3 dehi
L09L09) دوست (_Sm4 dust

// arabic form of words (Babs) د
//فواعل eg. جوامع
@@ -2473,6 +2482,7 @@
// suffixes س
L09L01) ست (_+NSm2 st
L09L03) ست (_+NSm2 ast
-) ست (_+NSm2 st // eg. "کجا‌ست"
L09L03) ستان (_Sm4 estAn
L09L01) ستان (_Sm4 stAn
L09L09) سان (_Sm3 sAn
@@ -2826,7 +2836,7 @@
// Prefixes ص
_) صاحب (L04L09L09P4@ sAheb
_) صاحب (آL09L09P4@ sAheb
_) صدر (L04L09L09P5@ sadr
_) صدر (L04L09L09P3@ sadr
_) صدر (آL09L09P5@ sadr

// Suffixes ص
@@ -4663,6 +4673,7 @@
L09L01) مون (_Sm3 mun
L09L09) مردان (_Sm5 maRdAn
L09L09) منش (_Sm3 maneS
L09L09) مآب (_Sm3 maAb

// arabic form of words (Babs) م
//فواعل eg. جوامع
@@ -5209,6 +5220,7 @@
// Plural pronoun ها
L09L09) های (_NSm3 h'Aje
L09L09) هایی (_NSm4 h'Ai:
L09L09) هائی (_NSm4 h'Ai:
L09L09) هاست (_NSm4 h'Ast
// Plural possessive pronouns for ها
L09L09) هایم (_NSm4 hAjam
@@ -5352,6 +5364,8 @@
_ا) ی (_+ i
L01) ی (_ je
L03) ی (_ i
ی (ٰ_
ی (ٰL04 j
_آ) ی (L03_ ja

// Prefixes ی
@@ -5439,6 +5453,7 @@
L09ع) یاتشان (_NSm6 ijjAteSAn
L09L09) یزاسیون (_Sm7 isAsion
L09L03) یافت (_Sm4 jAft
-) یست (_+NSm3 ist // eg. "فردا‌یست"

// arabic form of words (Babs) ی
//فواعل eg. جوامع
@@ -5518,6 +5533,8 @@


.group ٔ
L04) ٔ
ا) ٔ a?
ٔ

// suffixes ٔ
@@ -5530,6 +5547,7 @@


.group ئ
ئی i:
ئ (L01 ?
ئ (L02 ?
L02) ئ ?
@@ -5560,6 +5578,13 @@
//ة (L01 h
ة t


.group ٰ
ٰ (L04 A
ٰ (ا
ٰ (آ


//short vowels that are not usually written:

.group َ
@@ -5583,6 +5608,12 @@
L09L09) ُ (_Sm1 o


.group ْ
ْ
// Suffixes "ْ"
L09L09) ْ (_Sm1


.group ً
ً an
// Suffixes "ً"

+ 2
- 2
dictsource/hu_list View File

@@ -411,7 +411,7 @@ _tld tildE
_#9 tAb
_#32 s'o:kYz
_cap n'AJ_|
_?? kAR2AktEr||ko:d // unknown characters (change this)
_?? kAR2AktEr // unknown characters (change this)


// Abbreviations
@@ -5419,7 +5419,6 @@ _″ duplA|ApostR2o:f
≠ nEmEJEnlY:
_ˇ lEfEle:n^i:l
_¡ AlSo:indEks
_braille bR2Ail:E


// Alphabets
@@ -5427,6 +5426,7 @@ _ar 'AR2Ab
_cyr ts'iR2ill
_he h'e:bER2
_zh k'i:nAi
_braille bR2Ail:E


// Main Exceptions List

+ 3
- 1
dictsource/hu_rules View File

@@ -460,6 +460,7 @@ shetlan) d (szige d
_tren) dsz (e d|s
vakon) d (sz d
vé) d (jeggy d
své) d (zseb d

.group dz
fogó) dz (kod ts
@@ -1743,7 +1744,7 @@ fáklyá) sz (ene Sz
para) szt (segg st
azbe) szt (sisak st
nyu) szt (süveg st
serté) szs (ír SZ
serté) szs (ír S|Z
tá) szs (in SZ
va) szs (ír SZ
szs (ák SZ //All szsák part containing part need spokening single S and Z phoneme, for example kenyereszsák, pénzeszsák, krumpliszsák, cukroszsák words
@@ -1763,6 +1764,7 @@ fáklyá) sz (ene Sz
ellenállá) sz (ón Sz
ré) sz (árás Sz
_te) szts (or st|S
serté) szs (ir S|Z

.group t
t t

+ 45
- 43
dictsource/pt_list View File

@@ -645,7 +645,7 @@ alcateia $alt
alferes $alt
algozes $alt
alicerce $alt
almoço $alt $verb
almoço alt $verb
amarelo $alt
ameba $alt
amores $alt2
@@ -665,7 +665,7 @@ aterro $alt2 $noun
atmosfera $alt
atrozes $alt
autora $alt2
avesso $alt2
avesso $alt2
axé aSE
baqueta $alt2
beco $alt2
@@ -674,6 +674,7 @@ besta $alt2
bilhete $alt2
boca $alt2
bochecha $alt2
boio $alt
bojo $alt2
boleia $alt
bolero $alt
@@ -690,7 +691,7 @@ cachorra $alt2
caderneta $alt2
camiseta $alt2
cantora $alt2
capacete $alt2
capacete $alt2
caractere $alt
caramelo $alt
careta $alt2
@@ -702,27 +703,27 @@ cateto $alt2
catorze $alt2
cebola $alt2
cefaleia $alt
cerca $alt
cerca $alt2 $noun
cerca $alt
cerca $alt2 $noun
cerco $alt $verb
chamego $alt2
chefe $alt
checam $alt
checam $alt
cheque $alt
chinelo $alt
choro $alt2 $noun
chovesse $alt2
chovesse $alt2
chupeta $alt2
clamores $alt2
clero $alt
coco $alt2
cofre $alt
cogumelo $alt
cogumelo $alt
coice $alt2
colabore $alt
colete $alt2
colchete $alt2
colher $alt $noun
colchete $alt2
colher $alt $noun
colheres $alt $noun
colmeia $alt
colore $alt
@@ -732,8 +733,8 @@ concerto $alt2 $noun
concordo $alt
conforto $alt $verb
consolo $alt2 $noun
controle $alt2 $noun
controlo $alt2 $noun
controle $alt2 $noun
controlo $alt2 $noun
coreia $alt
corneta $alt2
cornos $alt
@@ -789,7 +790,7 @@ escroto $alt2
esforço $alt $verb
esforços $alt
esgoto $alt2 $noun
esgotos $alt2
esgotos $alt2
esperma $alt
espeto $alt2 $noun
espiroqueta $alt2
@@ -820,11 +821,11 @@ fogos $alt
foguete $alt2
foice $alt2
forca $alt2
força $alt2 $noun
força $alt2 $noun
forças $alt2
forço $alt
fordes $alt2
fores $alt2
forço $alt
fordes $alt2
fores $alt2
forro $alt $verb
fosse $alt2
frevo $alt2
@@ -833,7 +834,7 @@ galileia $alt
gameta $alt2
geleia $alt
gelo $alt $verb
genebra $alt
genebra $alt
germe $alt
gesso $alt2
golpe $alt
@@ -841,33 +842,33 @@ gonorreia $alt
gorda $alt2
gosto $alt $verb
gota $alt2
governo $alt2 $noun
gozo $alt $verb
governo $alt2 $noun
gozo $alt2 $noun
graveto $alt2
grelha $alt
groselha $alt
grosso $alt2
grozo $alt $verb
hemorroida $alt
hemorroida $alt
hoje $alt2
horrores $alt2
ideia $alt
insonoro $alt
interesse $alt2 $noun
jogo $alt2 $noun
interesse $alt2 $noun
jogo $alt2 $noun
joguete $alt2
lambreta $alt2
lebre $alt
leste $alt2 $verb
lopes $alt
maior $alt
maior $alt
maleta $alt2
marcelo $alt
marmelo $alt
marreta $alt2
martelo $alt
melhor $alt
menor $alt
melhor $alt
menor $alt
merda $alt
megera $alt
melo $alt
@@ -880,7 +881,7 @@ mexi meS'i
mexo m'eSU
minueto $alt2
miolo $alt2
miolos $alt
miolos $alt
moeda $alt
molho $alt2 $noun
monera $alt
@@ -889,7 +890,7 @@ morda $alt2
moreia $alt
mortos $alt
motora $alt2
mulher $alt
mulher $alt
mui mwi
muito mw'iNtU // -s is included as a suffix
muita mw'iNt&
@@ -907,17 +908,17 @@ onu $1
olho $alt2 $noun
opereta $alt2
ordens $alt
osso $alt2
ossos $alt
osso $alt2
ossos $alt
ostra $alt2
ovos $alt
pachorra $alt2
paexa paeSa
palacete $alt2
palheta $alt2
panfleto $alt2
panfleto $alt2
pangeia $alt
panqueca p,&~Nk'Ek&
panqueca p,&~Nk'Ek&
pantera $alt
paralelo $alt
parede $alt2
@@ -929,8 +930,9 @@ pelo $alt $verb
peso $alt $verb
piloto $alt2 $noun
pintora $alt2
pior $alt
pior $alt
pirueta $alt2
plaqueta $alt2
plateia $alt
plebeia $alt
polca $alt
@@ -944,7 +946,7 @@ poxa p'oS&
primavera $alt
provo $alt
quarteto $alt2
queda $alt
queda $alt
quinteto $alt2
recomeço $alt2 $noun
recordo $alt
@@ -959,7 +961,7 @@ reitora $alt2
relevo $alt2 $noun
remorso $alt
reprovo $alt
retorno $alt $verb
retorno $alt $verb
rixa x'iS&
rocha $alt
rock $alt
@@ -970,9 +972,9 @@ saleta $alt2
sarjeta $alt
seborreia $alt
seca $alt2 $noun
secas $alt2
secas $alt2
seco $alt2
seco $alt $verb
seco $alt $verb
selo $alt $verb
selvagem seUv'aZeIN
sexteto $alt2
@@ -985,14 +987,14 @@ sogra $alt
sopro $alt2 $noun
soro $alt2
sorvete $alt2
sossego $alt2 $noun
sossego $alt2 $noun
suborno $alt $verb
sufoco $alt2 $noun
sufocos $alt2
suporto $alt
suor swOr
tapete $alt2
temores $alt2
temores $alt2
tempero $alt2 $noun
terrores $alt2
teta $alt2
@@ -1001,8 +1003,8 @@ tocha $alt
toga $alt
topo $alt $verb
torno $alt $verb
torre $alt2 $noun
torres $alt2
torre $alt2 $noun
torres $alt2
tortos $alt
traqueia $alt
travesso $alt2
@@ -1012,13 +1014,13 @@ troco $alt2 $noun
tropa $alt
tropeço $alt2 $noun
trombeta $alt2
tumores $alt2
tumores $alt2
valeta $alt2
vanessa $alt2
velozes $alt
verme $alt
violeta $alt2
violoncelo $alt
violoncelo $alt
voga $alt
vozes $alt
xarope $alt

+ 29
- 25
dictsource/pt_rules View File

@@ -349,7 +349,7 @@
_d) e (L05_ E
_vi) e (L05_ E
fiz) e (L05_ E
pus) e (L05_ E / com- im- de-
pus) e (L05_ E // com- im- de-
tiv) e (L05_ E // es-
_com) e (L05_ e
_pud) e (L05_ E
@@ -359,34 +359,34 @@
_perd) e (L05_ e
_quis) e (L05_ E
_soub) e (L05_ E
tend) e (L06_ e / a- con- en- es-
tend) e (L06_ e // a- con- en- es-
_mord) e (L06_ e
_rend) e (L06_ e
_vend) e (L06_ e
prend) e (L06_ e / a- rea- des- desa-
prend) e (L06_ e // a- rea- des- desa-
_arrepend) e (L06_ e
_defend) e (L06_ e
_depend) e (L06_ e
_escond) e (L06_ e
preend) e (L06_ e / com- a- re- sur-
preend) e (L06_ e // com- a- re- sur-
respond) e (L06_ e // cor-
bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su-
met) e (L07_ e // co- pro- arre- re- intro- compro- sub-
mov) e (L07_ e / re- co-
mov) e (L07_ e // re- co-
viv) e (L07_ e // re-
_beb) e (L07_ e
_com) e (L07_ e
_tem) e (L07_ e
colh) e (L07_ e // & es-
corr) e (L07_ e // per- con- in- so- dis-
ench) e (L07_ e / pre-
nasc) e (L07_ e / re-
tend) e (L07_ e / en- con- a- es-
ench) e (L07_ e // pre-
nasc) e (L07_ e // re-
tend) e (L07_ e // en- con- a- es-
torc) e (L07_ e // con-
venc) e (L07_ e // con-
vert) e (L07_ e // in- re- con-
volv) e (L07_ e de- en- re-
volv) e (L07_ e // de- en- re-
_eleg) e (L07_ e
_ergu) e (L07_ e
_mord) e (L07_ e
@@ -397,7 +397,7 @@ respond) e (L06_ e // cor-
padec) e (L07_ e // com-
parec) e (L07_ e // a- rea- com- desa-
prend) e (L07_ e // a- rea- des-
screv) e (L07_ e / e- in- ree- pre- de-
screv) e (L07_ e // e- in- ree- pre- de-
_abastec) e (L07_ e
_aborrec) e (L07_ e
_absolv) e (L07_ e
@@ -430,11 +430,11 @@ _rejuvenec) e (L07_ e
_resolv) e (L07_ e
_suspend) e (L07_ e
conhec) e (L07_ e // & re- des-
estabelec) e (L07_ e / re-
favorec) e (L07_ e / des-
obedec) e (L07_ e / des-
estabelec) e (L07_ e // re-
favorec) e (L07_ e // des-
obedec) e (L07_ e // des-
preend) e (L07_ e // sur- com-
proteg) e (L07_ e / des-
proteg) e (L07_ e // des-
respond) e (L07_ e // cor-
qu) e (brL04_ E
_hosp) e (dL03_ E
@@ -442,6 +442,8 @@ respond) e (L07_ e // cor-
_n) e (grL03_ e
_estr) ei (L03_ EI
_inv) e (jL04_ E
proteg) e (l05_ e // des-
tr) e (pL04_ E // es-
_dec) e (pL04_ E
_in) e (ptL03_ E
_p) e (quL02_ E
@@ -451,14 +453,14 @@ respond) e (L07_ e // cor-
_sev) e (rL03_ E
_reit) e (rL03_ E
_sinc) e (rL03_ E
g) e (rL04_ E / su- refri-
qu) e (rL04_ E / re-
g) e (rL04_ E // su- refri-
qu) e (rL04_ E // re-
_op) e (rL04_ E
_alt) e (rL04_ E
_sup) e (rL04_ E
_tol) e (rL04_ E
_ven) e (rL04_ E
acel) e (rL04_ E / des-
acel) e (rL04_ E // des-
_coop) e (rL04_ E
_temp) e (rL04_ E
_v) e (rbL03_ E
@@ -494,13 +496,13 @@ _obsol) e (tL03_ e
_d) e (vL03_ e
scr) e (vL03_ e // e- in- pre- ree- de-
_atr) e (vL03_ e
pr) e (zL04_ E / des- menos-
pr) e (zL04_ E // des- menos-
_embel) e (zL04_ E
_acont) e (çL01_ e
_arref) e (çL01_ e
_emagr) e (çL03
pr) e (çL03_ e / a-
mer) e (çL03_ e / des-
pr) e (çL03_ e // a-
mer) e (çL03_ e // des-
pad) e (çL03_ e // com-
par) e (çL03_ e // a- re- com- rea- desa-
_ado) e (çL03_ e
@@ -508,7 +510,7 @@ _emagr) e (çL03
_car) e (çL03_ e
_per) e (çL03_ e_
conh) e (çL03_ e // re-
obed) e (çL03_ e / des-
obed) e (çL03_ e // des-
_esqu) e (çL03_ e
_forn) e (çL03_ e
_ofer) e (çL03_ e
@@ -518,6 +520,7 @@ _agrad) e (çL03_ e
_amanh) e (çL03_ e
_amort) e (çL03_ e
_anoit) e (çL03_ e
_desguarn) e (çL03_ e
_desguarnec) e (çL03_ e
_enfraqu) e (çL03_ e
_enlouqu) e (çL03_ e
@@ -531,7 +534,7 @@ _espair) e (çL03_ e
_estrem) e (çL03_ e
_fortal) e (çL03_ e
_rejuven) e (çL03_ e
estabel) e (çL03_ e / re-
estabel) e (çL03_ e // re-
//endsort


@@ -828,17 +831,17 @@ estabel) e (çL03_ e / re-
_deb) o (chL04_ O
_desabr) o (chL04_ O
_s) o (frL02_ O
r) o (gL04_ O / inter-
r) o (gL04_ O // inter-
_j) o (gL04_ O
_af) o (gL04_ O
_adv) o (gL04_ O
_ref) o (gL04_ O
_ap) oi (L01_ OI
_t) o (lL03_ o
c) o (lhL02_ O / es- en- re-
c) o (lhL02_ O // es- en- re-
_t) o (lhL02_ O
_m) o (lhL04_ O
env) o (lvL02_ O / des-
env) o (lvL02_ O // des-
_abs) o (lvL02_ O
_dev) o (lvL02_ O
_res) o (lvL02_ O
@@ -854,6 +857,7 @@ _desabr) o (chL04_ O
_r) o (snL04_ O
_c) o (spL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_g) o (zL04_ O
_ad) o (çL03_ O
_end) o (çL03_ O
//endsort

+ 18
- 17
phsource/compile_report View File

@@ -14,7 +14,7 @@ consonants 11 119
af 39 138
cy 29 134
ga 29 133
de 41 141
de 40 140
eo 13 116
jbo 2 116
nci 3 125
@@ -66,7 +66,7 @@ consonants 11 119
id 15 127
sq 33 127
hy 23 119
da 46 139
da 45 138
ka 20 115
fa 9 112
rw 15 132
@@ -448,9 +448,11 @@ l/l_ [l] base
[l/] base
[l/3] base
[l/] fr
[l/3] da
l/l_@ [l/3] base
[l/] fr
l/l@ [¨ì,] base
[l/3] da
l/l@ [¨|8] base
[l#] base
[l] fr
[l/2] fr
@@ -484,7 +486,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 [¨|8] base
[l#] base
[l] fr
[l/2] fr
@@ -492,7 +494,8 @@ l/la [
[K] tn
l/l_a [l/3] base
[l/] fr
l/le [¨ì,] base
[l/3] da
l/le [¨|8] base
[l#] base
[l] fr
[l/2] fr
@@ -500,11 +503,12 @@ l/le [
[K] tn
l/l_e [l/3] base
[l/] fr
[l/3] da
l/L_eL_af [&] af
[&:] af
l/l_front [L] sq
l/l_front_ [l/4] sq
l/li [¨ì,] base
l/li [¨|8] base
[l#] base
[l] fr
[l/2] fr
@@ -514,22 +518,24 @@ l/li [
l/l_i [l/3] base
[l/] fr
[i] sq
[l/3] da
ll/ll [L] base
ll/_ll [L] base
l/l_long [l] base
[l] fr
l/lo [¨ì,] base
l/lo [¨|8] base
[l#] base
[l/2] fr
[K] nso
[K] tn
l/l_o [l/3] base
[l/] fr
[l/3] da
l^/l_rfx [l.] base
[l;] lt
[l] ru
[l^] ru
l/lu [¨ì,] base
l/lu [¨|8] base
[l#] base
[l] fr
[l/2] fr
@@ -537,6 +543,7 @@ l/lu [
[K] tn
l/l_u [l/3] base
[l/] fr
[l/3] da
l/l_vi [l] vi
ll/xll [L] base
l/l_y [l/] fr
@@ -661,7 +668,6 @@ n/nu [n] base
[n] fr
[n#] is
[n] zh
r/@_ [V#] de
r2/r2@ [r-] en
[r-] tn
r2/r2a [r-] en
@@ -708,9 +714,7 @@ r3/r_trill.wav [R2] base
[r*] sr
[r] ru
r3/r_uvl [r"] base
[r2] de
r3/r_uvl.wav [r"] base
[r2] de
r3/rx [*] base
[r/] base
[r/] af
@@ -770,8 +774,6 @@ r/ru [r] base
r/tr [r] base
r/trr [r/] base
[r] ro
r/V_ [V#] de
r/V_2_ [V#] de
r/xr [r] base
[R3] base
[r-] en
@@ -1089,6 +1091,7 @@ vdiph2/i@ [i@] en-n
[i@] ga
[i@] hy
vdiph2/i@_2 [i@] en-wm
[iR] de
vdiph2/ie [i@] en-wi
[ie] fi
[ie] mt
@@ -1633,8 +1636,6 @@ vowel/a_2 [a] base2
[a] pt-pt
[a] ro
[a] el
[a] da
[?a] da
[a] rw
vowel/a#_2 [A] nl
[a:] nl
@@ -1663,8 +1664,6 @@ vowel/a_3 [a] en-sc
[a:] la
[A] zh
[a] sq
[A] da
[?A] da
[a] ka
[a:] si
vowel/a#_3 [a#] en
@@ -1712,6 +1711,8 @@ vowel/a_7 [a] fr
[a] ht
vowel/a_8 [a] en
[a] sk
[A] da
[?A] da
vowel/aa [a:] et
[A] fr-ca
[A] no

+ 203
- 185
phsource/ph_danish View File

@@ -1,3 +1,12 @@
// PB General rules for vowels:
// Short vowels
// ACC: Short "pille" [p?el@-]
// AC[V]: Short "piler" [p?ilV]
// A[N]: Short "bange" [b?AN@-]
// Long vowels
// A + group #@ OR group #e: Long "ae" "aer" [&:@-]
// AC + group #@ OR group #e: Long "pile" [pi:l@-]
// AC[i]: Long "smidig" [smi:Di]

phoneme @
vowel starttype #@ endtype #@
@@ -36,42 +45,42 @@ endphoneme

phoneme i
vowel starttype #i endtype #i
length 150
// IfNextVowelAppend(;)
IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN
glstop
length 90
length 90 //150
// PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
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
// "gider" TEST
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN
length 90
ENDIF
// "siden"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN
// PB long vowel followed by certain vowels - "pigen" [p'i@-n]
IF nextPhW(#@) OR nextPhW(#e) THEN
length 150
ENDIF
// "lise"
IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN
// Only this vowel (in this case [i])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) 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
// This vowel is word end - longer because it sounds too short
// "sig", "si"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// "vilje"
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
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
FMT(vowel/i_4)
endphoneme

// PB Experimental glottal i
// PB short i
// sviret vs. svirret
phoneme ?i
vowel starttype #i endtype #i
@@ -90,31 +99,11 @@ 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 90 //150
// "delte", "mente"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@) 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
@@ -123,14 +112,18 @@ ENDIF
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
ENDIF
// "labyrinter" , "labyrinten" - short followed by 2 consonants
// Only "e"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 60
length 90
ENDIF
FMT(vowel/e)
endphoneme

// PB glottal e
// PB short e
// "skille" vs. "skele", "pille" vs. "pile"
phoneme ?e
vowel starttype #e endtype #e
@@ -140,42 +133,43 @@ 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
length 90 //150
// "værelse", "breve"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
length 150
// 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
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 150
ENDIF
// "ære", "kærester", "ærefrygt" - longer E
IF nextPhW(V) THEN
length 180
ENDIF
// Only the letter "æ" - long
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "stædig" [st'EDi] long
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
ENDIF
// "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN
length 90
ENDIF
// "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN
length 90
ENDIF
// "mælkebøtte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
ENDIF
FMT(vowel/e_mid2)
endphoneme

// PB Experimental glottal E
// PB short E
// "læsse" vs. "læse"
phoneme ?E
vowel starttype #e endtype #e
@@ -190,44 +184,42 @@ 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
ipa a
length 90 //150
// "same", "sale", "bade" - consonant + gooup #e or group #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// ThisPh + gooup #e or group #@
// "ae", "aer" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 240
ENDIF
// This vowel is word end - longer because it sounds too short
// "ja", "Omaha"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// PB "sable", "sabler", "anede", "David"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN
// Only this vowel (in this case [&])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) 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
// "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) 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
// PB Short &
// e.g. the last a in "staldkarl"
// "sale" vs. "sal"
phoneme ?&
ipa a
vowel starttype #e endtype #e
length 90
FMT(vowel/ee_2)
@@ -237,7 +229,7 @@ endphoneme
phoneme &#
vowel starttype #e endtype #e
length 120
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
@@ -255,76 +247,77 @@ phoneme ?&#
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
//phoneme a
// vowel starttype #a endtype #a
// length 90 //150
//IF nextPhW(#@) OR nextPhW(#e) 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 90
// FMT(vowel/a_2)
//endphoneme

phoneme A
phoneme A // PB changed to a_8
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 90 //150
// PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) THEN
IF nextPhW(r) AND nextPhW(isWordEnd) THEN
length 120
ENDIF
FMT(vowel/a_3)
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN
length 90
ENDIF
FMT(vowel/a_8)
endphoneme

// PB glottal a
// PB short 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
// "straffeattest", "straffe", "rapid" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
length 110
ENDIF
FMT(vowel/a_3)
FMT(vowel/a_8)
endphoneme

phoneme u
vowel starttype #u endtype #u
length 150
length 90 //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
// glstop
// length 90
ENDIF
// "hue", "suge", "uge"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
// "suge", "uge", bluse
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
length 150
ENDIF
// extra length followed by 3 or V or @
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 240
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
// length 240
ENDIF
// "umulig"
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
ENDIF
// Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
FMT(vowel/u_bck)
endphoneme
@@ -368,13 +361,13 @@ 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
length 90 // 150
// PB "sove", "sover" - consonant + #e or #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// PB "gået"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
// PB "gået" - ThisPh + #e or #@
IF nextPhW(#e) OR nextPhW(#@) THEN
length 150
ENDIF
// "rådig"
@@ -418,7 +411,7 @@ ENDIF
FMT(vowel/V_4)
endphoneme

// PB Glottal (short) å
// PB Short å
// "forstår" vs. "kåre"
phoneme ?V
vowel starttype #@ endtype #@
@@ -448,35 +441,31 @@ 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
// Length changed to short since most vowels are short.
// It's probably easier only to make rules for long vowels.
length 90 //150

// PB long vowel followed by consonant and certain vowels
// "lyde", "lyder"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// "skyd"
IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN
length 90
// Only this vowel (in this case [y])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "dydig" [dyDi]
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN
IF nextPhW(isNotVowel) AND next2PhW(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
IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN
length 200
ENDIF
// PB "kryster" - short y
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 80
// "tyve"
IF nextPhW(?u) AND next2PhW(@-) THEN
length 150
ENDIF
// PB "gryden"
FMT(vowel/y)
endphoneme

@@ -484,7 +473,7 @@ endphoneme
// "kylling" vs. "kyle", "krybbe" vs. "krybe"
phoneme ?y
vowel starttype #i endtype #i
length 70
length 90
FMT(vowel/y)
endphoneme

@@ -503,24 +492,19 @@ endphoneme

phoneme W
vowel starttype #@ endtype #@
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
length 99 //160
// "kløe" vowel + vowel: extra length
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
IF nextPhW(#@) OR nextPhW(#e) 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
IF next2PhW(#@) OR next2PhW(#e) THEN
length 160
ENDIF
// "røveri" TEST
IF next2PhW(V) OR next2PhW(?V) THEN
length 90
ENDIF
// PB "nødig", "nødigt", "kølige"
IF nextVowel(i) THEN
length 160
@@ -536,7 +520,7 @@ ENDIF
FMT(vowel/oe)
endphoneme

// PB glottal W
// PB short W
// "prøv" vs. "prøve"
phoneme ?W
vowel starttype #@ endtype #@
@@ -547,12 +531,13 @@ endphoneme
// PB added for the ø in "røv", "røg", "øje" instead of [V3]
phoneme W#
vowel starttype #@ endtype #@
length 150
length 90 //150
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
// length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
// PB long vowel followed by consonant and certain vowels
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN
length 150
ENDIF
FMT(vowel/V)
@@ -573,12 +558,17 @@ IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel)
glstop
length 150
ENDIF
// "dreje" [dR'aI@-_!]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 300
length 280
ENDIF
// PB "drej" vs. "dreje"
IF thisPh(isWordEnd) THEN
length 140
ENDIF
// "lejde" [l'aId@-_!], "lejder" [l'aIdV_!]
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
length 190
ENDIF
FMT(vdiph/ai)
endphoneme
@@ -591,7 +581,31 @@ phoneme l
liquid
lengthmod 7
ChangePhoneme(l/3)
CALL base/l
// CALL base/l
endphoneme

phoneme l/3 // Replacement for [l/]
liquid
lengthmod 7

IF nextPh(isVowel) THEN
// ChangePhoneme(l)
ENDIF

PrevVowelEndings
VowelEnding(l/l_@)
VowelEnding(l/l_a)
VowelEnding(l/l_e, -40)
VowelEnding(l/l_i, -70)
VowelEnding(l/l_o)
VowelEnding(l/l_u, -70)
EndSwitch

// IF nextPh(isLiquid) THEN
// FMT(l/_l)
// ENDIF

FMT(l/l_)
endphoneme

phoneme v // approximant, not fricative
@@ -604,7 +618,7 @@ phoneme r // used for 'r' after a vowel (to create a diphthong)
liquid
lengthmod 7
ipa ɐ̯
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN
ChangePhoneme(R)
ENDIF
FMT(r/a_)
@@ -663,6 +677,10 @@ phoneme t
IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
WAV(ustop/tr)
ENDIF
// "respekt" [REsp'Egd]
IF thisPh(isWordEnd) THEN
// ChangePhoneme(d)
ENDIF
WAV(ustop/t, 90)
endphoneme

@@ -674,7 +692,7 @@ phoneme j
NextVowelStarts
VowelStart(j/j@)
VowelStart(j/ja)
VowelStart(j/je,-40)
VowelStart(j/je,-35)
VowelStart(j/ji)
VowelStart(j/jo)
VowelStart(j/ju)

+ 12
- 40
phsource/ph_german View File

@@ -97,11 +97,8 @@ phoneme U
length 135
ENDIF

IF nextPh(r) THEN
IF next2Ph(isVowel) THEN
ELSE
ChangePhoneme(UR)
ENDIF
IF nextPh(r) AND next2Ph(isNotVowel) THEN
ChangePhoneme(UR)
ENDIF
FMT(vowel/uu_2)
endphoneme
@@ -128,6 +125,10 @@ phoneme i:
IF prevPh(w) THEN
VowelStart(w/wi2)
ENDIF
IF nextPh(r) AND next2Ph(isNotVowel) THEN
ChangePhoneme(iR)
ENDIF
FMT(vowel/i_2)
endphoneme

@@ -341,41 +342,12 @@ endphoneme



// This version of [r] was used in eSpeak 1.44, but received complaints
phoneme r2 // uvular trill or fricative
vcd uvl frc
ipa ʀ
lengthmod 6
length 110
IF nextPhW(isVowel) THEN
FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50)
ELSE
IF prevPh(isFlag1) THEN
ChangePhoneme(NULL) // 'r' is already included in the previous vowel
ELSE
ChangePhoneme(V#)
ENDIF
ENDIF
endphoneme




phoneme V# // used for 'r' after a vowel (to create a diphthong)
liquid
lengthmod 7
IF nextPhW(isVowel) THEN
ChangePhoneme(r)
ENDIF

ipa ɐ
IF prevPh(#a) OR prevPh(E) THEN
FMT(r/V_2_)
ENDIF
IF prevPh(#u) THEN
FMT(r/@_)
ENDIF
FMT(r/V_)
phoneme iR
vowel starttype #i endtype #@
ipa iɐ
flag1
length 180
FMT(vdiph2/i@_2)
endphoneme



+ 9
- 4
platforms/windows/make_espeak.iss View File

@@ -2,7 +2,7 @@
[Setup]
AppName=eSpeak
AppVerName=eSpeak version 1.46.42
AppVerName=eSpeak version 1.46.47
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
WindowVisible=yes
@@ -149,29 +149,34 @@ begin
$1c: Result := 'sq';
$1d: Result := 'sv';
$1f: Result := 'tr';
//$20: Result := 'ur';
$21: Result := 'id';
$25: Result := 'et';
//$26: Result := 'lv';
$26: Result := 'lv';
$27: Result := 'lt';
$29: Result := 'fa';
$2a: Result := 'vi';
$2b: Result := 'hy';
//$2c: Result := 'az';
//$2d: Result := 'eu';
$2f: Result := 'mk';
$36: Result := 'af';
$37: Result := 'kn';
$39: Result := 'hi';
//$3a: Result := 'mt';
//$3c: Result := 'ga';
$3c: Result := 'ga';
//$3f: Result := 'kk';
$41: Result := 'sw';
//$44: Result := 'tt';
$46: Result := 'pa';
$49: Result := 'ta';
$46: Result := 'pa';
$4b: Result := 'kn';
$4c: Result := 'ml';
//$50: Result := 'mn';
$52: Result := 'cy';
//$5e: Result := 'am';
//$61: Result := 'ne';
$61: Result := 'ne';
//$87: Result := 'rw';
//$88: Result := 'wo';
end;

+ 1
- 1
platforms/windows/windows_sapi/ttsengobj.cpp View File

@@ -618,7 +618,7 @@ int CTTSEngObj::ProcessFragList(const SPVTEXTFRAG* pTextFragList, wchar_t *pW_st
sprintf(&cmdbuf[len],"%c%dF",CTRL_EMBEDDED,emphasis);
len += strlen(&cmdbuf[len]);
}
if(sayas != gSayas)
if((sayas != gSayas) || (sayas != 0))
{
sprintf(&cmdbuf[len],"%c%dY",CTRL_EMBEDDED,sayas);
len += strlen(&cmdbuf[len]);

+ 4
- 4
src/Makefile.espeakedit View File

@@ -10,17 +10,17 @@ SRCS= compiledata.cpp compiledict.cpp debug.cpp dictionary.cpp espeak_command.cp

OBJS=$(patsubst %.cpp,%.o,$(SRCS))

WX_LIBS = -pthread -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 \
-lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8
WX_LIBS = -pthread `wx-config --libs`

LIBS=-lstdc++ -lportaudio
#LIBS=-lstdc++ /usr/lib/x86_64-linux-gnu/libportaudio.so.2

CPPFLAGS = -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8
CPPFLAGS = -Wall -g -fexceptions `wx-config --cflags`
-I/usr/include/wx-2.8 \
-DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES
-D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT

CXXFLAGS = -O2 -Wall -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 \
CXXFLAGS = -O2 -Wall -fexceptions `wx-config --cflags` \
-DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT

all: espeakedit

+ 2
- 1
src/numbers.cpp View File

@@ -586,6 +586,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
// return number of bytes used by the letter
// control bit 0: a non-initial letter in a word
// bit 1: say 'capital'
// bit 2: say character code for unknown letters

int n_bytes;
int letter;
@@ -743,7 +744,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
}
}

if(!(control & 2) && (al_flags & AL_NOT_CODE))
if(!(control & 4) && (al_flags & AL_NOT_CODE))
{
// don't speak the character code number, unless we want full details of this character
speak_letter_number = 0;

+ 1
- 1
src/phonemelist.cpp View File

@@ -339,7 +339,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
ph = phoneme_tab[plist3->phcode];
plist3[0].ph = ph;

if(plist3->phcode == phonSWITCH)
if((plist3->phcode == phonSWITCH) && !(plist3->synthflags & SFLAG_EMBEDDED)) // ?? phonSWITCH can't have SFLAG_EMBEDDED ??
{
if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH)))
continue; // next phoneme is also a phonSWITCH, so ignore

+ 1
- 1
src/speech.h View File

@@ -51,7 +51,7 @@
#endif

#ifdef _ESPEAKEDIT
//#define USE_PORTAUDIO
#define USE_PORTAUDIO
#define USE_ASYNC
#define LOG_FRAMES // write keyframe info to log-espeakedit
#endif

+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.46.46 11.Mar.13";
const char *version_string = "1.46.47 12.Mar.13";
const int version_phdata = 0x014640;

int option_device_number = -1;

+ 9
- 3
src/tr_languages.cpp View File

@@ -70,6 +70,7 @@
#define OFFSET_ETHIOPIC 0x1200


// character ranges must be listed in ascending order
ALPHABET alphabets [] = {
{"_el", OFFSET_GREEK, 0x380, 0x3ff, L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS},
{"_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0},
@@ -97,6 +98,7 @@ ALPHABET alphabets [] = {
{"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL},
{"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE},
{"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE},
{"_ko", 0xa700, 0xa700,0xd7ff, 0, AL_NOT_CODE},
{NULL, 0, 0, 0, 0, 0}
};

@@ -108,9 +110,12 @@ ALPHABET *AlphabetFromChar(int c)

while(alphabet->name != NULL)
{
if((c >= alphabet->range_min) && (c <= alphabet->range_max))
if(c <= alphabet->range_max)
{
return(alphabet);
if(c >= alphabet->range_min)
return(alphabet);
else
break;
}
alphabet++;
}
@@ -827,6 +832,7 @@ Translator *SelectTranslator(const char *name)
case L('h','i'): // Hindi
case L('n','e'): // Nepali
case L('p','a'): // Punjabi
case L('g','u'): // Gujarati
{
static const short stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250};
static const unsigned char stress_amps_hi[8] = {17,14, 20,19, 20,22, 22,21 };
@@ -1543,7 +1549,7 @@ SetLengthMods(tr,3); // all equal
0x1a1, 0x1edd, 0x1edb, 0x1edf, 0x1ee1, 0x1ee3, // ơ
0x75, 0xf9, 0xfa, 0x1ee7, 0x169, 0x1ee5, // u
0x1b0, 0x1eeb, 0x1ee9, 0x1eed, 0x1eef, 0x1ef1, // ư
0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1e, 0 }; // y
0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1ef5, 0 }; // y

SetupTranslator(tr,stress_lengths_vi,stress_amps_vi);
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

+ 7
- 4
src/translate.cpp View File

@@ -633,8 +633,10 @@ static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes,
int capitals = 0;
int non_initial = 0;

if (spell_word > 2)
capitals = 2;
if(spell_word > 2)
capitals = 2; // speak 'capital'
if(spell_word > 1)
capitals |= 4; // speak charater code for unknown letters

while((*word != ' ') && (*word != 0))
{
@@ -1109,7 +1111,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
// change to another language in order to translate this word
strcpy(word_phonemes,unpron_phonemes);
if(strcmp(&unpron_phonemes[1],"en")==0)
return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules
return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules which uses only _^_
return(0);
}

@@ -1774,6 +1776,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
word_flags = wtab[0].flags;
if(word_flags & FLAG_EMBEDDED)
{
wtab[0].flags &= ~FLAG_EMBEDDED; // clear it in case we call TranslateWord2() again for the same word
embedded_flag = SFLAG_EMBEDDED;

Word_EmbeddedCmd();
@@ -2121,7 +2124,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
{
ph_list2[n_ph_list2].phcode = ph_code;
ph_list2[n_ph_list2].sourceix = 0;
ph_list2[n_ph_list2].synthflags = embedded_flag;
ph_list2[n_ph_list2].synthflags = 0;
ph_list2[n_ph_list2++].tone_ph = *p;
SelectPhonemeTable(*p);
p++;

+ 1
- 1
src/translate.h View File

@@ -23,7 +23,7 @@
#define CTRL_EMBEDDED 0x01 // control character at the start of an embedded command
#define REPLACED_E 'E' // 'e' replaced by silent e

#define N_WORD_PHONEMES 160 // max phonemes in a word
#define N_WORD_PHONEMES 200 // max phonemes in a word
#define N_WORD_BYTES 160 // max bytes for the UTF8 characters in a word
#define N_CLAUSE_WORDS 300 // max words in a clause
#define N_RULE_GROUP2 120 // max num of two-letter rule chains

Loading…
Cancel
Save