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
// PB = Peter Bjarkov - [email protected] | |||||
// PB = Peter Bjarkov - [email protected] | |||||
// This file is UTF8 encoded | // This file is UTF8 encoded | ||||
// Spelling-to-phoneme words for Danish | // Spelling-to-phoneme words for Danish | ||||
_12 t'Vl | _12 t'Vl | ||||
_13 tR'&#d@-n // PB & changed to &# | _13 tR'&#d@-n // PB & changed to &# | ||||
_14 fj'ord@-n | _14 fj'ord@-n | ||||
_15 f'Emd@-n | |||||
_15 f'emt@n | |||||
_16 s'ajsd@-n | _16 s'ajsd@-n | ||||
_17 s'Wd@-n // PP Y changed to W | _17 s'Wd@-n // PP Y changed to W | ||||
_18 '&d@-n // PB a changed to & | _18 '&d@-n // PB a changed to & | ||||
_4Xo fWV'tyv@n@ // 42. | _4Xo fWV'tyv@n@ // 42. | ||||
_5Xo halt*'Esenstyv@n@ // 52. | _5Xo halt*'Esenstyv@n@ // 52. | ||||
_6Xo tr'Esenstyv@n@ // 62. | _6Xo tr'Esenstyv@n@ // 62. | ||||
_7Xo halfj'&rsenstyv@n@ // 72. | |||||
_7Xo h&lfj'&rsenstyv@n@ // 72. | |||||
_8Xo firsenstyv@n@ // 82. | _8Xo firsenstyv@n@ // 82. | ||||
_9Xo half'Emsenstyv@n@ // 95. | _9Xo half'Emsenstyv@n@ // 95. | ||||
den dEn $u | den dEn $u | ||||
en e:n $u | en e:n $u | ||||
et ed $u | |||||
et et $u | |||||
her $u | her $u | ||||
kun $u | kun $u | ||||
vel $u+ | vel $u+ | ||||
for fV | for fV | ||||
fordi fVd'i $pause // because - PB: changed stress | fordi fVd'i $pause // because - PB: changed stress | ||||
når nVr $pause // while | 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 | hvor v'Vr // where | ||||
hvorfor vVf'V // why - firan r deleted | |||||
hvorfor vVf'V // why - final r deleted | |||||
// prepositions | // prepositions | ||||
på pO $u | på pO $u | ||||
vi vi $u | vi vi $u | ||||
i _i $u+ | i _i $u+ | ||||
mig maj $u // me | mig maj $u // me | ||||
dig daj $u | |||||
dig daj $u+ | |||||
dem $u | dem $u | ||||
ham $u | ham $u | ||||
hende $u | hende $u | ||||
// auxillary verbs | // 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 | havde h&:D@ $u+ // had | ||||
vil $u+ // will | vil $u+ // will | ||||
skal $u+ // shall | skal $u+ // shall | ||||
kan $u+ // can | kan $u+ // can | ||||
skulle $u+ // should | skulle $u+ // should | ||||
må $u+ // may | må $u+ // may | ||||
bør $u+ // ought | |||||
bør $u+ // ought to | |||||
// letter names | // letter names | ||||
b be | b be | ||||
beachbuggy _^_EN | beachbuggy _^_EN | ||||
beachvolley _^_EN | beachvolley _^_EN | ||||
browser _^_EN | browser _^_EN | ||||
byte _^_EN | |||||
chart _^_EN | chart _^_EN | ||||
coach _^_EN | coach _^_EN | ||||
coke _^_EN | coke _^_EN | ||||
cool _^_EN | cool _^_EN | ||||
couch _^_EN | couch _^_EN | ||||
cursor _^_EN | cursor _^_EN | ||||
cowboy _^_EN | |||||
//cowboy _^_EN | |||||
debugger _^_EN | debugger _^_EN | ||||
ensemble _^_FR | ensemble _^_FR | ||||
event _^_EN | event _^_EN | ||||
word _^_EN | word _^_EN | ||||
warrior _^_EN | warrior _^_EN | ||||
// PB English names | |||||
// PB names | |||||
august awgOsd $capital | |||||
austin _^_EN $alt | austin _^_EN $alt | ||||
bailey _^_EN $alt | bailey _^_EN $alt | ||||
barry _^_EN $alt | barry _^_EN $alt | ||||
cia _^_EN $alt | cia _^_EN $alt | ||||
fbi _^_EN $alt | fbi _^_EN $alt | ||||
fox _^_EN | fox _^_EN | ||||
jean _^_EN $alt | |||||
jones _^_EN | jones _^_EN | ||||
larry _^_EN $alt | larry _^_EN $alt | ||||
leroy _^_EN $alt | leroy _^_EN $alt | ||||
mahoney _^_EN $alt | mahoney _^_EN $alt | ||||
montreal _^_EN $alt | montreal _^_EN $alt | ||||
oregon _^_EN $alt | oregon _^_EN $alt | ||||
paul _^_EN $alt | |||||
piccadilly _^_EN | |||||
reynolds _^_EN $alt | reynolds _^_EN $alt | ||||
purvis _^_EN | purvis _^_EN | ||||
washington _^_EN $alt | washington _^_EN $alt | ||||
white _^_EN $alt | white _^_EN $alt | ||||
chicago _^_EN $alt | |||||
//chicago _^_EN $alt | |||||
// PB French words | // PB French words | ||||
croquis _^_FR | croquis _^_FR | ||||
plamage $alt | plamage $alt | ||||
plantage $alt | plantage $alt | ||||
platmenage $alt | platmenage $alt | ||||
potage $alt | |||||
ravage $alt | ravage $alt | ||||
reportage $alt | reportage $alt | ||||
sabotage $alt | sabotage $alt | ||||
tonnage $alt | tonnage $alt | ||||
trikotage $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 | // PB adjectives and nouns with final -ant - stressed a | ||||
acceptant $alt | acceptant $alt | ||||
adjudant $alt | adjudant $alt | ||||
virulens $alt | virulens $alt | ||||
ækvivalens $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 | // PB words with final -ent - stressed e | ||||
abonnement $alt | abonnement $alt | ||||
abonnent $alt | abonnent $alt | ||||
victorian $alt | victorian $alt | ||||
århusian $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 | // PB country names with final -ien - stress on previous syllable | ||||
abessinien $alt | abessinien $alt | ||||
abkhasien $alt | abkhasien $alt | ||||
folkloristik $alt | folkloristik $alt | ||||
fonetik $alt | fonetik $alt | ||||
fysik $alt | fysik $alt | ||||
metafysik $alt | |||||
fysiognomik $alt | fysiognomik $alt | ||||
genetik $alt | genetik $alt | ||||
germanistik $alt | germanistik $alt | ||||
ruin $alt | ruin $alt | ||||
sakkarin $alt | sakkarin $alt | ||||
sardin $alt | sardin $alt | ||||
satin s&t'EN $alt | |||||
satin $alt | |||||
serpentin $alt | serpentin $alt | ||||
sordin $alt | sordin $alt | ||||
(stand-in) st&nd'in $alt | (stand-in) st&nd'in $alt | ||||
diskontinuerlig $alt | diskontinuerlig $alt | ||||
drikfældig $alt | drikfældig $alt | ||||
drilagtig $alt | drilagtig $alt | ||||
uduelig $alt // PB uduelig | |||||
dumdristig $alt | dumdristig $alt | ||||
dværgagtig $alt | dværgagtig $alt | ||||
dybsindig $alt | dybsindig $alt | ||||
grangivelig $alt | grangivelig $alt | ||||
grinagtig $alt | grinagtig $alt | ||||
guddommelig $alt | guddommelig $alt | ||||
gudelig $alt // PB for "ugudelig" | |||||
gudfrygtig $alt | gudfrygtig $alt | ||||
gudsbespottelig $alt | gudsbespottelig $alt | ||||
gudsjammerlig $alt | gudsjammerlig $alt | ||||
biometri $alt | biometri $alt | ||||
bizarreri $alt | bizarreri $alt | ||||
broderi $alt | broderi $alt | ||||
bogholderi $alt | |||||
bryderi $alt | bryderi $alt | ||||
bryggeri $alt | bryggeri $alt | ||||
brænderi $alt | brænderi $alt | ||||
angliser $alt | angliser $alt | ||||
animer $alt | animer $alt | ||||
annekter $alt | annekter $alt | ||||
annoncer $alt | |||||
annoncere $alt | |||||
annoter $alt | annoter $alt | ||||
annuller $alt | annuller $alt | ||||
anodiser $alt | anodiser $alt | ||||
atrofier $alt | atrofier $alt | ||||
attacher $alt | attacher $alt | ||||
attaker $alt | attaker $alt | ||||
attester $alt | |||||
attestere $alt | |||||
attraher $alt | attraher $alt | ||||
attraper $alt | attraper $alt | ||||
attribuer $alt | attribuer $alt | ||||
bestialiser $alt | bestialiser $alt | ||||
bibliografer $alt | bibliografer $alt | ||||
billettere $alt | billettere $alt | ||||
biografer $alt | |||||
biografere $alt | |||||
biopter $alt | biopter $alt | ||||
bivuaker $alt | bivuaker $alt | ||||
blamer $alt | blamer $alt | ||||
docer $alt | docer $alt | ||||
dogmatiser $alt | dogmatiser $alt | ||||
doktorere $alt | doktorere $alt | ||||
dokumenter $alt | |||||
dokumentere $alt | |||||
dollere $alt | dollere $alt | ||||
domesticer $alt | domesticer $alt | ||||
dominer $alt | dominer $alt | ||||
fertiliser $alt | fertiliser $alt | ||||
feter $alt | feter $alt | ||||
figurere $alt | figurere $alt | ||||
fikser $alt | |||||
fiksere $alt | |||||
fiktionaliser $alt | fiktionaliser $alt | ||||
filere $alt | filere $alt | ||||
filetere $alt | filetere $alt | ||||
filosofer $alt | filosofer $alt | ||||
filtrer $alt | filtrer $alt | ||||
finansier $alt | finansier $alt | ||||
finere $alt | |||||
fingere $alt | fingere $alt | ||||
fingerer $alt | fingerer $alt | ||||
finjuster $alt | finjuster $alt | ||||
fortificer $alt | fortificer $alt | ||||
fosfatere $alt | fosfatere $alt | ||||
fosforescer $alt | fosforescer $alt | ||||
fotografer $alt | |||||
fotokopier $alt | |||||
fotografere $alt | |||||
fotokopiere $alt | |||||
fourager $alt | fourager $alt | ||||
fragmenter $alt | |||||
fraktioner $alt | |||||
fragmentere $alt | |||||
fraktionere $alt | |||||
franker $alt | franker $alt | ||||
frapper $alt | frapper $alt | ||||
frasere $alt | frasere $alt | ||||
ffraterniser $alt | |||||
fraterniser $alt | |||||
frekventer $alt | frekventer $alt | ||||
frisere $alt | frisere $alt | ||||
friter $alt | friter $alt | ||||
gruyere gryj'E:r $alt | gruyere gryj'E:r $alt | ||||
græciser $alt | græciser $alt | ||||
grønlandiser $alt | grønlandiser $alt | ||||
guillotiner $alt | |||||
guillotinere $alt | |||||
gummiere $alt | gummiere $alt | ||||
gymnasticer $alt | gymnasticer $alt | ||||
gæsterer $alt | gæsterer $alt | ||||
konstituer $alt | konstituer $alt | ||||
konstringer $alt | konstringer $alt | ||||
konstruer $alt | konstruer $alt | ||||
konsuler $alt | |||||
konsulere $alt | |||||
konsulter $alt | konsulter $alt | ||||
konsumer $alt | konsumer $alt | ||||
kontaminer $alt | kontaminer $alt | ||||
manipuler $alt | manipuler $alt | ||||
mankere $alt | mankere $alt | ||||
manuducer $alt | manuducer $alt | ||||
manøvrer $alt | |||||
marcher $alt | |||||
manøvrere $alt | |||||
marchere $alt | |||||
marginaliser $alt | marginaliser $alt | ||||
marginer $alt | |||||
mariner $alt | |||||
marginere $alt | |||||
marinere $alt | |||||
markere $alt | markere $alt | ||||
marmorer $alt | marmorer $alt | ||||
maroder $alt | maroder $alt | ||||
martyriser $alt | martyriser $alt | ||||
masker $alt | |||||
maskere $alt | |||||
maskiniser $alt | maskiniser $alt | ||||
maskuliniser $alt | maskuliniser $alt | ||||
massakrer $alt | massakrer $alt | ||||
mytologiser $alt | mytologiser $alt | ||||
mæandrer $alt | mæandrer $alt | ||||
møblere $alt | møblere $alt | ||||
ommøbler $alt | |||||
narkotiser $alt | narkotiser $alt | ||||
nasalere $alt | nasalere $alt | ||||
nationaliser $alt | nationaliser $alt | ||||
pilotere $alt | pilotere $alt | ||||
pioner $alt | pioner $alt | ||||
pipetter $alt | pipetter $alt | ||||
pirater $alt | |||||
piratere $alt | |||||
piruetter $alt | piruetter $alt | ||||
pivoter $alt | pivoter $alt | ||||
pizziker $alt | pizziker $alt | ||||
prospekter $alt | prospekter $alt | ||||
prostituer $alt | prostituer $alt | ||||
proteger $alt | proteger $alt | ||||
protester $alt | |||||
protestere $alt | |||||
protokollere $alt | protokollere $alt | ||||
provianter $alt | provianter $alt | ||||
provoker $alt | provoker $alt | ||||
skandaliser $alt | skandaliser $alt | ||||
skandere $alt | skandere $alt | ||||
skandinaviser $alt | skandinaviser $alt | ||||
skeletter $alt | |||||
skelettere $alt | |||||
skematiser $alt | skematiser $alt | ||||
skitser $alt | |||||
skitsere $alt | |||||
skolemesterer $alt | skolemesterer $alt | ||||
skraver $alt | skraver $alt | ||||
skrædderer $alt | skrædderer $alt | ||||
socialiser $alt | socialiser $alt | ||||
soigner $alt | soigner $alt | ||||
solidariser $alt | solidariser $alt | ||||
sonder $alt | |||||
sorter $alt | |||||
sondere $alt | |||||
sortere $alt | |||||
soupere $alt | soupere $alt | ||||
spadser $alt | spadser $alt | ||||
spalier $alt | |||||
spaliere $alt | |||||
spankuler $alt | spankuler $alt | ||||
spatier $alt | spatier $alt | ||||
specialiser $alt | specialiser $alt | ||||
trompeter $alt | trompeter $alt | ||||
trunker $alt | trunker $alt | ||||
//trænere $alt | //trænere $alt | ||||
tunneler $alt | |||||
tunnelere $alt | |||||
turner $alt | turner $alt | ||||
tuscher $alt | tuscher $alt | ||||
typificer $alt | typificer $alt | ||||
typiser $alt | typiser $alt | ||||
typografer $alt | typografer $alt | ||||
tyranniser $alt | tyranniser $alt | ||||
uniformer $alt | |||||
uniformere $alt | |||||
urbaniser $alt | urbaniser $alt | ||||
urger $alt | urger $alt | ||||
uriner $alt | uriner $alt | ||||
kornel $alt | kornel $alt | ||||
kriminel $alt | kriminel $alt | ||||
kriminal $alt // PB as in "kriminalroman" | kriminal $alt // PB as in "kriminalroman" | ||||
kulturel $alt | |||||
maskinel $alt | maskinel $alt | ||||
model $alt | model $alt | ||||
nominel $alt | nominel $alt | ||||
tarantel $alt | tarantel $alt | ||||
karamel $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 | // PB nouns ending with -ering - stressed e | ||||
abandonnering $alt | abandonnering $alt | ||||
abdicering $alt | abdicering $alt | ||||
cadmiering $alt | cadmiering $alt | ||||
camouflering $alt | camouflering $alt | ||||
campering $alt | campering $alt | ||||
catering keiteriN $alt | |||||
celebrering $alt | celebrering $alt | ||||
cementering $alt | cementering $alt | ||||
censurering $alt | censurering $alt | ||||
reformation $alt | reformation $alt | ||||
refraktion $alt | refraktion $alt | ||||
refusion $alt | refusion $alt | ||||
relegion $alt | |||||
region $alt | region $alt | ||||
regression $alt | regression $alt | ||||
reifikation $alt | reifikation $alt | ||||
dodekafon $alt | dodekafon $alt | ||||
frankofon $alt | frankofon $alt | ||||
grammofon $alt | grammofon $alt | ||||
grafofon $alt | |||||
homofon $alt | homofon $alt | ||||
hydrofon $alt | hydrofon $alt | ||||
kolofon $alt | kolofon $alt | ||||
// -on list | // -on list | ||||
ballon b&l'VN $alt | ballon b&l'VN $alt | ||||
beton bet'VN $alt | |||||
beton $alt | |||||
bouillon $alt | |||||
diakron $alt | diakron $alt | ||||
interferon $alt | interferon $alt | ||||
epsilon 'ebsilVn $alt | epsilon 'ebsilVn $alt | ||||
futon fut'VN $alt | |||||
futon $alt | |||||
føljeton fWljet'Vn $alt | føljeton fWljet'Vn $alt | ||||
facon f&s'Vn $alt | |||||
facon $alt | |||||
lazaron $alt | lazaron $alt | ||||
makron $alt | makron $alt | ||||
melon $alt | melon $alt | ||||
neuron $alt | neuron $alt | ||||
kupon kup'VN $alt | |||||
kupon $alt | |||||
postillon p,Vsdilj'VN $alt | postillon p,Vsdilj'VN $alt | ||||
perron pER'VN | perron pER'VN | ||||
pompon $alt | |||||
progesteron $alt | progesteron $alt | ||||
salon s&l'VN $alt | salon s&l'VN $alt | ||||
sifon sif'VN $alt | |||||
sifon $alt | |||||
synkron $alt | synkron $alt | ||||
talon t&l'VN $alt | |||||
tampon tAmp'VN $alt | |||||
talon $alt | |||||
tampon $alt | |||||
testosteron $alt | testosteron $alt | ||||
// -tron list (on) | // -tron list (on) | ||||
// -kon list (VN/Vn/on) | // -kon list (VN/Vn/on) | ||||
akrostikon akrVsdik'Vn $alt | akrostikon akrVsdik'Vn $alt | ||||
balkon b&lk'Vn $alt | |||||
diakon $alt | diakon $alt | ||||
distikon distik'Vn $alt | distikon distik'Vn $alt | ||||
flakon fl&k'VN $alt | flakon fl&k'VN $alt | ||||
gelatine $alt | gelatine $alt | ||||
georgine $alt | georgine $alt | ||||
grenadine $alt | grenadine $alt | ||||
guillotine gijut'i:n@ $alt | |||||
kabine $alt | kabine $alt | ||||
kantine $alt | kantine $alt | ||||
kavatine $alt | kavatine $alt | ||||
blegrøde blajrWD@ | blegrøde blajrWD@ | ||||
//blege blaj@ | //blege blaj@ | ||||
blegemiddel bl&#j@mid@l | blegemiddel bl&#j@mid@l | ||||
//blegansigt bl&#jansegt | |||||
(rub og stub) R'Ob||V||sd'Ob | |||||
slags sl'ags // sort, type | slags sl'ags // sort, type | ||||
tre tr'e // the number 3 | tre tr'e // the number 3 | ||||
//barber bAb'er // PB barber | //barber bAb'er // PB barber | ||||
(coney island) 'kouni||'ajl3nd // PB | (coney island) 'kouni||'ajl3nd // PB | ||||
(union station) junj3n||steisj@n // PB | (union station) junj3n||steisj@n // PB | ||||
(secret service) sigred||s'Wvis | (secret service) sigred||s'Wvis | ||||
(happy hour) h&pi||'AuV | |||||
chevrolet sjEvrol'e | chevrolet sjEvrol'e | ||||
saigon sajg3-n // PB Saigon | saigon sajg3-n // PB Saigon | ||||
managua m&n'&:gw& | managua m&n'&:gw& | ||||
hbo $abbrev // TV station | hbo $abbrev // TV station | ||||
usa $abbrev | usa $abbrev | ||||
who $abbrev $allcaps // PB World Health Organization | who $abbrev $allcaps // PB World Health Organization | ||||
ussr $abbrev $allcaps // Sovjet Union | |||||
vsop $abbrev | vsop $abbrev | ||||
eu $abbrev | eu $abbrev | ||||
ekg $abbrev | ekg $abbrev | ||||
phil fil/3 $hasdot // PB fx cand. phil. | phil fil/3 $hasdot // PB fx cand. phil. | ||||
bh $abbrev | bh $abbrev | ||||
(bh'er) b,e:h'O:V | (bh'er) b,e:h'O:V | ||||
(l'chaim) l&kr'ajm | |||||
scsi skVsi // PB | |||||
// Try to catch errors | // Try to catch errors | ||||
(et kvarter) et||kvA'ter // PB | (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 | (vores kvarter) vV:s||kvA'ter // PB | ||||
(deres kvarter) de@s||kvA'ter // PB | (deres kvarter) de@s||kvA'ter // PB | ||||
(det kvarter) de||kvA'ter // PB | (det kvarter) de||kvA'ter // PB | ||||
(vi steg) vi||st'e | (vi steg) vi||st'e | ||||
(de steg) di||st'e | (de steg) di||st'e | ||||
(alle steg) &l3||st'e | (alle steg) &l3||st'e | ||||
(vandet steg) v&n@D||st'e | |||||
steg sdaj $atend $sentence | steg sdaj $atend $sentence | ||||
steget ste@d | steget ste@d | ||||
// PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v] | // 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 | (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 | (lyst hår) lYst||hOr | ||||
(lys farve) lYs||fArw@ | (lys farve) lYs||fArw@ | ||||
(er lyst) &r||l'Ysd | (er lyst) &r||l'Ysd | ||||
(lige så) li@||sV | (lige så) li@||sV | ||||
(en så) en||s'V | (en så) en||s'V | ||||
(mig så) maj||sV | (mig så) maj||sV | ||||
(men så) men||sV | |||||
(så meget) sV||m'a:j@D | (så meget) sV||m'a:j@D | ||||
(så mange) sV||m'aN3 | (så mange) sV||m'aN3 | ||||
(så er) sV||'Er | (så er) sV||'Er | ||||
(så højt) sV||h'Vjt | (så højt) sV||h'Vjt | ||||
(så var) sV||v'Ar | (så var) sV||v'Ar | ||||
(så længe) sV||l'EN3 | (så længe) sV||l'EN3 | ||||
(så være) sV||v'EV | |||||
(så må) sV||m'O | (så må) sV||m'O | ||||
(så har) sV||har | (så har) sV||har | ||||
(se så) se||sV | |||||
(så sent) sV||sent | |||||
(ville så) vil3||sV | (ville så) vil3||sV | ||||
så sV $sentence $atstart | så sV $sentence $atstart | ||||
(hvad så) v&||sV $atend // "Hvad så?" | |||||
(virkede så) v'irkeD@||sV | (virkede så) v'irkeD@||sV | ||||
(kom så) kVm||sV | (kom så) kVm||sV | ||||
(koste med) kosd@||mED | (koste med) kosd@||mED | ||||
(lige koste) li@||kosd@ // PB "lige koste fejer bedst" | |||||
(en kanoner) en||k&non'er | (en kanoner) en||k&non'er | ||||
nå nV $atstart // PB Nå, der er du | 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 |
x z | x z | ||||
Dictionary da_dict 2010-08-26 | |||||
Dictionary da_dict 2010-10-28 | |||||
& &# 0 3 @ @- a A | & &# 0 3 @ @- a A | ||||
e E i o O u V W | e E i o O u V W | ||||
* - : ? b B d D | * - : ? b B d D | ||||
dZ f g h j J k l | dZ f g h j J k l | ||||
l/2 l/3 m n N p r R | 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 | Dictionary de_dict 2010-08-25 | ||||
tS ts v w x z Z | 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 | a aI e i o oI u | ||||
ts v x z z; | ts v x z z; | ||||
Dictionary en_dict 2010-09-14 | |||||
Dictionary en_dict 2010-11-04 | |||||
0 3 3: @ @- @2 @5 @L | 0 3 3: @ @- @2 @5 @L | ||||
a a# A: A@ aa aI aI@ aU | a a# A: A@ aa aI aI@ aU | ||||
x z Z | x z Z | ||||
Dictionary es_dict 2010-07-28 | |||||
Dictionary es_dict 2010-11-16 | |||||
a aI aU e E eI eU i | a aI aU e E eI eU i | ||||
o O oI u | o O oI u | ||||
s2 t v w Z | s2 t v w Z | ||||
Dictionary fr_dict 2010-09-04 | |||||
Dictionary fr_dict 2010-11-15 | |||||
@ @- a A~ e E E: E~ | @ @- a A~ e E E: E~ | ||||
i I o O O~ u u: w | i I o O O~ u u: w | ||||
t. th th. v w x z | 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 | a a: aI aU e E e: i | ||||
I i: o o: u U u2 u: | I i: o o: u U u2 u: | ||||
S s2 t T tl# v x z | 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 | @- a a/ aI aU e E eI | ||||
i I o O u | i I o O u | ||||
t tS v w x | t tS v w x | ||||
Dictionary nl_dict 2010-09-13 | |||||
Dictionary nl_dict 2010-11-10 | |||||
8 @ @- a A a: A~ E | 8 @ @- a A a: A~ E | ||||
E2 e: EI eU i I o O | E2 e: EI eU i I o O | ||||
v v# w x z Z | 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: | aU E E: e: I i: O o: | ||||
OI U u- u-: u-I u: W y | OI U u- u-: u-I u: W y | ||||
y: Y: Yy | y: Y: Yy | ||||
tS v w z | tS v w z | ||||
Dictionary am_dict 2010-01-17 | |||||
Dictionary am_dict 2010-10-02 | |||||
@ a e i o u y | @ 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 | Dictionary ml_dict 2009-10-10 |
_0M2 ekatom'iria | _0M2 ekatom'iria | ||||
_1M3 'ena|Disekatom'irio | _1M3 'ena|Disekatom'irio | ||||
_0M3 Disekatom'iria | _0M3 Disekatom'iria | ||||
_dpt k'oma | |||||
_dpt _k'oma | |||||
_. tel'ia | _. 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 | // articles | ||||
ο o $u // definate article | ο o $u // definate article |
basal beIs@L | basal beIs@L | ||||
best bEst | best bEst | ||||
beta bi:t@ | beta bi:t@ | ||||
betake bI2teIk | |||||
beverage bEv@rI2dZ | beverage bEv@rI2dZ | ||||
bias baI@s | bias baI@s | ||||
biased baI@st | biased baI@st | ||||
closely kloUslI $verbf // not kloUzlI | closely kloUslI $verbf // not kloUzlI | ||||
closet kl0zI2t | closet kl0zI2t | ||||
cloth kloUD $verb | cloth kloUD $verb | ||||
c'mon k@m0n | |||||
coauthor koU'O:T3 | coauthor koU'O:T3 | ||||
cobol koUb0l | cobol koUb0l | ||||
cocoa koUkoU | cocoa koUkoU | ||||
hmpf h'@mpf | hmpf h'@mpf | ||||
holme hoUm | holme hoUm | ||||
holster hoUlst3 | holster hoUlst3 | ||||
holy hoUlI | |||||
homeowner hoUmoUn3 | homeowner hoUmoUn3 | ||||
homepage hoUmpeIdZ | homepage hoUmpeIdZ | ||||
hominem h0mInEm | hominem h0mInEm | ||||
irony aIr@nI | irony aIr@nI | ||||
isosceles aIs'0s@li:z | isosceles aIs'0s@li:z | ||||
itinerary aIt'In@r@rI | itinerary aIt'In@r@rI | ||||
ivory aIv@rI | |||||
jagged dZagI2d | jagged dZagI2d | ||||
japan dZ@pan | japan dZ@pan | ||||
jasmine dZazmIn | jasmine dZazmIn | ||||
jesus dZi:z@s | jesus dZi:z@s | ||||
joky dZoUkI | |||||
jour ZU@ // french | jour ZU@ // french | ||||
jukebox dZu:kb0ks | jukebox dZu:kb0ks | ||||
july dZu:l'aI | july dZu:l'aI | ||||
minibus mInIbVs | minibus mInIbVs | ||||
mining maInI2N // not mini | mining maInI2N // not mini | ||||
minuet mInju:'Et | minuet mInju:'Et | ||||
minutely maIn'ju:tlI | |||||
minute mInIt $onlys | |||||
mirage mIrA:Z | mirage mIrA:Z | ||||
misery mIz@rI | misery mIz@rI | ||||
misled mIsl'Ed | misled mIsl'Ed | ||||
philistine fIlI2staIn | philistine fIlI2staIn | ||||
philosophy fI2l0s@fI | philosophy fI2l0s@fI | ||||
phoenix fi:nIks | phoenix fi:nIks | ||||
photograph foUt@graf | |||||
photographer f@t'0gr@f@ | |||||
piano pI'anoU | piano pI'anoU | ||||
piecemeal p'i:sm,i:l | piecemeal p'i:sm,i:l | ||||
pier pi@3 | pier pi@3 | ||||
pituitary $2 | pituitary $2 | ||||
plaguing pleIgIN | plaguing pleIgIN | ||||
plicate $2 | plicate $2 | ||||
plugin plVgIn | |||||
plumber plVm3 | plumber plVm3 | ||||
plus plVs | plus plVs | ||||
poky poUkI | |||||
poly p0lI | |||||
politer p@l'aIt3 | politer p@l'aIt3 | ||||
politic p0l@tIk | politic p0l@tIk | ||||
poll poUl | poll poUl | ||||
saudi saUdI | saudi saUdI | ||||
saute sO:teI | saute sO:teI | ||||
says sEz | says sEz | ||||
scaly skeIlI | |||||
salmon sam@n | salmon sam@n | ||||
scalpel skalp@L | scalpel skalp@L | ||||
scared ske@d | scared ske@d | ||||
scaring ske@rI2N | |||||
scaring ske@rI2 | |||||
scenic si:nIk | scenic si:nIk | ||||
scald sk0ld | scald sk0ld | ||||
scepter sEpt3 | scepter sEpt3 | ||||
Cheshire tSES3 | Cheshire tSES3 | ||||
Chiswick tSIzIk | Chiswick tSIzIk | ||||
Clwyd klu:Id | Clwyd klu:Id | ||||
Dagenham dag@n@m | |||||
Devon dEv@n | Devon dEv@n | ||||
Dolgellau d0lg'EClaI | Dolgellau d0lg'EClaI | ||||
Dover doUv3 | Dover doUv3 | ||||
Amanda $2 | Amanda $2 | ||||
Amy eImI | Amy eImI | ||||
Andre 0ndreI | Andre 0ndreI | ||||
Anita a#ni:t@ | |||||
Anthony ant@nI | Anthony ant@nI | ||||
Anton ant0n | Anton ant0n | ||||
Aoife i:f@ | Aoife i:f@ | ||||
Liam li:@m | Liam li:@m | ||||
Lindsay lInzi | Lindsay lInzi | ||||
Llewellyn l#@w'ElIn | Llewellyn l#@w'ElIn | ||||
Llywelyn l#@w'ElIn | |||||
Lois loUIs | Lois loUIs | ||||
Louis lu:I | Louis lu:I | ||||
Louise lu:w'i:z | Louise lu:w'i:z | ||||
Disney dIznI | Disney dIznI | ||||
Dolce d0ltSeI | Dolce d0ltSeI | ||||
Dvorak d@-vo@Zak | Dvorak d@-vo@Zak | ||||
Gibson gIbs@n | |||||
Hades heIdi:z | Hades heIdi:z | ||||
Patel pa#tEl | Patel pa#tEl | ||||
Primavera pri:m@v'e@r@ | Primavera pri:m@v'e@r@ |
al (ity 'al | al (ity 'al | ||||
p) al (et al | p) al (et al | ||||
qu) al (@ 0l | qu) al (@ 0l | ||||
c) all (K O:l | |||||
b) al (m A: | b) al (m A: | ||||
c) al (m A: | c) al (m A: | ||||
p) al (m A: | p) al (m A: | ||||
_) bug (le bju:g | _) bug (le bju:g | ||||
@) bury (_S4i br%I | @) bury (_S4i br%I | ||||
?3 @) bury (_S4i bEr%I | ?3 @) bury (_S4i bEr%I | ||||
_) by baI | |||||
_) byte baIt | |||||
.group be | .group be | ||||
be (see bI2 | be (see bI2 | ||||
be (sie bI2 | be (sie bI2 | ||||
_) be (sto bI2 | _) be (sto bI2 | ||||
_) beta b,i:t@ | |||||
?3 _) beta b,eIt@ | |||||
_) be (th bE | _) be (th bE | ||||
be (tray bI2 | be (tray bI2 | ||||
_) be (w bI2 | _) be (w bI2 | ||||
delu (g dElju: | delu (g dElju: | ||||
de (lv+ dE | de (lv+ dE | ||||
de (ma dI2 | de (ma dI2 | ||||
de (magog dE | |||||
demea dI2m'i: | demea dI2m'i: | ||||
de (men dI2 | de (men dI2 | ||||
de (mise dI2 | de (mise dI2 | ||||
&) erize (_ @raIz | &) erize (_ @raIz | ||||
&) eris (a @raIz | &) eris (a @raIz | ||||
&) eriz (a @raIz | &) eriz (a @raIz | ||||
@) er (Cal_ '3: | |||||
@) er (Cic_ '3: | |||||
p) ermea (b 3:mi@ | p) ermea (b 3:mi@ | ||||
_f) erme (nt %3:mE | _f) erme (nt %3:mE | ||||
er (nal_ '3: | er (nal_ '3: | ||||
bo) g (Ey g | bo) g (Ey g | ||||
&) gia (_ dZ@ | &) gia (_ dZ@ | ||||
&) gia (C_ dZ@ | &) gia (C_ dZ@ | ||||
go) g (ic_ g | |||||
&) giu (m dZ@ | &) giu (m dZ@ | ||||
_) g (id g | _) g (id g | ||||
_) g (im g | _) g (im g | ||||
gue (_ g | gue (_ g | ||||
_) gue gE | _) gue gE | ||||
_) guer (n g3: | _) guer (n g3: | ||||
o) g (y_ g | |||||
.group h | .group h | ||||
h h | h h | ||||
h (_ | h (_ | ||||
_B) h | _B) h | ||||
@) hammed h'amId | @) hammed h'amId | ||||
A) han (_ h'an // places | |||||
A) han (_ han // places | |||||
ha (st heI | ha (st heI | ||||
_) he' %hi: | _) he' %hi: | ||||
@) head (_S4 hEd | @) head (_S4 hEd | ||||
i (Bee I | i (Bee I | ||||
i (Bel_ I | i (Bel_ I | ||||
i (Bet_ I | i (Bet_ I | ||||
_) i (Bo aI | |||||
i (CCi_ 'I | i (CCi_ 'I | ||||
XC) i (Ca_ i: | XC) i (Ca_ i: | ||||
@) i (Cate_ =I | @) i (Cate_ =I | ||||
_) in (disP2 ,In | _) in (disP2 ,In | ||||
_) in (divP2 ,In | _) in (divP2 ,In | ||||
_) in (dol In | _) in (dol In | ||||
in (exP2 ,In | |||||
_) in (exP2 ,In | |||||
_) inex (or In'Eks | _) inex (or In'Eks | ||||
_) infa (l %Infa | _) infa (l %Infa | ||||
_) in (fam In | _) in (fam In | ||||
in (ee In | in (ee In | ||||
c) in (e In | c) in (e In | ||||
inc) in (e In | inc) in (e In | ||||
g) in (e In | |||||
bas) in (_ @n | bas) in (_ @n | ||||
@c) ine (_ i:n | @c) ine (_ i:n | ||||
&d) ine (_ i:n | &d) ine (_ i:n | ||||
infor (matio Inf3 | infor (matio Inf3 | ||||
ino (_ 'i:noU | ino (_ 'i:noU | ||||
_m) in (us aIn | _m) in (us aIn | ||||
_m) inu (te aIn'ju: | |||||
_m) inute (m InIt | |||||
_) intra Intr@ | _) intra Intr@ | ||||
_) intra (CC %Intra | _) intra (CC %Intra | ||||
.group io | .group io | ||||
io (_ =I2oU | io (_ =I2oU | ||||
?7 io (_ =i:oU | ?7 io (_ =i:oU | ||||
an) ism (_S3d Iz@m | an) ism (_S3d Iz@m | ||||
@iB) ism (_S3d Iz@m | @iB) ism (_S3d Iz@m | ||||
@) ism (_S3de Iz@m | @) ism (_S3de Iz@m | ||||
_) is (o aIs | |||||
is (o_ aIz | is (o_ aIz | ||||
is (or_ aIz | is (or_ aIz | ||||
issimo (_ 'IsImoU | issimo (_ 'IsImoU | ||||
o (Ba_ 'oU | o (Ba_ 'oU | ||||
_) o (Bal oU | _) o (Bal oU | ||||
XC) o (Bal oU | XC) o (Bal oU | ||||
X) o (By oU | |||||
o (Be# oU | o (Be# oU | ||||
o (BeCo_ 0 | o (BeCo_ 0 | ||||
o (BenC oU | o (BenC oU | ||||
_) obs (er %0bz | _) obs (er %0bz | ||||
obso (l 0bs@ | obso (l 0bs@ | ||||
o (bstin 0 | o (bstin 0 | ||||
o (bt %0 | |||||
o (bu %0 | |||||
_) o (bt %0 | |||||
o (by_ oU | o (by_ oU | ||||
f) o (cA oU | f) o (cA oU | ||||
_l) o (cA oU | _l) o (cA oU | ||||
o (cre_ 'oU | o (cre_ 'oU | ||||
_h) o (cu oU | _h) o (cu oU | ||||
cr) o (cu oU | cr) o (cu oU | ||||
_b) o (dy 0 | |||||
cust) o (d @ | cust) o (d @ | ||||
k) o (dA oU | k) o (dA oU | ||||
meth) o (d_ @ | meth) o (d_ @ | ||||
o (geny '0 | o (geny '0 | ||||
r) o (ger 0 | r) o (ger 0 | ||||
l) o (gies @ | l) o (gies @ | ||||
@) ographer '0graf@ | |||||
r) ogue oUg | r) ogue oUg | ||||
v) ogue oUg | v) ogue oUg | ||||
@@) ogue 0g | @@) ogue 0g | ||||
oix (_ wa | oix (_ wa | ||||
o (ky_ oU | o (ky_ oU | ||||
@) o (lo_ 0 | @) o (lo_ 0 | ||||
@) ometer '0mIt@ | |||||
?3 g) o (ng O | ?3 g) o (ng O | ||||
?3 r) o (ng O | ?3 r) o (ng O | ||||
?3 s) o (ng O | ?3 s) o (ng O | ||||
oy (A_ 'OI | oy (A_ 'OI | ||||
d) o (zen V | d) o (zen V | ||||
_) o (zo oU | _) o (zo oU | ||||
o (zy_ oU | |||||
.group ol | .group ol | ||||
w) on (k 0n | w) on (k 0n | ||||
w) on (t 0n | w) on (t 0n | ||||
&) ony (_ @n%I | &) ony (_ @n%I | ||||
XC) ony oUnI | |||||
onymous '0nIm@s | onymous '0nIm@s | ||||
.group oo | .group oo | ||||
exp) ost 0st | exp) ost 0st | ||||
hyp) ost 0st | hyp) ost 0st | ||||
osure 'oUZ3 | osure 'oUZ3 | ||||
_C) os (y oUz | |||||
X) os (y oUz | |||||
.group ou | .group ou | ||||
ou aU | ou aU | ||||
photo foUtoU | photo foUtoU | ||||
photon foUt0n | photon foUt0n | ||||
photocop foUt@k0p | photocop foUt@k0p | ||||
photo (grapher f@t0 | |||||
photo (graphy f@t0 | |||||
phot (ograph foUt | |||||
photo (met foUt'0 | photo (met foUt'0 | ||||
_) phyco f,aIkoU | _) phyco f,aIkoU | ||||
p (hole p | p (hole p | ||||
_) pre (diP3 pr%i | _) pre (diP3 pr%i | ||||
_) pre (dic pr%I | _) pre (dic pr%I | ||||
_) pre (emp pr%I | _) pre (emp pr%I | ||||
_) pre (fec pri: | |||||
_) pre (feren prE | _) pre (feren prE | ||||
pre (fix pri: | pre (fix pri: | ||||
_) pre (gn prE | _) pre (gn prE | ||||
ther (_ D3 | ther (_ D3 | ||||
ther (er D3 | ther (er D3 | ||||
th (erC D | th (erC D | ||||
there (_ D3 // thering | |||||
there (_ D3 // thering | |||||
th (est D | th (est D | ||||
ea) th (er D | ea) th (er D | ||||
n) th (er+ T | n) th (er+ T | ||||
u (ga_ 'u: | u (ga_ 'u: | ||||
f) u (gal 'ju: | f) u (gal 'ju: | ||||
ug (er_ u:g | ug (er_ u:g | ||||
pl) ug Vg | |||||
s) ugge (st @dZE | s) ugge (st @dZE | ||||
h) ugh ju: | h) ugh ju: | ||||
mp) ug (n ju: | mp) ug (n ju: | ||||
?5 usurp ju:z'VRp | ?5 usurp ju:z'VRp | ||||
b) us (y Iz | b) us (y Iz | ||||
b) u (tch U | b) u (tch U | ||||
min) u (te I | |||||
r) u (th u: | r) u (th u: | ||||
_) u (til ju: | _) u (til ju: | ||||
u (tion 'ju: | u (tion 'ju: | ||||
l) uxur VgZu:3 | l) uxur VgZu:3 | ||||
uy aI | uy aI | ||||
uy (A_ 'u:j | uy (A_ 'u:j | ||||
u (zzi_ 'u: | |||||
.group ue | .group ue | ||||
_) y' (CP2 j@ | _) y' (CP2 j@ | ||||
y (C_ I | y (C_ I | ||||
y (CC I | y (CC I | ||||
XoB) y (@+ I | |||||
_) y (C@ I | _) y (C@ I | ||||
_) y (n@ V | _) y (n@ V | ||||
_) y (s@ V | _) y (s@ V | ||||
α 'alf@_ | α 'alf@_ | ||||
ά 'alf@_ | ά 'alf@_ | ||||
β b'i:t@_ | β b'i:t@_ | ||||
?3 β b'eIt@_ | |||||
γ g'am@_ | γ g'am@_ | ||||
δ d'Elt@_ | δ d'Elt@_ | ||||
ε 'EpsIl0n_ | ε 'EpsIl0n_ |
_dpt koma | _dpt koma | ||||
//_roman Rom'ano | //_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 | vi bi // not a Roman number | ||||
// 2006-11-18 Gilles Casse <[email protected]> | // 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. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
_{ akOlad_goS | _{ akOlad_goS | ||||
_| bar_vErtik'al | _| bar_vErtik'al | ||||
_} akOlad_drwat | _} akOlad_drwat | ||||
² pyis'A~s||d'Y | |||||
_« uvre||gijm'E | |||||
_» fErme||gijm'E | |||||
_’ apostr'Of | _’ apostr'Of | ||||
_‘ apostr'Of | _‘ apostr'Of | ||||
_µ mikr'o | _µ mikr'o | ||||
~ tilde | ~ tilde | ||||
€ @r'o $u+ | € @r'o $u+ | ||||
¢ sEnt | ¢ sEnt | ||||
¥ iEn | |||||
¥ jEn | |||||
£ livr | £ livr | ||||
± pl'yz_'u_mw'E~ | |||||
± pl'yzumw'E~ | |||||
× myltipli'e_p'ar | × myltipli'e_p'ar | ||||
÷ diviz'e_p'ar | ÷ diviz'e_p'ar | ||||
¼ W~_k'ar | ¼ W~_k'ar | ||||
½ W~_d@m'i | ½ W~_d@m'i | ||||
¾ trwa_k'ar | ¾ 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 | // numeric | ||||
adsl ad,eEsEl | adsl ad,eEsEl | ||||
alt _::alt | alt _::alt | ||||
amd a,Emde | amd a,Emde | ||||
android A~droid | |||||
aol a,oEl | aol a,oEl | ||||
api ap,ei | api ap,ei | ||||
ascii aski | ascii aski | ||||
alterego altErego | alterego altErego | ||||
anis anis | anis anis | ||||
armageddon armagedO~ | armageddon armagedO~ | ||||
aujourd'hui aujourdui $text | |||||
auvent ovA~ | auvent ovA~ | ||||
beta beta | beta beta | ||||
bien biE~n2 | bien biE~n2 | ||||
charles Sarl | charles Sarl | ||||
(chef d'oeuvre) chédeuvre $text | (chef d'oeuvre) chédeuvre $text | ||||
(chef d'oeuvres) chédeuvres $text | (chef d'oeuvres) chédeuvres $text | ||||
chienlit SjA~li | |||||
choeur kWr | choeur kWr | ||||
cinema sinema | cinema sinema | ||||
cocus kOky | cocus kOky | ||||
couscous kuskus | couscous kuskus | ||||
delete _^_en | delete _^_en | ||||
dengue dE~g | |||||
dernier dErnjer2 | dernier dErnjer2 | ||||
doppler dOplEr | doppler dOplEr | ||||
dot dOt | dot dOt | ||||
gym Zim | gym Zim | ||||
han _|A~ | han _|A~ | ||||
hélas elas $u+ | hélas elas $u+ | ||||
jackpot dZakpOt | |||||
jacques Zak | jacques Zak | ||||
karaoke karaoke | karaoke karaoke | ||||
kevin kevin | kevin kevin | ||||
wallis walis | wallis walis | ||||
futuna futuna | futuna futuna | ||||
zimbabwe zimbabwe | zimbabwe zimbabwe | ||||
// http://www.fluxnic.net/cicero | // http://www.fluxnic.net/cicero | ||||
// | // | ||||
// Rules are now maintained by Michel Such <[email protected]> | // 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: | // Letter classes: | ||||
// K not a vowel (i.e. consonant, space, ) | // K not a vowel (i.e. consonant, space, ) | ||||
.replace | .replace | ||||
œ oe | |||||
œ oe | |||||
.L01 d e l n r t u | .L01 d e l n r t u | ||||
// When these diphtonges are after a consonant folllowing e, e is not mute | // When these diphtonges are after a consonant folllowing e, e is not mute | ||||
.L10 ia ie io ua ue ui uo | .L10 ia ie io ua ue ui uo | ||||
.L11 b p | .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 | // Words ending "son" pust sound english if preceded by L13 | ||||
.L13 d g k l p er hn | .L13 d g k l p er hn | ||||
ay Ej // paye | ay Ej // paye | ||||
ay (ak aj // kayak | ay (ak aj // kayak | ||||
ay (_ E // display | ay (_ E // display | ||||
bb) aye (_ aj // cobbaye layer | |||||
Xl) ayer (X EjWr // player, layer | Xl) ayer (X EjWr // player, layer | ||||
h) am (_S2 am | h) am (_S2 am | ||||
w) an (_ an | w) an (_ an | ||||
_) c (d se | _) c (d se | ||||
_) ch (arism k // charisme, charismatique | _) ch (arism k // charisme, charismatique | ||||
_) ch (irop k // chiroptère | _) ch (irop k // chiroptère | ||||
_) coe (la se // coelacante | |||||
a) ch (_ k // almanach | a) ch (_ k // almanach | ||||
ar) c (ti // arctique | ar) c (ti // arctique | ||||
e) ch (_ k // varech | e) ch (_ k // varech | ||||
.group ë | .group ë | ||||
u) ë // ambiguë | u) ë // ambiguë | ||||
no) ë (_ e // canoë | |||||
ë E // citroën noël | ë E // citroën noël | ||||
oi wa // poil | oi wa // poil | ||||
oê (l wa // poêle | oê (l wa // poêle | ||||
om (L11 O~ // bombe, pompe | om (L11 O~ // bombe, pompe | ||||
om (t O~ // comte | |||||
n) om (X O~ // nom | n) om (X O~ // nom | ||||
om (_ Om // www.web.com | om (_ Om // www.web.com | ||||
t (_ | t (_ | ||||
peti) t (_ t2 | peti) t (_ t2 | ||||
th (L12++ t | th (L12++ t | ||||
th (ArA++ t | |||||
or) th (++ t | or) th (++ t | ||||
_) th (erm t | _) th (erm t | ||||
ts (_S1 z2 // silent at end of word unless next word starts with a vowel | ts (_S1 z2 // silent at end of word unless next word starts with a vowel | ||||
g) u (A // fatigue | g) u (A // fatigue | ||||
g) u (ï y // ambiguïté | g) u (ï y // ambiguïté | ||||
g) u (ë y // ambiguë | g) u (ë y // ambiguë | ||||
p) u (tsch u // putsch | |||||
uz (z W | uz (z W | ||||
// group u: English section | // group u: English section |
(1-ike) elseje $text $alt2 | (1-ike) elseje $text $alt2 | ||||
(1-ikei) elsejei $text $alt2 | (1-ikei) elsejei $text $alt2 | ||||
(1-éhez) elsejéhez $text $alt2 | (1-éhez) elsejéhez $text $alt2 | ||||
(1-jét) elsejét $text $alt2 | |||||
(2-i) másodikai $text $alt2 | (2-i) másodikai $text $alt2 | ||||
(2-ig) másodikáig $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! | (2-étől) másodikától $text $alt2 //this is not mistake, don't change! | ||||
(0-n) nul:a:n | (0-n) nul:a:n | ||||
(00-n) nul:Anul:a:n | (00-n) nul:Anul:a:n | ||||
(0-ról) nul:a:R2o:l | (0-ról) nul:a:R2o:l | ||||
(0-st) nul:a:St | |||||
(1-gyet) EJ:Et | (1-gyet) EJ:Et | ||||
(1-gyes) EJ:ES | (1-gyes) EJ:ES | ||||
(2-őt) kEt:Y:t | (2-őt) kEt:Y:t | ||||
(8-al) n^olts:Al | (8-al) n^olts:Al | ||||
(9-el) kilEnts:El | (9-el) kilEnts:El | ||||
(9-cel) kilEnts:El | (9-cel) kilEnts:El | ||||
(9-cet) kilEntsEt | |||||
_10e tiz | _10e tiz | ||||
_20e hus | _20e hus | ||||
(10-szer) ti:s:ER2 | (10-szer) ti:s:ER2 | ||||
//Special roman number suffixes and exceptions | //Special roman number suffixes and exceptions | ||||
(XVI-ig) tizEnhAtodikig //Special roman number suffix exception | (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 | (II-el) kEt:Y:vEl | ||||
(III-al) ha:R2om:Al | (III-al) ha:R2om:Al | ||||
(IV-el) ne:J:El | (IV-el) ne:J:El | ||||
(VII-el) he:t:El | (VII-el) he:t:El | ||||
(VIII-al) n^olts:Al | (VIII-al) n^olts:Al | ||||
(IX-el) kilEnts:El | (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 | (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 | // These words mean that a dot after number, immediately preceding, does not mean an ordinal number | ||||
elején $alt | elején $alt | ||||
folyamán $alt | folyamán $alt | ||||
úton $alt | úton $alt | ||||
út $alt | |||||
// accent names | // accent names | ||||
_lig ligAtu:R2A | _lig ligAtu:R2A | ||||
BAR bAR2 $allcaps | BAR bAR2 $allcaps | ||||
//SS EsEs $allcaps | //SS EsEs $allcaps | ||||
(a . m .) An^n^i||m'int | |||||
(a . m .) An^n^i||m'int $hasdot | |||||
ún u:JnEvEzEt: $hasdot | ún u:JnEvEzEt: $hasdot | ||||
dr doktoR2 $hasdot | dr doktoR2 $hasdot | ||||
mr mistER2 $hasdot //in hungarian we not use, but lot of books contains this word. | mr mistER2 $hasdot //in hungarian we not use, but lot of books contains this word. | ||||
stb SAtYb:i $hasdot | stb SAtYb:i $hasdot | ||||
u.n u:JnEvEzEt: $hasdot | u.n u:JnEvEzEt: $hasdot | ||||
ú.n u:JnEvEzEt: $hasdot | ú.n u:JnEvEzEt: $hasdot | ||||
vö v'EZd||_'Yss2E | |||||
vö v'EZd||_'Yss2E $hasdot | |||||
(u . i .) $abbrew | (u . i .) $abbrew | ||||
NVDA Enve:de:A $allcaps | |||||
// Articles | // Articles | ||||
közül $unstressend | közül $unstressend | ||||
közé $unstressend | közé $unstressend | ||||
között $u $alt3 | között $u $alt3 | ||||
környékén $alt3 | |||||
an $u // so many persons | an $u // so many persons | ||||
as $u | as $u | ||||
ba $unstressend // into | ba $unstressend // into | ||||
legyen $unstressend | legyen $unstressend | ||||
azt $unstressend | azt $unstressend | ||||
ezt $unstressend | ezt $unstressend | ||||
út $unstressend | |||||
út $alt $unstressend | |||||
tiszt $unstressend | tiszt $unstressend | ||||
vesz $unstressend | vesz $unstressend | ||||
cég $unstressend | cég $unstressend | ||||
járni $unstressend | járni $unstressend | ||||
döntöttek $unstressend | döntöttek $unstressend | ||||
írt $unstressend | írt $unstressend | ||||
méltó $unstressend | |||||
// word pairs | // word pairs | ||||
~ tildE | ~ tildE | ||||
° fokjEl | ° fokjEl | ||||
Ft foR2int | Ft foR2int | ||||
(Ft-tal) foR2int:Al | |||||
\ bEks2lES $max3 | \ bEks2lES $max3 | ||||
^ fYlfEle:n^i:l | ^ fYlfEle:n^i:l | ||||
(USA-ban) usában | (USA-ban) usában | ||||
(USA-ba) usába | (USA-ba) usába | ||||
(pc-n) pécén | (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 | |||||
// Hungarian translation rules | // Hungarian translation rules | ||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// ?1 change pronmunciation of foreign names, some users don't want these rules | |||||
.replace | .replace | ||||
// allow o,u-circumflex for o,u-double-acute | // allow o,u-circumflex for o,u-double-acute | ||||
û ű | û ű | ||||
.group a | .group a | ||||
a A | a A | ||||
_) a (_ %A | _) a (_ %A | ||||
@) ben (_S3 bEn | @) ben (_S3 bEn | ||||
biz (A biz, // bizalmas etc. | biz (A biz, // bizalmas etc. | ||||
biedermeier bi:dER2ma:jER2 | |||||
?1 biedermeier bi:dER2ma:jER2 | |||||
_) batthiány bAc:a:n^i | _) 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 | .group c | ||||
c ts | c ts | ||||
pol) c (so ts | pol) c (so ts | ||||
por) c (sé ts | por) c (sé ts | ||||
por) c (sz ts | por) c (sz ts | ||||
_sto) ck (holm k | |||||
?1 _sto) ck (holm k | |||||
har) c (csoport ts | har) c (csoport ts | ||||
lán) c (cs ts | lán) c (cs ts | ||||
_) colt kolt | |||||
_) coltt kolt: | |||||
_) coltj kolc | |||||
kudar) c (sorozat ts | kudar) c (sorozat ts | ||||
gerin) c ts | gerin) c ts | ||||
tán) c (cs ts | tán) c (cs ts | ||||
te) ch h | te) ch h | ||||
pszi) ch h | pszi) ch h | ||||
pszy) ch h | pszy) ch h | ||||
mün) ch (en h | |||||
mün) ch (en C | |||||
maso) ch (istA h | maso) ch (istA h | ||||
monar) ch (i h | monar) ch (i h | ||||
_pe) ch h: | _pe) ch h: | ||||
dts tS: | dts tS: | ||||
dt t: | dt t: | ||||
dtszé t:se: | 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 | apró) d (sz d | ||||
dsz (_S3 ts: | dsz (_S3 ts: | ||||
beszé) d (szin d | beszé) d (szin d | ||||
min) dny n^ | min) dny n^ | ||||
ná) d d | ná) d d | ||||
ná) dd d: | ná) dd d: | ||||
diesel di:zEl | |||||
?1 diesel di:zEl | |||||
hí) d (szerkezet d | hí) d (szerkezet d | ||||
dühvel dyvEl | dühvel dyvEl | ||||
epizó) d (szerep d | epizó) d (szerep d | ||||
honvé) d (sereg d | honvé) d (sereg d | ||||
va) d (szeder d | va) d (szeder d | ||||
twee) d (sapk d | twee) d (sapk d | ||||
fe) dd (hetetlen d | |||||
ezre) d (segé d | ezre) d (segé d | ||||
erő) d (szerű d | erő) d (szerű d | ||||
csalá) d (szociol d | csalá) d (szociol d | ||||
_hol) d (sarló d | _hol) d (sarló d | ||||
mó) d (sor d | mó) d (sor d | ||||
csalá) d (segít 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 | .group dz | ||||
fogó) dz (kod ts | fogó) dz (kod ts | ||||
honvé) dz (ászló d|z | honvé) dz (ászló d|z | ||||
smarag) dz (öld d|z | smarag) dz (öld d|z | ||||
kapáló) dz z | kapáló) dz z | ||||
_ó) dz (ko ts | |||||
.group e | .group e | ||||
e E | e E | ||||
g g | g g | ||||
gg g: | gg g: | ||||
ggy J: | 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) g (gy g | ||||
me) ggy (fa J | me) ggy (fa J | ||||
me) ggy (piros J | me) ggy (piros J | ||||
me) ggy (vörös J | me) ggy (vörös J | ||||
me) ggy (es J: | me) ggy (es J: | ||||
me) ggy (et J: | me) ggy (et J: | ||||
me) ggy (el J: | |||||
me) ggy (_S3 J: | me) ggy (_S3 J: | ||||
me) ggy (szín J | me) ggy (szín J | ||||
le) g (gy g | le) g (gy g | ||||
orszá) g (gyűlés g | orszá) g (gyűlés g | ||||
fü) gg (vény g | |||||
fo) g (gyűrű g | fo) g (gyűrű g | ||||
fo) g (gyö g | fo) g (gyö g | ||||
kuplun) g (gyár g | kuplun) g (gyár g | ||||
vilá) g (gyűlöl g | vilá) g (gyűlöl g | ||||
gk k: | gk k: | ||||
é) gh (ajla kh | é) gh (ajla kh | ||||
se) gg (fe g | |||||
se) gg (be g | |||||
pro) g (gyak g | pro) g (gyak g | ||||
se) ggr (e gR2 | |||||
arcüre) g (gyulladás g | 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 | .group gy | ||||
gy J | gy J | ||||
je) gy (ért J | je) gy (ért J | ||||
harmince) gy (edik J: | harmince) gy (edik J: | ||||
étvá) gy (javít 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 | .group h | ||||
h h | h h | ||||
i i | i i | ||||
@) i (_S1 i | @) i (_S1 i | ||||
@) ig (_S2 ig | @) ig (_S2 ig | ||||
_) itthon ithon | |||||
.group í | .group í | ||||
í i: | í i: | ||||
kossutht koSu:t: | kossutht koSu:t: | ||||
kossuthj koSu:c: | kossuthj koSu:c: | ||||
készségg ke:SSe:g: | 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 | _) közt kYst | ||||
bara) kk (b k | |||||
bara) kk (f k | |||||
bara) kk (j k | |||||
.group l | .group l | ||||
l l | l l | ||||
fe) l (javít l | fe) l (javít l | ||||
fe) l (jogosít l | fe) l (jogosít l | ||||
ökö) l (jog l: | ökö) l (jog l: | ||||
ha) ll (gatom l | |||||
me) ll (kas l | |||||
inte) ll (ige l | inte) ll (ige l | ||||
e) ll (ipsz l | e) ll (ipsz l | ||||
_) e) lj (ár lj | _) e) lj (ár lj | ||||
ha) ll (ga l | |||||
_ta) lj (án lj | _ta) lj (án lj | ||||
_fé) l (jobb l | _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 | .group m | ||||
m m | m m | ||||
ko) mm (uni m | ko) mm (uni m | ||||
mauser mAuzER2 | |||||
mosquito moskito: | |||||
mosquitó moskito: | |||||
messerschmitt mEs:ER2Smit: | |||||
.group n | .group n | ||||
ny n^ | ny n^ | ||||
nny n^n^ | nny n^n^ | ||||
nj 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át n | ||||
szí) n (józan n | szí) n (józan n | ||||
nyj n^n^ | nyj n^n^ | ||||
_) nem (- nEm // has $combine attribute in hu_list, combine with the next word | _) nem (- nEm // has $combine attribute in hu_list, combine with the next word | ||||
me) nny (ország n^ | me) nny (ország n^ | ||||
me) nny (d n^ | |||||
me) nny (k n^ | |||||
pihe) nj (_S2 n^ | pihe) nj (_S2 n^ | ||||
főbe) n (jár n | főbe) n (jár n | ||||
ingye) n n | ingye) n n | ||||
_) nylon nEjlon | |||||
sze) nny (víz n^ | |||||
?1 _) nylon nEjlon | |||||
ajá) nlj j: | ajá) nlj j: | ||||
i) nny (ekció n^ | i) nny (ekció n^ | ||||
bű) n (jel n | bű) n (jel n | ||||
fé) ny (jel n^ | fé) ny (jel n^ | ||||
i) nj (ekció n^ | i) nj (ekció n^ | ||||
elle) n (jegy n | elle) n (jegy n | ||||
fe) nn (tartás n | |||||
fe) nn (sík n | |||||
egye) n (jogú n | egye) n (jogú n | ||||
beto) n (járda n | beto) n (járda n | ||||
verse) ny (jog n^ | verse) ny (jog n^ | ||||
_feddhetetle) n (jelle n | _feddhetetle) n (jelle n | ||||
állomá) ny (jel n^ | állomá) ny (jel n^ | ||||
ingatla) n (jog 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 | .group o | ||||
o o | o o | ||||
otthon othon | otthon othon | ||||
oscar oska:R2 | |||||
.group ó | .group ó | ||||
ó o: | ó o: | ||||
pp (C p: | pp (C p: | ||||
p (v p_ | p (v p_ | ||||
_) potsdam potsda:m | |||||
?1 _) potsdam potsda:m | |||||
r (r R | r (r R | ||||
r (cc R | r (cc R | ||||
_) richa (rd R2iCa: | |||||
?1 _) richa (rd R2iCa: | |||||
_) richá (rd R2iCa: | _) richá (rd R2iCa: | ||||
reichsmarschall R2EjsmAR2SAl: | |||||
i) rr (itá R2 | i) rr (itá R2 | ||||
ko) rr (epetá R2 | ko) rr (epetá R2 | ||||
.group s | .group s | ||||
s S | s S | ||||
föld) s (ánc S | föld) s (ánc S | ||||
hel) s (inki z | |||||
?1 hel) s (inki z | |||||
ki) s (ebb SS | ki) s (ebb SS | ||||
_munká) s S | _munká) s S | ||||
_nyílá) s S | _nyílá) s S | ||||
_o) slo slo: | |||||
_o) sló slo: | |||||
?1 _o) slo slo: | |||||
?1 _o) sló slo: | |||||
tojá) s S | tojá) s S | ||||
_) semmelweiss sEmmElvEjs | _) semmelweiss sEmmElvEjs | ||||
_) semmelweis sEmmElvEjs | _) semmelweis sEmmElvEjs | ||||
_) semmelweiß sEmmElvEjs | _) semmelweiß sEmmElvEjs | ||||
engel) s s | engel) s s | ||||
_) saar sa:R2 | |||||
_wa) sh (ing S | |||||
?1 _) saar sa:R2 | |||||
?1 _wa) sh (ing S | |||||
pénze) s S | pénze) s S | ||||
robbaná) 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 | va) s (s S | ||||
óriá) s S | óriá) s S | ||||
látá) s (zavar S | látá) s (zavar S | ||||
magatartá) s (zavar S | magatartá) s (zavar S | ||||
erőforrá) s (zabál S | erőforrá) s (zabál S | ||||
működé) s (zava S | működé) s (zava S | ||||
viselkedé) s (zava S | |||||
alkalmazá) s (szerver S | |||||
.group ss | .group ss | ||||
ssz ss2 | ssz ss2 | ||||
páncélo) ssz Ss | páncélo) ssz Ss | ||||
hajtá) ssz (erű Ss | hajtá) ssz (erű Ss | ||||
sorva) ssz (ák s: | sorva) ssz (ák s: | ||||
rendelteté) ssz (er Ss | |||||
klien) ssz (oft Ss | |||||
.group sz | .group sz | ||||
sz s | sz s | ||||
para) sztsz (ek st|s | para) sztsz (ek st|s | ||||
rava) sz (ár s | rava) sz (ár s | ||||
_ka) sztsze st|sE | _ka) sztsze st|sE | ||||
szemete) szs (ák SZ | |||||
.group t | .group t | ||||
t t | t t | ||||
tc ts: | tc ts: | ||||
tt t: | 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 | ttg t:g | ||||
ttgy t:J | ttgy t:J | ||||
ttp t:p | ttp t:p | ||||
@) tól (_S3q to:l | @) tól (_S3q to:l | ||||
@) től (_S3q tY:l | @) től (_S3q tY:l | ||||
tt (C t: | 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 | ty c | ||||
// s) ty c: // | // s) ty c: // | ||||
// z) ty c: // keztyű | // z) ty c: // keztyű | ||||
fron) t (jár t | fron) t (jár t | ||||
á) t (söpör t | á) t (söpör t | ||||
ala) tt (jár t: | ala) tt (jár t: | ||||
fri) tz ts: | |||||
halo) tt (sápad t: | halo) tt (sápad t: | ||||
mi) t (se t | mi) t (se t | ||||
há) t (szél t | há) t (szél t | ||||
ú) t (jelzés t | ú) t (jelzés t | ||||
vizsgála) t (sor t | vizsgála) t (sor t | ||||
dagana) t (sej 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 | .group ts | ||||
ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
szemé) ts (ég tS: | szemé) ts (ég tS: | ||||
ré) ts (ég tS: | ré) ts (ég tS: | ||||
já) tsz (ok ts: | já) tsz (ok ts: | ||||
álla) ts (ág tS: | |||||
köteleze) ts (ég tS: | |||||
kötö) ts (ég tS: | |||||
.group u | .group u | ||||
u u | u u | ||||
ü y | ü y | ||||
ütt yt: | ütt yt: | ||||
ütty yc: | ütty yc: | ||||
egy) ütt (m yt | |||||
egy) ütt (l yt | |||||
egy) ütt (v yt | |||||
.group ű | .group ű | ||||
ű y: | ű y: | ||||
.group v | .group v | ||||
v v | v v | ||||
_) v (_ ve: | _) v (_ ve: | ||||
_) versailles vER2sa:j | |||||
?1 _) versailles vER2sa:j | |||||
.group w | .group w | ||||
w v | w v | ||||
wehrmacht vER2mAht | |||||
.group x | .group x | ||||
_) x (_ iks | _) x (_ iks | ||||
_nehé) zs (ely zS | _nehé) zs (ely zS | ||||
_) zürich tsyR2iC | |||||
_) zürich tsyR2i C | |||||
vigyá) zz (ba z | vigyá) zz (ba z | ||||
vigyá) zz (t z | vigyá) zz (t z | ||||
tí) zsz (er s: | tí) zsz (er s: |
@) a (ggine_ 'a | @) a (ggine_ 'a | ||||
_) ae (r aI | _) ae (r aI | ||||
@) ano (_ %ano //ByFilo | |||||
@) avano (_S5 'avano | @) avano (_S5 'avano | ||||
a (tterA_ 'a | a (tterA_ 'a | ||||
b be: | b be: | ||||
c se: | c se: | ||||
d de: | d de: | ||||
e e: | |||||
f Ef | f Ef | ||||
g Qe: | g Qe: | ||||
h ha: | h ha: | ||||
jakker $alt | jakker $alt | ||||
jammer $alt | jammer $alt | ||||
joeker $alt | joeker $alt | ||||
jonger $alt | |||||
kader $alt | kader $alt | ||||
kaffer $alt | kaffer $alt | ||||
kalefater $alt | kalefater $alt | ||||
violette $3 | violette $3 | ||||
wasserette $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 | // pronunciation exceptions | ||||
aangrijpend $2 | aangrijpend $2 | ||||
accessoires aksEsw'ar@s | |||||
actiepunt Aksip8nt | |||||
agenda $2 | agenda $2 | ||||
amino $1 | |||||
amnestie $3 | amnestie $3 | ||||
boudoir budv#'a:r | |||||
bourgondier burx'o:ndi:@r | bourgondier burx'o:ndi:@r | ||||
circuit sIrku'i | circuit sIrku'i | ||||
chalet Sa:lE | chalet Sa:lE | ||||
ingrediënt $4 | ingrediënt $4 | ||||
ingenieur Inzj@nj'Y:r | ingenieur Inzj@nj'Y:r | ||||
journaal Surn'a:l | journaal Surn'a:l | ||||
maxima $1 | |||||
meteen mEt'e:n | |||||
minima $1 | |||||
ongastvrij OnQAstv@-*'EI | ongastvrij OnQAstv@-*'EI | ||||
ongelooflijk $3 | ongelooflijk $3 | ||||
ongemakkelijk $3 | ongemakkelijk $3 | ||||
ongrondwettig $3 | ongrondwettig $3 | ||||
proces $2 | proces $2 | ||||
renaissance rEne:s'A~s@ | renaissance rEne:s'A~s@ | ||||
reservoir re:zErvv#'a:r | |||||
sacristie $3 | sacristie $3 | ||||
salomo $1 | |||||
tegenaan $3 | tegenaan $3 | ||||
tegenin $3 | tegenin $3 | ||||
tegenover $3 | tegenover $3 | ||||
tegenstrijdig $3 | tegenstrijdig $3 | ||||
tegenwoordig $3 | tegenwoordig $3 | ||||
travestie $3 | travestie $3 | ||||
verderop $3 | |||||
waarschijnlijk $2 | waarschijnlijk $2 | ||||
Ingmar INmAr | Ingmar INmAr | ||||
Ingrid IN@-*It | Ingrid IN@-*It | ||||
kennedy kEn@dE | kennedy kEn@dE | ||||
// places | |||||
canada $1 |
au VU | au VU | ||||
ay a:j | ay a:j | ||||
@@C) a (_ =a: | |||||
_) aan (@P3 'a:n | _) aan (@P3 'a:n | ||||
aa (rd_ 'a: | aa (rd_ 'a: | ||||
aa (t_ 'a: | |||||
aa (C_ 'a: | |||||
@) abel (_ 'a:bE2l | |||||
@) abele (_ 'a:b@l@ | |||||
_) af (C@P2 'Af | _) af (C@P2 'Af | ||||
age (_ 'a:Z@ | age (_ 'a:Z@ | ||||
ages (_S1 s | ages (_S1 s | ||||
age (_$w_alt a:Q@ | age (_$w_alt a:Q@ | ||||
aire (_ 'E:r | aire (_ 'E:r | ||||
air (_ 'Er | |||||
ale (_ 'a:l@ | |||||
@) ant (_ 'Ant | @) ant (_ 'Ant | ||||
@) a (de_ 'a: | @) a (de_ 'a: | ||||
_) be (@P2 b@ | _) be (@P2 b@ | ||||
_) b (ee+ b | _) b (ee+ b | ||||
_) be (ren bI: | _) be (ren bI: | ||||
_) be (rm bE | |||||
_) be (stia bE | |||||
_) be (ter be: | _) be (ter be: | ||||
_) be (ven_ be: | _) be (ven_ be: | ||||
_) bever be:v@r | _) bever be:v@r | ||||
_) be (zem be: | _) be (zem be: | ||||
_) bezig be:z@x | |||||
_) beu bY: | _) beu bY: | ||||
_) bij (C@P3 b'EI | _) bij (C@P3 b'EI | ||||
_) bureau byr'o: | |||||
_) buurt (@@P5 b'yrt // buurtbewoner | |||||
.group c | .group c | ||||
_) ch (or x | _) ch (or x | ||||
_) ch (r x | _) ch (r x | ||||
&) che (_ =S | &) che (_ =S | ||||
ci (a S | |||||
@) ci (eel S | |||||
@) ci (ë S | |||||
ci (o S | |||||
ck k | ck k | ||||
cieel S'e:l | cieel S'e:l | ||||
ciële S'e:l@ | ciële S'e:l@ | ||||
@) ee (rde_ 'I: | @) ee (rde_ 'I: | ||||
@) ee (rden_ 'I: | @) ee (rden_ 'I: | ||||
it) eit (_ 'EIt | it) eit (_ 'EIt | ||||
&) el (_ @l | |||||
&) el (_ E2l | |||||
&) eld (_ @ld | &) eld (_ @ld | ||||
&) ele (_ 'e:l@ | &) 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 | &) em (_ @m | ||||
&) en (_S2qd @n | &) en (_S2qd @n | ||||
&) ens (_S3q @ns | &) ens (_S3q @ns | ||||
@) etten (_S3 @n | @) etten (_S3 @n | ||||
@) eur (_ 'Y:r | @) eur (_ 'Y:r | ||||
_) er (@P2 Er | |||||
@) e (raar_ @ | |||||
&) e (nB@ E2 | &) e (nB@ E2 | ||||
id) e (nt E | id) e (nt E | ||||
_) er (@P2 Er | |||||
&) era (_ @ra: | |||||
@) e (raar_ @ | |||||
&) e (rC@ E2 | &) e (rC@ E2 | ||||
_) gee Qe: | _) gee Qe: | ||||
gener (aal Q,e:n@r | gener (aal Q,e:n@r | ||||
gelijk Q@lEIk | gelijk Q@lEIk | ||||
_) ge (rC QE | |||||
_) geu QY: | _) geu QY: | ||||
_) ge (ven Qe: | _) ge (ven Qe: | ||||
_) ge (ving Qe: | _) ge (ving Qe: | ||||
m) ie (_ 'i | m) ie (_ 'i | ||||
p) ie (_ 'i | p) ie (_ 'i | ||||
@) ibel (_ 'ib@l | |||||
@) ibele (_ 'ib@l@ | |||||
&) ica (_ =ika: | &) ica (_ =ika: | ||||
&) ico (_ =iko: | |||||
ie (X 'i | ie (X 'i | ||||
ie (rd_ 'i | ie (rd_ 'i | ||||
@) ig (_S2d @x | |||||
@) ig (_S2dq @x | |||||
@) ige (_ @Q@ | @) ige (_ @Q@ | ||||
@) ij (n_ 'EI | @) ij (n_ 'EI | ||||
&) ika (_ =ika: | |||||
&) iko (_ =iko: | |||||
_) in (C@P2 'In | _) in (C@P2 'In | ||||
// _) in (gP2 'In | // _) in (gP2 'In | ||||
io (nage iO | io (nage iO | ||||
@) isch (_ =is | @) isch (_ =is | ||||
@) ische (_ =is@ | @) ische (_ =is@ | ||||
@) isme (_ 'Ism@ | |||||
@) ist (_ 'Ist | @) ist (_ 'Ist | ||||
@) loog (_ lo:x | @) loog (_ lo:x | ||||
.group m | .group m | ||||
m m | m m | ||||
m) m | m) m | ||||
manage (ment ma:nIdZ | |||||
management ma:nIdZm@nt | |||||
_) mee (@P3 m'e: | _) mee (@P3 m'e: | ||||
n) n | n) n | ||||
ng N | ng N | ||||
nj n^ | nj n^ | ||||
n (kel N | |||||
_) na (C@@P2 n'a: | _) na (C@@P2 n'a: | ||||
_) na (tion na: | |||||
.group o | .group o | ||||
ou VU | ou VU | ||||
ou (rage u | ou (rage u | ||||
@@C) o (_ =o: | |||||
oe (X_ 'u | |||||
oir (_ 'v#a:r | |||||
oo (X 'o: | oo (X 'o: | ||||
telef) oo (n 'o: | telef) oo (n 'o: | ||||
_) op (@@P2 'Op | _) op (@@P2 'Op | ||||
_) open (@P4 'o:p@n | _) open (@P4 'o:p@n | ||||
_) op (era 'o:p | |||||
_) op (tion Op | |||||
_) over (@P4 'o:v@r | _) over (@P4 'o:v@r | ||||
_) ph f | _) ph f | ||||
ph (K f | ph (K f | ||||
_) politie (@ po:l'itsi | |||||
.group q | .group q | ||||
q k | q k | ||||
.group r | .group r | ||||
r r | r r | ||||
A) r (A * | |||||
C) r (A @-* | |||||
A) r (A r | |||||
C) r (A r | |||||
rr *r | rr *r | ||||
.group re | .group re | ||||
_) re (cent r@ | _) re (cent r@ | ||||
_) re (cept r@ | _) re (cept r@ | ||||
_) re (ceptief re: | _) re (ceptief re: | ||||
_) re (clam r@ | |||||
_) re (serve_ r@ | _) re (serve_ r@ | ||||
.group s | .group s | ||||
s s | s s | ||||
s) s | s) s | ||||
A) s (A z | |||||
sch sx | sch sx | ||||
sch (_ s | sch (_ s | ||||
sch (e_ s | sch (e_ s | ||||
_) sch (n S | |||||
_) sh S | _) sh S | ||||
sh (K S | sh (K S | ||||
sj S | sj S | ||||
@@) s (_S1 s | @@) s (_S1 s | ||||
@) si (o S | |||||
A) si (o Z | |||||
@) ssi (o S | |||||
_) standaard (@P9 st'Anda:rt | |||||
.group t | .group t | ||||
t t | t t | ||||
p) tie (_ =si | p) tie (_ =si | ||||
s) tie (_ =ti | s) tie (_ =ti | ||||
cra) tie (_ ts'i | 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; | tj t; | ||||
tsj tS | tsj tS | ||||
_) th t | _) th t | ||||
_) team t'i:m | _) team t'i:m | ||||
team (_ ti:m | team (_ ti:m | ||||
_) train tre:n | |||||
.group te | .group te | ||||
_) tegen (P5 t'e:Q@n | _) tegen (P5 t'e:Q@n | ||||
_) ver (@P3 v@r | _) ver (@P3 v@r | ||||
_) ver (sie_ vEr | _) ver (sie_ vEr | ||||
_) ver (der_ vEr | |||||
_) verder vErd@r | |||||
_) voort (@P5 v'O:rt | _) voort (@P5 v'O:rt | ||||
_5 f'Em | _5 f'Em | ||||
_6 s'Eks | _6 s'Eks | ||||
_7 S'u-: | _7 S'u-: | ||||
_8 'Ot:@2 | |||||
_8 'Ot:a# | |||||
_9 n'i: | _9 n'i: | ||||
_10 t'i: | _10 t'i: | ||||
_11 'Elv@2 | |||||
_11 'Elva# | |||||
_12 t'Olv | _12 t'Olv | ||||
_13 tR'Et:@n | _13 tR'Et:@n | ||||
_14 fj'URt@n | _14 fj'URt@n | ||||
_17 s'yt:@n | _17 s'yt:@n | ||||
_18 'At:@n | _18 'At:@n | ||||
_19 n'It:@n | _19 n'It:@n | ||||
_2X s;'u-:@2 | |||||
_2X s;'u-:a# | |||||
_3X tR'Et:i: | _3X tR'Et:i: | ||||
_4X f'Y:Rti: | _4X f'Y:Rti: | ||||
_5X f'Emti: | _5X f'Emti: | ||||
_7X s'yt:i: | _7X s'yt:i: | ||||
_8X 'Ot:i: | _8X 'Ot:i: | ||||
_9X n'It: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 | _0M1 t'u-:s@n | ||||
_1M1 'Et||t'u-:s@n | _1M1 'Et||t'u-:s@n | ||||
_0M2 m'Illi:;,u:n@R | _0M2 m'Illi:;,u:n@R | ||||
_dpt kOmmA | _dpt kOmmA | ||||
// ordinal numbers | // 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 | // punctuation and symbols | ||||
//======================== | //======================== | ||||
* ss;aRn@2 $max3 | |||||
* ss;aRna# $max3 | |||||
= aRli:k $max3 | = aRli:k $max3 | ||||
+ plu-s $max3 | + plu-s $max3 | ||||
% pR'u:s'Ent $max3 | % pR'u:s'Ent $max3 | ||||
_' ApUstR'u:f | _' ApUstR'u:f | ||||
_( paRaNt'e:s||b@j'ynn@R | _( paRaNt'e:s||b@j'ynn@R | ||||
_) paRaNt'e:s||Sl'u-t: | _) paRaNt'e:s||Sl'u-t: | ||||
_* ss;aRn@2 | |||||
_* ss;aRna# | |||||
_, kOmmA | _, kOmmA | ||||
_- stRe:k | _- stRe:k | ||||
_. pu-Nktu-:m | _. pu-Nktu-:m | ||||
_: ku:lOn | _: ku:lOn | ||||
_; se:mi:ku:lOn | _; se:mi:ku:lOn | ||||
_< mIndR@2||En | |||||
_< mIndRa#||En | |||||
_= aRli:k | _= aRli:k | ||||
_> stWR@||En | _> stWR@||En | ||||
_? spWRSmOlstENn | _? spWRSmOlstENn | ||||
@ kRWllAlfA | @ kRWllAlfA | ||||
_[ v'EnstR@2||h'A:ke:paRaNt'e:s | |||||
_[ v'EnstRa#||h'A:ke:paRaNt'e:s | |||||
_\ OmvEndt||skROstR@k | _\ OmvEndt||skROstR@k | ||||
_] h'YyR@2||h'A:ke:paRaNt'e:s | |||||
_] h'YyRa#||h'A:ke:paRaNt'e:s | |||||
^ sIRku-mflEks | ^ sIRku-mflEks | ||||
__ u-ndaRStR@k | __ u-ndaRStR@k | ||||
_` 'OmvEndt||ApUstR'u:f | _` 'OmvEndt||ApUstR'u:f | ||||
_#32 mEllOmRu:m | _#32 mEllOmRu:m | ||||
_acu A:'ku-t: | _acu A:'ku-t: | ||||
_ced s'e:dIll@2 | |||||
_ced s'e:dIlla# | |||||
_cir s'IRku-mflEks | _cir s'IRku-mflEks | ||||
_dia tR'e:mA | _dia tR'e:mA | ||||
_grv gR'A:vi:s | _grv gR'A:vi:s | ||||
_tld t'Ild@2 | |||||
_tld t'Ilda# | |||||
é $accent | é $accent | ||||
ü $accent | ü $accent | ||||
cancel _^_EN | cancel _^_EN | ||||
continue _^_EN | continue _^_EN | ||||
magnifier _^_EN | magnifier _^_EN | ||||
and @2nd $only | |||||
and a#nd $only | |||||
// MAIN WORD DICTIONARY | // MAIN WORD DICTIONARY | ||||
her hE:R | her hE:R | ||||
kom kOm | kom kOm | ||||
loe lu: $capital | loe lu: $capital | ||||
noe nU:@2 | |||||
noe nU:a# | |||||
noen nU:@n // no+en | noen nU:@n // no+en | ||||
office Offi:s | office Offi:s | ||||
system syst'e:m | system syst'e:m |
// This file is UTF8 encoded | // 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 | .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 | // X) a (CCK A // single syllable with >= 2 final consonants | ||||
// // or initial syllable with 3 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 | .group b | ||||
b b | |||||
bb b: | |||||
b b | |||||
bb b: | |||||
_) be (@ b@ | |||||
_) be (@ b@ | |||||
.group c | .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 | .group d | ||||
d d | |||||
dd d: | |||||
r) d (_ | |||||
&) det (_ d@2 | |||||
d d | |||||
dd d: | |||||
r) d (_ | |||||
&) det (_ da# | |||||
.group e | .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 | .group f | ||||
f f | |||||
f f | |||||
.group g | .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 | .group h | ||||
h h | |||||
hj j | |||||
hv v | |||||
h h | |||||
hj j | |||||
hv v | |||||
.group i | .group i | ||||
i i: | |||||
i (CC I | |||||
&) ig (_ I | |||||
i i: | |||||
i (CC I | |||||
&) ig (_ I | |||||
.group j | .group j | ||||
j j | |||||
j j | |||||
.group k | .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 | .group l | ||||
l l | |||||
ll (K l | |||||
lj j | |||||
l l | |||||
ll (K l | |||||
lj j | |||||
ld ll | |||||
.group m | .group m | ||||
m m | |||||
mm (K m | |||||
m m | |||||
mm (K m | |||||
.group n | .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 | .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 | .group p | ||||
p p | |||||
pp p: | |||||
p p | |||||
pp p: | |||||
.group q | .group q | ||||
q k | |||||
qq k: | |||||
qu kw | |||||
q k | |||||
qq k: | |||||
qu kw | |||||
.group r | .group r | ||||
r R | |||||
rs (_ S | |||||
r R | |||||
rs (_ S | |||||
.group 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 | .group t | ||||
t t | |||||
tt t: | |||||
ti (on S | |||||
tj s; | |||||
t t | |||||
tt t: | |||||
ti (on S | |||||
tj s; | |||||
.group u | .group u | ||||
u u-: | |||||
u (CC u- | |||||
ui u-I | |||||
u u-: | |||||
u (CC u- | |||||
ui u-I | |||||
.group v | .group v | ||||
v v | |||||
vv (_ v | |||||
v v | |||||
vv (_ v | |||||
.group w | .group w | ||||
w v | |||||
w v | |||||
.group x | .group x | ||||
x ks | |||||
x (x | |||||
x ks | |||||
x (x | |||||
_) x s | |||||
.group y | .group y | ||||
y y: | |||||
y (CC y | |||||
y y: | |||||
y (CC y | |||||
.group z | .group z | ||||
z s | |||||
zz z | |||||
zz (_ z | |||||
z s | |||||
zz z | |||||
zz (_ z | |||||
.group å | .group å | ||||
å o: | |||||
åe o:@2 | |||||
å (CC O | |||||
å o: | |||||
åe o:a# | |||||
å (CC O | |||||
.group æ | .group æ | ||||
æ E: | |||||
æ (r a: | |||||
æ (CC a | |||||
æ E: | |||||
æ (r a: | |||||
æ (CC a | |||||
.group ø | .group ø | ||||
ø Y: | |||||
ø (CC W | |||||
øy Yy | |||||
ø Y: | |||||
ø (CC W | |||||
øy Yy | |||||
.group ä | .group ä | ||||
ä E: | |||||
ä (CC E | |||||
ä E: | |||||
ä (CC E | |||||
.group ö | .group ö | ||||
ö Y: | |||||
ö (CC W | |||||
ö Y: | |||||
ö (CC W | |||||
.group | .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 _ | |||||
\ p'in||s,a:jvU // பின் சாய்வு | \ p'in||s,a:jvU // பின் சாய்வு | ||||
! vijVppU // வியப்பு | ! vijVppU // வியப்பு | ||||
_? ke:l.vi // கேள்வி | _? ke:l.vi // கேள்வி | ||||
# en.||kuRi $max3 // எண் குறி | |||||
# ;en. $max3 // எண் குறி | |||||
= samVnpa:d.U $max3 // சமன்பாடு | = samVnpa:d.U $max3 // சமன்பாடு | ||||
+ ku:t.t.Vl $max3 // கூட்டல் | + ku:t.t.Vl $max3 // கூட்டல் | ||||
* perUkkVl $max3 // பெருக்கல் | * perUkkVl $max3 // பெருக்கல் | ||||
÷ vVgUttVl // வகுத்தல் | ÷ vVgUttVl // வகுத்தல் | ||||
% viz.Ukka:d.U $max3 // விழுக்காடு | % viz.Ukka:d.U $max3 // விழுக்காடு | ||||
U+bf9 ru:ba:j | U+bf9 ru:ba:j | ||||
¼ ka:l | |||||
½ araI | |||||
¾ mukka:l | |||||
// abbreviations | // abbreviations | ||||
ரூ ru:ba:j $dot $only | ரூ ru:ba:j $dot $only | ||||
பாகம் $alt | பாகம் $alt | ||||
பண்தம் $alt | பண்தம் $alt | ||||
பவனி $alt | பவனி $alt | ||||
பயில்வான் $alt | |||||
பாபா $alt | பாபா $alt | ||||
போண்டா $alt | போண்டா $alt | ||||
பஜ்ஜி $alt | பஜ்ஜி $alt | ||||
பால $alt | பால $alt | ||||
பாம்ப் $alt | பாம்ப் $alt | ||||
பீராமண $alt | பீராமண $alt | ||||
பிரதர் $alt | |||||
பால்ய $alt | பால்ய $alt | ||||
பலு $alt | பலு $alt | ||||
பில் $alt | பில் $alt | ||||
பலத்தாலான $alt | பலத்தாலான $alt | ||||
பெஞ்ச் $alt | பெஞ்ச் $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: | (பி . ஏ) bije: | ||||
திட $alt | திட $alt | ||||
தேவ $alt | தேவ $alt | ||||
தோ $alt | தோ $alt | ||||
தினசரி $alt | |||||
தரும $alt | தரும $alt | ||||
தொப் $alt | தொப் $alt | ||||
தொப்பென்று $alt | தொப்பென்று $alt | ||||
திம் $alt | திம் $alt | ||||
தேவதா $alt | தேவதா $alt | ||||
தெனம் $alt | தெனம் $alt | ||||
தெனமும் $alt | |||||
திடு $alt | |||||
தால் $alt | |||||
தவ $alt | |||||
திக்திக் digdig | |||||
தொப்புனு $alt | |||||
தருமம் $alt | |||||
தாவே $alt | |||||
// initial ட | // initial ட | ||||
சிட்டாய் $alt | சிட்டாய் $alt | ||||
சேச்சே $alt | சேச்சே $alt | ||||
சிரம் sirVm | சிரம் sirVm | ||||
சிலி $alt | |||||
சிக் tSik | |||||
சர்ச் $alt | |||||
டிக் t.ik | |||||
ரெட்டி red.d.i | |||||
செல்லம் $alt | |||||
கக $alt // initial க as [g] | கக $alt // initial க as [g] | ||||
கான $alt | கான $alt | ||||
கோத்திர $alt | கோத்திர $alt | ||||
கும்முன்னு $alt | கும்முன்னு $alt | ||||
கூகுல் $alt | |||||
கேட் $alt | கேட் $alt | ||||
கேட்டில் $alt | கேட்டில் $alt | ||||
கின் $alt | கின் $alt | ||||
கம $alt | |||||
குட் $alt | |||||
காண்டு $alt | |||||
கேட்டின் $alt | |||||
கேட்டுக்கு $alt | |||||
கம்முனு $alt | |||||
குஜால் $alt | |||||
ஓகோ o:Ho: | ஓகோ o:Ho: | ||||
கப் kVp | கப் kVp | ||||
செட் set. | செட் set. | ||||
திக் dik |
66 phoneme tables | |||||
67 phoneme tables | |||||
new total | new total | ||||
base 107 107 | base 107 107 | ||||
consonants 9 115 | consonants 9 115 | ||||
ht 11 140 | ht 11 140 | ||||
az 10 127 | az 10 127 | ||||
ak 8 109 | ak 8 109 | ||||
am 8 123 | |||||
Data file Used by | Data file Used by | ||||
b/b [b] base | b/b [b] base | ||||
[l/] fr | [l/] fr | ||||
[l] hu | [l] hu | ||||
[l] zh | [l] zh | ||||
l/l_ [l/] base | |||||
l/l_ [l] base | |||||
[l/] base | |||||
[l/3] base | [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l@ [hæy] base | |||||
l/l@ [h}] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
l/L1_aL [l/] base | |||||
l/L1_aL [l] base | |||||
[l/] base | |||||
[l/] de | [l/] de | ||||
l/L1_eL [l/] base | |||||
l/L1_eL [l] base | |||||
[l/] base | |||||
[l/] de | [l/] de | ||||
l/L1_iL [l/] base | |||||
l/L1_iL [l] base | |||||
[l/] base | |||||
[l/] de | [l/] de | ||||
l/L1_@L [l/] base | |||||
l/L1_@L [l] base | |||||
[l/] base | |||||
[l/] de | [l/] de | ||||
l/L1_oL [l/] base | |||||
l/L1_oL [l] base | |||||
[l/] base | |||||
[l/] de | [l/] de | ||||
l/L1_uL [l/] base | |||||
l/L1_uL [l] base | |||||
[l/] base | |||||
[l/] de | [l/] de | ||||
l/L2_aL [l/2] base | l/L2_aL [l/2] base | ||||
l/L2_eL [l/2] base | l/L2_eL [l/2] base | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [hæy] base | |||||
l/la [h}] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/le [hæy] base | |||||
l/le [h}] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [hæy] base | |||||
l/li [h}] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
ll/_ll [L] bg | ll/_ll [L] bg | ||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [hæy] base | |||||
l/lo [h}] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_o [l/3] base | l/l_o [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l^/l_rfx [l.] base | l^/l_rfx [l.] base | ||||
l/lu [hæy] base | |||||
l/lu [h}] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[a] id | [a] id | ||||
[a] sl | [a] sl | ||||
[a] bg | [a] bg | ||||
[a] am | |||||
vowel/a# [a] base2 | vowel/a# [a] base2 | ||||
[a/] base2 | [a/] base2 | ||||
[a#] en-sc | [a#] en-sc | ||||
[e] bg | [e] bg | ||||
[e] nso | [e] nso | ||||
[e] az | [e] az | ||||
[e] am | |||||
vowel/@_fnt [@] en-wi | vowel/@_fnt [@] en-wi | ||||
[@2] en-wi | [@2] en-wi | ||||
[@2] hr | [@2] hr | ||||
[i] prs | [i] prs | ||||
[i] nso | [i] nso | ||||
[i] ak | [i] ak | ||||
[i] am | |||||
vowel/i# [y:] cy | vowel/i# [y:] cy | ||||
vowel/i_2 [i2] de | vowel/i_2 [i2] de | ||||
[i:] de | [i:] de | ||||
[i] nl | [i] nl | ||||
[i:] la | [i:] la | ||||
[i:] sv | [i:] sv | ||||
vowel/i#_2 [y] am | |||||
vowel/i_3 [i] af | vowel/i_3 [i] af | ||||
[i:] sk | [i:] sk | ||||
vowel/i_4 [i] fi | vowel/i_4 [i] fi | ||||
[V] hi | [V] hi | ||||
[@2] hi | [@2] hi | ||||
[@] ro | [@] ro | ||||
[@2] no | |||||
[a#] no | |||||
[@] id | [@] id | ||||
[V] ne | [V] ne | ||||
[@/] ne | [@/] ne | ||||
[@] pa | [@] pa | ||||
[V] pa | [V] pa | ||||
[@] am | |||||
vowel/@_low2 [@/] en-us | vowel/@_low2 [@/] en-us | ||||
[@2] en-us | [@2] en-us | ||||
vowel/o [o] base2 | vowel/o [o] base2 | ||||
vowel/o_3 [oU] en-sc | vowel/o_3 [oU] en-sc | ||||
vowel/o-_3 [U] en-rp | vowel/o-_3 [U] en-rp | ||||
vowel/o-_4 [o] ro | vowel/o-_4 [o] ro | ||||
[o] am | |||||
vowel/o_5 [O] nl | vowel/o_5 [O] nl | ||||
[O] da | [O] da | ||||
vowel/o_6 [O:] nl | vowel/o_6 [O:] nl | ||||
[u] tr | [u] tr | ||||
[u] sl | [u] sl | ||||
[u] bg | [u] bg | ||||
[u] am | |||||
vowel/u#_2 [u-] sv | vowel/u#_2 [u-] sv | ||||
vowel/u#_3 [U] ta | vowel/u#_3 [U] ta | ||||
[U:] ta | [U:] ta |
FMT(vowel/@_4) | FMT(vowel/@_4) | ||||
endphoneme | endphoneme | ||||
phoneme @2 // open schwa | |||||
phoneme a# // open schwa | |||||
vowel starttype #@ endtype #a | vowel starttype #@ endtype #a | ||||
unstressed | unstressed | ||||
length 120 | length 120 |
ChangePhoneme(l/) | ChangePhoneme(l/) | ||||
ENDIF | 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 | CALL vowelstart_l | ||||
IF prevPh(#@) THEN | IF prevPh(#@) THEN | ||||
phonemetable ak base | phonemetable ak base | ||||
include ph_akan | include ph_akan | ||||
phonemetable am base2 | |||||
include ph_amhari |
// 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.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> | #include <stdio.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <ctype.h> | #include <ctype.h> | ||||
#include <sys/types.h> | #include <sys/types.h> | ||||
#include <sys/stat.h> | |||||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | #if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | ||||
#define IS_BIG_ENDIAN 1 | #define IS_BIG_ENDIAN 1 | ||||
// This is a new format for eSpeak 1.41 | // 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 frflags; | ||||
short ffreq[7]; | short ffreq[7]; | ||||
unsigned char length; | unsigned char length; | ||||
unsigned char klattp2[5]; // continuation of klattp[], Avp, Fric, FricBP, Turb | unsigned char klattp2[5]; // continuation of klattp[], Avp, Fric, FricBP, Turb | ||||
unsigned char klatt_ap[7]; // Klatt parallel amplitude | unsigned char klatt_ap[7]; // Klatt parallel amplitude | ||||
unsigned char klatt_bp[7]; // Klatt parallel bandwidth /2 | 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 | } 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 | #define N_SEQ_FRAMES 25 | ||||
typedef struct { | typedef struct { | ||||
short length; | short length; | ||||
unsigned char n_frames; | unsigned char n_frames; | ||||
unsigned char flags; | |||||
unsigned char sqflags; | |||||
frame_t frame[N_SEQ_FRAMES]; | frame_t frame[N_SEQ_FRAMES]; | ||||
} SPECT_SEQ; | } SPECT_SEQ; | ||||
int xread; // prevent compiler warning from fread() | 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[]) | int main (int argc, char *argv[]) | ||||
{//============================== | {//============================== | ||||
const char *indir = "/usr/share/espeak-data"; | const char *indir = "/usr/share/espeak-data"; | ||||
printf ("Host seems to be little-endian ..\n"); | printf ("Host seems to be little-endian ..\n"); | ||||
#endif | #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 (f1, "%s/phontab", indir); | ||||
sprintf (f2, "%s/temp_1", outdir); | sprintf (f2, "%s/temp_1", outdir); | ||||
sprintf (f1, "%s/phonindex", outdir); | sprintf (f1, "%s/phonindex", outdir); | ||||
rename (f2, f1); | 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 (f1); | ||||
free (f2); | free (f2); | ||||
if (line[0] == 'S') { | if (line[0] == 'S') { | ||||
SPECT_SEQ buf_spect; | SPECT_SEQ buf_spect; | ||||
size_t ix; | |||||
size_t frame_start; | |||||
int n; | 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); | buf_spect.length = (short) SWAP_USHORT (buf_spect.length); | ||||
fwrite(&buf_spect, 4, 1, out); | |||||
for (n = 0; n < buf_spect.n_frames; n++) { | for (n = 0; n < buf_spect.n_frames; n++) { | ||||
int k; | 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 | // Changed for eSpeak 1.41 | ||||
for (k = 0; k < 7; k++) { | 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') { | else if (line[0] == 'W') { | ||||
long pos; | long pos; | ||||
xread = fread (env_buf, 1, 128, in); | xread = fread (env_buf, 1, 128, in); | ||||
fwrite (env_buf, 1, 128, out); | 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); | fclose (in); |
# End Source File | # End Source File | ||||
# Begin 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 | SOURCE=.\src\speak_lib.cpp | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File |
// comment this out when compiling the "speak" process | // comment this out when compiling the "speak" process | ||||
//#define SPECT_EDITOR | //#define SPECT_EDITOR | ||||
#define INCLUDE_KLATT | #define INCLUDE_KLATT | ||||
#define INCLUDE_MBROLA | |||||
#include <windows.h> | #include <windows.h> | ||||
#define PLATFORM_WINDOWS | #define PLATFORM_WINDOWS |
// comment this out when compiling the "speak" process | // comment this out when compiling the "speak" process | ||||
//#define SPECT_EDITOR | //#define SPECT_EDITOR | ||||
#define INCLUDE_KLATT | #define INCLUDE_KLATT | ||||
#define INCLUDE_MBROLA | |||||
#include <windows.h> | #include <windows.h> | ||||
#define PLATFORM_WINDOWS | #define PLATFORM_WINDOWS |
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
SOURCE=.\src\sonic.cpp | |||||
# End Source File | |||||
# Begin Source File | |||||
SOURCE=.\src\speak.cpp | SOURCE=.\src\speak.cpp | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
SOURCE=.\src\sonic.h | |||||
# End Source File | |||||
# Begin Source File | |||||
SOURCE=.\src\speak_lib.h | SOURCE=.\src\speak_lib.h | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File |
#define NO_VARIADIC_MACROS | #define NO_VARIADIC_MACROS | ||||
#define ESPEAK_API | #define ESPEAK_API | ||||
#define INCLUDE_KLATT | #define INCLUDE_KLATT | ||||
#define INCLUDE_MBROLA | |||||
// will look for espeak_data directory here, and also in user's home directory | // will look for espeak_data directory here, and also in user's home directory | ||||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | #define PATH_ESPEAK_DATA "/usr/share/espeak-data" |
#ifndef SPEAK_LIB_H | #ifndef SPEAK_LIB_H | ||||
#define 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] * | * email: [email protected] * | ||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
/* This is the header file for the library version of espeak */ | /* This is the header file for the library version of espeak */ | ||||
/* */ | /* */ | ||||
/*************************************************************/ | /*************************************************************/ | ||||
#define ESPEAK_API __declspec(dllexport) | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <stddef.h> | |||||
#define ESPEAK_API_REVISION 5 | |||||
#define ESPEAK_API_REVISION 6 | |||||
/* | /* | ||||
Revision 2 | Revision 2 | ||||
Added parameter "options" to eSpeakInitialize() | Added parameter "options" to eSpeakInitialize() | ||||
Revision 5 | Revision 5 | ||||
Added espeakCHARS_16BIT | Added espeakCHARS_16BIT | ||||
Revision 6 | |||||
Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL | |||||
*/ | */ | ||||
/********************/ | /********************/ | ||||
/* Initialization */ | /* 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 { | typedef enum { | ||||
espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list. | espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list. | ||||
const char *name; // used for MARK and PLAY events. UTF8 string | const char *name; // used for MARK and PLAY events. UTF8 string | ||||
} id; | } id; | ||||
} espeak_EVENT; | } 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. | 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. | ||||
In PLAYBACK mode, the callback function is called as soon as an event happens. | 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." | "hello, hello." | ||||
* Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | ||||
** Block 1: | ** Block 1: | ||||
<audio data> + | |||||
<audio data> + | |||||
List of events: SENTENCE + WORD + LIST_TERMINATED | List of events: SENTENCE + WORD + LIST_TERMINATED | ||||
** Block 2: | ** Block 2: | ||||
<audio data> + | <audio data> + | ||||
List of events: WORD + END + LIST_TERMINATED | List of events: WORD + END + LIST_TERMINATED | ||||
typedef enum { | typedef enum { | ||||
/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/ | /* 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 */ | /* RETRIEVAL mode: supplies audio data and events to the calling program */ | ||||
AUDIO_OUTPUT_RETRIEVAL, | AUDIO_OUTPUT_RETRIEVAL, | ||||
/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | /* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | ||||
AUDIO_OUTPUT_SYNCHRONOUS, | AUDIO_OUTPUT_SYNCHRONOUS, | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* 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. | output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Must be called before any synthesis functions are called. | ||||
This specifies a function in the calling program which is called when a buffer of | 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: | The callback function is of the form: | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* 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 | <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 | encountered and allows the calling program to indicate whether the sound file which | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||||
espeak_ERROR espeak_Synth(const void *text, | |||||
size_t size, | size_t size, | ||||
unsigned int position, | unsigned int position, | ||||
espeak_POSITION_TYPE position_type, | espeak_POSITION_TYPE position_type, | ||||
start of the text. | start of the text. | ||||
position_type: Determines whether "position" is a number of characters, words, or sentences. | 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 | end_position: If set, this gives a character position at which speaking will stop. A value | ||||
of zero indicates no end position. | of zero indicates no end position. | ||||
espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | ||||
this pause is suppressed. | 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. | data supplied to the callback. | ||||
user_data: pointer which will be passed to the callback function. | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||||
espeak_ERROR espeak_Synth_Mark(const void *text, | |||||
size_t size, | size_t size, | ||||
const char *index_mark, | const char *index_mark, | ||||
unsigned int end_position, | unsigned int end_position, | ||||
For the other parameters, see espeak_Synth() | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Speak the name of a keyboard key. | ||||
If key_name is a single character, it speaks the name of the character. | If key_name is a single character, it speaks the name of the character. | ||||
Otherwise, it speaks key_name as a text string. | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Sets the value of the specified parameter. | ||||
relative=0 Sets the absolute value of the parameter. | relative=0 Sets the absolute value of the parameter. | ||||
relative=1 Sets a relative value of the parameter. | relative=1 Sets a relative value of the parameter. | ||||
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 | espeakPITCH: base pitch, range 0-100. 50=normal | ||||
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | ||||
espeakPUNCTUATION: which punctuation characters to announce: | 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. | see espeak_GetParameter() to specify which characters are announced. | ||||
espeakCAPITALS: announce capital letters by: | espeakCAPITALS: announce capital letters by: | ||||
espeakWORDGAP: pause between words, units of 10mS (at the default speed) | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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=0 Returns the default value of the specified parameter. | ||||
current=1 Returns the current value of the specified parameter, as set by SetParameter() | current=1 Returns the current value of the specified parameter, as set by SetParameter() | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* Specified a list of punctuation characters whose names are to be spoken when the | ||||
value of the Punctuation parameter is set to "some". | value of the Punctuation parameter is set to "some". | ||||
punctlist: A list of character codes, terminated by a zero character. | 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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* Controls the output of phoneme symbols for the text | ||||
value=0 No phoneme output (default) | value=0 No phoneme output (default) | ||||
value=1 Output the translated phoneme symbols for the text | 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=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. | stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* Compile pronunciation dictionary for a language which corresponds to the currently | ||||
selected voice. The required voice should be selected before calling this function. | selected voice. The required voice should be selected before calling this function. | ||||
unsigned char gender; // 0=none 1=male, 2=female, | unsigned char gender; // 0=none 1=male, 2=female, | ||||
unsigned char age; // 0=not specified, or age in years | 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 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 | int score; // for internal use | ||||
void *spare; // for internal use | void *spare; // for internal use | ||||
} espeak_VOICE; | } espeak_VOICE; | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers. | ||||
The list is terminated by a NULL pointer | The list is terminated by a NULL pointer | ||||
If voice_spec is NULL then all voices are listed. | 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. | are listed, and they are listed in preference order. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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. | /* Searches for a voice with a matching "name" field. Language is not considered. | ||||
"name" is a UTF8 string. | "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. | you may try after a while to call the function again. | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following | ||||
fields may be set: | fields may be set: | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||||
espeak_VOICE *espeak_GetCurrentVoice(void); | |||||
/* Returns the espeak_VOICE data for the currently selected voice. | /* 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> | This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s> | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #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 | /* 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 | function returns, the audio output is fully stopped and the synthesizer is ready to | ||||
synthesize a new message. | synthesize a new message. | ||||
Return: EE_OK: operation achieved | |||||
Return: EE_OK: operation achieved | |||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API int espeak_IsPlaying(void); | |||||
int espeak_IsPlaying(void); | |||||
/* Returns 1 if audio is played, 0 otherwise. | /* Returns 1 if audio is played, 0 otherwise. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||||
espeak_ERROR espeak_Synchronize(void); | |||||
/* This function returns when all data have been spoken. | /* This function returns when all data have been spoken. | ||||
Return: EE_OK: operation achieved | |||||
Return: EE_OK: operation achieved | |||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||||
espeak_ERROR espeak_Terminate(void); | |||||
/* last function to be called. | /* last function to be called. | ||||
Return: EE_OK: operation achieved | |||||
Return: EE_OK: operation achieved | |||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API const char *espeak_Info(void* ptr); | |||||
const char *espeak_Info(void* ptr); | |||||
/* Returns the version number string. | /* Returns the version number string. | ||||
The parameter is for future use, and should be set to NULL | The parameter is for future use, and should be set to NULL | ||||
*/ | */ | ||||
#endif | #endif | ||||
#define ESPEAK_API __declspec(dllexport) | #define ESPEAK_API __declspec(dllexport) | ||||
#define LIBRARY | #define LIBRARY | ||||
#define INCLUDE_KLATT | #define INCLUDE_KLATT | ||||
#define INCLUDE_MBROLA | |||||
// will look for espeak_data directory here, and also in user's home directory | // will look for espeak_data directory here, and also in user's home directory | ||||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | #define PATH_ESPEAK_DATA "/usr/share/espeak-data" |
//#define USE_PORTAUDIO | //#define USE_PORTAUDIO | ||||
//#define USE_NANOSLEEP | //#define USE_NANOSLEEP | ||||
#define INCLUDE_KLATT | #define INCLUDE_KLATT | ||||
#define INCLUDE_MBROLA | |||||
// will look for espeak_data directory here, and also in user's home directory | // will look for espeak_data directory here, and also in user's home directory | ||||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | #define PATH_ESPEAK_DATA "/usr/share/espeak-data" |
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
SOURCE=.\src\sonic.cpp | |||||
# End Source File | |||||
# Begin Source File | |||||
SOURCE=.\src\speak_lib.cpp | SOURCE=.\src\speak_lib.cpp | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File | ||||
SOURCE=.\src\sonic.h | |||||
# End Source File | |||||
# Begin Source File | |||||
SOURCE=.\src\speak_lib.h | SOURCE=.\src\speak_lib.h | ||||
# End Source File | # End Source File | ||||
# Begin Source File | # Begin Source File |
int 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; | rate = new_rate + master_rate; | ||||
if(rate < -10) rate = -10; | if(rate < -10) rate = -10; |
LIBDIR=$(PREFIX)/lib | LIBDIR=$(PREFIX)/lib | ||||
DATADIR=$(PREFIX)/share/espeak-data | DATADIR=$(PREFIX)/share/espeak-data | ||||
RELEASE = 1.43 | |||||
RELEASE = 1.44 | |||||
BIN_NAME = speak | BIN_NAME = speak | ||||
BIN2_NAME = espeak | BIN2_NAME = espeak | ||||
LIB_NAME = libespeak.so | LIB_NAME = libespeak.so | ||||
$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | ||||
$(BIN_NAME): $(OBJS1) | $(BIN_NAME): $(OBJS1) | ||||
$(CXX) -o $@ $(OBJS1) $(LIBS1) | |||||
$(CXX) $(LDFLAGS) -o $@ $(OBJS1) $(LIBS1) | |||||
$(BIN2_NAME): $(OBJS3) $(LIB_NAME) | $(BIN2_NAME): $(OBJS3) $(LIB_NAME) | ||||
$(CXX) -o $@ $(OBJS3) $(LIBS3) | |||||
$(CXX) $(LDFLAGS) -o $@ $(OBJS3) $(LIBS3) | |||||
-I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o | -I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o | ||||
$(LIB_NAME): $(OBJS2) | $(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) | $(STATIC_LIB_NAME): $(OBJS2) | ||||
$(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) | $(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) |
{"isNotVowel", 0, i_isNotVowel}, | {"isNotVowel", 0, i_isNotVowel}, | ||||
{"isFinalVowel", 0, i_isFinalVowel}, | {"isFinalVowel", 0, i_isFinalVowel}, | ||||
{"isVoiced", 0, i_isVoiced}, // voiced consonant, or vowel | {"isVoiced", 0, i_isVoiced}, // voiced consonant, or vowel | ||||
{"isFirstVowel", 0, i_isFirstVowel}, | |||||
{NULL, 0, 0} | {NULL, 0, 0} | ||||
}; | }; | ||||
} | } | ||||
*p_equivalence++ = 0; | *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; | n_bytes = p_equivalence - p_start; | ||||
p_start[1] = remove_stress; | p_start[1] = remove_stress; | ||||
n_bytes = n_bytes / 4; | n_bytes = n_bytes / 4; |
char ph_tens[50]; | char ph_tens[50]; | ||||
char ph_digits[50]; | char ph_digits[50]; | ||||
char ph_and[12]; | char ph_and[12]; | ||||
char ph_ord_suffix[20]; | |||||
units = value % 10; | units = value % 10; | ||||
tens = value / 10; | tens = value / 10; | ||||
else | 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); | sprintf(string,"_%dX%c", tens, ord_type); | ||||
if(Lookup(tr, string, ph_tens) != 0) | if(Lookup(tr, string, ph_tens) != 0) | ||||
{ | { | ||||
found_ordinal = 1; | 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) | if(found_ordinal == 0) | ||||
if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0)) | if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0)) | ||||
{ | { | ||||
Lookup(tr, "_0and", ph_and); | Lookup(tr, "_0and", ph_and); | ||||
if(tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL) | |||||
ph_and[0] = 0; | |||||
if(tr->langopts.numbers & NUM_SWAP_TENS) | if(tr->langopts.numbers & NUM_SWAP_TENS) | ||||
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal); | sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal); | ||||
else | else | ||||
char ph_thousands[50]; | char ph_thousands[50]; | ||||
char ph_hundred_and[12]; | char ph_hundred_and[12]; | ||||
char ph_thousand_and[12]; | char ph_thousand_and[12]; | ||||
char ph_ord_suffix[20]; | |||||
ordinal = control & 0x22; | ordinal = control & 0x22; | ||||
hundreds = value / 100; | hundreds = value / 100; | ||||
tensunits = value % 100; | tensunits = value % 100; | ||||
suppress_null = 1; | suppress_null = 1; | ||||
found = 0; | 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) | if(!found) | ||||
{ | { | ||||
sprintf(string,"_%dC",hundreds); | sprintf(string,"_%dC",hundreds); |
int s1; | int s1; | ||||
int wpm; | int wpm; | ||||
int wpm2; | int wpm2; | ||||
double wpm_inc; | |||||
speed.loud_consonants = 0; | speed.loud_consonants = 0; | ||||
speed.min_sample_len = 450; | speed.min_sample_len = 450; | ||||
if(control == 2) | if(control == 2) | ||||
wpm = embedded_value[EMBED_S2]; | 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 | #ifdef TEST_SPEED | ||||
if(wpm > 1000) | if(wpm > 1000) | ||||
{ | { | ||||
if((speed.clause_pause_factor = speed.pause_factor) < 16) | if((speed.clause_pause_factor = speed.pause_factor) < 16) | ||||
speed.clause_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 | #ifdef TEST_SPEED |
static int WavegenFile(void) | static int WavegenFile(void) | ||||
{//========================= | {//========================= | ||||
int finished; | int finished; | ||||
unsigned char wav_outbuf[512]; | |||||
unsigned char wav_outbuf[1024]; | |||||
char fname[210]; | char fname[210]; | ||||
out_ptr = out_start = wav_outbuf; | out_ptr = out_start = wav_outbuf; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x014404; | ||||
int option_device_number = -1; | int option_device_number = -1; | ||||
int which; | int which; | ||||
unsigned int data; | unsigned int data; | ||||
int instn2; | int instn2; | ||||
int count; | |||||
PHONEME_TAB *ph; | PHONEME_TAB *ph; | ||||
PHONEME_LIST *plist_this; | 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 | static int ph_position[8] = {0, 1, 2, 3, 2, 0, 1, 3}; // prevPh, thisPh, nextPh, next2Ph, nextPhW, prevPhW, nextVowel, next2PhW | ||||
case 12: // isVoiced | case 12: // isVoiced | ||||
return((ph->type == phVOWEL) || (ph->type == phLIQUID) || (ph->phflags & phVOICED)); | 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; | break; | ||||
} | } |
#define i_isNotVowel 0x8a | #define i_isNotVowel 0x8a | ||||
#define i_isFinalVowel 0x8b | #define i_isFinalVowel 0x8b | ||||
#define i_isVoiced 0x8c | #define i_isVoiced 0x8c | ||||
#define i_isFirstVowel 0x8d | |||||
// place of articulation | // place of articulation | ||||
#define i_isVel 0x28 | #define i_isVel 0x28 | ||||
extern int option_log_frames; | extern int option_log_frames; | ||||
extern const char *version_string; | extern const char *version_string; | ||||
extern const int version_phdata; | extern const int version_phdata; | ||||
extern double sonicSpeed; | |||||
#define N_SOUNDICON_TAB 80 // total entries in soundicon_tab | #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 | #define N_SOUNDICON_SLOTS 4 // number of slots reserved for dynamic loading of audio files |
int name2 = 0; | int name2 = 0; | ||||
Translator *tr; | 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 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}; | static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | ||||
} | } | ||||
break; | 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 | case L('a','r'): // Arabic | ||||
tr->letter_bits_offset = OFFSET_ARABIC; | tr->letter_bits_offset = OFFSET_ARABIC; | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | 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.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) | if(name2 == L_grc) | ||||
{ | { | ||||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | 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.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')) | if(name2 == L('c','a')) | ||||
{ | { | ||||
case L('f','r'): // french | 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); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | 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.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.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.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; | 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'); | SetLetterVowel(tr,'y'); | ||||
case L('h','t'): // Haitian Creole | 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)); | // memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths)); | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | tr->langopts.stress_flags = 0x0024; // don't use secondary stress |
// bit27= Roman numbers are ordinal numbers | // bit27= Roman numbers are ordinal numbers | ||||
int numbers; | int numbers; | ||||
#define NUM2_MULTIPLE_ORDINAL 0x1000 | |||||
// bits 1-4 use variant form of numbers before thousands,millions,etc. | // bits 1-4 use variant form of numbers before thousands,millions,etc. | ||||
// bit6=(LANG=pl) two forms of plural, M or MA | // bit6=(LANG=pl) two forms of plural, M or MA | ||||
// bit7=(LANG-ru) use MB for 1 thousand, million, etc | // bit7=(LANG-ru) use MB for 1 thousand, million, etc | ||||
// bit8=(LANG=cs,sk) two forms of plural, M or MA | // bit8=(LANG=cs,sk) two forms of plural, M or MA | ||||
// bit9=(LANG=rw) say "thousand" and "million" before its number, not after | // 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; | int numbers2; | ||||
#define BREAK_THOUSANDS 0x49249248 | #define BREAK_THOUSANDS 0x49249248 |
{"mbrola", V_MBROLA}, | {"mbrola", V_MBROLA}, | ||||
{"consonants", V_CONSONANTS}, | {"consonants", V_CONSONANTS}, | ||||
{"klatt", V_KLATT}, | {"klatt", V_KLATT}, | ||||
{"fast_test", V_FAST}, | |||||
{"fast_test2", V_FAST}, | |||||
{"speed", V_SPEED}, | {"speed", V_SPEED}, | ||||
// these just set a value in langopts.param[] | // these just set a value in langopts.param[] | ||||
voice->consonant_ampv = 100; | voice->consonant_ampv = 100; | ||||
voice->samplerate = 22050; | voice->samplerate = 22050; | ||||
memset(voice->klattv,0,sizeof(voice->klattv)); | 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 | #ifdef PLATFORM_RISCOS | ||||
voice->roughness = 1; | voice->roughness = 1; |
#include <math.h> | #include <math.h> | ||||
#include "speak_lib.h" | #include "speak_lib.h" | ||||
#include "speech.h" | #include "speech.h" | ||||
#include "phoneme.h" | #include "phoneme.h" | ||||
#include "synthesize.h" | #include "synthesize.h" | ||||
#include "voice.h" | #include "voice.h" | ||||
#include "sonic.h" | |||||
//#undef INCLUDE_KLATT | //#undef INCLUDE_KLATT | ||||
// pitch,speed, | // pitch,speed, | ||||
int embedded_default[N_EMBEDDED_VALUES] = {0, 50,175,100,50, 0, 0, 0,175,0,0,0,0,0,0}; | 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 | #define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word | ||||
int current_source_index=0; | int current_source_index=0; | ||||
static PaStream *pa_stream=NULL; | static PaStream *pa_stream=NULL; | ||||
#endif | #endif | ||||
static sonicStream sonicSpeedupStream = NULL; | |||||
double sonicSpeed = 1.0; | |||||
// 1st index=roughness | // 1st index=roughness | ||||
// 2nd index=modulation_type | // 2nd index=modulation_type | ||||
217,220,223,226,229,232,236,239, | 217,220,223,226,229,232,236,239, | ||||
242,246,249,252, 254,255 }; | 242,246,249,252, 254,255 }; | ||||
int WavegenFill(int fill_zeros); | |||||
#ifdef LOG_FRAMES | #ifdef LOG_FRAMES | ||||
static void LogMarker(int type, int value) | static void LogMarker(int type, int value) | ||||
static PaError pa_init_err=0; | static PaError pa_init_err=0; | ||||
static int out_channels=1; | static int out_channels=1; | ||||
unsigned char *outbuffer = NULL; | |||||
int outbuffer_size = 0; | |||||
#if USE_PORTAUDIO == 18 | #if USE_PORTAUDIO == 18 | ||||
static int WaveCallback(void *inputBuffer, void *outputBuffer, | static int WaveCallback(void *inputBuffer, void *outputBuffer, | ||||
unsigned long framesPerBuffer, PaTimestamp outTime, void *userData ) | unsigned long framesPerBuffer, PaTimestamp outTime, void *userData ) | ||||
int ix; | int ix; | ||||
int result; | int result; | ||||
unsigned char *p; | 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 | #ifdef LIBRARY | ||||
event_list_ix = 0; | event_list_ix = 0; | ||||
result = WavegenFill(1); | 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 | #ifdef LIBRARY | ||||
count_samples += framesPerBuffer; | count_samples += framesPerBuffer; | ||||
if(synth_callback) | if(synth_callback) | ||||
{ | { | ||||
// swap the order of bytes in each sound sample in the portaudio buffer | // swap the order of bytes in each sound sample in the portaudio buffer | ||||
int c; | 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 | #endif | ||||
{ | { | ||||
// sound output can only do stereo, not mono. Duplicate each sound sample to | // sound output can only do stereo, not mono. Duplicate each sound sample to | ||||
// produce 2 channels. | // produce 2 channels. | ||||
out_ptr = (unsigned char *)outputBuffer; | |||||
out_buf = (unsigned char *)outputBuffer; | |||||
for(ix=framesPerBuffer-1; ix>=0; ix--) | 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]; | |||||
} | } | ||||
} | } | ||||
int WavegenFill(int fill_zeros) | |||||
int WavegenFill2(int fill_zeros) | |||||
{//============================ | {//============================ | ||||
// Pick up next wavegen commands from the queue | // Pick up next wavegen commands from the queue | ||||
// return: 0 output buffer has been filled | // return: 0 output buffer has been filled | ||||
} | } | ||||
return(0); | 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 |