Speed increase. Added the "sonic" routines by Bill Cox to reduce the length of eSpeak's sound output data, so as to make the speaking speed faster. Ordinal numbers: Some languages (el,es) use the ordinal form of hundreds and tens part of a number, as well as the units part. Added language option NUM2_MULTIPLE_ORDINAL. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@254 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -1,4 +1,4 @@ | |||
// PB = Peter Bjarkov - [email protected] | |||
// PB = Peter Bjarkov - [email protected] | |||
// This file is UTF8 encoded | |||
// Spelling-to-phoneme words for Danish | |||
@@ -103,7 +103,7 @@ _11 'Elv@ | |||
_12 t'Vl | |||
_13 tR'&#d@-n // PB & changed to &# | |||
_14 fj'ord@-n | |||
_15 f'Emd@-n | |||
_15 f'emt@n | |||
_16 s'ajsd@-n | |||
_17 s'Wd@-n // PP Y changed to W | |||
_18 '&d@-n // PB a changed to & | |||
@@ -153,7 +153,7 @@ _3Xo tr'&#ft@ //36. | |||
_4Xo fWV'tyv@n@ // 42. | |||
_5Xo halt*'Esenstyv@n@ // 52. | |||
_6Xo tr'Esenstyv@n@ // 62. | |||
_7Xo halfj'&rsenstyv@n@ // 72. | |||
_7Xo h&lfj'&rsenstyv@n@ // 72. | |||
_8Xo firsenstyv@n@ // 82. | |||
_9Xo half'Emsenstyv@n@ // 95. | |||
@@ -161,7 +161,7 @@ _9Xo half'Emsenstyv@n@ // 95. | |||
den dEn $u | |||
en e:n $u | |||
et ed $u | |||
et et $u | |||
her $u | |||
kun $u | |||
vel $u+ | |||
@@ -175,9 +175,9 @@ mens $pause // while | |||
for fV | |||
fordi fVd'i $pause // because - PB: changed stress | |||
når nVr $pause // while | |||
der d&r $u+ $u // PB changed from [d]A | |||
der dEr $u+ $u // PB changed from [dA] | |||
hvor v'Vr // where | |||
hvorfor vVf'V // why - firan r deleted | |||
hvorfor vVf'V // why - final r deleted | |||
// prepositions | |||
på pO $u | |||
@@ -205,7 +205,7 @@ dét de | |||
vi vi $u | |||
i _i $u+ | |||
mig maj $u // me | |||
dig daj $u | |||
dig daj $u+ | |||
dem $u | |||
ham $u | |||
hende $u | |||
@@ -240,16 +240,16 @@ jeres $u+ | |||
// auxillary verbs | |||
er //$u // is | |||
var vAr $u+ // was | |||
har hAr $u+ // has | |||
er Er $u // is/are | |||
var vAr $u+ // was/were | |||
har hAr $u+ // has/have | |||
havde h&:D@ $u+ // had | |||
vil $u+ // will | |||
skal $u+ // shall | |||
kan $u+ // can | |||
skulle $u+ // should | |||
må $u+ // may | |||
bør $u+ // ought | |||
bør $u+ // ought to | |||
// letter names | |||
b be | |||
@@ -297,14 +297,13 @@ apple _^_EN | |||
beachbuggy _^_EN | |||
beachvolley _^_EN | |||
browser _^_EN | |||
byte _^_EN | |||
chart _^_EN | |||
coach _^_EN | |||
coke _^_EN | |||
cool _^_EN | |||
couch _^_EN | |||
cursor _^_EN | |||
cowboy _^_EN | |||
//cowboy _^_EN | |||
debugger _^_EN | |||
ensemble _^_FR | |||
event _^_EN | |||
@@ -371,7 +370,8 @@ window _^_EN | |||
word _^_EN | |||
warrior _^_EN | |||
// PB English names | |||
// PB names | |||
august awgOsd $capital | |||
austin _^_EN $alt | |||
bailey _^_EN $alt | |||
barry _^_EN $alt | |||
@@ -384,7 +384,6 @@ cyrus _^_EN | |||
cia _^_EN $alt | |||
fbi _^_EN $alt | |||
fox _^_EN | |||
jean _^_EN $alt | |||
jones _^_EN | |||
larry _^_EN $alt | |||
leroy _^_EN $alt | |||
@@ -393,12 +392,12 @@ mansfield _^_EN $alt | |||
mahoney _^_EN $alt | |||
montreal _^_EN $alt | |||
oregon _^_EN $alt | |||
paul _^_EN $alt | |||
piccadilly _^_EN | |||
reynolds _^_EN $alt | |||
purvis _^_EN | |||
washington _^_EN $alt | |||
white _^_EN $alt | |||
chicago _^_EN $alt | |||
//chicago _^_EN $alt | |||
// PB French words | |||
croquis _^_FR | |||
@@ -454,6 +453,7 @@ personage $alt | |||
plamage $alt | |||
plantage $alt | |||
platmenage $alt | |||
potage $alt | |||
ravage $alt | |||
reportage $alt | |||
sabotage $alt | |||
@@ -466,6 +466,71 @@ takkelage $alt | |||
tonnage $alt | |||
trikotage $alt | |||
// PB final -abel - stressed a | |||
acceptabel $alt | |||
affabel $alt | |||
aimabel $alt | |||
amortisabel $alt | |||
analysabel $alt | |||
appellabel $alt | |||
applikabel $alt | |||
deklinabel $alt | |||
demontabel $alt | |||
differentiabel $alt | |||
diskutabel $alt | |||
disputabel $alt | |||
durabel $alt | |||
fashionabel $alt | |||
favorabel $alt | |||
formidabel $alt | |||
inacceptabel $alt | |||
inkommensurabel $alt | |||
irritabel $alt | |||
kapabel $alt | |||
kassabel $alt | |||
komfortabel $alt | |||
kommensurabel $alt | |||
kommutabel $alt | |||
komparabel $alt | |||
kondemnabel $alt | |||
konfiskabel $alt | |||
konstabel $alt | |||
kontrollabel $alt | |||
konvenabel $alt | |||
konversabel $alt | |||
kritisabel $alt | |||
kurabel $alt | |||
//mirabel $alt | |||
miserabel $alt | |||
mutabel $alt | |||
navigabel $alt | |||
negligeabel $alt | |||
negotiabel $alt | |||
notabel $alt | |||
operabel $alt | |||
parabel $alt | |||
passabel $alt | |||
portabel $alt | |||
praktikabel $alt | |||
praktisabel $alt | |||
profitabel $alt | |||
præsentabel $alt | |||
realisabel $alt | |||
remarkabel $alt | |||
rentabel $alt | |||
reparabel $alt | |||
respektabel $alt | |||
risikabel $alt | |||
ræsonnabel $alt | |||
spendabel $alt | |||
tolerabel $alt | |||
trafikabel $alt | |||
transportabel $alt | |||
variabel $alt | |||
venerabel $alt | |||
veritabel $alt | |||
vulnerabel $alt | |||
// PB adjectives and nouns with final -ant - stressed a | |||
acceptant $alt | |||
adjudant $alt | |||
@@ -1496,6 +1561,84 @@ valens $alt | |||
virulens $alt | |||
ækvivalens $alt | |||
// PB final -eret: stressed e ['er@D] | |||
affekteret $alt | |||
alkoholiseret $alt | |||
altereret $alt | |||
antikveret $alt | |||
assorteret $alt | |||
avanceret $alt | |||
balanceret $alt | |||
beneficeret $alt | |||
blaseret $alt | |||
bomberet $alt | |||
civiliseret $alt | |||
decideret $alt | |||
delegeret $alt | |||
demineraliseret $alt | |||
deprimeret $alt | |||
depriveret $alt | |||
deputeret $alt | |||
derangeret $alt | |||
detaljeret $alt | |||
determineret $alt | |||
diplomeret $alt | |||
dissemineret $alt | |||
distingveret $alt | |||
distraheret $alt | |||
domicileret $alt | |||
echaufferet $alt | |||
eksalteret $alt | |||
eloxeret $alt | |||
emanciperet $alt | |||
facetteret $alt | |||
faconneret $alt | |||
falleret $alt | |||
fashioneret $alt | |||
filipenseret $alt | |||
forceret $alt | |||
hasarderet $alt | |||
indigneret $alt | |||
inkarneret $alt | |||
interesseret $alt | |||
kommitteret $alt | |||
kompliceret $alt | |||
konfedereret $alt | |||
konfødereret $alt | |||
kongestioneret $alt | |||
konsterneret $alt | |||
korsetteret $alt | |||
kreneleret $alt | |||
kultiveret $alt | |||
kuperet $alt | |||
kæfereret $alt | |||
lamelleret $alt | |||
maniereret $alt | |||
manieret $alt | |||
markeret $alt | |||
meleret $alt | |||
outreret $alt | |||
passioneret $alt | |||
perialiseret $alt | |||
pikeret $alt | |||
prostitueret $alt | |||
raffineret $alt | |||
reflekteret $alt | |||
reglementeret $alt | |||
renommeret $alt | |||
reserveret $alt | |||
resigneret $alt | |||
retarderet $alt | |||
retsineret $alt | |||
rutineret $alt | |||
selvcentreret $alt | |||
situeret $alt | |||
sofistikeret $alt | |||
sordineret $alt | |||
taljeret $alt | |||
tekstureret $alt | |||
tempereret $alt | |||
// PB words with final -ent - stressed e | |||
abonnement $alt | |||
abonnent $alt | |||
@@ -1855,6 +1998,46 @@ venezuelan $alt | |||
victorian $alt | |||
århusian $alt | |||
// PB nouns with final -enser - next to last syllable is strtessed | |||
athenienser $alt | |||
bergenser $alt | |||
bogenser $alt | |||
cistercienser $alt | |||
dispenser $alt | |||
esbjergenser $alt | |||
fåborgenser $alt | |||
grenåenser $alt | |||
grenågenser $alt | |||
herningenser $alt | |||
hjørringenser $alt | |||
hobrogenser $alt | |||
kalundborgenser $alt | |||
kartaginienser $alt | |||
koldingenser $alt | |||
kretenser $alt | |||
køgenser $alt | |||
lundenser $alt | |||
mariagergenser $alt | |||
nyborgenser $alt | |||
nykøbingenser $alt | |||
palæstinenser $alt | |||
ringkøbingenser $alt | |||
ripenser $alt | |||
roskildenser $alt | |||
rudkøbingenser $alt | |||
sakskøbingenser $alt | |||
silkeborgenser $alt | |||
skanderborgenser $alt | |||
stegenser $alt | |||
stubbekøbingenser $alt | |||
svendborgenser $alt | |||
sønderborgenser $alt | |||
vardenser $alt | |||
vejlenser $alt | |||
viborgenser $alt | |||
vordingborgenser $alt | |||
ålborgenser $alt | |||
// PB country names with final -ien - stress on previous syllable | |||
abessinien $alt | |||
abkhasien $alt | |||
@@ -1948,6 +2131,7 @@ falkeblik $alt | |||
folkloristik $alt | |||
fonetik $alt | |||
fysik $alt | |||
metafysik $alt | |||
fysiognomik $alt | |||
genetik $alt | |||
germanistik $alt | |||
@@ -2842,7 +3026,7 @@ rubin $alt | |||
ruin $alt | |||
sakkarin $alt | |||
sardin $alt | |||
satin s&t'EN $alt | |||
satin $alt | |||
serpentin $alt | |||
sordin $alt | |||
(stand-in) st&nd'in $alt | |||
@@ -4817,6 +5001,7 @@ delagtig $alt | |||
diskontinuerlig $alt | |||
drikfældig $alt | |||
drilagtig $alt | |||
uduelig $alt // PB uduelig | |||
dumdristig $alt | |||
dværgagtig $alt | |||
dybsindig $alt | |||
@@ -4918,6 +5103,7 @@ godvillig $alt | |||
grangivelig $alt | |||
grinagtig $alt | |||
guddommelig $alt | |||
gudelig $alt // PB for "ugudelig" | |||
gudfrygtig $alt | |||
gudsbespottelig $alt | |||
gudsjammerlig $alt | |||
@@ -5187,6 +5373,7 @@ binderi $alt | |||
biometri $alt | |||
bizarreri $alt | |||
broderi $alt | |||
bogholderi $alt | |||
bryderi $alt | |||
bryggeri $alt | |||
brænderi $alt | |||
@@ -5555,7 +5742,7 @@ analysere $alt | |||
angliser $alt | |||
animer $alt | |||
annekter $alt | |||
annoncer $alt | |||
annoncere $alt | |||
annoter $alt | |||
annuller $alt | |||
anodiser $alt | |||
@@ -5593,7 +5780,7 @@ atomiser $alt | |||
atrofier $alt | |||
attacher $alt | |||
attaker $alt | |||
attester $alt | |||
attestere $alt | |||
attraher $alt | |||
attraper $alt | |||
attribuer $alt | |||
@@ -5632,7 +5819,7 @@ benedicer $alt | |||
bestialiser $alt | |||
bibliografer $alt | |||
billettere $alt | |||
biografer $alt | |||
biografere $alt | |||
biopter $alt | |||
bivuaker $alt | |||
blamer $alt | |||
@@ -5792,7 +5979,7 @@ divisionere $alt | |||
docer $alt | |||
dogmatiser $alt | |||
doktorere $alt | |||
dokumenter $alt | |||
dokumentere $alt | |||
dollere $alt | |||
domesticer $alt | |||
dominer $alt | |||
@@ -5905,7 +6092,7 @@ ferniser $alt | |||
fertiliser $alt | |||
feter $alt | |||
figurere $alt | |||
fikser $alt | |||
fiksere $alt | |||
fiktionaliser $alt | |||
filere $alt | |||
filetere $alt | |||
@@ -5913,7 +6100,6 @@ filmatiser $alt | |||
filosofer $alt | |||
filtrer $alt | |||
finansier $alt | |||
finere $alt | |||
fingere $alt | |||
fingerer $alt | |||
finjuster $alt | |||
@@ -5937,15 +6123,15 @@ formuler $alt | |||
fortificer $alt | |||
fosfatere $alt | |||
fosforescer $alt | |||
fotografer $alt | |||
fotokopier $alt | |||
fotografere $alt | |||
fotokopiere $alt | |||
fourager $alt | |||
fragmenter $alt | |||
fraktioner $alt | |||
fragmentere $alt | |||
fraktionere $alt | |||
franker $alt | |||
frapper $alt | |||
frasere $alt | |||
ffraterniser $alt | |||
fraterniser $alt | |||
frekventer $alt | |||
frisere $alt | |||
friter $alt | |||
@@ -6005,7 +6191,7 @@ omgruppere $alt | |||
gruyere gryj'E:r $alt | |||
græciser $alt | |||
grønlandiser $alt | |||
guillotiner $alt | |||
guillotinere $alt | |||
gummiere $alt | |||
gymnasticer $alt | |||
gæsterer $alt | |||
@@ -6277,7 +6463,7 @@ konstater $alt | |||
konstituer $alt | |||
konstringer $alt | |||
konstruer $alt | |||
konsuler $alt | |||
konsulere $alt | |||
konsulter $alt | |||
konsumer $alt | |||
kontaminer $alt | |||
@@ -6390,16 +6576,16 @@ manifester $alt | |||
manipuler $alt | |||
mankere $alt | |||
manuducer $alt | |||
manøvrer $alt | |||
marcher $alt | |||
manøvrere $alt | |||
marchere $alt | |||
marginaliser $alt | |||
marginer $alt | |||
mariner $alt | |||
marginere $alt | |||
marinere $alt | |||
markere $alt | |||
marmorer $alt | |||
maroder $alt | |||
martyriser $alt | |||
masker $alt | |||
maskere $alt | |||
maskiniser $alt | |||
maskuliniser $alt | |||
massakrer $alt | |||
@@ -6462,6 +6648,7 @@ mystificer $alt | |||
mytologiser $alt | |||
mæandrer $alt | |||
møblere $alt | |||
ommøbler $alt | |||
narkotiser $alt | |||
nasalere $alt | |||
nationaliser $alt | |||
@@ -6573,7 +6760,7 @@ piker $alt | |||
pilotere $alt | |||
pioner $alt | |||
pipetter $alt | |||
pirater $alt | |||
piratere $alt | |||
piruetter $alt | |||
pivoter $alt | |||
pizziker $alt | |||
@@ -6642,7 +6829,7 @@ proskriber $alt | |||
prospekter $alt | |||
prostituer $alt | |||
proteger $alt | |||
protester $alt | |||
protestere $alt | |||
protokollere $alt | |||
provianter $alt | |||
provoker $alt | |||
@@ -6850,9 +7037,9 @@ skamfer $alt | |||
skandaliser $alt | |||
skandere $alt | |||
skandinaviser $alt | |||
skeletter $alt | |||
skelettere $alt | |||
skematiser $alt | |||
skitser $alt | |||
skitsere $alt | |||
skolemesterer $alt | |||
skraver $alt | |||
skrædderer $alt | |||
@@ -6864,11 +7051,11 @@ snedkerer $alt | |||
socialiser $alt | |||
soigner $alt | |||
solidariser $alt | |||
sonder $alt | |||
sorter $alt | |||
sondere $alt | |||
sortere $alt | |||
soupere $alt | |||
spadser $alt | |||
spalier $alt | |||
spaliere $alt | |||
spankuler $alt | |||
spatier $alt | |||
specialiser $alt | |||
@@ -7002,14 +7189,14 @@ trivialiser $alt | |||
trompeter $alt | |||
trunker $alt | |||
//trænere $alt | |||
tunneler $alt | |||
tunnelere $alt | |||
turner $alt | |||
tuscher $alt | |||
typificer $alt | |||
typiser $alt | |||
typografer $alt | |||
tyranniser $alt | |||
uniformer $alt | |||
uniformere $alt | |||
urbaniser $alt | |||
urger $alt | |||
uriner $alt | |||
@@ -7088,6 +7275,7 @@ konventionel $alt | |||
kornel $alt | |||
kriminel $alt | |||
kriminal $alt // PB as in "kriminalroman" | |||
kulturel $alt | |||
maskinel $alt | |||
model $alt | |||
nominel $alt | |||
@@ -7124,6 +7312,46 @@ sportel $alt | |||
tarantel $alt | |||
karamel $alt | |||
// PB final -iel - stressed e | |||
adverbiel $alt | |||
arteriel $alt | |||
artificiel $alt | |||
bakteriel $alt | |||
ceremoniel $alt | |||
differentiel $alt | |||
eksistentiel $alt | |||
eksponentiel $alt | |||
essentiel $alt | |||
finansiel $alt | |||
industriel $alt | |||
judiciel $alt | |||
klimakteriel $alt | |||
kommerciel $alt | |||
konfidentiel $alt | |||
kontroversiel $alt | |||
materiel $alt | |||
mikrobiel $alt | |||
ministeriel $alt | |||
notariel $alt | |||
officiel $alt | |||
partiel $alt | |||
potentiel $alt | |||
principiel $alt | |||
provinsiel $alt | |||
præferentiel $alt | |||
præsidentiel $alt | |||
referentiel $alt | |||
sektoriel $alt | |||
sekventiel $alt | |||
seriel $alt | |||
speciel $alt | |||
substantiel $alt | |||
tangentiel $alt | |||
tendentiel $alt | |||
territoriel $alt | |||
triviel $alt | |||
vektoriel $alt | |||
// PB nouns ending with -ering - stressed e | |||
abandonnering $alt | |||
abdicering $alt | |||
@@ -7251,7 +7479,6 @@ bureaukratisering $alt | |||
cadmiering $alt | |||
camouflering $alt | |||
campering $alt | |||
catering keiteriN $alt | |||
celebrering $alt | |||
cementering $alt | |||
censurering $alt | |||
@@ -9095,6 +9322,7 @@ refleksion $alt | |||
reformation $alt | |||
refraktion $alt | |||
refusion $alt | |||
relegion $alt | |||
region $alt | |||
regression $alt | |||
reifikation $alt | |||
@@ -9231,6 +9459,7 @@ vokalisation $alt | |||
dodekafon $alt | |||
frankofon $alt | |||
grammofon $alt | |||
grafofon $alt | |||
homofon $alt | |||
hydrofon $alt | |||
kolofon $alt | |||
@@ -9291,26 +9520,28 @@ teknonom $alt | |||
// -on list | |||
ballon b&l'VN $alt | |||
beton bet'VN $alt | |||
beton $alt | |||
bouillon $alt | |||
diakron $alt | |||
interferon $alt | |||
epsilon 'ebsilVn $alt | |||
futon fut'VN $alt | |||
futon $alt | |||
føljeton fWljet'Vn $alt | |||
facon f&s'Vn $alt | |||
facon $alt | |||
lazaron $alt | |||
makron $alt | |||
melon $alt | |||
neuron $alt | |||
kupon kup'VN $alt | |||
kupon $alt | |||
postillon p,Vsdilj'VN $alt | |||
perron pER'VN | |||
pompon $alt | |||
progesteron $alt | |||
salon s&l'VN $alt | |||
sifon sif'VN $alt | |||
sifon $alt | |||
synkron $alt | |||
talon t&l'VN $alt | |||
tampon tAmp'VN $alt | |||
talon $alt | |||
tampon $alt | |||
testosteron $alt | |||
// -tron list (on) | |||
@@ -9329,7 +9560,6 @@ synkrotron $alt | |||
// -kon list (VN/Vn/on) | |||
akrostikon akrVsdik'Vn $alt | |||
balkon b&lk'Vn $alt | |||
diakon $alt | |||
distikon distik'Vn $alt | |||
flakon fl&k'VN $alt | |||
@@ -9802,7 +10032,6 @@ gabardine $alt | |||
gelatine $alt | |||
georgine $alt | |||
grenadine $alt | |||
guillotine gijut'i:n@ $alt | |||
kabine $alt | |||
kantine $alt | |||
kavatine $alt | |||
@@ -10768,7 +10997,7 @@ blegrød blajrWD | |||
blegrøde blajrWD@ | |||
//blege blaj@ | |||
blegemiddel bl&#j@mid@l | |||
//blegansigt bl&#jansegt | |||
(rub og stub) R'Ob||V||sd'Ob | |||
slags sl'ags // sort, type | |||
tre tr'e // the number 3 | |||
//barber bAb'er // PB barber | |||
@@ -10843,6 +11072,7 @@ billie bile // PB the name Billie | |||
(coney island) 'kouni||'ajl3nd // PB | |||
(union station) junj3n||steisj@n // PB | |||
(secret service) sigred||s'Wvis | |||
(happy hour) h&pi||'AuV | |||
chevrolet sjEvrol'e | |||
saigon sajg3-n // PB Saigon | |||
managua m&n'&:gw& | |||
@@ -10865,6 +11095,7 @@ emp $abbrev | |||
hbo $abbrev // TV station | |||
usa $abbrev | |||
who $abbrev $allcaps // PB World Health Organization | |||
ussr $abbrev $allcaps // Sovjet Union | |||
vsop $abbrev | |||
eu $abbrev | |||
ekg $abbrev | |||
@@ -10885,11 +11116,13 @@ pharm fA:rm? $hasdot // PB fx cand. pharm. | |||
phil fil/3 $hasdot // PB fx cand. phil. | |||
bh $abbrev | |||
(bh'er) b,e:h'O:V | |||
(l'chaim) l&kr'ajm | |||
scsi skVsi // PB | |||
// Try to catch errors | |||
(et kvarter) et||kvA'ter // PB | |||
(mit kvarter) met||kvA'ter // PB | |||
(mit kvarter) mit||kvA'ter // PB | |||
(vores kvarter) vV:s||kvA'ter // PB | |||
(deres kvarter) de@s||kvA'ter // PB | |||
(det kvarter) de||kvA'ter // PB | |||
@@ -10918,11 +11151,12 @@ sig si $capital //PB Sig = si with capital S - Sig det med blom | |||
(vi steg) vi||st'e | |||
(de steg) di||st'e | |||
(alle steg) &l3||st'e | |||
(vandet steg) v&n@D||st'e | |||
steg sdaj $atend $sentence | |||
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 problem with lyst = blond, light coloured and lyst = would like to, feel like | |||
// PB problem with lyst - blond = light coloured; and lyst = would like to, feel like | |||
(lyst hår) lYst||hOr | |||
(lys farve) lYs||fArw@ | |||
(er lyst) &r||l'Ysd | |||
@@ -10941,6 +11175,7 @@ legenderne leg'EndVn3s | |||
(lige så) li@||sV | |||
(en så) en||s'V | |||
(mig så) maj||sV | |||
(men så) men||sV | |||
(så meget) sV||m'a:j@D | |||
(så mange) sV||m'aN3 | |||
(så er) sV||'Er | |||
@@ -10950,12 +11185,27 @@ legenderne leg'EndVn3s | |||
(så højt) sV||h'Vjt | |||
(så var) sV||v'Ar | |||
(så længe) sV||l'EN3 | |||
(så være) sV||v'EV | |||
(så må) sV||m'O | |||
(så har) sV||har | |||
(se så) se||sV | |||
(så sent) sV||sent | |||
(ville så) vil3||sV | |||
så sV $sentence $atstart | |||
(hvad så) v&||sV $atend // "Hvad så?" | |||
(virkede så) v'irkeD@||sV | |||
(kom så) kVm||sV | |||
(koste med) kosd@||mED | |||
(lige koste) li@||kosd@ // PB "lige koste fejer bedst" | |||
(en kanoner) en||k&non'er | |||
nå nV $atstart // PB Nå, der er du | |||
// PB stress in word combinations | |||
(dem her) d'Em||her | |||
(dem der) d'Em||der | |||
(den der) d'En||der | |||
(den her) d'En||her | |||
(det her) d'e||her | |||
(det der) d'e||der | |||
(de her) d'i||her | |||
(de der) d'i||der |
@@ -53,7 +53,7 @@ p r s S t T v w | |||
x z | |||
Dictionary da_dict 2010-08-26 | |||
Dictionary da_dict 2010-10-28 | |||
& &# 0 3 @ @- a A | |||
e E i o O u V W | |||
@@ -62,18 +62,19 @@ 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 | |||
s S t T tS v w z | |||
s S t T tS v w x | |||
z | |||
Dictionary hu_dict 2010-09-13 | |||
Dictionary hu_dict 2010-11-17 | |||
A a: E e: i i: o o: | |||
u u: Y y y: Y: | |||
a A a: E e: i i: o | |||
o: u u: Y y y: Y: | |||
- : b c d dZ dz f | |||
g h j J k l m n | |||
n^ p r R R2 s S s2 | |||
t tS ts v z Z | |||
- : b c C d dZ dz | |||
f g h j J k l m | |||
n n^ p r R R2 s S | |||
s2 t tS ts v z Z | |||
Dictionary de_dict 2010-08-25 | |||
@@ -89,7 +90,7 @@ n N p pF r s S t | |||
tS ts v w x z Z | |||
Dictionary el_dict 2010-08-26 | |||
Dictionary el_dict 2010-11-16 | |||
a aI e i o oI u | |||
@@ -99,7 +100,7 @@ p Q r R s s; t T | |||
ts v x z z; | |||
Dictionary en_dict 2010-09-14 | |||
Dictionary en_dict 2010-11-04 | |||
0 3 3: @ @- @2 @5 @L | |||
a a# A: A@ aa aI aI@ aU | |||
@@ -126,7 +127,7 @@ s S t T tS ts v w | |||
x z Z | |||
Dictionary es_dict 2010-07-28 | |||
Dictionary es_dict 2010-11-16 | |||
a aI aU e E eI eU i | |||
o O oI u | |||
@@ -149,7 +150,7 @@ l m n N p r s S | |||
s2 t v w Z | |||
Dictionary fr_dict 2010-09-04 | |||
Dictionary fr_dict 2010-11-15 | |||
@ @- a A~ e E E: E~ | |||
i I o O O~ u u: w | |||
@@ -199,7 +200,7 @@ q r r. s S s. t T | |||
t. th th. v w x z | |||
Dictionary ta_dict 2010-09-14 | |||
Dictionary ta_dict 2010-11-15 | |||
a a: aI aU e E e: i | |||
I i: o o: u U u2 u: | |||
@@ -248,7 +249,7 @@ n^# p Q r R r# R2 s | |||
S s2 t T tl# v x z | |||
Dictionary it_dict 2009-04-03 | |||
Dictionary it_dict 2010-11-10 | |||
@- a a/ aI aU e E eI | |||
i I o O u | |||
@@ -324,7 +325,7 @@ k l m n p R s S | |||
t tS v w x | |||
Dictionary nl_dict 2010-09-13 | |||
Dictionary nl_dict 2010-11-10 | |||
8 @ @- a A a: A~ E | |||
E2 e: EI eU i I o O | |||
@@ -337,9 +338,9 @@ n^ p Q r s S t tS | |||
v v# w x z Z | |||
Dictionary no_dict 2010-01-20 | |||
Dictionary no_dict 2010-10-25 | |||
@ @2 a A a: A: AI aI | |||
@ a A a# a: A: AI aI | |||
aU E E: e: I i: O o: | |||
OI U u- u-: u-I u: W y | |||
y: Y: Yy | |||
@@ -523,12 +524,14 @@ l m n N p r s t | |||
tS v w z | |||
Dictionary am_dict 2010-01-17 | |||
Dictionary am_dict 2010-10-02 | |||
@ a e i o u y | |||
b d h l m q R s | |||
S t tS | |||
? b d dZ f g h j | |||
k l m n N n^ p R | |||
s S t tS ts v w x | |||
z Z | |||
Dictionary ml_dict 2009-10-10 |
@@ -48,9 +48,54 @@ _1M2 'ena|ekatom'irio | |||
_0M2 ekatom'iria | |||
_1M3 'ena|Disekatom'irio | |||
_0M3 Disekatom'iria | |||
_dpt k'oma | |||
_dpt _k'oma | |||
_. tel'ia | |||
_#ος %os // ordinal suffix | |||
_#ος os // ordinal suffix | |||
_#η i | |||
_#ο o | |||
_ord os // default ordinal suffix | |||
// ordinal numbers | |||
_0o miDenik' | |||
_1o pr'ot | |||
_2o D'efter | |||
_3o tr'it | |||
_4o t'etart | |||
_5o p'empt | |||
_6o 'ekt | |||
_7o 'evDom | |||
_8o 'oQDo | |||
_9o 'enat | |||
_10o D'ekat | |||
_11o enD'ekat | |||
_12o DoD'ekat | |||
_1Xo D'ekat | |||
_2Xo ikost' | |||
_3Xo triakost' | |||
_4Xo tessarakost' | |||
_5Xo pedikost' | |||
_6Xo eksikost' | |||
_7Xo evDomikost' | |||
_8Xo oQDoIkost' | |||
_9Xo enenikost' | |||
_1Co ekatost' | |||
_2Co D;akos;ost' | |||
_3Co tr;akos;ost' | |||
_4Co tetrakos;ost' | |||
_5Co pedakos;ost' | |||
_6Co eksakos;ost' | |||
_7Co eptakos;ost' | |||
_8Co oktakos;ost' | |||
_9Co eneakos;ost' | |||
_0M1o Cil^ost' | |||
_1M1o Cil^ost' | |||
_2M1o DisCil^ost' | |||
_3M1o trisCil^ost' | |||
// symbols | |||
% t'is||ekat'o | |||
// articles | |||
ο o $u // definate article |
@@ -675,6 +675,7 @@ beryl bEr@L | |||
basal beIs@L | |||
best bEst | |||
beta bi:t@ | |||
betake bI2teIk | |||
beverage bEv@rI2dZ | |||
bias baI@s | |||
biased baI@st | |||
@@ -811,6 +812,7 @@ closer kloUs3 | |||
closely kloUslI $verbf // not kloUzlI | |||
closet kl0zI2t | |||
cloth kloUD $verb | |||
c'mon k@m0n | |||
coauthor koU'O:T3 | |||
cobol koUb0l | |||
cocoa koUkoU | |||
@@ -1253,7 +1255,6 @@ hmmm h'@m | |||
hmpf h'@mpf | |||
holme hoUm | |||
holster hoUlst3 | |||
holy hoUlI | |||
homeowner hoUmoUn3 | |||
homepage hoUmpeIdZ | |||
hominem h0mInEm | |||
@@ -1351,13 +1352,11 @@ iron aI@n | |||
irony aIr@nI | |||
isosceles aIs'0s@li:z | |||
itinerary aIt'In@r@rI | |||
ivory aIv@rI | |||
jagged dZagI2d | |||
japan dZ@pan | |||
jasmine dZazmIn | |||
jesus dZi:z@s | |||
joky dZoUkI | |||
jour ZU@ // french | |||
jukebox dZu:kb0ks | |||
july dZu:l'aI | |||
@@ -1508,7 +1507,7 @@ militia m@lIS@ | |||
minibus mInIbVs | |||
mining maInI2N // not mini | |||
minuet mInju:'Et | |||
minutely maIn'ju:tlI | |||
minute mInIt $onlys | |||
mirage mIrA:Z | |||
misery mIz@rI | |||
misled mIsl'Ed | |||
@@ -1708,7 +1707,7 @@ pharaoh fe@roU | |||
philistine fIlI2staIn | |||
philosophy fI2l0s@fI | |||
phoenix fi:nIks | |||
photograph foUt@graf | |||
photographer f@t'0gr@f@ | |||
piano pI'anoU | |||
piecemeal p'i:sm,i:l | |||
pier pi@3 | |||
@@ -1728,10 +1727,9 @@ piteous pIti@s | |||
pituitary $2 | |||
plaguing pleIgIN | |||
plicate $2 | |||
plugin plVgIn | |||
plumber plVm3 | |||
plus plVs | |||
poky poUkI | |||
poly p0lI | |||
politer p@l'aIt3 | |||
politic p0l@tIk | |||
poll poUl | |||
@@ -1956,10 +1954,11 @@ saucepan sO:sp@n | |||
saudi saUdI | |||
saute sO:teI | |||
says sEz | |||
scaly skeIlI | |||
salmon sam@n | |||
scalpel skalp@L | |||
scared ske@d | |||
scaring ske@rI2N | |||
scaring ske@rI2 | |||
scenic si:nIk | |||
scald sk0ld | |||
scepter sEpt3 | |||
@@ -2345,6 +2344,7 @@ Cheadle tSi:d@L | |||
Cheshire tSES3 | |||
Chiswick tSIzIk | |||
Clwyd klu:Id | |||
Dagenham dag@n@m | |||
Devon dEv@n | |||
Dolgellau d0lg'EClaI | |||
Dover doUv3 | |||
@@ -2605,6 +2605,7 @@ Alison alI2s@n | |||
Amanda $2 | |||
Amy eImI | |||
Andre 0ndreI | |||
Anita a#ni:t@ | |||
Anthony ant@nI | |||
Anton ant0n | |||
Aoife i:f@ | |||
@@ -2711,6 +2712,7 @@ Leroy li:rOI | |||
Liam li:@m | |||
Lindsay lInzi | |||
Llewellyn l#@w'ElIn | |||
Llywelyn l#@w'ElIn | |||
Lois loUIs | |||
Louis lu:I | |||
Louise lu:w'i:z | |||
@@ -2806,6 +2808,7 @@ Chrysler kraIzl3 | |||
Disney dIznI | |||
Dolce d0ltSeI | |||
Dvorak d@-vo@Zak | |||
Gibson gIbs@n | |||
Hades heIdi:z | |||
Patel pa#tEl | |||
Primavera pri:m@v'e@r@ |
@@ -564,6 +564,7 @@ | |||
al (ity 'al | |||
p) al (et al | |||
qu) al (@ 0l | |||
c) all (K O:l | |||
b) al (m A: | |||
c) al (m A: | |||
p) al (m A: | |||
@@ -1152,7 +1153,7 @@ | |||
_) bug (le bju:g | |||
@) bury (_S4i br%I | |||
?3 @) bury (_S4i bEr%I | |||
_) by baI | |||
_) byte baIt | |||
.group be | |||
@@ -1187,6 +1188,8 @@ | |||
be (see bI2 | |||
be (sie bI2 | |||
_) be (sto bI2 | |||
_) beta b,i:t@ | |||
?3 _) beta b,eIt@ | |||
_) be (th bE | |||
be (tray bI2 | |||
_) be (w bI2 | |||
@@ -1553,6 +1556,7 @@ | |||
delu (g dElju: | |||
de (lv+ dE | |||
de (ma dI2 | |||
de (magog dE | |||
demea dI2m'i: | |||
de (men dI2 | |||
de (mise dI2 | |||
@@ -2256,6 +2260,8 @@ | |||
&) erize (_ @raIz | |||
&) eris (a @raIz | |||
&) eriz (a @raIz | |||
@) er (Cal_ '3: | |||
@) er (Cic_ '3: | |||
p) ermea (b 3:mi@ | |||
_f) erme (nt %3:mE | |||
er (nal_ '3: | |||
@@ -2507,6 +2513,7 @@ | |||
bo) g (Ey g | |||
&) gia (_ dZ@ | |||
&) gia (C_ dZ@ | |||
go) g (ic_ g | |||
&) giu (m dZ@ | |||
_) g (id g | |||
_) g (im g | |||
@@ -2522,6 +2529,7 @@ | |||
gue (_ g | |||
_) gue gE | |||
_) guer (n g3: | |||
o) g (y_ g | |||
.group h | |||
h h | |||
@@ -2529,7 +2537,7 @@ | |||
h (_ | |||
_B) h | |||
@) hammed h'amId | |||
A) han (_ h'an // places | |||
A) han (_ han // places | |||
ha (st heI | |||
_) he' %hi: | |||
@) head (_S4 hEd | |||
@@ -2565,6 +2573,7 @@ | |||
i (Bee I | |||
i (Bel_ I | |||
i (Bet_ I | |||
_) i (Bo aI | |||
i (CCi_ 'I | |||
XC) i (Ca_ i: | |||
@) i (Cate_ =I | |||
@@ -2932,7 +2941,7 @@ | |||
_) in (disP2 ,In | |||
_) in (divP2 ,In | |||
_) in (dol In | |||
in (exP2 ,In | |||
_) in (exP2 ,In | |||
_) inex (or In'Eks | |||
_) infa (l %Infa | |||
_) in (fam In | |||
@@ -3044,6 +3053,7 @@ | |||
in (ee In | |||
c) in (e In | |||
inc) in (e In | |||
g) in (e In | |||
bas) in (_ @n | |||
@c) ine (_ i:n | |||
&d) ine (_ i:n | |||
@@ -3070,9 +3080,12 @@ | |||
infor (matio Inf3 | |||
ino (_ 'i:noU | |||
_m) in (us aIn | |||
_m) inu (te aIn'ju: | |||
_m) inute (m InIt | |||
_) intra Intr@ | |||
_) intra (CC %Intra | |||
.group io | |||
io (_ =I2oU | |||
?7 io (_ =i:oU | |||
@@ -3176,7 +3189,6 @@ | |||
an) ism (_S3d Iz@m | |||
@iB) ism (_S3d Iz@m | |||
@) ism (_S3de Iz@m | |||
_) is (o aIs | |||
is (o_ aIz | |||
is (or_ aIz | |||
issimo (_ 'IsImoU | |||
@@ -3537,6 +3549,7 @@ | |||
o (Ba_ 'oU | |||
_) o (Bal oU | |||
XC) o (Bal oU | |||
X) o (By oU | |||
o (Be# oU | |||
o (BeCo_ 0 | |||
o (BenC oU | |||
@@ -3579,8 +3592,7 @@ | |||
_) obs (er %0bz | |||
obso (l 0bs@ | |||
o (bstin 0 | |||
o (bt %0 | |||
o (bu %0 | |||
_) o (bt %0 | |||
o (by_ oU | |||
f) o (cA oU | |||
_l) o (cA oU | |||
@@ -3601,6 +3613,7 @@ | |||
o (cre_ 'oU | |||
_h) o (cu oU | |||
cr) o (cu oU | |||
_b) o (dy 0 | |||
cust) o (d @ | |||
k) o (dA oU | |||
meth) o (d_ @ | |||
@@ -3643,6 +3656,7 @@ | |||
o (geny '0 | |||
r) o (ger 0 | |||
l) o (gies @ | |||
@) ographer '0graf@ | |||
r) ogue oUg | |||
v) ogue oUg | |||
@@) ogue 0g | |||
@@ -3667,6 +3681,7 @@ | |||
oix (_ wa | |||
o (ky_ oU | |||
@) o (lo_ 0 | |||
@) ometer '0mIt@ | |||
?3 g) o (ng O | |||
?3 r) o (ng O | |||
?3 s) o (ng O | |||
@@ -3731,7 +3746,6 @@ | |||
oy (A_ 'OI | |||
d) o (zen V | |||
_) o (zo oU | |||
o (zy_ oU | |||
.group ol | |||
@@ -3875,7 +3889,6 @@ | |||
w) on (k 0n | |||
w) on (t 0n | |||
&) ony (_ @n%I | |||
XC) ony oUnI | |||
onymous '0nIm@s | |||
.group oo | |||
@@ -4045,7 +4058,7 @@ | |||
exp) ost 0st | |||
hyp) ost 0st | |||
osure 'oUZ3 | |||
_C) os (y oUz | |||
X) os (y oUz | |||
.group ou | |||
ou aU | |||
@@ -4289,8 +4302,7 @@ | |||
photo foUtoU | |||
photon foUt0n | |||
photocop foUt@k0p | |||
photo (grapher f@t0 | |||
photo (graphy f@t0 | |||
phot (ograph foUt | |||
photo (met foUt'0 | |||
_) phyco f,aIkoU | |||
p (hole p | |||
@@ -4358,6 +4370,7 @@ | |||
_) pre (diP3 pr%i | |||
_) pre (dic pr%I | |||
_) pre (emp pr%I | |||
_) pre (fec pri: | |||
_) pre (feren prE | |||
pre (fix pri: | |||
_) pre (gn prE | |||
@@ -4870,7 +4883,7 @@ | |||
ther (_ D3 | |||
ther (er D3 | |||
th (erC D | |||
there (_ D3 // thering | |||
there (_ D3 // thering | |||
th (est D | |||
ea) th (er D | |||
n) th (er+ T | |||
@@ -4949,6 +4962,7 @@ | |||
u (ga_ 'u: | |||
f) u (gal 'ju: | |||
ug (er_ u:g | |||
pl) ug Vg | |||
s) ugge (st @dZE | |||
h) ugh ju: | |||
mp) ug (n ju: | |||
@@ -5017,7 +5031,6 @@ | |||
?5 usurp ju:z'VRp | |||
b) us (y Iz | |||
b) u (tch U | |||
min) u (te I | |||
r) u (th u: | |||
_) u (til ju: | |||
u (tion 'ju: | |||
@@ -5030,6 +5043,7 @@ | |||
l) uxur VgZu:3 | |||
uy aI | |||
uy (A_ 'u:j | |||
u (zzi_ 'u: | |||
.group ue | |||
@@ -5240,6 +5254,7 @@ | |||
_) y' (CP2 j@ | |||
y (C_ I | |||
y (CC I | |||
XoB) y (@+ I | |||
_) y (C@ I | |||
_) y (n@ V | |||
_) y (s@ V | |||
@@ -5482,6 +5497,7 @@ | |||
α 'alf@_ | |||
ά 'alf@_ | |||
β b'i:t@_ | |||
?3 β b'eIt@_ | |||
γ g'am@_ | |||
δ d'Elt@_ | |||
ε 'EpsIl0n_ |
@@ -118,6 +118,43 @@ _0and i | |||
_dpt koma | |||
//_roman Rom'ano | |||
// ordinal numbers | |||
_#º o | |||
_#ª a | |||
_ord o | |||
_1o p**im'E** | |||
_2o seQ'und | |||
_3o tERT'E** | |||
_4o kw'a**t | |||
_5o kint | |||
_6o s'Ekst | |||
_7o s'Etim | |||
_8o Okt'aB | |||
_9o noB'en | |||
_10o D'ETim | |||
_11o und'ETim | |||
_12o DwoD'ETim | |||
_13o DeTimotERT'E** | |||
_14o DeTimokw'a**t | |||
_15o DeTimok'int | |||
_16o DeTimos'Ekst | |||
_17o DeTimos'Eptim | |||
_18o DeTimOkt'aB | |||
_19o DeTimonoB'en | |||
_2Xo Bix'Esim | |||
_3Xo t**ix'Esim | |||
_4Xo kwaD**ax'Esim | |||
_5Xo kinkwax'Esim | |||
_6Xo seQsax'Esim | |||
_7Xo sEptwax'Esim | |||
_8Xo Oktox'Esim | |||
_9Xo nonax'Esim | |||
_0Co TEnt'Esim | |||
_1Co TEnt'Esim | |||
_0M1o mil'Esim | |||
vi bi // not a Roman number | |||
@@ -24,7 +24,7 @@ | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated 2010-07-25 Michel Such <[email protected]> | |||
// Updated 2010-10-15 Michel Such <[email protected]> | |||
// | |||
// * Numbers, a few abbreviations and exceptions. | |||
// | |||
@@ -133,9 +133,6 @@ _` aks'A~_gr'av | |||
_{ akOlad_goS | |||
_| bar_vErtik'al | |||
_} akOlad_drwat | |||
² pyis'A~s||d'Y | |||
_« uvre||gijm'E | |||
_» fErme||gijm'E | |||
_’ apostr'Of | |||
_‘ apostr'Of | |||
_µ mikr'o | |||
@@ -151,16 +148,29 @@ _& _e_komErsi'al | |||
~ tilde | |||
€ @r'o $u+ | |||
¢ sEnt | |||
¥ iEn | |||
¥ jEn | |||
£ livr | |||
± pl'yz_'u_mw'E~ | |||
± pl'yzumw'E~ | |||
× myltipli'e_p'ar | |||
÷ diviz'e_p'ar | |||
¼ W~_k'ar | |||
½ W~_d@m'i | |||
¾ trwa_k'ar | |||
© _^_EN | |||
® mark||depoz'e | |||
™ markd@fabrik | |||
¬ tirE_fakyltatif | |||
¦ separatWr||vEtikal | |||
© _^_en | |||
_« uvre||gijm'E | |||
® markdepoz'e | |||
¯ makrO~ | |||
² pyis'A~s||d'Y | |||
³ pyisA~s||trwa | |||
¶ paragraf | |||
· pwE~ | |||
¸ sedij | |||
º d@gre | |||
_» fErme||gijm'E | |||
¿ pwE~||dE~terogasjO~||E~vErse | |||
// numeric | |||
@@ -239,6 +249,7 @@ adn ad,eEn | |||
adsl ad,eEsEl | |||
alt _::alt | |||
amd a,Emde | |||
android A~droid | |||
aol a,oEl | |||
api ap,ei | |||
ascii aski | |||
@@ -645,6 +656,7 @@ alleluia alelui'a | |||
alterego altErego | |||
anis anis | |||
armageddon armagedO~ | |||
aujourd'hui aujourdui $text | |||
auvent ovA~ | |||
beta beta | |||
bien biE~n2 | |||
@@ -662,11 +674,13 @@ canyon kanjOn | |||
charles Sarl | |||
(chef d'oeuvre) chédeuvre $text | |||
(chef d'oeuvres) chédeuvres $text | |||
chienlit SjA~li | |||
choeur kWr | |||
cinema sinema | |||
cocus kOky | |||
couscous kuskus | |||
delete _^_en | |||
dengue dE~g | |||
dernier dErnjer2 | |||
doppler dOplEr | |||
dot dOt | |||
@@ -692,6 +706,7 @@ gus gys | |||
gym Zim | |||
han _|A~ | |||
hélas elas $u+ | |||
jackpot dZakpOt | |||
jacques Zak | |||
karaoke karaoke | |||
kevin kevin | |||
@@ -947,3 +962,4 @@ venezuela venezyEla | |||
wallis walis | |||
futuna futuna | |||
zimbabwe zimbabwe | |||
@@ -27,7 +27,7 @@ | |||
// http://www.fluxnic.net/cicero | |||
// | |||
// Rules are now maintained by Michel Such <[email protected]> | |||
// Last update: 2010-09-04 Michel Such <[email protected]> | |||
// Last update: 2010-10-15 Michel Such <[email protected]> | |||
// | |||
// Letter classes: | |||
@@ -37,7 +37,7 @@ | |||
// K not a vowel (i.e. consonant, space, ) | |||
.replace | |||
œ oe | |||
œ oe | |||
.L01 d e l n r t u | |||
@@ -63,7 +63,7 @@ | |||
// When these diphtonges are after a consonant folllowing e, e is not mute | |||
.L10 ia ie io ua ue ui uo | |||
.L11 b p | |||
.L12 é è al ib ie l om on ré | |||
.L12 é è aï al ib ie l om on ré | |||
// Words ending "son" pust sound english if preceded by L13 | |||
.L13 d g k l p er hn | |||
@@ -138,6 +138,7 @@ _C) aud (_ od // Maud | |||
ay Ej // paye | |||
ay (ak aj // kayak | |||
ay (_ E // display | |||
bb) aye (_ aj // cobbaye layer | |||
Xl) ayer (X EjWr // player, layer | |||
h) am (_S2 am | |||
w) an (_ an | |||
@@ -169,6 +170,7 @@ _) be (L15A _^_en | |||
_) c (d se | |||
_) ch (arism k // charisme, charismatique | |||
_) ch (irop k // chiroptère | |||
_) coe (la se // coelacante | |||
a) ch (_ k // almanach | |||
ar) c (ti // arctique | |||
e) ch (_ k // varech | |||
@@ -617,6 +619,7 @@ gu) eu (ler Y // gueuler | |||
.group ë | |||
u) ë // ambiguë | |||
no) ë (_ e // canoë | |||
ë E // citroën noël | |||
@@ -936,6 +939,7 @@ _re) name _^_en | |||
oi wa // poil | |||
oê (l wa // poêle | |||
om (L11 O~ // bombe, pompe | |||
om (t O~ // comte | |||
n) om (X O~ // nom | |||
om (_ Om // www.web.com | |||
@@ -1217,6 +1221,7 @@ L13) ston (_ _^_en | |||
t (_ | |||
peti) t (_ t2 | |||
th (L12++ t | |||
th (ArA++ t | |||
or) th (++ t | |||
_) th (erm t | |||
ts (_S1 z2 // silent at end of word unless next word starts with a vowel | |||
@@ -1358,6 +1363,7 @@ g) ton (_ _^_en // try, country | |||
g) u (A // fatigue | |||
g) u (ï y // ambiguïté | |||
g) u (ë y // ambiguë | |||
p) u (tsch u // putsch | |||
uz (z W | |||
// group u: English section |
@@ -187,6 +187,7 @@ _#-ikának a:nAk | |||
(1-ike) elseje $text $alt2 | |||
(1-ikei) elsejei $text $alt2 | |||
(1-éhez) elsejéhez $text $alt2 | |||
(1-jét) elsejét $text $alt2 | |||
(2-i) másodikai $text $alt2 | |||
(2-ig) másodikáig $text $alt2 | |||
(2-étől) másodikától $text $alt2 //this is not mistake, don't change! | |||
@@ -236,6 +237,7 @@ _#-ikának a:nAk | |||
(0-n) nul:a:n | |||
(00-n) nul:Anul:a:n | |||
(0-ról) nul:a:R2o:l | |||
(0-st) nul:a:St | |||
(1-gyet) EJ:Et | |||
(1-gyes) EJ:ES | |||
(2-őt) kEt:Y:t | |||
@@ -282,6 +284,7 @@ _#-ikának a:nAk | |||
(8-al) n^olts:Al | |||
(9-el) kilEnts:El | |||
(9-cel) kilEnts:El | |||
(9-cet) kilEntsEt | |||
_10e tiz | |||
_20e hus | |||
(10-szer) ti:s:ER2 | |||
@@ -302,6 +305,8 @@ _20e hus | |||
//Special roman number suffixes and exceptions | |||
(XVI-ig) tizEnhAtodikig //Special roman number suffix exception | |||
//following roman number examples need defining, but this examples are not working for example bigger than 20. | |||
//Very interesting, if I using normal numbers (for example 12-el, Espeak general sending tizEnkEt:Y:vEl phoneme right. | |||
(II-el) kEt:Y:vEl | |||
(III-al) ha:R2om:Al | |||
(IV-el) ne:J:El | |||
@@ -310,6 +315,19 @@ _20e hus | |||
(VII-el) he:t:El | |||
(VIII-al) n^olts:Al | |||
(IX-el) kilEnts:El | |||
(X-el) ti:zzEl //I don't no why, but this exception is not working. | |||
(XII-el) tizEnkEt:Y:vEl | |||
(XIII-al) tizEnha:R2om:Al | |||
(XIV-el) tizEnne:J:El //this is the right phoneme, not tizEnE:JEl | |||
(XV-el) tizEnYt:El //this is the right phoneme, not tizEnYtEl | |||
(XVI-al) tizEnhAt:Al //this is the right phoneme, not tizEnhAtAl | |||
(XVII-el) tizEnhe:t:El | |||
(XVIII-al) tizEnn^olts:Al | |||
(XIX-el) tizEnkilEnts:El | |||
(XX-al) hu:s:Al | |||
XXX-al) hAR2mints:al | |||
//etc, need do general rule similar with normal number exceptions, please test for example 22-el, 32-el, 42-el, 52-el, 40-el, 50-el, 60-al, 70-el etc | |||
//phonemes if this is possible. | |||
(CD-ellenőrzést) tse:de:El:EnY:R2ze:St //this is not a mistake, default Espeak spokening roman number before the ellenőrzés word | |||
// These words mean that a dot after number, immediately preceding, does not mean an ordinal number | |||
@@ -368,7 +386,6 @@ végén $alt | |||
elején $alt | |||
folyamán $alt | |||
úton $alt | |||
út $alt | |||
// accent names | |||
_lig ligAtu:R2A | |||
@@ -424,7 +441,7 @@ LST ElESte: $allcaps | |||
BAR bAR2 $allcaps | |||
//SS EsEs $allcaps | |||
(a . m .) An^n^i||m'int | |||
(a . m .) An^n^i||m'int $hasdot | |||
ún u:JnEvEzEt: $hasdot | |||
dr doktoR2 $hasdot | |||
mr mistER2 $hasdot //in hungarian we not use, but lot of books contains this word. | |||
@@ -444,9 +461,9 @@ pl pe:lda:ul $hasdot | |||
stb SAtYb:i $hasdot | |||
u.n u:JnEvEzEt: $hasdot | |||
ú.n u:JnEvEzEt: $hasdot | |||
vö v'EZd||_'Yss2E | |||
vö v'EZd||_'Yss2E $hasdot | |||
(u . i .) $abbrew | |||
NVDA Enve:de:A $allcaps | |||
// Articles | |||
@@ -551,6 +568,7 @@ nekem $unstressend | |||
közül $unstressend | |||
közé $unstressend | |||
között $u $alt3 | |||
környékén $alt3 | |||
an $u // so many persons | |||
as $u | |||
ba $unstressend // into | |||
@@ -707,7 +725,7 @@ jut $unstressend | |||
legyen $unstressend | |||
azt $unstressend | |||
ezt $unstressend | |||
út $unstressend | |||
út $alt $unstressend | |||
tiszt $unstressend | |||
vesz $unstressend | |||
cég $unstressend | |||
@@ -1190,6 +1208,7 @@ szerzett $unstressend | |||
járni $unstressend | |||
döntöttek $unstressend | |||
írt $unstressend | |||
méltó $unstressend | |||
// word pairs | |||
@@ -1309,6 +1328,7 @@ _. pont | |||
~ tildE | |||
° fokjEl | |||
Ft foR2int | |||
(Ft-tal) foR2int:Al | |||
\ bEks2lES $max3 | |||
^ fYlfEle:n^i:l | |||
@@ -1434,3 +1454,17 @@ CD-m) cédém | |||
(USA-ban) usában | |||
(USA-ba) usába | |||
(pc-n) pécén | |||
(PC-s) pécés | |||
//following entries are NVDA screen reader suffixes in hungarian | |||
//normal NVDA abbreviation is defined $allcaps attribute, but if this abbrewiation is containing a suffix, need pronounce another hungarian word. | |||
(NVDA-ba) envédéába | |||
(NVDA-ban) envédéában | |||
(NVDA-ból) envédéából | |||
(NVDA-hoz) envédéához | |||
(NVDA-nak) envédéának | |||
(NVDA-s) envédéás | |||
(NVDA-t) envédéát | |||
(NVDA-tól) envédéától | |||
(NVDA-val) envédéával | |||
@@ -1,6 +1,7 @@ | |||
// Hungarian translation rules | |||
// This file is UTF-8 encoded | |||
// ?1 change pronmunciation of foreign names, some users don't want these rules | |||
.replace | |||
// allow o,u-circumflex for o,u-double-acute | |||
@@ -8,7 +9,6 @@ | |||
û ű | |||
.group a | |||
a A | |||
_) a (_ %A | |||
@@ -33,21 +33,22 @@ | |||
@) ben (_S3 bEn | |||
biz (A biz, // bizalmas etc. | |||
biedermeier bi:dER2ma:jER2 | |||
?1 biedermeier bi:dER2ma:jER2 | |||
_) batthiány bAc:a:n^i | |||
tö) bb (ször b | |||
tö) bb (ség b | |||
tö) bb (nyire b | |||
tö) bb (nek b | |||
tová) bbr (a bR2 | |||
tö) bb (soro b | |||
tö) bb (ny b | |||
tö) bb (féle b | |||
jo) bbr (a bR2 | |||
tö) bbr (e bR2 | |||
kise) bb (ség b | |||
tö) bb (száz b | |||
tö) bb (száz b | |||
bb (f b //general rule if have two b and f letter, need spokening one b letter | |||
bb (g b //if have two b and one g or gy letter, need spokening one b letter | |||
bb (h b //if have two b and one h letter, need spokening one b letter | |||
bb (j b //general rule if have two b and j letter, need spokening one b letter | |||
bb (k b | |||
bb (l b //general rule if have two b and l letter, need spokening one b letter | |||
bb (m b //if have two b and one m letter, need spokening one b letter | |||
bb (n b //general rule if have two b and n letter, need spokening one b letter | |||
bbr bR2 //general rule if have two b and r letter, need spokening one b and one r letter | |||
bb (s b //general rule if have two b and s or sz letter, need spokening one b letter | |||
bb (t b //if have two b and one t letter, need spokening one b letter | |||
bb (v b //general rule if have two b and v letter, need spokening one b letter | |||
bb (w b //general rule if have two b and w letter, need spokening one b letter | |||
bb (z b //general rule if have two b and z or zs letter, need spokening one b letter | |||
.group c | |||
c ts | |||
@@ -66,12 +67,9 @@ | |||
pol) c (so ts | |||
por) c (sé ts | |||
por) c (sz ts | |||
_sto) ck (holm k | |||
?1 _sto) ck (holm k | |||
har) c (csoport ts | |||
lán) c (cs ts | |||
_) colt kolt | |||
_) coltt kolt: | |||
_) coltj kolc | |||
kudar) c (sorozat ts | |||
gerin) c ts | |||
tán) c (cs ts | |||
@@ -98,7 +96,7 @@ hierar) ch (i h | |||
te) ch h | |||
pszi) ch h | |||
pszy) ch h | |||
mün) ch (en h | |||
mün) ch (en C | |||
maso) ch (istA h | |||
monar) ch (i h | |||
_pe) ch h: | |||
@@ -122,6 +120,8 @@ oligar) ch h | |||
dts tS: | |||
dt t: | |||
dtszé t:se: | |||
dd (h d //if have two d and one h letter, need spokening one d letter | |||
ddr dR2 //if have two d and one r letter, need spokening one d and one r letter | |||
apró) d (sz d | |||
dsz (_S3 ts: | |||
beszé) d (szin d | |||
@@ -158,7 +158,7 @@ oligar) ch h | |||
min) dny n^ | |||
ná) d d | |||
ná) dd d: | |||
diesel di:zEl | |||
?1 diesel di:zEl | |||
hí) d (szerkezet d | |||
dühvel dyvEl | |||
epizó) d (szerep d | |||
@@ -213,7 +213,6 @@ menetren) dsz (erű d|s | |||
honvé) d (sereg d | |||
va) d (szeder d | |||
twee) d (sapk d | |||
fe) dd (hetetlen d | |||
ezre) d (segé d | |||
erő) d (szerű d | |||
csalá) d (szociol d | |||
@@ -226,7 +225,16 @@ menetren) dsz (erű d|s | |||
_hol) d (sarló d | |||
mó) d (sor d | |||
csalá) d (segít d | |||
standar) d (jegy d | |||
csen) d (sértés d | |||
szaba) d (strand d | |||
zöl) d (sáv d | |||
csalá) d (jog d | |||
szaba) d (szállás d | |||
szaba) d (szombat d | |||
ren) dsz (erintegráció ts | |||
máso) d (szülött d | |||
va) d (szój d | |||
.group dz | |||
fogó) dz (kod ts | |||
@@ -268,6 +276,7 @@ pilóta) dzs (ek dZ | |||
honvé) dz (ászló d|z | |||
smarag) dz (öld d|z | |||
kapáló) dz z | |||
_ó) dz (ko ts | |||
.group e | |||
e E | |||
@@ -304,20 +313,24 @@ kapáló) dz z | |||
g g | |||
gg g: | |||
ggy J: | |||
_) goethe gY:tE | |||
_) goethé gY:te: | |||
gg (b g //if have two g and one b letter, need spokening one g letter | |||
gg (f g //if have two g and one f letter, need spokening one g letter | |||
gg (h g //if have two g and one h letter, need spokening one g letter | |||
gg (l g //if have two g and one l letter, need spokening one g letter | |||
ggr gR2 //if have two g and r letter, need spokening one g and one r letter | |||
gg (v g //if have two g and one v letter, need spokening one g letter | |||
?1 _) goeth gY:tE | |||
me) g (gy g | |||
me) ggy (fa J | |||
me) ggy (piros J | |||
me) ggy (vörös J | |||
me) ggy (es J: | |||
me) ggy (et J: | |||
me) ggy (el J: | |||
me) ggy (_S3 J: | |||
me) ggy (szín J | |||
le) g (gy g | |||
orszá) g (gyűlés g | |||
fü) gg (vény g | |||
fo) g (gyűrű g | |||
fo) g (gyö g | |||
kuplun) g (gyár g | |||
@@ -335,11 +348,13 @@ ritkasá) g (gyűjt g | |||
vilá) g (gyűlöl g | |||
gk k: | |||
é) gh (ajla kh | |||
se) gg (fe g | |||
se) gg (be g | |||
pro) g (gyak g | |||
se) ggr (e gR2 | |||
arcüre) g (gyulladás g | |||
bete) g (gyógyász g | |||
me) ggy (nek J: | |||
szöve) g (gyűjt g | |||
ta) g (gyűl g | |||
gu) gg (ol g | |||
.group gy | |||
gy J | |||
@@ -434,6 +449,13 @@ huszone) gy (edik J: | |||
je) gy (ért J | |||
harmince) gy (edik J: | |||
étvá) gy (javít J | |||
e) gy (ember J: | |||
né) gy (jegy J | |||
a) gy (sebész J | |||
tár) gy (sorozat J | |||
e) gy (jegyű J | |||
tár) gy (jutal J | |||
.group h | |||
h h | |||
@@ -444,7 +466,6 @@ harmince) gy (edik J: | |||
i i | |||
@) i (_S1 i | |||
@) ig (_S2 ig | |||
_) itthon ithon | |||
.group í | |||
í i: | |||
@@ -499,11 +520,17 @@ harmince) gy (edik J: | |||
kossutht koSu:t: | |||
kossuthj koSu:c: | |||
készségg ke:SSe:g: | |||
_a) kk (reditál k | |||
kk (b k //if have two k and b letter, need spokening one k letter | |||
so) kk (b k: //an exception with need spokening longer k phoneme | |||
kk (d k //if have two k and one d letter, need spokening one k letter | |||
kk (f k //if have two k and f letter, need spokening one k letter | |||
kk (h k k //if have two k and h letter, need spokening one k letter | |||
kk (j k //if have two k and j letter, need spokening one k letter | |||
kk (m k //if have two k and m letter, need spokening one k letter | |||
kkr kR2 //if have two k and r letter, need spokening one k letter | |||
kk (s k //if have two k and s or sz letter, need spokening one k letter | |||
kk (t k //if have two k and t letter, need spokening one k letter | |||
_) közt kYst | |||
bara) kk (b k | |||
bara) kk (f k | |||
bara) kk (j k | |||
.group l | |||
l l | |||
@@ -546,24 +573,23 @@ keresztü) l (j l | |||
fe) l (javít l | |||
fe) l (jogosít l | |||
ökö) l (jog l: | |||
ha) ll (gatom l | |||
me) ll (kas l | |||
inte) ll (ige l | |||
e) ll (ipsz l | |||
_) e) lj (ár lj | |||
ha) ll (ga l | |||
_ta) lj (án lj | |||
_fé) l (jobb l | |||
ll (b l //if have two l and b letter, need spokening one l letter | |||
ll (d l //if have two l and d letter, need spokening one l letter | |||
ll (g l //if have two l and a g or gy letter, need spokening one l letter | |||
ll (h l //if have two l and h letter, need spokening one l letter | |||
ll (k l //if have two l and k letter, need spokening one l letter | |||
ll (n l //if have two l and n or ny letter, need spokening one l letter before the n or ny letter | |||
ll (s l //if have two l letter and s or sz letter, need spokening one l letter | |||
ll (t l //if have two l and a t letter, need spokening one l letter | |||
.group m | |||
m m | |||
ko) mm (uni m | |||
mauser mAuzER2 | |||
mosquito moskito: | |||
mosquitó moskito: | |||
messerschmitt mEs:ER2Smit: | |||
.group n | |||
@@ -574,22 +600,32 @@ keresztü) l (j l | |||
ny n^ | |||
nny n^n^ | |||
nj n^n^ | |||
nny (cs n^ //if have two ny and cs letter, need spokening one ny letter | |||
nny (d n^ //if have two nny and one d letter, need spokening one ny letter | |||
nny (f n^ //if have two ny and one f letter, need spokening one ny letter | |||
nny (g n^ //if have two ny and one g letter, need spokening one ny letter | |||
nny (k n^ //if have two nny and one k letter, need spokening one ny letter | |||
nny (t n^ //if have two nny and one t letter, need spokening one ny letter | |||
nny (v n^ //if have two nny and one v letter, need spokening one n^ letter | |||
nn (h n //if have two n and one h letter, need spokening one n letter | |||
nn (k n //if have two n and one k letter, need spokening one k letter | |||
nn (m n //if have two n and one m letter, need spokening one n letter | |||
nn (l n //if have two n and one l letter, need spokening one l letter | |||
nn (s n //if have two n and one s or sz letter, need spokening one n letter | |||
nn (t n //if have two n and one t letter, need spokening one n letter | |||
szí) n (ját n | |||
szí) n (józan n | |||
nyj n^n^ | |||
_) nem (- nEm // has $combine attribute in hu_list, combine with the next word | |||
me) nny (ország n^ | |||
me) nny (d n^ | |||
me) nny (k n^ | |||
pihe) nj (_S2 n^ | |||
főbe) n (jár n | |||
ingye) n n | |||
_) nylon nEjlon | |||
sze) nny (víz n^ | |||
?1 _) nylon nEjlon | |||
ajá) nlj j: | |||
i) nny (ekció n^ | |||
bű) n (jel n | |||
@@ -613,8 +649,6 @@ tulajdo) n (jog n | |||
fé) ny (jel n^ | |||
i) nj (ekció n^ | |||
elle) n (jegy n | |||
fe) nn (tartás n | |||
fe) nn (sík n | |||
egye) n (jogú n | |||
beto) n (járda n | |||
verse) ny (jog n^ | |||
@@ -626,12 +660,16 @@ teljesítmé) ny (javu n^ | |||
_feddhetetle) n (jelle n | |||
állomá) ny (jel n^ | |||
ingatla) n (jog n | |||
nyeremé) ny (játék n^ | |||
botrá) ny (játék n^ | |||
magá) nny (ugdíj nn^ //the nny letter pair this word not mean the double n^ phoneme, need spokening single the first n and n^ phoneme with this | |||
//word. | |||
alkotmá) ny (jog n^ | |||
.group o | |||
o o | |||
otthon othon | |||
oscar oska:R2 | |||
.group ó | |||
ó o: | |||
@@ -648,7 +686,7 @@ ingatla) n (jog n | |||
pp (C p: | |||
p (v p_ | |||
_) potsdam potsda:m | |||
?1 _) potsdam potsda:m | |||
@@ -666,33 +704,31 @@ ingatla) n (jog n | |||
r (r R | |||
r (cc R | |||
_) richa (rd R2iCa: | |||
?1 _) richa (rd R2iCa: | |||
_) richá (rd R2iCa: | |||
reichsmarschall R2EjsmAR2SAl: | |||
i) rr (itá R2 | |||
ko) rr (epetá R2 | |||
.group s | |||
s S | |||
föld) s (ánc S | |||
hel) s (inki z | |||
?1 hel) s (inki z | |||
ki) s (ebb SS | |||
_munká) s S | |||
_nyílá) s S | |||
_o) slo slo: | |||
_o) sló slo: | |||
?1 _o) slo slo: | |||
?1 _o) sló slo: | |||
tojá) s S | |||
_) semmelweiss sEmmElvEjs | |||
_) semmelweis sEmmElvEjs | |||
_) semmelweiß sEmmElvEjs | |||
engel) s s | |||
_) saar sa:R2 | |||
_wa) sh (ing S | |||
?1 _) saar sa:R2 | |||
?1 _wa) sh (ing S | |||
pénze) s S | |||
robbaná) s S | |||
schmeisser SmEjsER2 | |||
danubiu) s s //a radio station name | |||
juventu) s s //a radio station name | |||
?1 danubiu) s s //a radio station name | |||
?1 juventu) s s //a radio station name | |||
va) s (s S | |||
óriá) s S | |||
látá) s (zavar S | |||
@@ -704,6 +740,8 @@ szennye) s (zsá S | |||
magatartá) s (zavar S | |||
erőforrá) s (zabál S | |||
működé) s (zava S | |||
viselkedé) s (zava S | |||
alkalmazá) s (szerver S | |||
.group ss | |||
ssz ss2 | |||
@@ -878,6 +916,8 @@ hirdeté) ssz (erve Ss | |||
páncélo) ssz Ss | |||
hajtá) ssz (erű Ss | |||
sorva) ssz (ák s: | |||
rendelteté) ssz (er Ss | |||
klien) ssz (oft Ss | |||
.group sz | |||
sz s | |||
@@ -909,6 +949,7 @@ rongyo) szs (ák SZ | |||
para) sztsz (ek st|s | |||
rava) sz (ár s | |||
_ka) sztsze st|sE | |||
szemete) szs (ák SZ | |||
.group t | |||
@@ -917,19 +958,26 @@ rongyo) szs (ák SZ | |||
t t | |||
tc ts: | |||
tt t: | |||
ttk t:k | |||
tth t:h | |||
ttk tk //if have two t and k letter, need spokening tk letter pair. | |||
tth th //if have two t and h letter, need spokening th letter pair. | |||
ttg t:g | |||
ttgy t:J | |||
ttp t:p | |||
@) tól (_S3q to:l | |||
@) től (_S3q tY:l | |||
tt (C t: | |||
ttn t:n | |||
ttm t:m | |||
ttl t:l | |||
ttr t:R2 | |||
ttv t:v | |||
ttn tn //if have two t and n letter, need spokening one t and one n letter | |||
képze) tt (nek t: //exception | |||
terveze) tt (n t: //exception | |||
ttm tm //if have two t letter and m letter, need spokening one t and one m letter | |||
ttl tl //if have two t and l letter, need spokening one t and one l letter | |||
sűríte) tt (le t: //special exception | |||
o) tt (lét t: //special exception | |||
ttr tR2 //if have two t and r letter, need spokening one t and one r letter | |||
helyeze) tt (ről t: | |||
ttv tv //if have two t and v letter, need spokening one t and one v letter | |||
ty c | |||
// s) ty c: // | |||
// z) ty c: // keztyű | |||
@@ -1025,7 +1073,6 @@ folyama) t (jel t | |||
fron) t (jár t | |||
á) t (söpör t | |||
ala) tt (jár t: | |||
fri) tz ts: | |||
halo) tt (sápad t: | |||
mi) t (se t | |||
há) t (szél t | |||
@@ -1135,7 +1182,13 @@ szerete) t (szolgálat t | |||
ú) t (jelzés t | |||
vizsgála) t (sor t | |||
dagana) t (sej t | |||
tábláza) t (sor t | |||
tábláza) t (sor t | |||
ben) t (szorul t | |||
_á) t (jelentkez t | |||
spor) t (szolgál t | |||
üzle) t (sor t | |||
tábláza) t (cell t | |||
.group ts | |||
ts (_S2 tS //general rule with word end of ts letters | |||
@@ -1223,6 +1276,9 @@ indula) tsz (ó t|s | |||
szemé) ts (ég tS: | |||
ré) ts (ég tS: | |||
já) tsz (ok ts: | |||
álla) ts (ág tS: | |||
köteleze) ts (ég tS: | |||
kötö) ts (ég tS: | |||
.group u | |||
u u | |||
@@ -1239,7 +1295,9 @@ szovjet) u (nió u: | |||
ü y | |||
ütt yt: | |||
ütty yc: | |||
egy) ütt (m yt | |||
egy) ütt (l yt | |||
egy) ütt (v yt | |||
.group ű | |||
ű y: | |||
@@ -1250,11 +1308,10 @@ szovjet) u (nió u: | |||
.group v | |||
v v | |||
_) v (_ ve: | |||
_) versailles vER2sa:j | |||
?1 _) versailles vER2sa:j | |||
.group w | |||
w v | |||
wehrmacht vER2mAht | |||
.group x | |||
_) x (_ iks | |||
@@ -1320,7 +1377,7 @@ _szára) zs (ág SS | |||
_nehé) zs (ely zS | |||
_) zürich tsyR2iC | |||
_) zürich tsyR2i C | |||
vigyá) zz (ba z | |||
vigyá) zz (t z | |||
tí) zsz (er s: |
@@ -27,6 +27,7 @@ | |||
@) a (ggine_ 'a | |||
_) ae (r aI | |||
@) ano (_ %ano //ByFilo | |||
@) avano (_S5 'avano | |||
a (tterA_ 'a | |||
@@ -8,6 +8,7 @@ | |||
b be: | |||
c se: | |||
d de: | |||
e e: | |||
f Ef | |||
g Qe: | |||
h ha: | |||
@@ -407,6 +408,7 @@ inkader $alt | |||
jakker $alt | |||
jammer $alt | |||
joeker $alt | |||
jonger $alt | |||
kader $alt | |||
kaffer $alt | |||
kalefater $alt | |||
@@ -770,11 +772,446 @@ vedette v@d'Et@ | |||
violette $3 | |||
wasserette $3 | |||
// ending -el is stressed | |||
isabel $3 | |||
libel $2 | |||
mirabel $3 | |||
tabel $2 | |||
// words ending in el, elt, elde, elden, elend, elende, eld, ele, elen | |||
// with stress on the previous syllable | |||
// adjectives | |||
edel $alt | |||
enkel $alt | |||
gammel $alt | |||
heikel $alt | |||
ijdel $alt | |||
jofel $alt | |||
kregel $alt | |||
kreupel $alt | |||
luttel $alt | |||
nobel $alt | |||
nozel $alt | |||
schamel $alt | |||
sensibel $alt | |||
simpel $alt | |||
sjofel $alt | |||
soepel $alt | |||
troebel $alt | |||
vermetel $alt | |||
// nouns | |||
amandel $alt | |||
appel $alt | |||
artikel $alt | |||
beginsel $alt | |||
discipel dIs'ip@l $alt | |||
engel $alt | |||
fabel $alt | |||
gruwel $alt | |||
heuvel $alt | |||
letsel $alt | |||
mazel $alt | |||
meubel $alt | |||
middel $alt | |||
mirakel $alt | |||
mossel $alt | |||
parabel $alt | |||
perikel pe:r'ik@l $alt | |||
raadsel $alt | |||
roersel $alt | |||
schepsel $alt | |||
schijnsel $alt | |||
stoppel $alt | |||
zemel $alt | |||
// verbs | |||
aarzel $alt | |||
adel $alt | |||
angel $alt | |||
babbel $alt | |||
barrel $alt | |||
bazel $alt | |||
bedel be:d@l $alt | |||
beitel $alt | |||
bengel $alt | |||
beugel $alt | |||
beuzel $alt | |||
biggel $alt | |||
bikkel $alt | |||
bobbel $alt | |||
bochel $alt | |||
boemel $alt | |||
borrel $alt | |||
borstel $alt | |||
bottel $alt | |||
brabbel $alt | |||
breidel $alt | |||
broddel $alt | |||
brokkel $alt | |||
bubbel $alt | |||
buffel $alt | |||
buitel $alt | |||
bundel $alt | |||
bungel $alt | |||
bussel $alt | |||
cirkel $alt | |||
dartel $alt | |||
diggel $alt | |||
dissel $alt | |||
dobbel $alt | |||
doezel $alt | |||
dommel $alt | |||
dompel $alt | |||
dremmel $alt | |||
drentel $alt | |||
dreutel $alt | |||
drevel $alt | |||
dribbel $alt | |||
droppel $alt | |||
druppel $alt | |||
dubbel $alt | |||
duikel $alt | |||
duimel $alt | |||
duivel $alt | |||
duizel $alt | |||
duvel $alt | |||
dwarrel $alt | |||
eikel $alt | |||
fakkel $alt | |||
fezel $alt | |||
fiedel $alt | |||
foefel $alt | |||
foezel $alt | |||
fonkel $alt | |||
friemel $alt | |||
frommel $alt | |||
frummel $alt | |||
frutsel $alt | |||
futsel $alt | |||
gaffel $alt | |||
gesel Qe:s@l $alt | |||
giebel $alt | |||
giechel $alt | |||
gijzel $alt | |||
gispel $alt | |||
gniffel $alt | |||
goochel $alt | |||
gorgel $alt | |||
grabbel $alt | |||
grendel $alt | |||
greppel $alt | |||
griezel $alt | |||
griffel $alt | |||
gruizel $alt | |||
guichel $alt | |||
hachel $alt | |||
hagel $alt | |||
hakkel $alt | |||
haksel $alt | |||
handel $alt | |||
haspel $alt | |||
heibel $alt | |||
hekel $alt | |||
hemel $alt | |||
hengel $alt | |||
hevel $alt | |||
hinkel $alt | |||
hobbel $alt | |||
hoepel $alt | |||
hompel $alt | |||
huichel $alt | |||
huikel $alt | |||
huppel $alt | |||
hussel $alt | |||
hutsel $alt | |||
ijzel $alt | |||
jengel $alt | |||
jodel $alt | |||
joekel $alt | |||
jubel $alt | |||
kabbel $alt | |||
kabel $alt | |||
kachel $alt | |||
kakel $alt | |||
kantel $alt | |||
kapittel $alt | |||
kapsel $alt | |||
karbonkel $alt | |||
kartel $alt | |||
kavel $alt | |||
kegel $alt | |||
ketel $alt | |||
keutel $alt | |||
keuvel $alt | |||
kevel $alt | |||
kibbel $alt | |||
kietel $alt | |||
kinkel $alt | |||
kittel $alt | |||
klepel $alt | |||
klingel $alt | |||
klippel $alt | |||
klungel $alt | |||
knabbel $alt | |||
kneukel $alt | |||
knevel $alt | |||
knibbel $alt | |||
knobbel $alt | |||
knokel $alt | |||
knuffel $alt | |||
knuppel $alt | |||
knutsel $alt | |||
koepel $alt | |||
kogel $alt | |||
konkel $alt | |||
koppel $alt | |||
korrel $alt | |||
krabbel $alt | |||
krauwel $alt | |||
krengel $alt | |||
kreukel $alt | |||
kribbel $alt | |||
kriebel $alt | |||
kringel $alt | |||
krinkel $alt | |||
kroezel $alt | |||
kronkel $alt | |||
kruimel $alt | |||
kukel $alt | |||
kunstel $alt | |||
kwabbel $alt | |||
kwakkel $alt | |||
kwansel $alt | |||
kwartel $alt | |||
kwebbel $alt | |||
kwezel $alt | |||
kwispel $alt | |||
label le:b@l $alt | |||
lepel $alt | |||
lispel $alt | |||
lummel $alt | |||
mangel $alt | |||
martel $alt | |||
mazzel $alt | |||
mengel $alt | |||
mergel $alt | |||
metsel $alt | |||
mispel $alt | |||
moffel $alt | |||
mommel $alt | |||
monkel $alt | |||
morrel $alt | |||
mummel $alt | |||
murmel $alt | |||
nachel $alt | |||
nagel $alt | |||
nestel $alt | |||
netel $alt | |||
neutel $alt | |||
neuzel $alt | |||
nevel $alt | |||
nikkel $alt | |||
orakel $alt | |||
paddel pEd@l $alt | |||
pantoffel $alt | |||
parel $alt | |||
pegel $alt | |||
pekel $alt | |||
pendel $alt | |||
peuzel $alt | |||
piemel $alt | |||
piepel $alt | |||
pimpel $alt | |||
pingel $alt | |||
pinkel $alt | |||
poedel $alt | |||
poekel $alt | |||
popel $alt | |||
prevel $alt | |||
priegel $alt | |||
prikkel $alt | |||
pruttel $alt | |||
puzzel $alt | |||
rafel $alt | |||
raffel $alt | |||
rakel $alt | |||
rammel $alt | |||
ransel $alt | |||
ratel $alt | |||
rebbel $alt | |||
regel $alt | |||
reutel $alt | |||
reuzel $alt | |||
ribbel $alt | |||
riffel $alt | |||
rijmel $alt | |||
rimpel $alt | |||
ringel $alt | |||
rinkel $alt | |||
ritsel $alt | |||
rochel $alt | |||
roddel $alt | |||
rodel $alt | |||
roefel $alt | |||
roffel $alt | |||
rommel $alt | |||
rompel $alt | |||
ronsel $alt | |||
sabbel $alt | |||
sabel $alt | |||
sappel $alt | |||
schakel $alt | |||
scharminkel $alt | |||
scharrel $alt | |||
schimmel $alt | |||
schnabbel $alt | |||
schoffel $alt | |||
schommel $alt | |||
schotel $alt | |||
schrikkel $alt | |||
schrompel $alt | |||
schuifel $alt | |||
scrabbel skrEb@l $alt | |||
settel $alt | |||
shuffel S8f@l | |||
shuttel S8t@l | |||
siepel $alt | |||
sijpel $alt | |||
sikkel $alt | |||
singel $alt | |||
sjoemel $alt | |||
sleutel $alt | |||
slungel $alt | |||
smiespel $alt | |||
smikkel $alt | |||
smispel $alt | |||
smoezel $alt | |||
smokkel $alt | |||
snabbel $alt | |||
sneuvel $alt | |||
snoezel $alt | |||
snorkel $alt | |||
snuffel $alt | |||
spartel $alt | |||
spiegel $alt | |||
spijbel $alt | |||
spikkel $alt | |||
sprankel $alt | |||
sprenkel $alt | |||
sprokkel $alt | |||
staffel $alt | |||
stamel $alt | |||
stapel $alt | |||
stechel $alt | |||
steggel $alt | |||
stempel $alt | |||
stiefel $alt | |||
stijfsel $alt | |||
stippel $alt | |||
stommel $alt | |||
strengel $alt | |||
stribbel $alt | |||
strompel $alt | |||
strubbel $alt | |||
struikel $alt | |||
stuntel $alt | |||
suizel $alt | |||
sukkel $alt | |||
swaffel $alt | |||
tackel tEk@l | |||
tafel $alt | |||
takel $alt | |||
tegel $alt | |||
tempel $alt | |||
teugel $alt | |||
teutel $alt | |||
tichel $alt | |||
tingel $alt | |||
tinkel $alt | |||
tintel $alt | |||
tippel $alt | |||
titel $alt | |||
tokkel $alt | |||
tortel $alt | |||
trappel $alt | |||
treuzel $alt | |||
trippel $alt | |||
troetel $alt | |||
troggel $alt | |||
trommel $alt | |||
tuimel $alt | |||
tunnel $alt | |||
tuttel $alt | |||
twijfel $alt | |||
twinkel $alt | |||
vendel $alt | |||
vezel $alt | |||
vijzel $alt | |||
vlegel $alt | |||
vleugel $alt | |||
vogel $alt | |||
wafel $alt | |||
waffel $alt | |||
waggel $alt | |||
wakkel $alt | |||
wandel $alt | |||
wankel $alt | |||
warrel $alt | |||
wauwel $alt | |||
weifel $alt | |||
wemel $alt | |||
wentel $alt | |||
wervel $alt | |||
wichel $alt | |||
wiebel $alt | |||
wiegel $alt | |||
wiemel $alt | |||
wikkel $alt | |||
wimpel $alt | |||
winkel $alt | |||
wissel $alt | |||
worstel $alt | |||
wortel $alt | |||
wriemel $alt | |||
zabbel $alt | |||
zadel $alt | |||
zamel $alt | |||
zegel $alt | |||
zetel $alt | |||
zoedel $alt | |||
zwachtel $alt | |||
zwavel $alt | |||
zwendel $alt | |||
zwengel $alt | |||
zwiebel $alt | |||
zwijmel $alt | |||
// -s is not plural | |||
chaos xa:Os | |||
beiaard b'EIa:rt | |||
boomgaard $1 | |||
dronkaard $1 | |||
gierigaard $1 | |||
grijsaard $1 | |||
gulzigaard $1 | |||
lafaard $1 | |||
slechtaard $1 | |||
snoodaard $1 | |||
standaard $1 | |||
valsaard $1 | |||
woestaard $1 | |||
// pronunciation exceptions | |||
aangrijpend $2 | |||
accessoires aksEsw'ar@s | |||
actiepunt Aksip8nt | |||
agenda $2 | |||
amino $1 | |||
amnestie $3 | |||
boudoir budv#'a:r | |||
bourgondier burx'o:ndi:@r | |||
circuit sIrku'i | |||
chalet Sa:lE | |||
@@ -797,6 +1234,9 @@ ingevolge $3 | |||
ingrediënt $4 | |||
ingenieur Inzj@nj'Y:r | |||
journaal Surn'a:l | |||
maxima $1 | |||
meteen mEt'e:n | |||
minima $1 | |||
ongastvrij OnQAstv@-*'EI | |||
ongelooflijk $3 | |||
ongemakkelijk $3 | |||
@@ -805,7 +1245,9 @@ ongerieflijk $3 | |||
ongrondwettig $3 | |||
proces $2 | |||
renaissance rEne:s'A~s@ | |||
reservoir re:zErvv#'a:r | |||
sacristie $3 | |||
salomo $1 | |||
tegenaan $3 | |||
tegenin $3 | |||
tegenover $3 | |||
@@ -814,6 +1256,7 @@ tegennatuur $4 | |||
tegenstrijdig $3 | |||
tegenwoordig $3 | |||
travestie $3 | |||
verderop $3 | |||
waarschijnlijk $2 | |||
@@ -825,3 +1268,6 @@ Ingeborg INe:bOrx | |||
Ingmar INmAr | |||
Ingrid IN@-*It | |||
kennedy kEn@dE | |||
// places | |||
canada $1 |
@@ -10,14 +10,19 @@ | |||
au VU | |||
ay a:j | |||
@@C) a (_ =a: | |||
_) aan (@P3 'a:n | |||
aa (rd_ 'a: | |||
aa (t_ 'a: | |||
aa (C_ 'a: | |||
@) abel (_ 'a:bE2l | |||
@) abele (_ 'a:b@l@ | |||
_) af (C@P2 'Af | |||
age (_ 'a:Z@ | |||
ages (_S1 s | |||
age (_$w_alt a:Q@ | |||
aire (_ 'E:r | |||
air (_ 'Er | |||
ale (_ 'a:l@ | |||
@) ant (_ 'Ant | |||
@) a (de_ 'a: | |||
@@ -33,12 +38,18 @@ | |||
_) be (@P2 b@ | |||
_) b (ee+ b | |||
_) be (ren bI: | |||
_) be (rm bE | |||
_) be (stia bE | |||
_) be (ter be: | |||
_) be (ven_ be: | |||
_) bever be:v@r | |||
_) be (zem be: | |||
_) bezig be:z@x | |||
_) beu bY: | |||
_) bij (C@P3 b'EI | |||
_) bureau byr'o: | |||
_) buurt (@@P5 b'yrt // buurtbewoner | |||
.group c | |||
@@ -68,6 +79,10 @@ | |||
_) ch (or x | |||
_) ch (r x | |||
&) che (_ =S | |||
ci (a S | |||
@) ci (eel S | |||
@) ci (ë S | |||
ci (o S | |||
ck k | |||
cieel S'e:l | |||
ciële S'e:l@ | |||
@@ -104,9 +119,18 @@ | |||
@) ee (rde_ 'I: | |||
@) ee (rden_ 'I: | |||
it) eit (_ 'EIt | |||
&) el (_ @l | |||
&) el (_ E2l | |||
&) eld (_ @ld | |||
&) ele (_ 'e:l@ | |||
&) el (_$p_alt =@l | |||
&) el (e_$p_alt =@l | |||
&) el (en_$p_alt =@l | |||
&) el (t_$p_alt =@l | |||
&) el (de_$p_alt =@l | |||
&) el (den_$p_alt =@l | |||
&) el (end_$p_alt =@l | |||
&) em (_ @m | |||
&) en (_S2qd @n | |||
&) ens (_S3q @ns | |||
@@ -121,10 +145,11 @@ | |||
@) etten (_S3 @n | |||
@) eur (_ 'Y:r | |||
_) er (@P2 Er | |||
@) e (raar_ @ | |||
&) e (nB@ E2 | |||
id) e (nt E | |||
_) er (@P2 Er | |||
&) era (_ @ra: | |||
@) e (raar_ @ | |||
&) e (rC@ E2 | |||
@@ -142,6 +167,7 @@ | |||
_) gee Qe: | |||
gener (aal Q,e:n@r | |||
gelijk Q@lEIk | |||
_) ge (rC QE | |||
_) geu QY: | |||
_) ge (ven Qe: | |||
_) ge (ving Qe: | |||
@@ -168,17 +194,23 @@ | |||
m) ie (_ 'i | |||
p) ie (_ 'i | |||
@) ibel (_ 'ib@l | |||
@) ibele (_ 'ib@l@ | |||
&) ica (_ =ika: | |||
&) ico (_ =iko: | |||
ie (X 'i | |||
ie (rd_ 'i | |||
@) ig (_S2d @x | |||
@) ig (_S2dq @x | |||
@) ige (_ @Q@ | |||
@) ij (n_ 'EI | |||
&) ika (_ =ika: | |||
&) iko (_ =iko: | |||
_) in (C@P2 'In | |||
// _) in (gP2 'In | |||
io (nage iO | |||
@) isch (_ =is | |||
@) ische (_ =is@ | |||
@) isme (_ 'Ism@ | |||
@) ist (_ 'Ist | |||
@@ -203,11 +235,12 @@ | |||
@) loog (_ lo:x | |||
.group m | |||
m m | |||
m) m | |||
manage (ment ma:nIdZ | |||
management ma:nIdZm@nt | |||
_) mee (@P3 m'e: | |||
@@ -216,8 +249,10 @@ | |||
n) n | |||
ng N | |||
nj n^ | |||
n (kel N | |||
_) na (C@@P2 n'a: | |||
_) na (tion na: | |||
.group o | |||
@@ -233,10 +268,15 @@ | |||
ou VU | |||
ou (rage u | |||
@@C) o (_ =o: | |||
oe (X_ 'u | |||
oir (_ 'v#a:r | |||
oo (X 'o: | |||
telef) oo (n 'o: | |||
_) op (@@P2 'Op | |||
_) open (@P4 'o:p@n | |||
_) op (era 'o:p | |||
_) op (tion Op | |||
_) over (@P4 'o:v@r | |||
@@ -271,6 +311,9 @@ | |||
_) ph f | |||
ph (K f | |||
_) politie (@ po:l'itsi | |||
.group q | |||
q k | |||
@@ -282,8 +325,8 @@ | |||
.group r | |||
r r | |||
A) r (A * | |||
C) r (A @-* | |||
A) r (A r | |||
C) r (A r | |||
rr *r | |||
.group re | |||
@@ -292,19 +335,28 @@ | |||
_) re (cent r@ | |||
_) re (cept r@ | |||
_) re (ceptief re: | |||
_) re (clam r@ | |||
_) re (serve_ r@ | |||
.group s | |||
s s | |||
s) s | |||
A) s (A z | |||
sch sx | |||
sch (_ s | |||
sch (e_ s | |||
_) sch (n S | |||
_) sh S | |||
sh (K S | |||
sj S | |||
@@) s (_S1 s | |||
@) si (o S | |||
A) si (o Z | |||
@) ssi (o S | |||
_) standaard (@P9 st'Anda:rt | |||
.group t | |||
t t | |||
@@ -315,6 +367,12 @@ | |||
p) tie (_ =si | |||
s) tie (_ =ti | |||
cra) tie (_ ts'i | |||
tiee (l_ S'e: | |||
tië (le_ S'e: | |||
@) ti (a S | |||
@) ti (ë S | |||
@) ti (on S | |||
s) t (i++ t | |||
tj t; | |||
tsj tS | |||
_) th t | |||
@@ -325,6 +383,7 @@ | |||
_) team t'i:m | |||
team (_ ti:m | |||
_) train tre:n | |||
.group te | |||
_) tegen (P5 t'e:Q@n | |||
@@ -368,7 +427,7 @@ | |||
_) ver (@P3 v@r | |||
_) ver (sie_ vEr | |||
_) ver (der_ vEr | |||
_) verder vErd@r | |||
_) voort (@P5 v'O:rt | |||
@@ -42,10 +42,10 @@ _4 f'i:RE | |||
_5 f'Em | |||
_6 s'Eks | |||
_7 S'u-: | |||
_8 'Ot:@2 | |||
_8 'Ot:a# | |||
_9 n'i: | |||
_10 t'i: | |||
_11 'Elv@2 | |||
_11 'Elva# | |||
_12 t'Olv | |||
_13 tR'Et:@n | |||
_14 fj'URt@n | |||
@@ -54,7 +54,7 @@ _16 s'Ekst@n | |||
_17 s'yt:@n | |||
_18 'At:@n | |||
_19 n'It:@n | |||
_2X s;'u-:@2 | |||
_2X s;'u-:a# | |||
_3X tR'Et:i: | |||
_4X f'Y:Rti: | |||
_5X f'Emti: | |||
@@ -62,8 +62,8 @@ _6X s'Eksti: | |||
_7X s'yt:i: | |||
_8X 'Ot:i: | |||
_9X n'It:i: | |||
_0C h'u-ndR@2 | |||
_1C 'Et||h'u-ndR@2 | |||
_0C h'u-ndRa# | |||
_1C 'Et||h'u-ndRa# | |||
_0M1 t'u-:s@n | |||
_1M1 'Et||t'u-:s@n | |||
_0M2 m'Illi:;,u:n@R | |||
@@ -73,32 +73,32 @@ _0and u:g | |||
_dpt kOmmA | |||
// ordinal numbers | |||
_ord @nd@2 | |||
_1o f'WRst@2 | |||
_2o 'AndR@2 | |||
_3o tR'Edj@2 | |||
_4o fj'a:R@2 | |||
_5o f'Emt@2 | |||
_6o S'Et:@2 | |||
_8o 'Ot:@nd@2 | |||
_11o 'EllEvt@2 | |||
_12o t'Olvt@2 | |||
_13o tR'Et:@nd@2 | |||
_14o fj'URt@md@2 | |||
_15o f'Emt@nd@2 | |||
_16o s'Ekst@nd@2 | |||
_17o s'yt:@nd@2 | |||
_18o 'At:@nd@2 | |||
_19o n'It:@nd@2 | |||
_2Xo s;'u-:@nd@2 | |||
_0Co h'u-ndR@d@2 | |||
_0M1o t'u-:s@nd@2 | |||
_ord @nda# | |||
_1o f'WRsta# | |||
_2o 'AndRa# | |||
_3o tR'Edja# | |||
_4o fj'a:Ra# | |||
_5o f'Emta# | |||
_6o S'Et:a# | |||
_8o 'Ot:@nda# | |||
_11o 'EllEvta# | |||
_12o t'Olvta# | |||
_13o tR'Et:@nda# | |||
_14o fj'URt@mda# | |||
_15o f'Emt@nda# | |||
_16o s'Ekst@nda# | |||
_17o s'yt:@nda# | |||
_18o 'At:@nda# | |||
_19o n'It:@nda# | |||
_2Xo s;'u-:@nda# | |||
_0Co h'u-ndR@da# | |||
_0M1o t'u-:s@nda# | |||
// punctuation and symbols | |||
//======================== | |||
* ss;aRn@2 $max3 | |||
* ss;aRna# $max3 | |||
= aRli:k $max3 | |||
+ plu-s $max3 | |||
% pR'u:s'Ent $max3 | |||
@@ -113,20 +113,20 @@ _$ dOllA:R | |||
_' ApUstR'u:f | |||
_( paRaNt'e:s||b@j'ynn@R | |||
_) paRaNt'e:s||Sl'u-t: | |||
_* ss;aRn@2 | |||
_* ss;aRna# | |||
_, kOmmA | |||
_- stRe:k | |||
_. pu-Nktu-:m | |||
_: ku:lOn | |||
_; se:mi:ku:lOn | |||
_< mIndR@2||En | |||
_< mIndRa#||En | |||
_= aRli:k | |||
_> stWR@||En | |||
_? spWRSmOlstENn | |||
@ kRWllAlfA | |||
_[ v'EnstR@2||h'A:ke:paRaNt'e:s | |||
_[ v'EnstRa#||h'A:ke:paRaNt'e:s | |||
_\ OmvEndt||skROstR@k | |||
_] h'YyR@2||h'A:ke:paRaNt'e:s | |||
_] h'YyRa#||h'A:ke:paRaNt'e:s | |||
^ sIRku-mflEks | |||
__ u-ndaRStR@k | |||
_` 'OmvEndt||ApUstR'u:f | |||
@@ -135,11 +135,11 @@ _#09 tA:b | |||
_#32 mEllOmRu:m | |||
_acu A:'ku-t: | |||
_ced s'e:dIll@2 | |||
_ced s'e:dIlla# | |||
_cir s'IRku-mflEks | |||
_dia tR'e:mA | |||
_grv gR'A:vi:s | |||
_tld t'Ild@2 | |||
_tld t'Ilda# | |||
é $accent | |||
ü $accent | |||
@@ -296,7 +296,7 @@ reader _^_EN | |||
cancel _^_EN | |||
continue _^_EN | |||
magnifier _^_EN | |||
and @2nd $only | |||
and a#nd $only | |||
// MAIN WORD DICTIONARY | |||
@@ -306,7 +306,7 @@ der dE:R | |||
her hE:R | |||
kom kOm | |||
loe lu: $capital | |||
noe nU:@2 | |||
noe nU:a# | |||
noen nU:@n // no+en | |||
office Offi:s | |||
system syst'e:m |
@@ -1,221 +1,227 @@ | |||
// This file is UTF8 encoded | |||
// Spelling-to-phoneme rules for Norwegian | |||
// C% indicates a double consonant (same letter twice) | |||
// First version by Jonathan Duddington | |||
// October 2010 improvements by Eirini Florou <[email protected]> | |||
.group a | |||
a A: | |||
a (CC A | |||
a (_ A | |||
a A: | |||
a (CC A | |||
a (C a | |||
a (_ A | |||
// X) a (CCK A // single syllable with >= 2 final consonants | |||
// // or initial syllable with 3 consonants | |||
ai AI | |||
au aU | |||
ai AI | |||
au aU | |||
aa o: // å | |||
aa (CC O | |||
ae a: // æ | |||
ae (CC a | |||
aa o: // å | |||
aa (CC O | |||
ae a: // æ | |||
ae (CC a | |||
.group b | |||
b b | |||
bb b: | |||
b b | |||
bb b: | |||
_) be (@ b@ | |||
_) be (@ b@ | |||
.group c | |||
c k | |||
cc k: | |||
_) c (e s | |||
c (i s | |||
c (y s | |||
c (ei s | |||
c (øy s | |||
ch S | |||
c k | |||
cc k: | |||
_) c (e s | |||
c (i s | |||
c (y s | |||
c (ei s | |||
c (øy s | |||
ch S | |||
.group d | |||
d d | |||
dd d: | |||
r) d (_ | |||
&) det (_ d@2 | |||
d d | |||
dd d: | |||
r) d (_ | |||
&) det (_ da# | |||
.group e | |||
e e: | |||
e (CC E | |||
ei aI | |||
e (rC a // ?? | |||
&) e (_ @2 | |||
&) e (C_ @ | |||
X) e (m_ E | |||
&) en (_ @n | |||
&) ene (_ En@2 // @n@2 ?? | |||
&) ens (_ @ns | |||
&) es (_ @s | |||
&) et (_ @t | |||
e e: | |||
e (CC E | |||
ei aI | |||
e (rC a // ?? | |||
&) e (_ a# | |||
&) e (C_ @ | |||
X) e (m_ E | |||
&) en (_ @n | |||
&) ene (_ Ena# // @na# ?? | |||
&) ens (_ @ns | |||
&) es (_ @s | |||
&) et (_ @t | |||
.group f | |||
f f | |||
f f | |||
.group g | |||
g g | |||
gg g: | |||
g (n N | |||
gj j | |||
g (i j | |||
g (y j | |||
g (ei j | |||
g (øy j | |||
g g | |||
gg g: | |||
g (n N | |||
gj j | |||
g (i j | |||
g (y j | |||
g (ei j | |||
g (øy j | |||
.group h | |||
h h | |||
hj j | |||
hv v | |||
h h | |||
hj j | |||
hv v | |||
.group i | |||
i i: | |||
i (CC I | |||
&) ig (_ I | |||
i i: | |||
i (CC I | |||
&) ig (_ I | |||
.group j | |||
j j | |||
j j | |||
.group k | |||
k k | |||
kk k: | |||
kj x | |||
k (i x | |||
k (y x | |||
k (ei x | |||
k (øy x | |||
k k | |||
kk k: | |||
kj x | |||
k (i x | |||
k (y x | |||
k (ei x | |||
k (øy x | |||
.group l | |||
l l | |||
ll (K l | |||
lj j | |||
l l | |||
ll (K l | |||
lj j | |||
ld ll | |||
.group m | |||
m m | |||
mm (K m | |||
m m | |||
mm (K m | |||
.group n | |||
n n | |||
nn (K n | |||
ng N | |||
n (k N | |||
n n | |||
nn (K n | |||
ng N | |||
n (k N | |||
nd nn | |||
.group o | |||
o u: | |||
o (CC O | |||
oi OI | |||
o u: | |||
o (CC O | |||
oi OI | |||
oe O@2 | |||
@b) oe (_ u: | |||
oe Oa# | |||
@b) oe (_ u: | |||
o (nd U | |||
o (rt U | |||
b) o (rd u: | |||
o (st U | |||
o (nd U | |||
o (rt U | |||
b) o (rd u: | |||
o (st U | |||
.group p | |||
p p | |||
pp p: | |||
p p | |||
pp p: | |||
.group q | |||
q k | |||
qq k: | |||
qu kw | |||
q k | |||
qq k: | |||
qu kw | |||
.group r | |||
r R | |||
rs (_ S | |||
r R | |||
rs (_ S | |||
.group s | |||
s s | |||
ss ss | |||
ss (_ s | |||
sch S | |||
sj S | |||
skj S | |||
sk (i S | |||
sk (y S | |||
sk (ei S | |||
sk (øy S | |||
r) s S | |||
s (l S | |||
A) s (lA s | |||
s s | |||
ss ss | |||
ss (_ s | |||
sch S | |||
sj S | |||
skj S | |||
sk (i S | |||
sk (y S | |||
sk (ei S | |||
sk (øy S | |||
r) s S | |||
s (l S | |||
A) s (lA s | |||
.group t | |||
t t | |||
tt t: | |||
ti (on S | |||
tj s; | |||
t t | |||
tt t: | |||
ti (on S | |||
tj s; | |||
.group u | |||
u u-: | |||
u (CC u- | |||
ui u-I | |||
u u-: | |||
u (CC u- | |||
ui u-I | |||
.group v | |||
v v | |||
vv (_ v | |||
v v | |||
vv (_ v | |||
.group w | |||
w v | |||
w v | |||
.group x | |||
x ks | |||
x (x | |||
x ks | |||
x (x | |||
_) x s | |||
.group y | |||
y y: | |||
y (CC y | |||
y y: | |||
y (CC y | |||
.group z | |||
z s | |||
zz z | |||
zz (_ z | |||
z s | |||
zz z | |||
zz (_ z | |||
.group å | |||
å o: | |||
åe o:@2 | |||
å (CC O | |||
å o: | |||
åe o:a# | |||
å (CC O | |||
.group æ | |||
æ E: | |||
æ (r a: | |||
æ (CC a | |||
æ E: | |||
æ (r a: | |||
æ (CC a | |||
.group ø | |||
ø Y: | |||
ø (CC W | |||
øy Yy | |||
ø Y: | |||
ø (CC W | |||
øy Yy | |||
.group ä | |||
ä E: | |||
ä (CC E | |||
ä E: | |||
ä (CC E | |||
.group ö | |||
ö Y: | |||
ö (CC W | |||
ö Y: | |||
ö (CC W | |||
.group | |||
é 'e: | |||
ü y: | |||
é 'e: | |||
ü y: | |||
$ dOllA:R | |||
! _:'u-:tRu:pstENn_: | |||
!) ! | |||
$ dOllA:R | |||
! _:'u-:tRu:pstENn_: | |||
!) ! | |||
. pu-Nktu-:m | |||
. (. _: | |||
\.) . | |||
. pu-Nktu-:m | |||
. (. _: | |||
\.) . | |||
__) - (_D mi:nu-:s | |||
A_) - (_D _ | |||
C_) - (_D _ | |||
__) - (_D mi:nu-:s | |||
A_) - (_D _ | |||
C_) - (_D _ | |||
@@ -97,7 +97,7 @@ _- in.aIppUg // இணைப்புக் | |||
\ p'in||s,a:jvU // பின் சாய்வு | |||
! vijVppU // வியப்பு | |||
_? ke:l.vi // கேள்வி | |||
# en.||kuRi $max3 // எண் குறி | |||
# ;en. $max3 // எண் குறி | |||
= samVnpa:d.U $max3 // சமன்பாடு | |||
+ ku:t.t.Vl $max3 // கூட்டல் | |||
* perUkkVl $max3 // பெருக்கல் | |||
@@ -105,6 +105,9 @@ _? ke:l.vi // கேள்வி | |||
÷ vVgUttVl // வகுத்தல் | |||
% viz.Ukka:d.U $max3 // விழுக்காடு | |||
U+bf9 ru:ba:j | |||
¼ ka:l | |||
½ araI | |||
¾ mukka:l | |||
// abbreviations | |||
ரூ ru:ba:j $dot $only | |||
@@ -195,7 +198,6 @@ tamil தமிழ் $text | |||
பாகம் $alt | |||
பண்தம் $alt | |||
பவனி $alt | |||
பயில்வான் $alt | |||
பாபா $alt | |||
போண்டா $alt | |||
பஜ்ஜி $alt | |||
@@ -224,7 +226,6 @@ tamil தமிழ் $text | |||
பால $alt | |||
பாம்ப் $alt | |||
பீராமண $alt | |||
பிரதர் $alt | |||
பால்ய $alt | |||
பலு $alt | |||
பில் $alt | |||
@@ -255,6 +256,29 @@ tamil தமிழ் $text | |||
பலத்தாலான $alt | |||
பெஞ்ச் $alt | |||
பெஞ்சு $alt | |||
பார $alt | |||
பாமா $alt | |||
பென்ஸ் $alt | |||
பாலிய $alt | |||
புக்கு $alt | |||
படுவா $alt | |||
பீரும் $alt | |||
பல்ப் $alt | |||
பிரேக் bre:k | |||
ப்ரேக் bre:k | |||
பெட்ல $alt | |||
பான $alt | |||
பகத் $alt | |||
பலிக் $alt | |||
பலிக்கு $alt | |||
பலிக்குத்தான் $alt | |||
பவ $alt | |||
புஸ் $alt | |||
போஸின் $alt | |||
போனி $alt | |||
பிஸி $alt | |||
பேஷ் $alt | |||
பாவே $alt | |||
(பி . ஏ) bije: | |||
@@ -280,7 +304,6 @@ tamil தமிழ் $text | |||
திட $alt | |||
தேவ $alt | |||
தோ $alt | |||
தினசரி $alt | |||
தரும $alt | |||
தொப் $alt | |||
தொப்பென்று $alt | |||
@@ -301,6 +324,14 @@ tamil தமிழ் $text | |||
திம் $alt | |||
தேவதா $alt | |||
தெனம் $alt | |||
தெனமும் $alt | |||
திடு $alt | |||
தால் $alt | |||
தவ $alt | |||
திக்திக் digdig | |||
தொப்புனு $alt | |||
தருமம் $alt | |||
தாவே $alt | |||
// initial ட | |||
@@ -316,6 +347,12 @@ tamil தமிழ் $text | |||
சிட்டாய் $alt | |||
சேச்சே $alt | |||
சிரம் sirVm | |||
சிலி $alt | |||
சிக் tSik | |||
சர்ச் $alt | |||
டிக் t.ik | |||
ரெட்டி red.d.i | |||
செல்லம் $alt | |||
கக $alt // initial க as [g] | |||
@@ -349,10 +386,16 @@ tamil தமிழ் $text | |||
கான $alt | |||
கோத்திர $alt | |||
கும்முன்னு $alt | |||
கூகுல் $alt | |||
கேட் $alt | |||
கேட்டில் $alt | |||
கின் $alt | |||
கம $alt | |||
குட் $alt | |||
காண்டு $alt | |||
கேட்டின் $alt | |||
கேட்டுக்கு $alt | |||
கம்முனு $alt | |||
குஜால் $alt | |||
@@ -383,3 +426,4 @@ tamil தமிழ் $text | |||
ஓகோ o:Ho: | |||
கப் kVp | |||
செட் set. | |||
திக் dik |
@@ -1,4 +1,4 @@ | |||
66 phoneme tables | |||
67 phoneme tables | |||
new total | |||
base 107 107 | |||
consonants 9 115 | |||
@@ -66,6 +66,7 @@ consonants 9 115 | |||
ht 11 140 | |||
az 10 127 | |||
ak 8 109 | |||
am 8 123 | |||
Data file Used by | |||
b/b [b] base | |||
@@ -338,27 +339,34 @@ l/_l [l] base | |||
[l/] fr | |||
[l] hu | |||
[l] zh | |||
l/l_ [l/] base | |||
l/l_ [l] base | |||
[l/] base | |||
[l/3] base | |||
[l/] fr | |||
l/l_@ [l/3] base | |||
[l/] fr | |||
l/l@ [hæy] base | |||
l/l@ [h}] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
[K] nso | |||
l/L1_aL [l/] base | |||
l/L1_aL [l] base | |||
[l/] base | |||
[l/] de | |||
l/L1_eL [l/] base | |||
l/L1_eL [l] base | |||
[l/] base | |||
[l/] de | |||
l/L1_iL [l/] base | |||
l/L1_iL [l] base | |||
[l/] base | |||
[l/] de | |||
l/L1_@L [l/] base | |||
l/L1_@L [l] base | |||
[l/] base | |||
[l/] de | |||
l/L1_oL [l/] base | |||
l/L1_oL [l] base | |||
[l/] base | |||
[l/] de | |||
l/L1_uL [l/] base | |||
l/L1_uL [l] base | |||
[l/] base | |||
[l/] de | |||
l/L2_aL [l/2] base | |||
l/L2_eL [l/2] base | |||
@@ -370,14 +378,14 @@ l/L2_oL [l/2] base | |||
l/L2_uL [l/2] base | |||
l/l_3 [l/] de | |||
l/l_4 [ll] sq | |||
l/la [hæy] base | |||
l/la [h}] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
[K] nso | |||
l/l_a [l/3] base | |||
[l/] fr | |||
l/le [hæy] base | |||
l/le [h}] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -388,7 +396,7 @@ l/L_eL_af [&] af | |||
[&:] af | |||
l/l_front [L] sq | |||
l/l_front_ [l/4] sq | |||
l/li [hæy] base | |||
l/li [h}] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -401,7 +409,7 @@ ll/ll [L] bg | |||
ll/_ll [L] bg | |||
l/l_long [l] base | |||
[l] fr | |||
l/lo [hæy] base | |||
l/lo [h}] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -409,7 +417,7 @@ l/lo [h | |||
l/l_o [l/3] base | |||
[l/] fr | |||
l^/l_rfx [l.] base | |||
l/lu [hæy] base | |||
l/lu [h}] base | |||
[l#] base | |||
[l] fr | |||
[l/2] fr | |||
@@ -1285,6 +1293,7 @@ vowel/a [a] base | |||
[a] id | |||
[a] sl | |||
[a] bg | |||
[a] am | |||
vowel/a# [a] base2 | |||
[a/] base2 | |||
[a#] en-sc | |||
@@ -1521,6 +1530,7 @@ vowel/e_mid2 [E] af | |||
[e] bg | |||
[e] nso | |||
[e] az | |||
[e] am | |||
vowel/@_fnt [@] en-wi | |||
[@2] en-wi | |||
[@2] hr | |||
@@ -1553,12 +1563,14 @@ vowel/i [i] base | |||
[i] prs | |||
[i] nso | |||
[i] ak | |||
[i] am | |||
vowel/i# [y:] cy | |||
vowel/i_2 [i2] de | |||
[i:] de | |||
[i] nl | |||
[i:] la | |||
[i:] sv | |||
vowel/i#_2 [y] am | |||
vowel/i_3 [i] af | |||
[i:] sk | |||
vowel/i_4 [i] fi | |||
@@ -1652,12 +1664,13 @@ vowel/@_low [@] en-rp | |||
[V] hi | |||
[@2] hi | |||
[@] ro | |||
[@2] no | |||
[a#] no | |||
[@] id | |||
[V] ne | |||
[@/] ne | |||
[@] pa | |||
[V] pa | |||
[@] am | |||
vowel/@_low2 [@/] en-us | |||
[@2] en-us | |||
vowel/o [o] base2 | |||
@@ -1697,6 +1710,7 @@ vowel/o-_2 [V] en-n | |||
vowel/o_3 [oU] en-sc | |||
vowel/o-_3 [U] en-rp | |||
vowel/o-_4 [o] ro | |||
[o] am | |||
vowel/o_5 [O] nl | |||
[O] da | |||
vowel/o_6 [O:] nl | |||
@@ -1808,6 +1822,7 @@ vowel/u_2 [u1] fi | |||
[u] tr | |||
[u] sl | |||
[u] bg | |||
[u] am | |||
vowel/u#_2 [u-] sv | |||
vowel/u#_3 [U] ta | |||
[U:] ta |
@@ -15,7 +15,7 @@ phoneme @ // close schwa | |||
FMT(vowel/@_4) | |||
endphoneme | |||
phoneme @2 // open schwa | |||
phoneme a# // open schwa | |||
vowel starttype #@ endtype #a | |||
unstressed | |||
length 120 |
@@ -423,6 +423,21 @@ phoneme l | |||
ChangePhoneme(l/) | |||
ENDIF | |||
IF nextPh(isNotVowel) THEN | |||
// in case the next phoneme is no longer a vowel, in pass=2 | |||
PrevVowelEndings | |||
VowelEnding(l/L1_@L, -60) | |||
VowelEnding(l/L1_aL, -40) | |||
VowelEnding(l/L1_eL, -30) | |||
VowelEnding(l/L1_iL, -30) | |||
VowelEnding(l/L1_oL, -40) | |||
VowelEnding(l/L1_uL, -40) | |||
EndSwitch | |||
FMT(l/l_) | |||
RETURN | |||
ENDIF | |||
CALL vowelstart_l | |||
IF prevPh(#@) THEN | |||
@@ -1822,3 +1837,6 @@ include ph_azerbaijani | |||
phonemetable ak base | |||
include ph_akan | |||
phonemetable am base2 | |||
include ph_amhari |
@@ -1,8 +1,9 @@ | |||
// 13.02.10 jonsd: Changed for eSpeak version 1.43 | |||
// 14.09.10 Recognize long and short frames in phondata | |||
// 02.09.10 Fix: Q sections were omitted from the converted phondata | |||
// 13.08.10 jonsd: Added Q lines. Use Address to set the displacement in phondata file. | |||
// 13.02.10 jonsd: Changed for eSpeak version 1.43 | |||
#include <stdio.h> | |||
@@ -10,6 +11,7 @@ | |||
#include <string.h> | |||
#include <ctype.h> | |||
#include <sys/types.h> | |||
#include <sys/stat.h> | |||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | |||
#define IS_BIG_ENDIAN 1 | |||
@@ -57,7 +59,8 @@ typedef struct { | |||
// This is a new format for eSpeak 1.41 | |||
typedef struct { // 44 bytes | |||
#define FRFLAG_KLATT 0x01 // this frame includes extra data for Klatt synthesizer | |||
typedef struct { // 64 bytes | |||
short frflags; | |||
short ffreq[7]; | |||
unsigned char length; | |||
@@ -70,28 +73,29 @@ typedef struct { // 44 bytes | |||
unsigned char klattp2[5]; // continuation of klattp[], Avp, Fric, FricBP, Turb | |||
unsigned char klatt_ap[7]; // Klatt parallel amplitude | |||
unsigned char klatt_bp[7]; // Klatt parallel bandwidth /2 | |||
unsigned char spare; // pad to multiple of 4 bytes | |||
} frame_t; // with extra Klatt parameters for parallel resonators | |||
typedef struct { // 44 bytes | |||
short frflags; | |||
short ffreq[7]; | |||
unsigned char length; | |||
unsigned char rms; | |||
unsigned char fheight[8]; | |||
unsigned char fwidth[6]; // width/4 f0-5 | |||
unsigned char fright[3]; // width/4 f0-2 | |||
unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3 | |||
unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew | |||
} frame_t2; | |||
#ifdef deleted | |||
// This is the previous format for versions before 1.41 | |||
typedef struct { | |||
short frflags; | |||
unsigned char length; | |||
unsigned char rms; | |||
short ffreq[9]; | |||
unsigned char fheight[9]; | |||
unsigned char fwidth[6]; | |||
unsigned char fright[6]; | |||
} frame_t; | |||
#endif | |||
#define N_SEQ_FRAMES 25 | |||
typedef struct { | |||
short length; | |||
unsigned char n_frames; | |||
unsigned char flags; | |||
unsigned char sqflags; | |||
frame_t frame[N_SEQ_FRAMES]; | |||
} SPECT_SEQ; | |||
@@ -106,6 +110,23 @@ void usage (const char *program_name); | |||
int xread; // prevent compiler warning from fread() | |||
int GetFileLength(const char *filename) | |||
{//==================================== | |||
struct stat statbuf; | |||
if(stat(filename,&statbuf) != 0) | |||
return(0); | |||
if((statbuf.st_mode & S_IFMT) == S_IFDIR) | |||
// if(S_ISDIR(statbuf.st_mode)) | |||
return(-2); // a directory | |||
return(statbuf.st_size); | |||
} // end of GetFileLength | |||
int main (int argc, char *argv[]) | |||
{//============================== | |||
const char *indir = "/usr/share/espeak-data"; | |||
@@ -147,6 +168,19 @@ int main (int argc, char *argv[]) | |||
printf ("Host seems to be little-endian ..\n"); | |||
#endif | |||
sprintf (f1, "%s/phondata", indir); | |||
sprintf (f2, "%s/temp_1", outdir); | |||
printf ("Processing phondata ..\n"); | |||
swap_phondata (f1, f2, manifest); | |||
if(GetFileLength(f1) != GetFileLength(f2)) | |||
{ | |||
fprintf(stderr, "Error: phondata length is different from the original\n"); | |||
exit(1); | |||
} | |||
sprintf (f1, "%s/phondata", outdir); | |||
rename (f2, f1); | |||
sprintf (f1, "%s/phontab", indir); | |||
sprintf (f2, "%s/temp_1", outdir); | |||
@@ -163,14 +197,6 @@ int main (int argc, char *argv[]) | |||
sprintf (f1, "%s/phonindex", outdir); | |||
rename (f2, f1); | |||
sprintf (f1, "%s/phondata", indir); | |||
sprintf (f2, "%s/temp_1", outdir); | |||
printf ("Processing phondata ..\n"); | |||
swap_phondata (f1, f2, manifest); | |||
sprintf (f1, "%s/phondata", outdir); | |||
rename (f2, f1); | |||
free (f1); | |||
free (f2); | |||
@@ -218,34 +244,40 @@ void swap_phondata (const char *infile, const char *outfile, | |||
if (line[0] == 'S') { | |||
SPECT_SEQ buf_spect; | |||
size_t ix; | |||
size_t frame_start; | |||
int n; | |||
xread = fread (&buf_spect.length, 2, 1, in); | |||
xread = fread (&buf_spect.n_frames, 1, 1, in); | |||
fseek (in, -3, SEEK_CUR); | |||
ix = (char *)(&buf_spect.frame[buf_spect.n_frames]) - | |||
(char *)(&buf_spect); | |||
ix = (ix+3) & 0xfffc; | |||
xread = fread (&buf_spect, ix, 1, in); | |||
xread = fread(&buf_spect, 4, 1, in); | |||
buf_spect.length = (short) SWAP_USHORT (buf_spect.length); | |||
fwrite(&buf_spect, 4, 1, out); | |||
for (n = 0; n < buf_spect.n_frames; n++) { | |||
int k; | |||
buf_spect.frame[n].frflags = (short) | |||
SWAP_USHORT (buf_spect.frame[n].frflags); | |||
frame_start = ftell(in); | |||
xread = fread(&buf_spect.frame[0], sizeof(frame_t), 1, in); | |||
buf_spect.frame[0].frflags = (short) | |||
SWAP_USHORT (buf_spect.frame[0].frflags); | |||
// Changed for eSpeak 1.41 | |||
for (k = 0; k < 7; k++) { | |||
buf_spect.frame[n].ffreq[k] = (short) | |||
SWAP_USHORT (buf_spect.frame[n].ffreq[k]); | |||
buf_spect.frame[0].ffreq[k] = (short) | |||
SWAP_USHORT (buf_spect.frame[0].ffreq[k]); | |||
} | |||
} | |||
fwrite (&buf_spect, ix, 1, out); | |||
// is this a long or a short frame? | |||
if(buf_spect.frame[0].frflags & FRFLAG_KLATT) | |||
{ | |||
fwrite(&buf_spect.frame[0], sizeof(frame_t), 1, out); | |||
fseek(in, frame_start + sizeof(frame_t), SEEK_SET); | |||
} | |||
else | |||
{ | |||
fwrite(&buf_spect.frame[0], sizeof(frame_t2), 1, out); | |||
fseek(in, frame_start + sizeof(frame_t2), SEEK_SET); | |||
} | |||
} | |||
} | |||
else if (line[0] == 'W') { | |||
long pos; | |||
@@ -286,6 +318,24 @@ void swap_phondata (const char *infile, const char *outfile, | |||
xread = fread (env_buf, 1, 128, in); | |||
fwrite (env_buf, 1, 128, out); | |||
} | |||
else if (line[0] == 'Q') { | |||
unsigned char pb[4]; | |||
unsigned length; | |||
char *buf; | |||
xread = fread (pb, 1, 4, in); | |||
fwrite (pb, 1, 4, out); | |||
length = (pb[2] << 8) + pb[3]; // size in words | |||
length *= 4; | |||
buf = (char *) malloc (length); | |||
xread = fread (buf, length, 1, in); | |||
fwrite (buf, length, 1, out); | |||
free (buf); | |||
} | |||
} | |||
fclose (in); |
@@ -609,6 +609,14 @@ SOURCE=.\src\sintab.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.cpp | |||
# End Source File | |||
# Begin Source File |
@@ -25,6 +25,7 @@ | |||
// comment this out when compiling the "speak" process | |||
//#define SPECT_EDITOR | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#include <windows.h> | |||
#define PLATFORM_WINDOWS |
@@ -25,6 +25,7 @@ | |||
// comment this out when compiling the "speak" process | |||
//#define SPECT_EDITOR | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#include <windows.h> | |||
#define PLATFORM_WINDOWS |
@@ -118,6 +118,10 @@ SOURCE=.\src\setlengths.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak.cpp | |||
# End Source File | |||
# Begin Source File | |||
@@ -171,6 +175,10 @@ SOURCE=.\src\sintab.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.h | |||
# End Source File | |||
# Begin Source File |
@@ -33,6 +33,7 @@ | |||
#define NO_VARIADIC_MACROS | |||
#define ESPEAK_API | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" |
@@ -1,7 +1,7 @@ | |||
#ifndef SPEAK_LIB_H | |||
#define SPEAK_LIB_H | |||
/*************************************************************************** | |||
* Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||
* Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||
* email: [email protected] * | |||
* * | |||
* This program is free software; you can redistribute it and/or modify * | |||
@@ -24,11 +24,11 @@ | |||
/* This is the header file for the library version of espeak */ | |||
/* */ | |||
/*************************************************************/ | |||
#define ESPEAK_API __declspec(dllexport) | |||
#include <stdio.h> | |||
#include <stddef.h> | |||
#define ESPEAK_API_REVISION 5 | |||
#define ESPEAK_API_REVISION 6 | |||
/* | |||
Revision 2 | |||
Added parameter "options" to eSpeakInitialize() | |||
@@ -41,11 +41,19 @@ Revision 4 | |||
Revision 5 | |||
Added espeakCHARS_16BIT | |||
Revision 6 | |||
Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL | |||
*/ | |||
/********************/ | |||
/* Initialization */ | |||
/********************/ | |||
// values for 'value' in espeak_SetParameter(espeakRATE, value, 0), nominally in words-per-minute | |||
#define espeakRATE_MINIMUM 80 | |||
#define espeakRATE_MAXIMUM 450 | |||
#define espeakRATE_NORMAL 175 | |||
typedef enum { | |||
espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list. | |||
@@ -74,7 +82,7 @@ typedef struct { | |||
const char *name; // used for MARK and PLAY events. UTF8 string | |||
} id; | |||
} espeak_EVENT; | |||
/* | |||
/* | |||
When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called. | |||
@@ -82,16 +90,16 @@ typedef struct { | |||
In PLAYBACK mode, the callback function is called as soon as an event happens. | |||
For example suppose that the following message is supplied to espeak_Synth: | |||
For example suppose that the following message is supplied to espeak_Synth: | |||
"hello, hello." | |||
* Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | |||
** Block 1: | |||
<audio data> + | |||
<audio data> + | |||
List of events: SENTENCE + WORD + LIST_TERMINATED | |||
** Block 2: | |||
<audio data> + | |||
List of events: WORD + END + LIST_TERMINATED | |||
@@ -128,11 +136,11 @@ typedef enum { | |||
typedef enum { | |||
/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/ | |||
AUDIO_OUTPUT_PLAYBACK, | |||
AUDIO_OUTPUT_PLAYBACK, | |||
/* RETRIEVAL mode: supplies audio data and events to the calling program */ | |||
AUDIO_OUTPUT_RETRIEVAL, | |||
/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | |||
AUDIO_OUTPUT_SYNCHRONOUS, | |||
@@ -153,7 +161,7 @@ typedef enum { | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||
int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||
/* Must be called before any synthesis functions are called. | |||
output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. | |||
@@ -172,10 +180,10 @@ typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
/* Must be called before any synthesis functions are called. | |||
This specifies a function in the calling program which is called when a buffer of | |||
speech sound data has been produced. | |||
speech sound data has been produced. | |||
The callback function is of the form: | |||
@@ -200,7 +208,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||
void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||
/* This function may be called before synthesis functions are used, in order to deal with | |||
<audio> tags. It specifies a callback function which is called when an <audio> element is | |||
encountered and allows the calling program to indicate whether the sound file which | |||
@@ -241,7 +249,7 @@ int UriCallback(int type, const char *uri, const char *base); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
espeak_ERROR espeak_Synth(const void *text, | |||
size_t size, | |||
unsigned int position, | |||
espeak_POSITION_TYPE position_type, | |||
@@ -264,7 +272,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
start of the text. | |||
position_type: Determines whether "position" is a number of characters, words, or sentences. | |||
Values: | |||
Values: | |||
end_position: If set, this gives a character position at which speaking will stop. A value | |||
of zero indicates no end position. | |||
@@ -283,13 +291,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | |||
this pause is suppressed. | |||
unique_identifier: message identifier; helpful for identifying later | |||
unique_identifier: message identifier; helpful for identifying later | |||
data supplied to the callback. | |||
user_data: pointer which will be passed to the callback function. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -297,7 +305,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
espeak_ERROR espeak_Synth_Mark(const void *text, | |||
size_t size, | |||
const char *index_mark, | |||
unsigned int end_position, | |||
@@ -312,8 +320,8 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
For the other parameters, see espeak_Synth() | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -321,13 +329,13 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
espeak_ERROR espeak_Key(const char *key_name); | |||
/* Speak the name of a keyboard key. | |||
If key_name is a single character, it speaks the name of the character. | |||
Otherwise, it speaks key_name as a text string. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -335,11 +343,11 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||
/* Speak the name of the given character | |||
espeak_ERROR espeak_Char(wchar_t character); | |||
/* Speak the name of the given character | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -380,22 +388,23 @@ typedef enum { | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||
espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||
/* Sets the value of the specified parameter. | |||
relative=0 Sets the absolute value of the parameter. | |||
relative=1 Sets a relative value of the parameter. | |||
parameter: | |||
espeakRATE: speaking speed in word per minute. | |||
espeakRATE: speaking speed in word per minute. Values 80 to 450. | |||
espeakVOLUME: volume in range 0-100 0=silence | |||
espeakVOLUME: volume in range 0-200 or more. | |||
0=silence, 100=normal full volume, greater values may produce amplitude compression or distortion | |||
espeakPITCH: base pitch, range 0-100. 50=normal | |||
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | |||
espeakPUNCTUATION: which punctuation characters to announce: | |||
value in espeak_PUNCT_TYPE (none, all, some), | |||
value in espeak_PUNCT_TYPE (none, all, some), | |||
see espeak_GetParameter() to specify which characters are announced. | |||
espeakCAPITALS: announce capital letters by: | |||
@@ -407,8 +416,8 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
espeakWORDGAP: pause between words, units of 10mS (at the default speed) | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -416,7 +425,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
/* current=0 Returns the default value of the specified parameter. | |||
current=1 Returns the current value of the specified parameter, as set by SetParameter() | |||
*/ | |||
@@ -424,14 +433,14 @@ ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
/* Specified a list of punctuation characters whose names are to be spoken when the | |||
value of the Punctuation parameter is set to "some". | |||
punctlist: A list of character codes, terminated by a zero character. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -439,11 +448,12 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
/* Controls the output of phoneme symbols for the text | |||
value=0 No phoneme output (default) | |||
value=1 Output the translated phoneme symbols for the text | |||
value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries) | |||
value=3 as (1), but produces IPA rather than ascii phoneme names | |||
stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | |||
*/ | |||
@@ -451,7 +461,7 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
/* Compile pronunciation dictionary for a language which corresponds to the currently | |||
selected voice. The required voice should be selected before calling this function. | |||
@@ -475,7 +485,7 @@ typedef struct { | |||
unsigned char gender; // 0=none 1=male, 2=female, | |||
unsigned char age; // 0=not specified, or age in years | |||
unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties | |||
unsigned char xx1; // for internal use | |||
unsigned char xx1; // for internal use | |||
int score; // for internal use | |||
void *spare; // for internal use | |||
} espeak_VOICE; | |||
@@ -504,24 +514,24 @@ typedef struct { | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||
const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||
/* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers. | |||
The list is terminated by a NULL pointer | |||
If voice_spec is NULL then all voices are listed. | |||
If voice spec is give, then only the voices which are compatible with the voice_spec | |||
If voice spec is given, then only the voices which are compatible with the voice_spec | |||
are listed, and they are listed in preference order. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
/* Searches for a voice with a matching "name" field. Language is not considered. | |||
"name" is a UTF8 string. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -529,7 +539,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
/* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following | |||
fields may be set: | |||
@@ -549,7 +559,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||
espeak_VOICE *espeak_GetCurrentVoice(void); | |||
/* Returns the espeak_VOICE data for the currently selected voice. | |||
This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s> | |||
*/ | |||
@@ -557,12 +567,12 @@ ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||
espeak_ERROR espeak_Cancel(void); | |||
/* Stop immediately synthesis and audio output of the current text. When this | |||
function returns, the audio output is fully stopped and the synthesizer is ready to | |||
synthesize a new message. | |||
Return: EE_OK: operation achieved | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -570,25 +580,25 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API int espeak_IsPlaying(void); | |||
int espeak_IsPlaying(void); | |||
/* Returns 1 if audio is played, 0 otherwise. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||
espeak_ERROR espeak_Synchronize(void); | |||
/* This function returns when all data have been spoken. | |||
Return: EE_OK: operation achieved | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
espeak_ERROR espeak_Terminate(void); | |||
/* last function to be called. | |||
Return: EE_OK: operation achieved | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
@@ -596,9 +606,8 @@ ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API const char *espeak_Info(void* ptr); | |||
const char *espeak_Info(void* ptr); | |||
/* Returns the version number string. | |||
The parameter is for future use, and should be set to NULL | |||
*/ | |||
#endif | |||
@@ -34,6 +34,7 @@ | |||
#define ESPEAK_API __declspec(dllexport) | |||
#define LIBRARY | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" |
@@ -37,6 +37,7 @@ | |||
//#define USE_PORTAUDIO | |||
//#define USE_NANOSLEEP | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" |
@@ -144,6 +144,10 @@ SOURCE=.\src\setlengths.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.cpp | |||
# End Source File | |||
# Begin Source File | |||
@@ -237,6 +241,10 @@ SOURCE=.\src\sintab.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.h | |||
# End Source File | |||
# Begin Source File |
@@ -261,8 +261,8 @@ static int ConvertRate(int new_rate) | |||
int rate; | |||
static int rate_table[21] = {80,110,124,133,142,151,159,168,174,180,187, | |||
196,208,220,240,270,300,335,369,390,450 }; | |||
static int rate_table[21] = {80,110,124,135,145,155,165,173,180,187,196, | |||
208,220,245,270,300,335,370,410,450,500 }; | |||
rate = new_rate + master_rate; | |||
if(rate < -10) rate = -10; |
@@ -6,7 +6,7 @@ INCDIR=$(PREFIX)/include/espeak | |||
LIBDIR=$(PREFIX)/lib | |||
DATADIR=$(PREFIX)/share/espeak-data | |||
RELEASE = 1.43 | |||
RELEASE = 1.44 | |||
BIN_NAME = speak | |||
BIN2_NAME = espeak | |||
LIB_NAME = libespeak.so | |||
@@ -80,10 +80,10 @@ all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) | |||
$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | |||
$(BIN_NAME): $(OBJS1) | |||
$(CXX) -o $@ $(OBJS1) $(LIBS1) | |||
$(CXX) $(LDFLAGS) -o $@ $(OBJS1) $(LIBS1) | |||
$(BIN2_NAME): $(OBJS3) $(LIB_NAME) | |||
$(CXX) -o $@ $(OBJS3) $(LIBS3) | |||
$(CXX) $(LDFLAGS) -o $@ $(OBJS3) $(LIBS3) | |||
@@ -92,7 +92,8 @@ x_%.o: %.cpp | |||
-I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o | |||
$(LIB_NAME): $(OBJS2) | |||
$(CXX) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2) | |||
$(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \ | |||
$(OBJS2) $(LIBS2) | |||
$(STATIC_LIB_NAME): $(OBJS2) | |||
$(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) |
@@ -140,6 +140,7 @@ static keywtab_t k_properties[] = { | |||
{"isNotVowel", 0, i_isNotVowel}, | |||
{"isFinalVowel", 0, i_isFinalVowel}, | |||
{"isVoiced", 0, i_isVoiced}, // voiced consonant, or vowel | |||
{"isFirstVowel", 0, i_isFirstVowel}, | |||
{NULL, 0, 0} | |||
}; | |||
@@ -3259,7 +3260,7 @@ static void CompileEquivalents() | |||
} | |||
*p_equivalence++ = 0; | |||
p_equivalence = (char *)((int)(p_equivalence + 3) & ~0x3); // align to word boundary | |||
p_equivalence = (char *)((long int)(p_equivalence + 3) & ~0x3); // align to word boundary | |||
n_bytes = p_equivalence - p_start; | |||
p_start[1] = remove_stress; | |||
n_bytes = n_bytes / 4; |
@@ -1111,6 +1111,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
char ph_tens[50]; | |||
char ph_digits[50]; | |||
char ph_and[12]; | |||
char ph_ord_suffix[20]; | |||
units = value % 10; | |||
tens = value / 10; | |||
@@ -1202,12 +1203,20 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
else | |||
{ | |||
if((control & 1) && ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS))) | |||
if((control & 1) && | |||
((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) | |||
{ | |||
sprintf(string,"_%dX%c", tens, ord_type); | |||
if(Lookup(tr, string, ph_tens) != 0) | |||
{ | |||
found_ordinal = 1; | |||
if((units != 0) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)) | |||
{ | |||
// Use the ordinal form of tens as well as units. Add the ordinal ending | |||
Lookup(tr, "_ord", ph_ord_suffix); | |||
strcat(ph_tens, ph_ord_suffix); | |||
} | |||
} | |||
} | |||
if(found_ordinal == 0) | |||
@@ -1290,6 +1299,10 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0)) | |||
{ | |||
Lookup(tr, "_0and", ph_and); | |||
if(tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL) | |||
ph_and[0] = 0; | |||
if(tr->langopts.numbers & NUM_SWAP_TENS) | |||
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal); | |||
else | |||
@@ -1355,7 +1368,8 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
char ph_thousands[50]; | |||
char ph_hundred_and[12]; | |||
char ph_thousand_and[12]; | |||
char ph_ord_suffix[20]; | |||
ordinal = control & 0x22; | |||
hundreds = value / 100; | |||
tensunits = value % 100; | |||
@@ -1422,22 +1436,29 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
suppress_null = 1; | |||
found = 0; | |||
if(tensunits == 0) | |||
if((ordinal) | |||
&& ((tensunits == 0) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) | |||
{ | |||
// is there a special pronunciation for exactly n00 ? | |||
// ordinal number | |||
sprintf(string, "_%dCo", hundreds); | |||
found = Lookup(tr, string, ph_digits); | |||
if(ordinal) | |||
if((tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL) && (tensunits > 0)) | |||
{ | |||
// ordinal number | |||
sprintf(string, "_%dCo", hundreds); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if(!found) | |||
{ | |||
sprintf(string,"_%dC0",hundreds); | |||
found = Lookup(tr, string, ph_digits); | |||
// Use ordinal form of hundreds, as well as for tens and units | |||
// Add ordinal suffix to the hundreds | |||
Lookup(tr, "_ord", ph_ord_suffix); | |||
strcat(ph_digits, ph_ord_suffix); | |||
} | |||
} | |||
if((!found) && (tensunits == 0)) | |||
{ | |||
// is there a special pronunciation for exactly n00 ? | |||
sprintf(string,"_%dC0",hundreds); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if(!found) | |||
{ | |||
sprintf(string,"_%dC",hundreds); |
@@ -140,6 +140,7 @@ void SetSpeed(int control) | |||
int s1; | |||
int wpm; | |||
int wpm2; | |||
double wpm_inc; | |||
speed.loud_consonants = 0; | |||
speed.min_sample_len = 450; | |||
@@ -150,6 +151,21 @@ void SetSpeed(int control) | |||
if(control == 2) | |||
wpm = embedded_value[EMBED_S2]; | |||
// fast_settings[0] wpm where speedup starts | |||
// fast_settings[1] wpm for maximum espeak speed | |||
// fast_settings[2] maximum espeak speed | |||
sonicSpeed = 1.0; | |||
if(wpm > speed.fast_settings[0]) | |||
{ | |||
wpm2 = wpm; | |||
wpm_inc = (double)(speed.fast_settings[2] - speed.fast_settings[0]) / (double)(speed.fast_settings[1] - speed.fast_settings[0]); | |||
wpm_inc = (wpm2 - speed.fast_settings[0]) * wpm_inc; | |||
wpm = speed.fast_settings[0] + (int)wpm_inc; | |||
sonicSpeed = ((double)wpm2)/wpm; | |||
} | |||
#ifdef TEST_SPEED | |||
if(wpm > 1000) | |||
{ | |||
@@ -262,18 +278,6 @@ void SetSpeed(int control) | |||
if((speed.clause_pause_factor = speed.pause_factor) < 16) | |||
speed.clause_pause_factor = 16; | |||
} | |||
if(wpm >= 370) | |||
{ | |||
// TESTING | |||
// use experimental fast settings if they have been specified in the Voice | |||
if(speed.fast_settings[0] > 0) | |||
speed.pause_factor = speed.fast_settings[0]; | |||
if(speed.fast_settings[1] > 0) | |||
speed.wav_factor = speed.fast_settings[1]; | |||
if(speed.fast_settings[2] > 0) | |||
speed.lenmod_factor = speed.lenmod2_factor = speed.fast_settings[2]; | |||
} | |||
} | |||
#ifdef TEST_SPEED |
@@ -289,7 +289,7 @@ void MarkerEvent(int type, unsigned int char_position, int value, unsigned char | |||
static int WavegenFile(void) | |||
{//========================= | |||
int finished; | |||
unsigned char wav_outbuf[512]; | |||
unsigned char wav_outbuf[1024]; | |||
char fname[210]; | |||
out_ptr = out_start = wav_outbuf; |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.44.04 14.Sep.10"; | |||
const char *version_string = "1.44.13 17.Nov.10"; | |||
const int version_phdata = 0x014404; | |||
int option_device_number = -1; | |||
@@ -593,6 +593,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
int which; | |||
unsigned int data; | |||
int instn2; | |||
int count; | |||
PHONEME_TAB *ph; | |||
PHONEME_LIST *plist_this; | |||
static int ph_position[8] = {0, 1, 2, 3, 2, 0, 1, 3}; // prevPh, thisPh, nextPh, next2Ph, nextPhW, prevPhW, nextVowel, next2PhW | |||
@@ -737,6 +738,18 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
case 12: // isVoiced | |||
return((ph->type == phVOWEL) || (ph->type == phLIQUID) || (ph->phflags & phVOICED)); | |||
} | |||
case 13: // isFirstVowel | |||
count = 0; | |||
for(;;) | |||
{ | |||
if(plist->ph->type == phVOWEL) | |||
count++; | |||
if(plist->sourceix != 0) | |||
break; | |||
plist--; | |||
} | |||
return(count==1); | |||
break; | |||
} |
@@ -326,6 +326,7 @@ typedef struct { | |||
#define i_isNotVowel 0x8a | |||
#define i_isFinalVowel 0x8b | |||
#define i_isVoiced 0x8c | |||
#define i_isFirstVowel 0x8d | |||
// place of articulation | |||
#define i_isVel 0x28 | |||
@@ -535,6 +536,7 @@ extern t_espeak_callback* synth_callback; | |||
extern int option_log_frames; | |||
extern const char *version_string; | |||
extern const int version_phdata; | |||
extern double sonicSpeed; | |||
#define N_SOUNDICON_TAB 80 // total entries in soundicon_tab | |||
#define N_SOUNDICON_SLOTS 4 // number of slots reserved for dynamic loading of audio files |
@@ -328,6 +328,9 @@ Translator *SelectTranslator(const char *name) | |||
int name2 = 0; | |||
Translator *tr; | |||
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | |||
static const unsigned char stress_amps_fr[8] = {18,16, 18,18, 18,18, 18,18 }; | |||
static const unsigned char stress_amps_sk[8] = {17,17, 20,20, 20,22, 22,21 }; | |||
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||
@@ -355,6 +358,17 @@ Translator *SelectTranslator(const char *name) | |||
} | |||
break; | |||
case L('a','m'): // Amharic, Ethiopia | |||
{ | |||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
tr->langopts.stress_rule = STRESSPOSN_1L; | |||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
} | |||
break; | |||
case L('a','r'): // Arabic | |||
tr->letter_bits_offset = OFFSET_ARABIC; | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
@@ -496,7 +510,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; | |||
tr->langopts.numbers2 = 0x2; // variant form of numbers before thousands | |||
tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL; // variant form of numbers before thousands | |||
if(name2 == L_grc) | |||
{ | |||
@@ -550,6 +564,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; | |||
tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; | |||
if(name2 == L('c','a')) | |||
{ | |||
@@ -611,16 +626,12 @@ Translator *SelectTranslator(const char *name) | |||
case L('f','r'): // french | |||
{ | |||
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | |||
static const unsigned char stress_amps_fr[8] = {18,16, 20,20, 20,22, 18,18 }; | |||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | |||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | |||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
tr->langopts.accents = 2; // Say "Capital" after the letter. | |||
tr->langopts.vowel_pause = 0; | |||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_AFTER | NUM_VIGESIMAL | NUM_DFRACTION_4; | |||
SetLetterVowel(tr,'y'); | |||
@@ -685,7 +696,6 @@ Translator *SelectTranslator(const char *name) | |||
case L('h','t'): // Haitian Creole | |||
// static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 240}; | |||
// memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths)); | |||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | |||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress |
@@ -427,11 +427,13 @@ typedef struct { | |||
// bit27= Roman numbers are ordinal numbers | |||
int numbers; | |||
#define NUM2_MULTIPLE_ORDINAL 0x1000 | |||
// bits 1-4 use variant form of numbers before thousands,millions,etc. | |||
// bit6=(LANG=pl) two forms of plural, M or MA | |||
// bit7=(LANG-ru) use MB for 1 thousand, million, etc | |||
// bit8=(LANG=cs,sk) two forms of plural, M or MA | |||
// bit9=(LANG=rw) say "thousand" and "million" before its number, not after | |||
// bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units | |||
int numbers2; | |||
#define BREAK_THOUSANDS 0x49249248 |
@@ -152,7 +152,7 @@ static MNEM_TAB keyword_tab[] = { | |||
{"mbrola", V_MBROLA}, | |||
{"consonants", V_CONSONANTS}, | |||
{"klatt", V_KLATT}, | |||
{"fast_test", V_FAST}, | |||
{"fast_test2", V_FAST}, | |||
{"speed", V_SPEED}, | |||
// these just set a value in langopts.param[] | |||
@@ -410,7 +410,10 @@ void VoiceReset(int tone_only) | |||
voice->consonant_ampv = 100; | |||
voice->samplerate = 22050; | |||
memset(voice->klattv,0,sizeof(voice->klattv)); | |||
memset(speed.fast_settings,0,sizeof(speed.fast_settings)); | |||
speed.fast_settings[0] = 250; | |||
speed.fast_settings[1] = 600; | |||
speed.fast_settings[2] = 300; | |||
#ifdef PLATFORM_RISCOS | |||
voice->roughness = 1; |
@@ -28,11 +28,13 @@ | |||
#include <math.h> | |||
#include "speak_lib.h" | |||
#include "speech.h" | |||
#include "phoneme.h" | |||
#include "synthesize.h" | |||
#include "voice.h" | |||
#include "sonic.h" | |||
//#undef INCLUDE_KLATT | |||
@@ -134,7 +136,7 @@ int wcmdq_tail=0; | |||
// pitch,speed, | |||
int embedded_default[N_EMBEDDED_VALUES] = {0, 50,175,100,50, 0, 0, 0,175,0,0,0,0,0,0}; | |||
static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,600,300,99,99,99, 0,600,0,0,0,0,4,0}; | |||
static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,750,300,99,99,99, 0,750,0,0,0,0,4,0}; | |||
#define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word | |||
int current_source_index=0; | |||
@@ -148,7 +150,8 @@ static PortAudioStream *pa_stream=NULL; | |||
static PaStream *pa_stream=NULL; | |||
#endif | |||
static sonicStream sonicSpeedupStream = NULL; | |||
double sonicSpeed = 1.0; | |||
// 1st index=roughness | |||
// 2nd index=modulation_type | |||
@@ -256,8 +259,6 @@ unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = { | |||
217,220,223,226,229,232,236,239, | |||
242,246,249,252, 254,255 }; | |||
int WavegenFill(int fill_zeros); | |||
#ifdef LOG_FRAMES | |||
static void LogMarker(int type, int value) | |||
@@ -413,6 +414,10 @@ static int userdata[4]; | |||
static PaError pa_init_err=0; | |||
static int out_channels=1; | |||
unsigned char *outbuffer = NULL; | |||
int outbuffer_size = 0; | |||
#if USE_PORTAUDIO == 18 | |||
static int WaveCallback(void *inputBuffer, void *outputBuffer, | |||
unsigned long framesPerBuffer, PaTimestamp outTime, void *userData ) | |||
@@ -425,9 +430,26 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
int ix; | |||
int result; | |||
unsigned char *p; | |||
unsigned char *out_buf; | |||
unsigned char *out_end2; | |||
int pa_size; | |||
out_ptr = out_start = (unsigned char *)outputBuffer; | |||
out_end = out_ptr + framesPerBuffer*2; | |||
pa_size = framesPerBuffer*2; | |||
// make a buffer 3x size of the portaudio output | |||
ix = pa_size*3; | |||
if(ix > outbuffer_size) | |||
{ | |||
outbuffer = (unsigned char *)realloc(outbuffer, ix); | |||
if(outbuffer == NULL) | |||
{ | |||
fprintf(stderr, "espeak: out of memory\n"); | |||
} | |||
outbuffer_size = ix; | |||
out_ptr = out_start = outbuffer; | |||
out_end = out_start + outbuffer_size; | |||
} | |||
out_end2 = &outbuffer[pa_size]; // top of data needed for the portaudio buffer | |||
#ifdef LIBRARY | |||
event_list_ix = 0; | |||
@@ -435,6 +457,24 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
result = WavegenFill(1); | |||
// copy from the outbut buffer into the portaudio buffer | |||
if(result && (out_ptr > out_end2)) | |||
{ | |||
result = 0; // don't end yet, there is more data in the buffer than can fit in portaudio | |||
} | |||
while(out_ptr < out_end2) | |||
*out_ptr++ = 0; // fill with zeros up to the size of the portaudio buffer | |||
memcpy(outputBuffer, outbuffer, pa_size); | |||
// move the remaining contents of the start of the output buffer | |||
for(p = out_end2; p < out_end; p++) | |||
{ | |||
p[-pa_size] = p[0]; | |||
} | |||
out_ptr -= pa_size; | |||
#ifdef LIBRARY | |||
count_samples += framesPerBuffer; | |||
if(synth_callback) | |||
@@ -455,14 +495,15 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
{ | |||
// swap the order of bytes in each sound sample in the portaudio buffer | |||
int c; | |||
out_ptr = (unsigned char *)outputBuffer; | |||
out_end = out_ptr + framesPerBuffer*2; | |||
while(out_ptr < out_end) | |||
unsigned char *buf_end; | |||
out_buf = (unsigned char *)outputBuffer; | |||
buf_end = out_buf + framesPerBuffer*2; | |||
while(out_buf < buf_end) | |||
{ | |||
c = out_ptr[0]; | |||
out_ptr[0] = out_ptr[1]; | |||
out_ptr[1] = c; | |||
out_ptr += 2; | |||
c = out_buf[0]; | |||
out_buf[0] = out_buf[1]; | |||
out_buf[1] = c; | |||
out_buf += 2; | |||
} | |||
} | |||
#endif | |||
@@ -471,12 +512,12 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
{ | |||
// sound output can only do stereo, not mono. Duplicate each sound sample to | |||
// produce 2 channels. | |||
out_ptr = (unsigned char *)outputBuffer; | |||
out_buf = (unsigned char *)outputBuffer; | |||
for(ix=framesPerBuffer-1; ix>=0; ix--) | |||
{ | |||
p = &out_ptr[ix*4]; | |||
p[3] = p[1] = out_ptr[ix*2 + 1]; | |||
p[2] = p[0] = out_ptr[ix*2]; | |||
p = &out_buf[ix*4]; | |||
p[3] = p[1] = out_buf[ix*2 + 1]; | |||
p[2] = p[0] = out_buf[ix*2]; | |||
} | |||
} | |||
@@ -1791,8 +1832,7 @@ void Write4Bytes(FILE *f, int value) | |||
int WavegenFill(int fill_zeros) | |||
int WavegenFill2(int fill_zeros) | |||
{//============================ | |||
// Pick up next wavegen commands from the queue | |||
// return: 0 output buffer has been filled | |||
@@ -1930,6 +1970,46 @@ int WavegenFill(int fill_zeros) | |||
} | |||
return(0); | |||
} // end of WavegenFill | |||
} // end of WavegenFill2 | |||
/* Speed up the audio samples with libsonic. */ | |||
static int SpeedUp(short *outbuf, int length, int end_of_text) | |||
{//=========================================================== | |||
if(sonicSpeedupStream != NULL && sonicGetSpeed(sonicSpeedupStream) != sonicSpeed) | |||
{ | |||
sonicDestroyStream(sonicSpeedupStream); | |||
sonicSpeedupStream = NULL; | |||
} | |||
if(sonicSpeedupStream == NULL) | |||
{ | |||
sonicSpeedupStream = sonicCreateStream(sonicSpeed, 22050); | |||
} | |||
sonicWriteShortToStream(sonicSpeedupStream, outbuf, length); | |||
if(end_of_text) | |||
{ | |||
sonicFlushStream(sonicSpeedupStream); | |||
} | |||
return sonicReadShortFromStream(sonicSpeedupStream, outbuf, length); | |||
} // end of SpeedUp | |||
/* Call WavegenFill2, and then speed up the output samples. */ | |||
int WavegenFill(int fill_zeros) | |||
{//============================ | |||
int finished; | |||
unsigned char *p_start; | |||
p_start = out_ptr; | |||
// fill_zeros is ignored. It is now done in the portaudio cakkback | |||
finished = WavegenFill2(0); | |||
if(sonicSpeed > 1.0 && out_ptr > p_start) | |||
{ | |||
out_ptr = p_start + 2*SpeedUp((short *)p_start, (out_ptr-p_start)/2, finished); | |||
} | |||
return finished; | |||
} // end of WavegenFill |