Browse Source

[1.44.13]

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-fd96e6ae7743
master
jonsd 14 years ago
parent
commit
1649824b33
44 changed files with 3659 additions and 1124 deletions
  1. 308
    58
      dictsource/da_list
  2. 1261
    412
      dictsource/da_rules
  3. 24
    21
      dictsource/dict_phonemes
  4. 47
    2
      dictsource/el_list
  5. 11
    8
      dictsource/en_list
  6. 29
    13
      dictsource/en_rules
  7. 37
    0
      dictsource/es_list
  8. 24
    8
      dictsource/fr_list
  9. 9
    3
      dictsource/fr_rules
  10. 39
    5
      dictsource/hu_list
  11. 134
    77
      dictsource/hu_rules
  12. 1
    0
      dictsource/it_rules
  13. 446
    0
      dictsource/nl_list
  14. 68
    9
      dictsource/nl_rules
  15. 34
    34
      dictsource/no_list
  16. 146
    140
      dictsource/no_rules
  17. 49
    5
      dictsource/ta_list
  18. 558
    153
      dictsource/ta_rules
  19. 30
    15
      phsource/compile_report
  20. 1
    1
      phsource/ph_norwegian
  21. 18
    0
      phsource/phonemes
  22. BIN
      phsource/vowel/i#_2
  23. 91
    41
      platforms/big_endian/espeak-phoneme-data.c
  24. 8
    0
      platforms/windows/espeakedit/espeakedit.dsp
  25. 1
    0
      platforms/windows/espeakedit/src/speech.h
  26. 1
    0
      platforms/windows/espeakedit/src_copy/speech.h
  27. 8
    0
      platforms/windows/windows_cmd/espeak.dsp
  28. 1
    0
      platforms/windows/windows_cmd/src/speech.h
  29. 66
    57
      platforms/windows/windows_dll/src/speak_lib.h
  30. 1
    0
      platforms/windows/windows_dll/src/speech.h
  31. 1
    0
      platforms/windows/windows_sapi/src/speech.h
  32. 8
    0
      platforms/windows/windows_sapi/ttseng.dsp
  33. 2
    2
      platforms/windows/windows_sapi/ttsengobj.cpp
  34. 5
    4
      src/Makefile
  35. 2
    1
      src/compiledata.cpp
  36. 34
    13
      src/numbers.cpp
  37. 16
    12
      src/setlengths.cpp
  38. 1
    1
      src/speak.cpp
  39. 14
    1
      src/synthdata.cpp
  40. 2
    0
      src/synthesize.h
  41. 16
    6
      src/tr_languages.cpp
  42. 2
    0
      src/translate.h
  43. 5
    2
      src/voices.cpp
  44. 100
    20
      src/wavegen.cpp

+ 308
- 58
dictsource/da_list View File

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

+ 1261
- 412
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 24
- 21
dictsource/dict_phonemes View File

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

+ 47
- 2
dictsource/el_list View File

_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

+ 11
- 8
dictsource/en_list View File

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@

+ 29
- 13
dictsource/en_rules View File

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_

+ 37
- 0
dictsource/es_list View File

_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





+ 24
- 8
dictsource/fr_list View File



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


+ 9
- 3
dictsource/fr_rules View File

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

+ 39
- 5
dictsource/hu_list View File

(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



+ 134
- 77
dictsource/hu_rules View File

// 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:

+ 1
- 0
dictsource/it_rules View File

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



+ 446
- 0
dictsource/nl_list View File

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

+ 68
- 9
dictsource/nl_rules View File

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





+ 34
- 34
dictsource/no_list View File

_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

+ 146
- 140
dictsource/no_rules View File



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



+ 49
- 5
dictsource/ta_list View File

\ 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

+ 558
- 153
dictsource/ta_rules
File diff suppressed because it is too large
View File


+ 30
- 15
phsource/compile_report View File

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

+ 1
- 1
phsource/ph_norwegian View File

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

+ 18
- 0
phsource/phonemes View File

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

BIN
phsource/vowel/i#_2 View File


+ 91
- 41
platforms/big_endian/espeak-phoneme-data.c View File





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

+ 8
- 0
platforms/windows/espeakedit/espeakedit.dsp View File

# 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

+ 1
- 0
platforms/windows/espeakedit/src/speech.h View 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

+ 1
- 0
platforms/windows/espeakedit/src_copy/speech.h View 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

+ 8
- 0
platforms/windows/windows_cmd/espeak.dsp View File

# 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

+ 1
- 0
platforms/windows/windows_cmd/src/speech.h View 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"

+ 66
- 57
platforms/windows/windows_dll/src/speak_lib.h View File

#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


+ 1
- 0
platforms/windows/windows_dll/src/speech.h View File

#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"

+ 1
- 0
platforms/windows/windows_sapi/src/speech.h View File

//#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"

+ 8
- 0
platforms/windows/windows_sapi/ttseng.dsp View File

# 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

+ 2
- 2
platforms/windows/windows_sapi/ttsengobj.cpp View 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;

+ 5
- 4
src/Makefile View File

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)

+ 2
- 1
src/compiledata.cpp View File

{"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;

+ 34
- 13
src/numbers.cpp View File

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

+ 16
- 12
src/setlengths.cpp View File

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

+ 1
- 1
src/speak.cpp View File

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;

+ 14
- 1
src/synthdata.cpp View File

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


} }

+ 2
- 0
src/synthesize.h View File

#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

+ 16
- 6
src/tr_languages.cpp View File

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

+ 2
- 0
src/translate.h View File

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

+ 5
- 2
src/voices.cpp View File

{"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;

+ 100
- 20
src/wavegen.cpp View File

#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

Loading…
Cancel
Save