mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[1.43.63]
Phoneme definitions. Add "equivalents" table to translate phonemes from a foreign language (eg. English) into the equivalant phonemes of this language. This is used when *_rules and *_list files indicate that a word uses pronunciation rules from a different language. Unpronouncable words can be recognised by rules in *_rule files. This feature is now used for en, de, es. Lang=ta, hi. Letter-names for combining vowel characters are distinguished from stand-alone vowel characters by a preceding beep. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@251 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
@@ -109,7 +109,6 @@ _5C sins'Ents
|
||||
_7C s,ets'Ents
|
||||
_9C n,Ous'Ents
|
||||
_0M1 m'il
|
||||
_1M1 m'il // no '1' before thousand
|
||||
_0M2 mil^'on@s
|
||||
_dpt _koma
|
||||
//_roman Rom'a
|
||||
|
||||
+6
-3
@@ -1,7 +1,7 @@
|
||||
tv $abbrev
|
||||
|
||||
// PB = Peter Bjarkov - pbj1234@hotmail.com
|
||||
|
||||
iv $abbrev
|
||||
|
||||
// This file is UTF8 encoded
|
||||
// Spelling-to-phoneme words for Danish
|
||||
|
||||
@@ -130,6 +130,8 @@ _0M4 bilij'o:n3
|
||||
|
||||
_0and 3
|
||||
_dpt _k,Vm&:
|
||||
_roman d%En
|
||||
|
||||
|
||||
// PB a number followed by dot
|
||||
// ordinals are followed by a dot in Danish
|
||||
@@ -6156,7 +6158,7 @@ proceder $alt
|
||||
producere $alt
|
||||
profaner $alt
|
||||
professionaliser $alt
|
||||
profeter $alt
|
||||
profetere $alt
|
||||
profilere $alt
|
||||
profiter $alt
|
||||
prognosticer $alt
|
||||
@@ -8563,6 +8565,7 @@ ovation $alt
|
||||
ovulation $alt
|
||||
oxidation $alt
|
||||
participation $alt
|
||||
pavillon $alt
|
||||
passion $alt
|
||||
pension $alt
|
||||
perception $alt
|
||||
|
||||
+50
-16
@@ -81,10 +81,11 @@
|
||||
// PB general rule: [a] after k before m
|
||||
k) a (m a // PB kam, kamp
|
||||
c) a (mp & // PB camping
|
||||
// PB kamm => [a]
|
||||
k) a (mm a // PB kammerat
|
||||
// PB amm => [a]
|
||||
a (mm a // PB kammerat, amme
|
||||
// PB kame => [&]
|
||||
k) a (me & // PB kamel, kamera
|
||||
|
||||
// PB general rule: [&] after d
|
||||
d) a (+ & // PB dame, dag
|
||||
d) a (g@ a // PB dagbog
|
||||
@@ -160,6 +161,7 @@
|
||||
l) a (gt+ A // PB lagt
|
||||
l) ag (_ &j // lag
|
||||
f) ag (s au // PB fagsnak
|
||||
l) ag (C au // PB flagstang, lagkage
|
||||
// PB general rule: [A] before vn after consonant
|
||||
C) a (vn A // favn, savn
|
||||
// PB general rule: [a] after kl before consonant
|
||||
@@ -486,6 +488,7 @@ amsterd) a (m 'a // PB
|
||||
sp) ag (num Au // PB
|
||||
r) ag (e+ Au // PB drage, rage
|
||||
C) age (+ &:j@ // PB tage, bage, kage
|
||||
g) age (+ &:S@ // PB
|
||||
fl) ager (mus AuV // PB
|
||||
C) ager (_+ &:jV // PB tager, bager, kager
|
||||
l) agd (e &:j // PB lagde
|
||||
@@ -625,6 +628,7 @@ _trienn) ale '&:l@
|
||||
offi) ce (r se // PB sprogofficer
|
||||
ce (rt s'E // PB koncert
|
||||
c (i s
|
||||
frederi) c (ia =ks // PB
|
||||
c (k
|
||||
ch (+ S // PB check, chokolade
|
||||
mi) ch (a k S
|
||||
@@ -803,7 +807,7 @@ stikor) d // PB exception - silent d in 'stikord'
|
||||
dodge dVdZ // PB city
|
||||
daiquiri d&k@ri // PB drink
|
||||
_) duke dZu:k // PB Duke - name
|
||||
_) drive dRAjv // PB drive-in
|
||||
_) drive (- dRAjv // PB drive-in
|
||||
|
||||
.group é // added by PB
|
||||
é 'e // idé, entré
|
||||
@@ -815,6 +819,8 @@ stikor) d // PB exception - silent d in 'stikord'
|
||||
&b) e (@ E, // PB hv'alrosbest,and
|
||||
// PB general rules
|
||||
l) e e
|
||||
val) e (ncia 'E // PB
|
||||
al) er V // PB maler
|
||||
perl) e @ // PB
|
||||
_dil) e (mma 'E // PB
|
||||
ll) e (de // PB silent e - billede
|
||||
@@ -851,6 +857,7 @@ stikor) d // PB exception - silent d in 'stikord'
|
||||
rn) e (d+ e // PB derned
|
||||
an) e (r @ // PB anerkende
|
||||
L09) e (de E // nede, nederlag
|
||||
mus) e (um 'E // PB stressed
|
||||
mån) e (d @ // PB
|
||||
L09) e (t e // metal
|
||||
L09) e (l E // mellem
|
||||
@@ -1062,6 +1069,7 @@ _sakram) e (nte 'e
|
||||
_st) eg (_ e // steg - verb, problem with noun = "roast"
|
||||
best) eg (_ 'e // PB besteg
|
||||
best) eg (et_ 'e // PB besteget
|
||||
st) eg (å @g // PB præstegård
|
||||
n) egl ajl // PB negl
|
||||
r) egel Ejl // PB regel
|
||||
r) egl Ejl // PB regler
|
||||
@@ -1176,6 +1184,7 @@ muskat) el ''El // PB
|
||||
intellektu) el el // // PB
|
||||
bestandd) el el // PB
|
||||
halvd) el el // PB
|
||||
evang) el el // PB evangelie
|
||||
d) el (t+ el // PB tildelt
|
||||
lob) el (ia 'el // PB
|
||||
d) el (A+ el // PB dele, omdele
|
||||
@@ -1186,6 +1195,7 @@ _offici) el (+ 'el // PB officiel
|
||||
mod) el el // PB fotomodel
|
||||
_mod) el 'el // PB modelbureau
|
||||
u) el (+ 'el // aktuel, seksuel, visuel
|
||||
u) el (t+ 'el // aktuelt, seksuelt, visuelt
|
||||
gennemsku) el (ig =el
|
||||
ur) el (_+ '&#l // konjunkturel
|
||||
and) el el // andel
|
||||
@@ -1303,7 +1313,7 @@ _præsid) en (t 'en // præsidentfrue
|
||||
&b) en (+ en // PB koben, nøgleben
|
||||
_åb) en (+ @n // PB åben
|
||||
våb) en (+ @n // PB våben
|
||||
C) en (sC @n // PB TEST - verdensmagt
|
||||
// C) en (sC @n // PB TEST - verdensmagt
|
||||
tj) en (st En // PB fortjenstmedalje
|
||||
m) en (s+ En // PB menstruation
|
||||
g) en (st en // PB genstand
|
||||
@@ -1500,7 +1510,9 @@ L06L06) er V // PB klipper
|
||||
_) er (_ &r // PB er
|
||||
L09) er (ne_ V // PB kameraerne
|
||||
juvel) er (en 'er // PB juveleren
|
||||
juvel) er (er 'er // PB juvelerer
|
||||
juvel) erer ''eV // PB juvelerer
|
||||
_man) erer 'eV // PB
|
||||
man) erer eV // PB
|
||||
_l) er (_++ er // PB ler
|
||||
v) er (r_ er // PB levere
|
||||
th) er_ V // Luther
|
||||
@@ -1537,7 +1549,7 @@ L06L06) er V // PB klipper
|
||||
år) ede (_+ 3D@ // PB sårede
|
||||
odr) ede (_+ 3D@ // PB fodrede
|
||||
obr) ede (_ 3D@ // PB erobrede
|
||||
tr) ede (_+ 3D@ // PB splintrede
|
||||
tr) ede (_+ 3D-@ // PB splintrede
|
||||
hundr) ed (+ @:D // PB hundred
|
||||
rn) ed (e eD // PB dernede
|
||||
&k) ede (+ eD@ // PB dødkede
|
||||
@@ -1568,6 +1580,7 @@ _tromp) et 'et // PB stressed
|
||||
_klarin) et 'et // PB
|
||||
_servi) et 'et // PB
|
||||
servi) et et // PB
|
||||
_prof) et 'et // PB stressed
|
||||
klarin) et et // PB
|
||||
_plan) et 'et // PB
|
||||
meg) et (+ et // PB not a suffix
|
||||
@@ -1708,7 +1721,9 @@ _vinaigr) ette '&t@
|
||||
al) geriet Sj3r'i@d // PB Algeriet
|
||||
al) gerier Sj'iV // PB Algeriet
|
||||
al) gerisk Sj'i:rsg
|
||||
g (iro S // PB
|
||||
guinea gin'e& // PB
|
||||
gui (nnes ge // PB
|
||||
ødi) g (t_ // nødigt
|
||||
i) g (i g
|
||||
g (entl j // PB egentlig
|
||||
@@ -1721,6 +1736,7 @@ _vinaigr) ette '&t@
|
||||
ble) g (ansigt j // PB blegansigt
|
||||
ble) g (fi j
|
||||
L08e) g j // PB steg, spegepølse
|
||||
g (å++ g // PB præstegård
|
||||
L08e) g (t g // PB stegt
|
||||
æ) g (e j
|
||||
æl) g (e j // PB sælge vælge
|
||||
@@ -1825,7 +1841,8 @@ _vinaigr) ette '&t@
|
||||
geneve Sen'E:v // PB
|
||||
genève Sen'E:v // PB
|
||||
_) gudskelov (_ gusg@lVu // PB
|
||||
georgia dZV:dZj&
|
||||
georgia dZV:dZj& // PB
|
||||
gibraltar SibRalt'A // PB
|
||||
|
||||
.group ge
|
||||
|
||||
@@ -1890,6 +1907,7 @@ _korte) ge =Se
|
||||
_l) ig (_ordentligt ek // PB
|
||||
_l) ig (_godt ek // PB
|
||||
_l) ig (_roligt ek // PB
|
||||
pav) ill (o ilj // PB pavillon
|
||||
færd) ig i // PB silent g
|
||||
hurt) ig i // PB silent g
|
||||
ig (hed i // PB vittighed
|
||||
@@ -1977,6 +1995,7 @@ intell) ige (n ig'e // PB intelligent
|
||||
sk) i (dt i // PB skidt
|
||||
sk) i (mm e // PB skimmel
|
||||
mask) i (n 'i // PB stressed - maskinskrive
|
||||
par) i (s 'i // PB
|
||||
h) i (d i // PB hidtil
|
||||
b) i (lled e / PB billede
|
||||
kr) i (dt i // PB skridt, kridt
|
||||
@@ -2247,6 +2266,7 @@ _terap) i 'i
|
||||
v) i (sne e // PB
|
||||
l) i (e j
|
||||
r) i (gt e // PB rigtigt
|
||||
r) i (c e // PB Fredericia
|
||||
l) ig (g+ e // PB ligge - only one g
|
||||
s) i (e j
|
||||
// t) i (e j
|
||||
@@ -2365,6 +2385,7 @@ _sport) iv 'iw
|
||||
spe) k (takl // silent k - spektakler
|
||||
&) k k // after stressed vowel
|
||||
_) kate (_ kEjt // PB name
|
||||
karaoke k&r&'ouki // PB
|
||||
// &) kk g
|
||||
|
||||
.group l // PB l changed to l/3 in ph_danish
|
||||
@@ -2607,6 +2628,8 @@ subtrahe) nd nd
|
||||
.group ng
|
||||
ng (_ N // general rule - ting, ring
|
||||
A) ng (e N // general rule - mange, penge
|
||||
i) ngeni (ø nSin // PB ingeniør
|
||||
eva) ng (el ng // PB evangelie
|
||||
allo) ng (e NS // PB
|
||||
_ri) ng (o ng // PB Ringo - name
|
||||
hæ) ng N // PB hængning
|
||||
@@ -2722,6 +2745,7 @@ mening) oko (k ok'V // PB meningokokker
|
||||
hypok) o (nder 'V // PB
|
||||
d) o (b V // PB dobbelt
|
||||
d) o (nn V // PB donna
|
||||
b) o (ls V // PB bolsje
|
||||
h) o (ll V // PB Holland
|
||||
_horis) o (n 'V // PB horisont
|
||||
o (nt V // PB dont
|
||||
@@ -3019,6 +3043,8 @@ dødvægtt) on Vn
|
||||
kol) on Vn
|
||||
kol) onn 'Vn // kolonne - only one n, stressed
|
||||
kompagn) on VN
|
||||
_pavill) on 'VN
|
||||
pavill) on VN
|
||||
orl) on Vn
|
||||
_maked) on 'on // PB makedoner
|
||||
perl) on Vn
|
||||
@@ -3126,7 +3152,7 @@ _success) or =V
|
||||
_f) or (a_ 'V // PB fora (plur. of 'forum')
|
||||
_f) or (an_ 'V // PB foran
|
||||
_f) or (ankørende 'V // PB forankørende
|
||||
_f) or (annævnt'V // PB forannævnt
|
||||
_f) or (annævnt 'V // PB forannævnt
|
||||
_f) or (ansat 'V // PB foransat
|
||||
_f) or (anstille 'V // PB foranstillet
|
||||
_f) or (anstående 'V // PB foranstående
|
||||
@@ -3472,6 +3498,7 @@ strabad) s s // PB not a suffix
|
||||
ky) s s // PB not a suffix
|
||||
anderlede) s s // PB not a suffix
|
||||
interferen) s s // PB not a suffix
|
||||
residen) s s // PB
|
||||
tilpa) s s
|
||||
|
||||
s (p s
|
||||
@@ -3505,6 +3532,7 @@ franci) sc (o sk // PB Francisco
|
||||
sydney sidni // PB
|
||||
shakespeare SEiksbi:r // PB
|
||||
squash sgwVS // PB
|
||||
shor (t SV // PB shorts
|
||||
_) stone sdoun // PB namde - Stone
|
||||
er_) sig (_til saj // PB avoid [si] - glæder sig [saj] til
|
||||
et_) sig (_til saj // PB avoid [si] - glædet sig [saj] til
|
||||
@@ -3741,6 +3769,7 @@ meningi) ti (s =ti
|
||||
|
||||
// PB final -tur in da_list - stressed u
|
||||
&t) ur ($p_alt 'ur // struktur
|
||||
_komf) ur 'ur // PB
|
||||
|
||||
// PB final -ut in da_list - stressed u
|
||||
&) ut ($p_alt 'ut // rekrut
|
||||
@@ -3991,7 +4020,8 @@ _molek) y (le 'y // PB stressed
|
||||
f) yrre (t Y:V // PB fyrretræ
|
||||
n) y (t Y // PB nyt
|
||||
n) y (tt W // PB nytte, benytte
|
||||
n) y (k W: // PB nyk
|
||||
n) y (k_ W // PB nyk
|
||||
n) y (ker W // PB nykker
|
||||
kn) y (tt W: // PB tilknytte
|
||||
kn) y (t y // PB knyt
|
||||
k) y (s W // PB kys
|
||||
@@ -4052,12 +4082,13 @@ _molek) y (le 'y // PB stressed
|
||||
tr) æ (n &# // PB trænge
|
||||
tr) æ (ne E // PB træne
|
||||
dr) æ (n E // PB dræne
|
||||
// kr) æ (f &# // PB kræfter
|
||||
// kr) æ (m &# // PB skræmme, kræmmer
|
||||
kr) æ (f &# // PB kræfter
|
||||
kr) æ (m &# // PB skræmme, kræmmer
|
||||
// r) æ (n &# // PB changed from [Aj] - rænke
|
||||
// r) æ (k &# // PB række
|
||||
// r) æ (t &# // PB åndedræt
|
||||
r) æ (C &# // PB rædsel
|
||||
r) æ (d &# // PB rædsel
|
||||
æ (ld+ E // PB forældre
|
||||
pr) æ (k E // PB præke
|
||||
bl) ære EV // PB blærerøv
|
||||
gr) æ (ken E // Grækenland
|
||||
@@ -4065,9 +4096,13 @@ _molek) y (le 'y // PB stressed
|
||||
br) æ (dd a // PB brædder
|
||||
br) æ (t &# // PB bræt
|
||||
dr) æ (gtig &# // PB nederdrægtig
|
||||
r) æ (k &# // PB skrækkelig
|
||||
br) æ (nd &# // PB brænde
|
||||
pr) æ (st & // PB præst
|
||||
tr) æ (t & // PB træt
|
||||
tr) æ (f &# // PB træffe
|
||||
tr) æ (k &# // PB trække
|
||||
fr) æ (k &# // PB
|
||||
gr) æ (n & // PB grænse
|
||||
gr) æ (s &# // PB græs
|
||||
gr) æ (d &# // PB græde
|
||||
@@ -4104,6 +4139,7 @@ majest) æ (t 'E // PB stressed æ
|
||||
øjer W#jV // PB bøjer
|
||||
ø (jn W# // PB øjne
|
||||
l) øg 'Vj // løgn, løg
|
||||
gl) øgg Wg // PB gløgg
|
||||
g) øg (l Vj // PB gøgler
|
||||
l) ø (s W
|
||||
C) ø (j W# // PB søjle, bøjle
|
||||
@@ -4184,8 +4220,10 @@ uimodst) å (elig 'O // PB stressed
|
||||
åre V3 // PB tåre
|
||||
å (lti V // PB måltid
|
||||
|
||||
|
||||
.group '
|
||||
's (_S2 s
|
||||
'en (_S3 @n
|
||||
'er (_S3 %V
|
||||
'erne (_S5 %Vn@
|
||||
'ernes (_S6 %Vn@s
|
||||
@@ -4196,7 +4234,3 @@ uimodst) å (elig 'O // PB stressed
|
||||
$ dVlV // PB changed from [dVlar]
|
||||
ñ _^_ES // PB mañana
|
||||
ï i: // PB Thaïs
|
||||
'er (_ %V // PB 60'er
|
||||
'erne (_ %Vn@ // PB 60'erne
|
||||
'ernes (_ %Vn@s // PB 60'ernes
|
||||
'en (_S3 %@n // PB EMP'en - doesn't work
|
||||
|
||||
+46
-38
@@ -121,7 +121,6 @@ _8X '_axtsIC
|
||||
_9X 'nOYntsIC
|
||||
_0C 'hUnd3t
|
||||
_0M1 'taUz@nt
|
||||
_1M1 'taUz@nt // no '1' before thousand
|
||||
_0M2 ||mIlI'o:n@n
|
||||
_1M2 _'aIn@||mIlI'o:n
|
||||
_0M3 ||mIlI'ard@n
|
||||
@@ -611,33 +610,34 @@ hm h@m
|
||||
horsam hO3zA:m
|
||||
hostie $alt
|
||||
|
||||
illegitim Ile:gi:t'i:m
|
||||
illiberal Ili:b@r'A:l
|
||||
illoyal IlOajA:l
|
||||
immobilie $alt
|
||||
indem Ind'e:m
|
||||
inden Ind'e:n
|
||||
inder Ind3
|
||||
indes Ind'Es
|
||||
indessen Ind'Es@n
|
||||
injurie $alt
|
||||
inka INkA:
|
||||
inkaisch INkA:IS
|
||||
inkonstant $1
|
||||
insbesondere $3
|
||||
interess Int@r'Es
|
||||
intern Int'Ern
|
||||
illegitim Ile:gi:t'i:m
|
||||
illiberal Ili:b@r'A:l
|
||||
illoyal IlOajA:l
|
||||
immobilie $alt
|
||||
indem Ind'e:m
|
||||
inden Ind'e:n
|
||||
inder Ind3
|
||||
indes Ind'Es
|
||||
indessen Ind'Es@n
|
||||
injurie $alt
|
||||
inka INkA:
|
||||
inkaisch INkA:IS
|
||||
inkonstant $1
|
||||
insbesondere $3
|
||||
interess Int@r'Es
|
||||
intern Int'Ern
|
||||
|
||||
januar janu:A:r
|
||||
januar janu:A:r
|
||||
|
||||
kamelie $alt
|
||||
kanoe kan'u:
|
||||
kastanie $alt
|
||||
kid kId
|
||||
komödie $alt
|
||||
konservativ $1
|
||||
konsul $1
|
||||
kurie $alt
|
||||
kamelie $alt
|
||||
kanoe kan'u:
|
||||
kastanie $alt
|
||||
kid kId
|
||||
komödie $alt
|
||||
konservativ $1
|
||||
konsul $1
|
||||
kurie $alt
|
||||
kwaß kvas
|
||||
|
||||
lappalie $alt
|
||||
lilie $alt
|
||||
@@ -709,17 +709,12 @@ telegen te:le:g'e:n
|
||||
the D@ // English
|
||||
theater te:'A:t3
|
||||
train tre:n
|
||||
tsunami tsu:n'a:mi:
|
||||
turin $2
|
||||
|
||||
umweg $1
|
||||
unten Unt@n
|
||||
|
||||
wasserung vas@rUN // because -ung isn't marked as a suffix
|
||||
weiterung vaIt@rUN
|
||||
weither vaIth'Er
|
||||
weitum vaIt_|'Um
|
||||
woher vo:h'e:r
|
||||
|
||||
verein fEr'aIn
|
||||
vielbesprochen $3
|
||||
vielleicht $2
|
||||
@@ -729,18 +724,31 @@ vorherig fo:rh'e:rIg#
|
||||
vorig fo:rIg#
|
||||
|
||||
//wahrscheinlich $2
|
||||
warum vA:r'Um
|
||||
warum vA:r'Um
|
||||
wasserung vas@rUN // because -ung isn't marked as a suffix
|
||||
weiterung vaIt@rUN
|
||||
weither vaIth'Er
|
||||
weitum vaIt_|'Um
|
||||
woher vo:h'e:r
|
||||
|
||||
zoom zu:m
|
||||
zugegen tsu:g'e:g@n
|
||||
zudem tsu:'de:m
|
||||
|
||||
zloty slOti:
|
||||
zoom zu:m
|
||||
zugegen tsu:g'e:g@n
|
||||
zurück $2
|
||||
zymbal $1
|
||||
zudem tsu:'de:m
|
||||
zugegen tsu:g'e:g@n
|
||||
zurück $2
|
||||
zymbal $1
|
||||
|
||||
|
||||
// Names
|
||||
Djakarta dZak'artA:
|
||||
Djibouti dZib'u:ti:
|
||||
Georg ge:Ork $only
|
||||
George dZO:rdZ
|
||||
Khmer kme:r
|
||||
Mc m@-k
|
||||
Neumexiko $2
|
||||
Neuseeland $2
|
||||
Rwanda rU'andA:
|
||||
Sri sr,i:
|
||||
|
||||
+85
-19
@@ -18,7 +18,8 @@
|
||||
// * <http://www.gnu.org/licenses/>. *
|
||||
// ***************************************************************************/
|
||||
|
||||
.L01 c f h k p q s t // unvoiced, except s+vowel
|
||||
.L01 l r
|
||||
.L02 c f h k p q s t // unvoiced, except s+vowel
|
||||
|
||||
// This file is UTF-8 encoded
|
||||
|
||||
@@ -145,10 +146,11 @@
|
||||
|
||||
.group b
|
||||
_) b (_ be:
|
||||
_) b (L01A b // allow bl br at start of word
|
||||
b b
|
||||
b) b
|
||||
b (_N p
|
||||
b (L01 p
|
||||
b (L02 p
|
||||
b (sA b
|
||||
bt (_N pt
|
||||
|
||||
@@ -197,6 +199,12 @@
|
||||
|
||||
.group c
|
||||
_) c (_ se:
|
||||
_) c (L01A k // allow cl cr at start of word
|
||||
_) ch (L01A k
|
||||
_) ch (a S
|
||||
_) ch (A C
|
||||
_) ch (o k
|
||||
|
||||
c k
|
||||
c) c
|
||||
|
||||
@@ -212,7 +220,6 @@
|
||||
e) chen (_ C@n
|
||||
ü) chen (_ C@n
|
||||
|
||||
_) chr kr
|
||||
chs ks (_
|
||||
ck k
|
||||
|
||||
@@ -225,8 +232,6 @@
|
||||
_) ch (if S
|
||||
_) ch (il S
|
||||
chip (_ tSIp // English
|
||||
_) ch (ol k
|
||||
_) ch (or k
|
||||
|
||||
bre) ch (en x
|
||||
chro kro:
|
||||
@@ -236,6 +241,7 @@
|
||||
pla) c (ie ts
|
||||
coat (_ _^_EN
|
||||
_) code ko:t
|
||||
_) computer(@P kOmpj'u:t3
|
||||
_) cow _^_EN
|
||||
crew _^_EN
|
||||
cup _^_EN
|
||||
@@ -243,10 +249,13 @@
|
||||
|
||||
.group d
|
||||
_) d (_ de:
|
||||
_) d (rA d // allow dr at start of word
|
||||
_) d (schA d
|
||||
_) d (shA d
|
||||
d d
|
||||
d) d
|
||||
d (_N t
|
||||
d (L01 t
|
||||
d (L02 t
|
||||
d (sA d
|
||||
ds (_ ts
|
||||
dt t
|
||||
@@ -440,6 +449,8 @@
|
||||
_) f (_ Ef
|
||||
f f
|
||||
f) f
|
||||
_) f (L01A f // allow fl fr at start of word
|
||||
_) f (jord f
|
||||
|
||||
_) faks (i f%akz
|
||||
_) farb (C@P4 f'arp
|
||||
@@ -459,12 +470,17 @@
|
||||
|
||||
.group g
|
||||
_) g (_ ge:
|
||||
_) g (L01A g // allow _gl _gr
|
||||
g g
|
||||
g (g
|
||||
g (_N k
|
||||
g (L01 k
|
||||
g (L02 k
|
||||
g (sA g
|
||||
gd (_N kt
|
||||
_) gh (A g
|
||||
_) g (nA g@- // allow _gn
|
||||
B) gn (A g@-n
|
||||
|
||||
i) gt (_ Ct
|
||||
zei) gt (_ kt
|
||||
gtet (_ kt@t
|
||||
@@ -472,8 +488,6 @@
|
||||
|
||||
_) g (eHC g // hC, lC, mC, nC, rC
|
||||
|
||||
_) gn (A g@-n
|
||||
B) gn (A g@-n
|
||||
|
||||
@) ght (_ _^_EN
|
||||
graph grAf
|
||||
@@ -580,7 +594,7 @@
|
||||
i (dee %i:
|
||||
i (erin =i:
|
||||
&) ig (+ Ig# // [ig] or [iC]
|
||||
igh aI
|
||||
igh (K _^_EN
|
||||
|
||||
i (i i:_!
|
||||
|
||||
@@ -679,9 +693,13 @@ formal) ie =I@
|
||||
_) j (_ jOt
|
||||
j j
|
||||
|
||||
|
||||
.group k
|
||||
_) k (_ kA:
|
||||
k k
|
||||
_) k (L01A k // allow _kl _kr
|
||||
_) k (ha k
|
||||
_) k (nA k // allow _kn
|
||||
k) k
|
||||
|
||||
// @) keit (_S4 kaIt
|
||||
@@ -753,6 +771,7 @@ formal) ie =I@
|
||||
_) mit (P3 m'It
|
||||
mitt mIt
|
||||
mitt (eil mItt
|
||||
_) m (nem m // allow _mnem
|
||||
_) mo (rb m%O
|
||||
_) mono (@ m,o:no:
|
||||
_) motor m%o:to:r
|
||||
@@ -829,6 +848,7 @@ formal) ie =I@
|
||||
z) oo (m u:
|
||||
&t) or (_ =o:r
|
||||
&) oren (_ 'o:r@n
|
||||
_) orts (@P4 'Orts
|
||||
oso (_ 'o:zo:
|
||||
st) o (ss o:
|
||||
oy (K OY
|
||||
@@ -838,9 +858,17 @@ formal) ie =I@
|
||||
.group p
|
||||
_) p (_ pe:
|
||||
p p
|
||||
p) p
|
||||
pf pF
|
||||
p) p
|
||||
_) p (L01A p // allow _pl _pr
|
||||
_) pf (A pF
|
||||
_) pf (L01A pF // allow _pfl _pfr
|
||||
_) ph (A f // allow _ph
|
||||
_) ph (L01A f // allow _phl _phr
|
||||
_) phth (A ft
|
||||
ph f
|
||||
_) p (neu p // allow _pneu
|
||||
_) p (sA p // allow _ps
|
||||
_) p (tol p
|
||||
|
||||
pake (t p%ake:
|
||||
_) para (@ p,ara
|
||||
@@ -857,6 +885,7 @@ formal) ie =I@
|
||||
po (et p%o:
|
||||
poesie po:e:z'i:
|
||||
_) poly (@P4 p,o:ly:
|
||||
_) polygon (@P7 po:ly:g'o:n
|
||||
partei p%artaI
|
||||
_) perfe (k p%ErfE
|
||||
_) polik p'o:li:k
|
||||
@@ -884,7 +913,7 @@ formal) ie =I@
|
||||
r (r
|
||||
b) r @-*
|
||||
_) r r
|
||||
_) rh r
|
||||
_) rh (A r // allow _rh
|
||||
|
||||
rangier rA:NZ'i:r
|
||||
_) re (d re:
|
||||
@@ -901,15 +930,39 @@ formal) ie =I@
|
||||
ss s
|
||||
sst (@ sSt
|
||||
|
||||
_) s (cA s // allow _sc
|
||||
_) s (cr s // allow _scr
|
||||
_) sch (A S
|
||||
_) sch (L01A S
|
||||
_) sch (mA S
|
||||
_) sch (nA S
|
||||
_) sch (w S
|
||||
_) sh (A S
|
||||
_) sh (rA S
|
||||
_) s (kA s // allow _sk
|
||||
_) s (kL01A s // allow _skl _skr
|
||||
_) s (lA s
|
||||
_) s (mA s
|
||||
_) s (nA s
|
||||
_) s (pA S
|
||||
_) s (phA s
|
||||
_) s (plA S
|
||||
_) s (plend s
|
||||
_) s (prA S
|
||||
_) s (quA s
|
||||
_) s (tA S
|
||||
_) s (trA S
|
||||
_) s (ve s
|
||||
_) s (wA s
|
||||
_) s (zA s
|
||||
|
||||
sch S
|
||||
_) sh S
|
||||
sh (K S
|
||||
sou (nd saU
|
||||
p) s (a s
|
||||
p) s (i s
|
||||
t) s (i s
|
||||
k) s (i s
|
||||
_) sp Sp
|
||||
_be) sp Sp
|
||||
_ge) sp Sp
|
||||
_ver) sp Sp
|
||||
@@ -925,7 +978,6 @@ formal) ie =I@
|
||||
&C) ster (_S4 st3
|
||||
&C) stes (_S4 st@s
|
||||
|
||||
_) st St
|
||||
_be) st St
|
||||
_ge) st St
|
||||
_ver) st St
|
||||
@@ -970,9 +1022,15 @@ formal) ie =I@
|
||||
.group t
|
||||
_) t (_ te:
|
||||
t t
|
||||
t) t
|
||||
t) t
|
||||
_) th (A t // allow _th
|
||||
_) th (rA t // allow _thr
|
||||
th (K t
|
||||
K) th t
|
||||
_) t (rA t // allow _tr
|
||||
_) tsch (A tS
|
||||
_) t (setse t
|
||||
_) tw (A tw
|
||||
tz ts
|
||||
|
||||
&t) te (_ @
|
||||
@@ -1005,7 +1063,6 @@ formal) ie =I@
|
||||
|
||||
_) talent tal'Ent
|
||||
tch tS
|
||||
_) tsch tS
|
||||
t (chen_ t
|
||||
_) teen _^_EN
|
||||
_) tele (@ t,e:le:
|
||||
@@ -1094,6 +1151,10 @@ formal) ie =I@
|
||||
v) v
|
||||
v (_N f
|
||||
|
||||
_) v (lad v
|
||||
_) v (lies f
|
||||
_) v (ri f
|
||||
|
||||
_) vie fi:
|
||||
_) vi (CC vI
|
||||
_) vi vi:
|
||||
@@ -1147,6 +1208,9 @@ formal) ie =I@
|
||||
.group w
|
||||
_) w (_ ve:
|
||||
w v
|
||||
_) wh (A v
|
||||
_) w (lad v
|
||||
_) w (rA v
|
||||
|
||||
@) wert (_ vErt
|
||||
_) wh _^_EN
|
||||
@@ -1182,7 +1246,9 @@ formal) ie =I@
|
||||
.group z
|
||||
_) z (_ tsEt
|
||||
z ts
|
||||
z) z
|
||||
z) z
|
||||
_) z (den z
|
||||
_) z (wA ts // allow _zw
|
||||
|
||||
_) zentral (@P7 tsEntr'A:l
|
||||
_) zentral (i tsEntral
|
||||
|
||||
+47
-36
@@ -15,7 +15,7 @@ n N n^ p r s S t
|
||||
T tS v w x x2 z Z
|
||||
|
||||
|
||||
Dictionary ca_dict 2010-05-12
|
||||
Dictionary ca_dict 2010-07-27
|
||||
|
||||
@ a a# aI e E E2 i
|
||||
o O u U
|
||||
@@ -53,7 +53,7 @@ p r s S t T v w
|
||||
x z
|
||||
|
||||
|
||||
Dictionary da_dict 2010-07-03
|
||||
Dictionary da_dict 2010-07-29
|
||||
|
||||
& &# 0 3 @ @- a A
|
||||
e E i o O u V W
|
||||
@@ -65,7 +65,7 @@ l/2 l/3 m n N p r R
|
||||
s S t T tS v w z
|
||||
|
||||
|
||||
Dictionary hu_dict 2010-07-17
|
||||
Dictionary hu_dict 2010-08-02
|
||||
|
||||
A a: E e: i i: o o:
|
||||
u u: Y y y: Y:
|
||||
@@ -76,7 +76,7 @@ n^ p r R R2 s S s2
|
||||
t tS ts v z Z
|
||||
|
||||
|
||||
Dictionary de_dict 2010-07-03
|
||||
Dictionary de_dict 2010-07-27
|
||||
|
||||
3 3: @ @- a A A: aI
|
||||
aU E E2 E: e: EI i I
|
||||
@@ -100,7 +100,7 @@ n^ p Q r R s s; t
|
||||
T ts v x z z;
|
||||
|
||||
|
||||
Dictionary en_dict 2010-07-13
|
||||
Dictionary en_dict 2010-07-30
|
||||
|
||||
0 3 3: @ @- @2 @5 @L
|
||||
a a# A: A@ aa aI aI@ aU
|
||||
@@ -110,10 +110,10 @@ O@ o@ OI oU O~ U u: U@
|
||||
V VR
|
||||
|
||||
: ; ? b C d D dZ
|
||||
f g g- h j k l l#
|
||||
m n N n^ p Q r r-
|
||||
s S t T t2 tS v w
|
||||
x z Z
|
||||
f g h j k l l# m
|
||||
n N n^ p Q r r- s
|
||||
S t T t2 tS v w x
|
||||
z Z
|
||||
|
||||
|
||||
Dictionary eo_dict 2010-05-19
|
||||
@@ -127,7 +127,7 @@ s S t T tS ts v w
|
||||
x z Z
|
||||
|
||||
|
||||
Dictionary es_dict 2010-07-13
|
||||
Dictionary es_dict 2010-07-28
|
||||
|
||||
a aI aU e E eI eU i
|
||||
o O oI u
|
||||
@@ -150,16 +150,16 @@ l m n N p r s S
|
||||
s2 t v w Z
|
||||
|
||||
|
||||
Dictionary fr_dict 2010-07-18
|
||||
Dictionary fr_dict 2010-07-30
|
||||
|
||||
@ @- a A~ e E E2 E:
|
||||
E~ i I o O o3 O~ u
|
||||
u: w W W~ y Y
|
||||
@ @- a A~ e E E: E~
|
||||
i I o O O~ u u: w
|
||||
W W~ y Y
|
||||
|
||||
- : b d dZ f g h
|
||||
j k l m n N n2 n^
|
||||
p p2 r r2 s S t t2
|
||||
t3 tS v z Z z2 z3
|
||||
: b d dZ f g h j
|
||||
k l m n N n2 n^ p
|
||||
p2 r r2 s S t t2 t3
|
||||
tS v z Z z2 z3
|
||||
|
||||
|
||||
Dictionary grc_dict 2008-03-03
|
||||
@@ -185,32 +185,32 @@ N n^ p r R R2 s S
|
||||
t tS ts tS; v x z Z
|
||||
|
||||
|
||||
Dictionary hi_dict 2009-11-24
|
||||
Dictionary hi_dict 2010-07-30
|
||||
|
||||
@ @- @2 @3 a a: aI aU
|
||||
e E e: E: E~ i I i:
|
||||
l- o O o: O: O~ o~ r-
|
||||
U u: u~ V
|
||||
|
||||
- : b bh c ch d d.
|
||||
dh dh. f g gh h H j
|
||||
J Jh k kh l l. m n
|
||||
N n. n^ p ph Q q r
|
||||
r. s S s. t T t. th
|
||||
th. v w x z
|
||||
#X1 #X2 - : b bh c ch
|
||||
d d. dh dh. f g gh h
|
||||
H j J Jh k kh l l.
|
||||
m n N n. n^ p ph Q
|
||||
q r r. s S s. t T
|
||||
t. th th. v w x z
|
||||
|
||||
|
||||
Dictionary ta_dict 2010-07-18
|
||||
Dictionary ta_dict 2010-07-30
|
||||
|
||||
a a: aI aU e E e: i
|
||||
I i: o o: u U u: U:
|
||||
V V#
|
||||
I i: o o: u U u2 u:
|
||||
U: V V#
|
||||
|
||||
: ; b C d d. dZ f
|
||||
g h H j k l l. m
|
||||
n N n. n^ p Q r R
|
||||
s S s. t T t. th tS
|
||||
v w z z.
|
||||
#X1 #X2 : ; b C d d.
|
||||
dZ f g h H j k l
|
||||
l. m n N n. n^ p Q
|
||||
r R s S s. t T t.
|
||||
th tS v w z z.
|
||||
|
||||
|
||||
Dictionary hy_dict 2008-12-22
|
||||
@@ -325,7 +325,7 @@ k l m n p R s S
|
||||
t tS v w x
|
||||
|
||||
|
||||
Dictionary nl_dict 2010-07-18
|
||||
Dictionary nl_dict 2010-07-27
|
||||
|
||||
8 @ @- A a: A~ E e:
|
||||
EI eU i I O O: o: u
|
||||
@@ -349,7 +349,7 @@ k l m n N p r R
|
||||
s S s; t v w x z
|
||||
|
||||
|
||||
Dictionary pap_dict 2009-05-02
|
||||
Dictionary pap_dict 2010-07-27
|
||||
|
||||
a a/ aI e E eI i o
|
||||
O u y Y
|
||||
@@ -474,7 +474,7 @@ p R R^ s S t tS ts
|
||||
v w x z Z
|
||||
|
||||
|
||||
Dictionary tr_dict 2010-06-02
|
||||
Dictionary tr_dict 2010-07-27
|
||||
|
||||
@ a e E i I o O
|
||||
u U W y Y
|
||||
@@ -636,3 +636,14 @@ O~ u w y
|
||||
; b d f g j k l
|
||||
m n N p r s S t
|
||||
tS v z Z
|
||||
|
||||
|
||||
Dictionary az_dict 2010-07-27
|
||||
|
||||
& @ a e E i o u
|
||||
W y
|
||||
|
||||
* b c C d dZ f g
|
||||
h j J k l m n p
|
||||
Q R s S t tS v w
|
||||
x z Z
|
||||
|
||||
+7
-1
@@ -1132,7 +1132,6 @@ finite faInaIt
|
||||
fishnet fISnEt
|
||||
fiord fi:O@d
|
||||
fix fIks // for fixer
|
||||
fjord fIO@d
|
||||
flagellum fla#dZEl@m
|
||||
flamenco fla#mENkoU
|
||||
flexible flEksIb@L
|
||||
@@ -2447,6 +2446,7 @@ Durham dVr@m
|
||||
Egyptian IdZ'IpS@n
|
||||
Eire e@r@
|
||||
Geneva dZ@ni:v@
|
||||
Gdansk g@-dansk
|
||||
Gomera goUm'e@r@
|
||||
Harare ha#rA:rI
|
||||
Hanoi han'OI
|
||||
@@ -2481,6 +2481,7 @@ Lesotho l@s'u:tu:
|
||||
Liberia laIb'i@ri:@
|
||||
Lima li:ma#
|
||||
Luxembourg lVks@mb3:g
|
||||
Lvov l@-v0v
|
||||
?5 Luxembourg lVks@mbVRg
|
||||
Madagascar mad@g'ask3
|
||||
Madras m@draas
|
||||
@@ -2536,6 +2537,7 @@ Qatar katA@
|
||||
Quebec kwI2bEk
|
||||
Raleigh rA:lI
|
||||
Reno ri:noU
|
||||
Rio ri:oU
|
||||
Sahel sA:h'El
|
||||
Saigon saIg'0n
|
||||
Santiago santI'A:goU
|
||||
@@ -2556,6 +2558,7 @@ Taiwan taI'wan
|
||||
(tel aviv) t,El||a#v'i:v
|
||||
Tenerife tEn3r'i:f
|
||||
Texas tEks@s
|
||||
Tblisi t@-bli:si
|
||||
Toronto t@r0ntoU
|
||||
Timor ti:mo@
|
||||
Tokyo toUkIoU
|
||||
@@ -2611,6 +2614,7 @@ Bambi bambi:
|
||||
Barack ba#rA:k
|
||||
Barbara bA@b@r@
|
||||
Betsy bEtsI
|
||||
Bjorn bjO@n
|
||||
Boris b0rIs
|
||||
Brien braI@n
|
||||
Candace kandIs
|
||||
@@ -2638,11 +2642,13 @@ Declan dEkla#n
|
||||
Denise d@ni:s
|
||||
Derek dErIk
|
||||
Dinah daIn@
|
||||
Dmitri d@mi:tri
|
||||
Dominic d0mI2nIk
|
||||
Donaghy d0n'hi:
|
||||
Doris d0rIs
|
||||
Dorothy dO@r@Ti
|
||||
Dougall du:g@L
|
||||
Dvina d@vi:n@
|
||||
Dylan dIl@n
|
||||
Edith i:dIT
|
||||
Elise I2li:z
|
||||
|
||||
+118
-30
@@ -28,6 +28,8 @@
|
||||
// ?7 Scottish
|
||||
// ?8 Use full vowel, not schwa in some word endings
|
||||
|
||||
|
||||
// Group Y, vowels + y
|
||||
.L01 l r
|
||||
.L02 i y
|
||||
.L03 a i o u // vowel, not 'e'
|
||||
@@ -76,7 +78,6 @@
|
||||
aar 'A@
|
||||
w) a (b 0
|
||||
r) a (ciA eI
|
||||
_r) a (cis eI
|
||||
w) a (d 0
|
||||
ow) a (d @
|
||||
ae i:
|
||||
@@ -230,8 +231,8 @@
|
||||
&) able (_S4iev @b@L // suffix
|
||||
&c) able (_ @b@L
|
||||
@ct) able (_ =@b@L
|
||||
&) ability (S7iev @b'IlI2t%I // suffix
|
||||
&) abilities (S9iev @b'IlI2t%Iz // suffix
|
||||
&) ability (S7iev @b'IlI2t%i // suffix
|
||||
&) abilities (S9iev @b'IlI2t%iz // suffix
|
||||
&) ably (_S4iefv @bl%I
|
||||
&c) ably (_S4fv @bl%I
|
||||
|
||||
@@ -252,7 +253,10 @@
|
||||
accu (ra akjU
|
||||
accus (A a#kju:z
|
||||
ace (_ eIs
|
||||
sp) ac (e eIs
|
||||
_r) ac (e eIs
|
||||
_) ac (e a#s
|
||||
_r) ac (is eIs
|
||||
acean (_ 'eIS@n
|
||||
pl) ac (at a#k
|
||||
pl) ac (eb @s
|
||||
@@ -277,7 +281,7 @@
|
||||
achia 'eIS@
|
||||
f) ac (ilit @s
|
||||
_m) ace (d asI
|
||||
m) achi (n# @Si:
|
||||
m) achi (nA# @Si:
|
||||
m) achina (t aSI2neI
|
||||
ach (rom ak
|
||||
ac (id_ as
|
||||
@@ -312,6 +316,7 @@
|
||||
_b) ac (o eIk
|
||||
y) ach (t 0
|
||||
&) ac (y_ @s
|
||||
cr) ac (y_ =@s
|
||||
|
||||
.group ad
|
||||
_) ad (@ a#d
|
||||
@@ -979,7 +984,7 @@
|
||||
purch) as (e Is
|
||||
ph) ase (_ eIz
|
||||
r) ase (_ eIz
|
||||
&) asey (_ @s%I
|
||||
&) asey (_ @s%i
|
||||
b) as (i eIs
|
||||
b) as (il az
|
||||
as (sist a#
|
||||
@@ -992,7 +997,7 @@
|
||||
nt) as (t as
|
||||
as (ive 'eIs
|
||||
as (ymp as
|
||||
&) asy (_ @s%I
|
||||
&) asy (_ @s%i
|
||||
w) ast (e# eIst
|
||||
|
||||
.group at
|
||||
@@ -1131,6 +1136,10 @@
|
||||
|
||||
.group b
|
||||
b b
|
||||
_) bh b
|
||||
_) b (L01Y b // allow _bl _br
|
||||
_) brz (e brz
|
||||
|
||||
b (b
|
||||
m) b (_
|
||||
_) bally (@ b,alI2
|
||||
@@ -1233,6 +1242,10 @@
|
||||
|
||||
.group c
|
||||
c k
|
||||
_) c (L01Y k // allow _cl _cr
|
||||
_) cz (ar ts
|
||||
_) cz (e tS
|
||||
|
||||
cc k
|
||||
ck k
|
||||
c (e s
|
||||
@@ -1272,6 +1285,9 @@
|
||||
czech tSEk
|
||||
|
||||
.group ch
|
||||
_) ch (Y tS
|
||||
_) ch (L01Y k
|
||||
|
||||
ch tS
|
||||
ch (r k
|
||||
chry (sa krI
|
||||
@@ -1469,6 +1485,11 @@
|
||||
|
||||
.group d
|
||||
d d
|
||||
_) d (L01Y d // allow _dl _dr
|
||||
_) dj (Y dZ
|
||||
_) d (nie d
|
||||
_) d (wY d // allow _dw
|
||||
|
||||
d (d
|
||||
_) d' (AP2 d
|
||||
@@e) d (_S1 d // suffix
|
||||
@@ -1698,7 +1719,7 @@
|
||||
econo (m Ik'0n@
|
||||
econo (mic i:k@n'0
|
||||
_) eco (s i:koU
|
||||
&) ecy (_ @s%I
|
||||
&) ecy (_ @s%i
|
||||
ee i:
|
||||
coff) ee I
|
||||
ee (m 'i:
|
||||
@@ -2028,7 +2049,7 @@
|
||||
_) encha (n %EntSaa
|
||||
enclav EnkleIv
|
||||
en (core 0n
|
||||
&) ency (_ @ns%I
|
||||
&) ency (_ @ns%i
|
||||
ency (cli %EnsI
|
||||
en (dA_ 'En
|
||||
_) en (d En
|
||||
@@ -2432,6 +2453,9 @@
|
||||
|
||||
.group f
|
||||
f f
|
||||
_) f (L01Y f // allow _fl _fr
|
||||
_) fj (ord fI'
|
||||
|
||||
f (f
|
||||
fa (ciA feI
|
||||
fa (miliar f@
|
||||
@@ -2445,6 +2469,11 @@
|
||||
|
||||
.group g
|
||||
g g
|
||||
_) g (L01Y g
|
||||
_) gh (Y g
|
||||
_) g (nY
|
||||
_) g (wA g
|
||||
|
||||
gg g
|
||||
g (e dZ
|
||||
_) gaol dZeIl
|
||||
@@ -2458,10 +2487,8 @@
|
||||
g (ilC g
|
||||
l) ging dZI2N
|
||||
g (y dZ
|
||||
_) g (n
|
||||
exa) gg (er dZ
|
||||
ght t
|
||||
_) gh g
|
||||
gh (_ g
|
||||
C) gh (A g
|
||||
gh (C g
|
||||
@@ -2721,6 +2748,7 @@
|
||||
|
||||
.group ie
|
||||
ie I
|
||||
X) ie i:
|
||||
ie (_ aI
|
||||
ied (_S2i d // suffix
|
||||
ieds (_S3i dz
|
||||
@@ -2741,7 +2769,7 @@
|
||||
ie (k i:
|
||||
ie (l i:
|
||||
ie (llA I2'E
|
||||
n) iel (_ I2@L
|
||||
&n) iel (_ I2@L
|
||||
&r) iel (_ =i:@L
|
||||
ie (n i@
|
||||
d) iene (_ 'aIi:n
|
||||
@@ -2787,6 +2815,7 @@
|
||||
ie (ve i:
|
||||
s) ie (ve I
|
||||
ie (z i:
|
||||
_t) ie aI
|
||||
|
||||
.group ig
|
||||
am) ig (a_ i:g
|
||||
@@ -2860,19 +2889,19 @@
|
||||
.group in
|
||||
@) ing (_+S3dve IN
|
||||
@) ings (_S4dve INz
|
||||
@) ingly (_S5dve INg-lI
|
||||
@) ingment (_S7dve INg-m@nt
|
||||
@) ingly (_S5dve INlI
|
||||
@) ingment (_S7dve INm@nt
|
||||
logu) ing (_S4v IN
|
||||
x) ing (_+S3v IN
|
||||
el) ing (_+S3dv IN
|
||||
@@om) ing (_S3dv IN
|
||||
en) ing (_S3v IN
|
||||
en) ings (_S4v INz
|
||||
en) ingly (_S5vf INg-lI
|
||||
en) ingly (_S5vf INgI
|
||||
er) ing (_S3v IN
|
||||
er) ings (_S4v INz
|
||||
er) ingly (_S5vf INg-lI
|
||||
er) ingment (_S7v INg-m@nt
|
||||
er) ingly (_S5vf INlI
|
||||
er) ingment (_S7v INm@nt
|
||||
Br) ing (_ IN
|
||||
|
||||
?7 &) in (_ @n
|
||||
@@ -3160,13 +3189,13 @@
|
||||
_) it' %It
|
||||
_m) it (o aIt
|
||||
it (o_ 'i:t
|
||||
_C) ity (_ ItI
|
||||
_C) ity (_ Iti
|
||||
_ed) it It
|
||||
cred) it It
|
||||
CAt) it (_ 'i:t //apetite
|
||||
v) it (al aIt
|
||||
t) it (l aIt
|
||||
&) ity (_ =I2t%I
|
||||
&) ity (_ =I2t%i
|
||||
orb) it It
|
||||
@@) it (an_ =It
|
||||
?3 &) itary (_ @tEr%I // military
|
||||
@@ -3251,7 +3280,10 @@
|
||||
.group k
|
||||
k k
|
||||
k (k
|
||||
_) kn n
|
||||
_) k (L01Y k
|
||||
_) k (hY k
|
||||
_) k (wY k
|
||||
_) kn (Y n
|
||||
kn (if n
|
||||
kn (iv n
|
||||
kn (it n
|
||||
@@ -3269,6 +3301,10 @@
|
||||
.group l
|
||||
l l
|
||||
l (l
|
||||
_) l (hY l
|
||||
_) ll (Y l
|
||||
_) l (ju l
|
||||
|
||||
l (_ l
|
||||
A') ll l
|
||||
A) ll l
|
||||
@@ -3333,9 +3369,11 @@
|
||||
?8 @) lessly (_S6i lEsl%I
|
||||
?8 @) lessness (_S8i lEsnEs
|
||||
|
||||
|
||||
.group m
|
||||
m m
|
||||
mm m
|
||||
_) mn (e n
|
||||
h) m (_ @m
|
||||
B) m (_ @m
|
||||
l) m (_ m
|
||||
@@ -3361,7 +3399,6 @@
|
||||
_) mc (A mak
|
||||
_) mc (-A mak
|
||||
mn (_ m
|
||||
_) mn n
|
||||
&B) me (_ m%I
|
||||
@) men (_ mEn
|
||||
&) ment (_S4 m@nt
|
||||
@@ -3422,6 +3459,8 @@
|
||||
.group n
|
||||
n n
|
||||
n) n
|
||||
_) n (gY+ @-N
|
||||
|
||||
&ia) n (_S1 n
|
||||
&ia) ns (_S2 nz
|
||||
@) name (_S4 neIm
|
||||
@@ -4111,7 +4150,7 @@
|
||||
&dr) ous (_ =@s
|
||||
&l) ous (_ @s
|
||||
&) ous (_ @s
|
||||
&) ousy (_ @s%I
|
||||
&) ousy (_ @s%i
|
||||
&m) ous (_ @s
|
||||
&n) ous (_ @s
|
||||
_) out (@P3 %aUt // prefix out
|
||||
@@ -4226,6 +4265,14 @@
|
||||
.group p
|
||||
p p
|
||||
p (p
|
||||
_) p (L01Y p // allow _pl _pr
|
||||
_) pf (Y f
|
||||
_) ph (Y f
|
||||
_) ph (L01Y f
|
||||
_) pn (eu n
|
||||
_) ps (Y s
|
||||
_) pt (Y t
|
||||
|
||||
ph f
|
||||
phenome (n fI2n0mI
|
||||
phenyl f,i:naIl
|
||||
@@ -4252,12 +4299,10 @@
|
||||
poly (@@ p,0lI
|
||||
poly (@ p0lI
|
||||
pota (t p@teI
|
||||
_) ps s
|
||||
pseudo su:doU
|
||||
psych saIk
|
||||
psycho saIkoU
|
||||
psycho (lo saIk'0
|
||||
_) pt t
|
||||
ei) pt t
|
||||
ras) p (b
|
||||
_) pur (su p3
|
||||
@@ -4388,7 +4433,6 @@
|
||||
pro (log proU
|
||||
|
||||
.group q
|
||||
_) q (B kju:
|
||||
q k
|
||||
q (q
|
||||
qu kw
|
||||
@@ -4413,13 +4457,15 @@
|
||||
.group r
|
||||
r r
|
||||
rr r
|
||||
_) rh (Y r
|
||||
_) rw (a r%U
|
||||
|
||||
r) r (_
|
||||
C) r (_N r@
|
||||
e) r (_ 3
|
||||
@) r (B @
|
||||
3_) rd (_
|
||||
rEr (_ r3
|
||||
_) rh r
|
||||
C) rh r
|
||||
rheu ru:
|
||||
rhi (n raI
|
||||
@@ -4433,7 +4479,6 @@
|
||||
_) ru (bL01 ru:
|
||||
_) run (a rVn
|
||||
_) run (o rVn
|
||||
_) rw r%U
|
||||
&ant) ry (_S2 r%I
|
||||
|
||||
.group re
|
||||
@@ -4541,7 +4586,29 @@
|
||||
s s
|
||||
s (s
|
||||
s (sh s
|
||||
|
||||
_) s (cY s
|
||||
_) s (cL01Y s
|
||||
_) sch S
|
||||
_) sh (Y S
|
||||
_) sh (L01Y S
|
||||
_) s (kY s
|
||||
_) s (kL01Y s
|
||||
_) s (lY s
|
||||
_) s (mY s
|
||||
_) s (nY s
|
||||
_) s (pY s
|
||||
_) s (phY s
|
||||
_) s (pL01Y s
|
||||
_) s (qu s
|
||||
_) s (ri s
|
||||
_) s (tY s
|
||||
_) s (trY s
|
||||
_) s (va s
|
||||
_) s (ve s
|
||||
_) s (wY s
|
||||
_) s (zY s
|
||||
|
||||
sche (m ski:
|
||||
_) sch (ism sk
|
||||
_) schiz skIts
|
||||
@@ -4721,6 +4788,14 @@
|
||||
.group t
|
||||
t t
|
||||
t) t
|
||||
_) th (Y T
|
||||
_) th (rY T
|
||||
_) th (wY T
|
||||
_) t (rY t
|
||||
_) t (sY t
|
||||
_) t (wY t
|
||||
_) tz (ar ts
|
||||
|
||||
tch tS
|
||||
_) tele tElI2
|
||||
r) tga (g gI
|
||||
@@ -4901,6 +4976,7 @@
|
||||
?8 &f) ully (_ Vl%I
|
||||
&) u (lous_ =jU
|
||||
b) ul (r Ul
|
||||
&ic) ul (t @L
|
||||
_) ultra (@ ,Ultra
|
||||
u (lul V
|
||||
@) u (lum =jU
|
||||
@@ -4972,7 +5048,7 @@
|
||||
g) ui (lC I
|
||||
_g) ui (le aI
|
||||
@) ui (ty 'ju:I
|
||||
g) ui (dA aI
|
||||
g) ui (dA# aI
|
||||
g) uide (l aId
|
||||
beg) ui (l aI
|
||||
_g) ui (n I
|
||||
@@ -5098,6 +5174,7 @@
|
||||
.group v
|
||||
v v
|
||||
v (v
|
||||
_) v (la v
|
||||
|
||||
@) va (len veI
|
||||
_) vehem vi@m
|
||||
@@ -5108,6 +5185,9 @@
|
||||
.group w
|
||||
w w
|
||||
w (w
|
||||
_) wh (Y w
|
||||
_) wr (Y r
|
||||
|
||||
C) w (_ w@
|
||||
wh w
|
||||
wr r
|
||||
@@ -5140,14 +5220,14 @@
|
||||
As) w (ick
|
||||
|
||||
.group x
|
||||
_) x (C Eks
|
||||
x ks
|
||||
x) x (A
|
||||
_) xy zaI
|
||||
_) x z
|
||||
_) x (Y z
|
||||
xio (n kS@
|
||||
xious =kS@s
|
||||
xu (a =kSu:
|
||||
xure (_ kS%U@
|
||||
|
||||
.group y
|
||||
y j
|
||||
@@ -5164,6 +5244,8 @@
|
||||
y (Be# aI
|
||||
@C) y (Be# aI
|
||||
ye (_ aI
|
||||
y (ear j
|
||||
%B) y (_NS1d i
|
||||
%B) y (_S1d I
|
||||
_C) y (Ce aI
|
||||
C) y (i I
|
||||
@@ -5201,10 +5283,11 @@
|
||||
d) yse (n Is@
|
||||
f) y (_ aI
|
||||
ff) y (_ I
|
||||
&sk) y (_ =I
|
||||
&sk) y (_ =i
|
||||
den) y (_ aI
|
||||
bel) y (_ aI
|
||||
&) y (_ %I
|
||||
&) y (_N %i
|
||||
y (_ aI
|
||||
y (Cic_ 'I
|
||||
y (Cical 'I
|
||||
@@ -5257,6 +5340,11 @@
|
||||
.group z
|
||||
z z
|
||||
z (z
|
||||
_) zh (Y Z
|
||||
_) z (lot z
|
||||
_) zs (Y z
|
||||
_) z (wY z
|
||||
|
||||
@) zales (_ z'A:lEs
|
||||
zes (_ zI2z
|
||||
zh Z
|
||||
|
||||
+9
-10
@@ -106,7 +106,6 @@ _5C kinj'EntOs
|
||||
_7C s,eteTj'EntOs
|
||||
_9C n,OBeTj'EntOs
|
||||
_0M1 m'il
|
||||
_1M1 m'il // no '1' before thousand
|
||||
_0M2 miJ^'ones
|
||||
_1M2 'unmiJ^'On
|
||||
_0M4 _biJ^'onEs
|
||||
@@ -358,23 +357,23 @@ alguna $u
|
||||
b be
|
||||
c Te
|
||||
d de
|
||||
f Efe
|
||||
f _|Efe
|
||||
g xe
|
||||
h atSe
|
||||
j xOta
|
||||
k ka
|
||||
l Ele
|
||||
m Eme
|
||||
n Ene
|
||||
ñ En^e
|
||||
l _|Ele
|
||||
m _|Eme
|
||||
n _|Ene
|
||||
ñ _|En^e
|
||||
p pe
|
||||
q ku
|
||||
r E**e
|
||||
s Ese
|
||||
r _|E**e
|
||||
s _|Ese
|
||||
t te
|
||||
v uBe
|
||||
v _|uBe
|
||||
w ,uBe||d'OBle
|
||||
x Ekis
|
||||
x _|Ekis
|
||||
z TEta
|
||||
|
||||
_a a
|
||||
|
||||
+33
-14
@@ -5,11 +5,12 @@
|
||||
// ?1 Castilian
|
||||
// ?2 Latin America
|
||||
|
||||
.L01 j w l r b d g n m p t k c
|
||||
.L01 l r y
|
||||
.L02 b d g n m // change [s] to [z] before these
|
||||
.L03 f h j s y z // allow [B] [D] [Q] before these consonants
|
||||
.L03 f h j s y z r // allow [B] [D] [Q] before these consonants
|
||||
.L04 b v f p // labials, nasals are [m]
|
||||
.L05 g k // velars, nasals are [N]
|
||||
.L06 j w l r b d g n m p t k c
|
||||
|
||||
.group a
|
||||
a a
|
||||
@@ -22,7 +23,8 @@
|
||||
|
||||
.group b
|
||||
b b
|
||||
_) b b // phoneme definition may change it to [B]
|
||||
_) b ($unpr b // phoneme definition may change it to [B]
|
||||
_) b (L01A b // Only bl, br are allowed at start of word
|
||||
b (A B
|
||||
b (cY B
|
||||
b (L03 B
|
||||
@@ -33,13 +35,17 @@
|
||||
|
||||
.group c
|
||||
c k
|
||||
_) c (L01A k // allow: cl cr at start of word
|
||||
_) ch (A tS // allow _ch
|
||||
|
||||
c (Y T // ce, ci
|
||||
ch tS
|
||||
|
||||
|
||||
.group d
|
||||
d d
|
||||
_) d d // phoneme definition may change it to [D]
|
||||
_) d ($unpr d // phoneme definition may change it to [D]
|
||||
_) d (rA d
|
||||
d (A D
|
||||
d (cY D
|
||||
d (L03 D
|
||||
@@ -64,11 +70,15 @@
|
||||
|
||||
.group f
|
||||
f f
|
||||
_) f (L01A f // allow fl fr at start of word
|
||||
|
||||
|
||||
.group g
|
||||
g g
|
||||
_) g g // phoneme definition may change it to [Q]
|
||||
_) g ($unpr g // phoneme definition may change it to [Q]
|
||||
_) g (L01A g
|
||||
_) gh (A g // allow _gh in foreign words
|
||||
_) gn (A n
|
||||
g (A Q
|
||||
g (cY Q
|
||||
g (L03 Q
|
||||
@@ -95,10 +105,12 @@
|
||||
|
||||
.group k
|
||||
k k
|
||||
_) k (L01A k // allow kl kr at start of word
|
||||
|
||||
|
||||
.group l
|
||||
l l
|
||||
_) ll (A J^ // allowe _ll
|
||||
ll J^
|
||||
?2 A) ll (A j:
|
||||
|
||||
@@ -106,6 +118,8 @@
|
||||
|
||||
.group m
|
||||
m m
|
||||
_) mn (em n
|
||||
|
||||
m (K n
|
||||
m (L04 m
|
||||
m (_L04 m
|
||||
@@ -136,11 +150,14 @@
|
||||
|
||||
.group p
|
||||
p p
|
||||
_) p (L01A p // allow pl pr at start of word
|
||||
p (t p:
|
||||
_) ph f
|
||||
ph (K f
|
||||
_) ps (ico s
|
||||
_) ps (i s
|
||||
_) ps (eudo s
|
||||
_) pt (ero t
|
||||
_) pt (ol t
|
||||
|
||||
|
||||
.group q
|
||||
@@ -150,7 +167,6 @@
|
||||
|
||||
.group r
|
||||
r R
|
||||
_) r RR2
|
||||
r (_ *
|
||||
r (t **
|
||||
A) r (A **
|
||||
@@ -165,13 +181,15 @@
|
||||
.group s
|
||||
s s
|
||||
&) s (_S1 s
|
||||
_) s (C Es
|
||||
_) sh S
|
||||
_) s (C %Es
|
||||
_) sh (A S
|
||||
_) sh (L01A S
|
||||
sh (K S
|
||||
|
||||
|
||||
.group t
|
||||
t t
|
||||
_) t (L01A t // all tr at start of word
|
||||
_) th T
|
||||
th (K T
|
||||
|
||||
@@ -188,15 +206,15 @@
|
||||
|
||||
.group v
|
||||
v B
|
||||
_) v b
|
||||
_) v (L01A b // allow vl vr at start of word
|
||||
?1 m) v b
|
||||
?1 n) v b
|
||||
?1 v (L01 b
|
||||
?1 v (L06 b
|
||||
?1 v (iA b
|
||||
?1 v (uA b
|
||||
?2 v v#
|
||||
?2 _) v v
|
||||
?2 v (L01 v
|
||||
?2 v (L06 v
|
||||
?2 v (j v
|
||||
?2 v (iA v
|
||||
?2 v (uA v
|
||||
@@ -204,18 +222,19 @@
|
||||
|
||||
.group w
|
||||
w w
|
||||
_) wh (A w
|
||||
|
||||
|
||||
.group x
|
||||
x ks
|
||||
?1 A) x (A Qs
|
||||
x (_ =Qs
|
||||
_) x z // ?
|
||||
_) x ($unpr z // ?
|
||||
|
||||
|
||||
.group y
|
||||
y i
|
||||
_) y J
|
||||
_) y ($unpr J
|
||||
_m) y J
|
||||
n) y J
|
||||
_l) y J
|
||||
|
||||
+86
-86
@@ -24,7 +24,7 @@
|
||||
|
||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
|
||||
//
|
||||
// Updated 2010-07-16 Michel Such <michel.such@free.fr>
|
||||
// Updated 2010-07-25 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
// * Numbers, a few abbreviations and exceptions.
|
||||
//
|
||||
@@ -83,8 +83,8 @@ z zEd
|
||||
|
||||
// accent names
|
||||
_lig ligat'yr
|
||||
_acu aksA~tE2g'y
|
||||
_ac2 dublaksA~tE2g'y
|
||||
_acu aksA~tEg'y
|
||||
_ac2 dublaksA~tEg'y
|
||||
_brv br'Ev
|
||||
_ced sed'ij
|
||||
_cir aksA~sirkO~fl'Eks
|
||||
@@ -104,29 +104,29 @@ _cap maZysk'yl
|
||||
_?A l'Etr
|
||||
_?? sE~b'oll
|
||||
_#9 tabylasiO~
|
||||
_#32 E2spas
|
||||
_#32 Espas
|
||||
|
||||
|
||||
_" gijmE2
|
||||
_" gijmE
|
||||
_# djEz
|
||||
_' apostr'Of
|
||||
|
||||
_( parA~tEz_goS
|
||||
_) parA~tEz_drwat
|
||||
_, virgyl
|
||||
_- tirE2
|
||||
_- tirE
|
||||
_. _|pw%E~
|
||||
_/ barOblik
|
||||
_/ baroblik
|
||||
_: d'Y||pw'E~
|
||||
_; pwE~||virg'yl
|
||||
_< E~feriWr
|
||||
_= egal
|
||||
_> syperiWr
|
||||
_? pwE~||dE~tE2rogasj'O~
|
||||
_? pwE~||dE~tErogasj'O~
|
||||
_! pwE~||dEksklamasj'O~
|
||||
_[ krOSE2_goS
|
||||
_\ barOblik_E~vErse
|
||||
_] krOSE2_drwa
|
||||
_[ krOSE_goS
|
||||
_\ bakslaS
|
||||
_] krOSE_drwa
|
||||
_^ sirkO~flEks
|
||||
__ sulin^e
|
||||
_` aks'A~_gr'av
|
||||
@@ -134,8 +134,8 @@ _{ akOlad_goS
|
||||
_| bar_vErtik'al
|
||||
_} akOlad_drwat
|
||||
² pyis'A~s||d'Y
|
||||
_« uvre||gijm'E2
|
||||
_» fErme||gijm'E2
|
||||
_« uvre||gijm'E
|
||||
_» fErme||gijm'E
|
||||
_’ apostr'Of
|
||||
_‘ apostr'Of
|
||||
_µ mikr'o
|
||||
@@ -174,7 +174,7 @@ _5 sE~k
|
||||
_6 siz3
|
||||
_7 sEt
|
||||
_8 _|yit3
|
||||
_9 nYf
|
||||
_9 nWf
|
||||
_10 diz3
|
||||
_11 _|O~z
|
||||
_12 duz
|
||||
@@ -184,7 +184,7 @@ _15 kE~z
|
||||
_16 sEz
|
||||
_17 disEt
|
||||
_18 dizyit3
|
||||
_19 diznYf
|
||||
_19 diznWf
|
||||
_20 vE~t2
|
||||
_21 vE~te:W~
|
||||
_22 vE~tdYz2
|
||||
@@ -194,7 +194,7 @@ _25 vE~tsE~k
|
||||
_26 vE~tsiz3
|
||||
_27 vE~tsEt
|
||||
_28 vE~tyit3
|
||||
_29 vE~tnYf
|
||||
_29 vE~tnWf
|
||||
_3X trA~t
|
||||
_31 trA~te:W~
|
||||
_4X karA~t
|
||||
@@ -251,17 +251,18 @@ cci $abbrev
|
||||
cia $abbrev
|
||||
cio $abbrev
|
||||
cm centimètre $text
|
||||
collins kOlins
|
||||
collins _^_en
|
||||
cpu $abbrev
|
||||
ctrl _::kO~trOl
|
||||
dept depart@mA~
|
||||
dept département $text
|
||||
divx diviks
|
||||
ebay _^_en
|
||||
(e bay) ebay $text
|
||||
ebcdic @besedik
|
||||
edf @d,eEf
|
||||
eml @,EmEl
|
||||
etc E2tsetera
|
||||
etc Etsetera
|
||||
fyi fWr||jWr||InfWrm'EjSWn
|
||||
ghz ZigaErts
|
||||
(g hz) ZigaErts
|
||||
hmm hWm
|
||||
@@ -271,14 +272,13 @@ ibm ib,e'Em
|
||||
ide $abbrev
|
||||
ip ipe
|
||||
irc I,Er_|se
|
||||
jaws dZo3:z
|
||||
kbit kilobit
|
||||
kde $abbrev
|
||||
kg kilogramme $text
|
||||
khz kiloErts
|
||||
km kilomètre $text
|
||||
(km player) ka,EmplE2j'Wr
|
||||
(kmplayer) ka,EmplE2j'Wr
|
||||
(km player) ka,EmplEj'Wr
|
||||
(kmplayer) ka,EmplEj'Wr
|
||||
kw kilowatt $text
|
||||
m. m@siY
|
||||
mbit megabit
|
||||
@@ -314,12 +314,12 @@ sap $abbrev
|
||||
scsi $abbrev
|
||||
solaris solaris
|
||||
sos $abbrev
|
||||
s.t.p silt@:pl'E2
|
||||
s.v.p silvu:pl'E2
|
||||
s.t.p silt@:pl'E
|
||||
s.v.p silvu:pl'E
|
||||
st s'E~t2
|
||||
ste s'E~t
|
||||
stp silt@:pl'E2
|
||||
svp silvu:pl'E2
|
||||
stp silt@:pl'E
|
||||
svp silvu:pl'E
|
||||
tva $abbrev
|
||||
uk $abbrev
|
||||
ups ypeEs
|
||||
@@ -331,7 +331,6 @@ u.s y:Es
|
||||
virgin virZin
|
||||
vip v,i||,aj||p'i
|
||||
(web visum) webvisum $text
|
||||
windows windo3z
|
||||
wma $abbrev
|
||||
xfce iksEfse@
|
||||
xy $abbrev
|
||||
@@ -421,10 +420,11 @@ lui $u+ $verbf
|
||||
|
||||
ca sa $u+ $capital $verbf
|
||||
ce $u+ $nounf
|
||||
ceux $u+
|
||||
celle $u+
|
||||
celles $u+
|
||||
ceci $u+ $verbf
|
||||
cela $u+ $verbf
|
||||
voici $u+
|
||||
voilà $u+
|
||||
cet $u $nounf
|
||||
cette $u $nounf
|
||||
ces sez2 $u $nounf
|
||||
@@ -435,6 +435,8 @@ ces sez2 $u $nounf
|
||||
(celles ci) sEl||si $verbf $u+
|
||||
(celles là) sEl||la $verbf $u+
|
||||
plupart $u+
|
||||
voici $u+
|
||||
voilà $u+
|
||||
|
||||
// possessives
|
||||
ma $u $nounf
|
||||
@@ -527,8 +529,8 @@ pourtant $u+
|
||||
|
||||
// auxillary verbs (be, have, can, etc)
|
||||
suis $u+ $verb
|
||||
es E2z2 $u+
|
||||
est E2t2 $u+
|
||||
es Ez2 $u+
|
||||
est Et2 $u+
|
||||
sommes $u+ $verb
|
||||
êtes $u+ $verb
|
||||
sont $u+ $verb
|
||||
@@ -544,7 +546,7 @@ sois $u+ $verb
|
||||
soit $u+
|
||||
|
||||
ai $u+ $verb
|
||||
(ai je) E2Z $u+
|
||||
(ai je) EZ $u+
|
||||
as as
|
||||
as az2 $u+ $verb
|
||||
(as tu) aty
|
||||
@@ -642,7 +644,6 @@ albinos albinos
|
||||
alleluia alelui'a
|
||||
alterego altErego
|
||||
anis anis
|
||||
any Eni $u
|
||||
armageddon armagedO~
|
||||
auvent ovA~
|
||||
beta beta
|
||||
@@ -653,7 +654,7 @@ blues _^_en
|
||||
blum blum
|
||||
broglie breuil $text
|
||||
browglie breuil $text
|
||||
buffer bYfYr
|
||||
buffer bYfWr
|
||||
bus bys
|
||||
bus by $verb
|
||||
cancer kA~sEr
|
||||
@@ -673,11 +674,12 @@ dot dOt
|
||||
enfer A~fEr
|
||||
fahrenheit far@najt
|
||||
faut fot2 $u+
|
||||
feldspath fEldspat
|
||||
fier fjer $verb
|
||||
for $u+
|
||||
francis frA~sis
|
||||
fred frEd
|
||||
free frI:
|
||||
free _^_en
|
||||
fuel fjul
|
||||
gangster gA~gstEr
|
||||
gars ga
|
||||
@@ -685,20 +687,20 @@ genesis Zenezis
|
||||
georges ZOrZ
|
||||
gilles Zil
|
||||
gin dZin
|
||||
gulf gWlf
|
||||
gulf gOlf
|
||||
gus gys
|
||||
gym Zim
|
||||
han _|A~
|
||||
hélas elas $u+
|
||||
jacques Zak
|
||||
karaoke karaOke
|
||||
karaoke karaoke
|
||||
kevin kevin
|
||||
laetitia letisja
|
||||
laser lazEr
|
||||
listbox listbOks
|
||||
louis lwi
|
||||
malus malys
|
||||
mai mE2
|
||||
mailto mEjltu_
|
||||
mai mE
|
||||
mapper _^_en
|
||||
mars mars
|
||||
mas mas
|
||||
@@ -712,32 +714,31 @@ mrs _^_en
|
||||
oasis oazis
|
||||
ours urs
|
||||
pataquès patakEs
|
||||
patchwork patSwWrk
|
||||
peter pItWr
|
||||
peter _^_en
|
||||
phallus falys
|
||||
polder pOldEr
|
||||
premier pr@mjer2
|
||||
program _^_en
|
||||
(program files) prOgramfajlz
|
||||
query kueri
|
||||
queries kueri
|
||||
query _^_en
|
||||
queries _^_en
|
||||
quid kwid $u+
|
||||
quit kwit
|
||||
recorder rikOrdWr
|
||||
quit _^_en
|
||||
recorder _^_en
|
||||
requiem rekyijEm
|
||||
revolver revOlvEr
|
||||
sas sas
|
||||
scan skan
|
||||
scan _^_en
|
||||
scanner skaner2 $verb
|
||||
scanner skanWr $noun
|
||||
scanners skanWr
|
||||
shampoing SA~pwE~
|
||||
sir sWr
|
||||
sir _^_en
|
||||
souris suri
|
||||
stocker stoker2
|
||||
sus sys
|
||||
sus sy $verb
|
||||
sushi suSi
|
||||
thierry tjEri
|
||||
to tu $u+
|
||||
tramway tramwE:
|
||||
tuttiquanti tutikw'anti
|
||||
@@ -745,7 +746,6 @@ vaut $u+
|
||||
vaux $u+
|
||||
vénus venys
|
||||
vot vOt
|
||||
writer raitWr
|
||||
yves iv
|
||||
|
||||
|
||||
@@ -777,18 +777,17 @@ zut zyt
|
||||
|
||||
// et (t is said)
|
||||
|
||||
exocet E2gzOsEt
|
||||
exocet EgzosEt
|
||||
fret fr'Et
|
||||
budget bydZE2
|
||||
budget bydZE
|
||||
hamlet _|amlEt
|
||||
knesset knesEt
|
||||
lazaret lazarE2
|
||||
lazaret lazarE
|
||||
margaret margarEt
|
||||
net nEt
|
||||
offset OfsEt
|
||||
set sEt
|
||||
soviet soviEt
|
||||
stewart stIwart
|
||||
|
||||
// urt (t is said)
|
||||
kurt kurt
|
||||
@@ -800,19 +799,14 @@ yogourt _|iogurt
|
||||
short SOrt
|
||||
|
||||
// art (t said)
|
||||
steward stiwart
|
||||
stuttgart Stutgart
|
||||
hart art
|
||||
kart kart
|
||||
smart smart
|
||||
|
||||
// irt
|
||||
(sweat shirt) swEtSWrt
|
||||
(sweat shirts) swEtSWrt
|
||||
(tee shirt) t,IS'Wrt
|
||||
(tee shirts) t,IS'Wrt
|
||||
(t shirt) t,IS'Wrt
|
||||
(t shirts) t,IS'Wrt
|
||||
(t shirt) _^_en
|
||||
(t shirts) _^_en
|
||||
|
||||
|
||||
// words from other languages
|
||||
@@ -821,34 +815,38 @@ acer asEr
|
||||
and _^_en
|
||||
amazon amaz'On
|
||||
apple _^_en
|
||||
at at $u+
|
||||
(audible manager) od,ibl||manadZ'Wr
|
||||
at _^_en
|
||||
(audible manager) _^_en
|
||||
balabolka balabOlka
|
||||
be _^_en
|
||||
better _^_en
|
||||
bin bin
|
||||
bit bit
|
||||
bluetooth blut'us
|
||||
bluetooth _^_en
|
||||
computer _^_en
|
||||
(cyber link) _^_en
|
||||
debian debjan
|
||||
do _^_en
|
||||
edit _^_en
|
||||
emacs E2maks
|
||||
emacspeak E2makspI:k
|
||||
emacs _^_en
|
||||
end _^_en
|
||||
espeak @spI:k
|
||||
ethernet etErnEt
|
||||
exit egzit
|
||||
(file zilla) f,ajl||zij'a
|
||||
from frOm $u+
|
||||
(file zilla) _^_en
|
||||
from _^_en
|
||||
get _^_en
|
||||
google gug=Wl
|
||||
google _^_en
|
||||
gnome gnOm
|
||||
gnu $abbrev
|
||||
hamburger _|A~b@rgWr
|
||||
he _^_en
|
||||
her _^_en
|
||||
help _^_en
|
||||
hot _^_en
|
||||
in in $u+
|
||||
inside _^_en
|
||||
in _^_en
|
||||
internet E~tErn'Et
|
||||
(internet explorer) E~tErn'Et||E2ksplOr'Wr
|
||||
(internet explorer) E~tErn'Et||EksplOr'Wr
|
||||
it _^_en
|
||||
klaxon klaksOn
|
||||
let _^_en
|
||||
lite _^_en
|
||||
@@ -856,28 +854,29 @@ login _^_en
|
||||
logon _^_en
|
||||
(mac os x) makoEsiks
|
||||
made _^_en
|
||||
mail _^_en
|
||||
mailto _^_en
|
||||
media medja
|
||||
messenger mE2sEnZWr
|
||||
my maj $u+
|
||||
messenger _^_en
|
||||
nat nat
|
||||
not _^_en
|
||||
null _^_en
|
||||
ok oke $u+
|
||||
open op'Wn
|
||||
(open source) op,Wn||s'urs
|
||||
outlook autlu:k
|
||||
open _^_en
|
||||
outlook _^_en
|
||||
paint _^_en
|
||||
paper _^_en
|
||||
people _^_en
|
||||
redhat rEdat
|
||||
redhat _^_en
|
||||
same _^_en
|
||||
sametime _^_en
|
||||
she _^_en
|
||||
sun _^_en
|
||||
(text aloud) tEkst||@la=wd
|
||||
(text aloud) _^_en
|
||||
ubuntu ubuntu
|
||||
up _^_en
|
||||
win win $u+
|
||||
yes _^_en
|
||||
yet _^_en
|
||||
|
||||
|
||||
// tions (tjO~ instead of sjO~)
|
||||
@@ -903,6 +902,7 @@ vincent vE~sA~
|
||||
// Some countries, areas and languages
|
||||
afrikaans afrikans
|
||||
aix Eks
|
||||
aruba aruba
|
||||
bahamas baamas
|
||||
bangladesh bA~gladES
|
||||
bayeux bajY
|
||||
@@ -915,14 +915,17 @@ burundi burundi
|
||||
calvados calvadoss $text
|
||||
christmas krismas
|
||||
croatie kroasi
|
||||
esperanto E2sperA~to
|
||||
esperanto EsperA~to
|
||||
groenland groEnlA~d
|
||||
guatemala gwatemala
|
||||
hindi _|indi
|
||||
honduras _|O~dyras
|
||||
kenya kenja
|
||||
koweït kowEjt
|
||||
laos laOs
|
||||
leone leOn
|
||||
lesotho lezOto
|
||||
libye libi
|
||||
liechtenstein liStWnStajn
|
||||
angeles A~nZelEs
|
||||
malawi malawi
|
||||
@@ -935,15 +938,12 @@ oman oman
|
||||
palaos palaOs
|
||||
samoa samoa
|
||||
swaziland swazilA~d
|
||||
leone leOn
|
||||
koweït kowEjt
|
||||
taïwan tajwan
|
||||
texas tE2ks'as
|
||||
texas tEks'as
|
||||
tuvalu tuvalu
|
||||
vanuatu vanuatu
|
||||
venezuela venezy-E2la
|
||||
venezuela venezyEla
|
||||
(viêt nam) vjEtnam
|
||||
wallis walis
|
||||
futuna futuna
|
||||
zimbabwe zimbabwe
|
||||
|
||||
|
||||
+182
-155
@@ -27,7 +27,7 @@
|
||||
// http://www.fluxnic.net/cicero
|
||||
//
|
||||
// Rules are now maintained by Michel Such <michel.such@free.fr>
|
||||
// Last update: 2010-07-16 Michel Such <michel.such@free.fr>
|
||||
// Last update: 2010-07-30 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
|
||||
// Letter classes:
|
||||
@@ -45,7 +45,32 @@
|
||||
.L03 d l m n s t v
|
||||
.L04 c d f g l m n v
|
||||
.L05 g h k l m v w
|
||||
.L06 l r s
|
||||
|
||||
// Following groups are used to manage mute e inside words.
|
||||
|
||||
// After or before L06, e is not mute
|
||||
.L06 bl br cl cr ct dr fl fr ft gl gr kl kr pl pr tr vr
|
||||
|
||||
// After L07, e is not mute
|
||||
.L07 ec éc ed éd lb lc ld lg lm ln lp lt lv rb rc rd rf rg rl rm rn rp rs rt rv
|
||||
|
||||
// All consonants + ch gu qu used as ch g k
|
||||
.L08 b c d f g h j k l m n p q r s t v w x z ch qu gu
|
||||
|
||||
// E placed after a consonant following L09 is not mute
|
||||
.L09 l r s
|
||||
|
||||
// When these diphtonges are after a consonant folllowing e, e is not mute
|
||||
.L10 ia ie io ua ue ui uo
|
||||
.L11 b p
|
||||
.L12 é è al ib ie l om on ré
|
||||
|
||||
// Words ending "son" pust sound english if preceded by L13
|
||||
.L13 d g k l p er hn
|
||||
|
||||
// For english words ending "side"
|
||||
.L14 be in up ut
|
||||
|
||||
|
||||
|
||||
.group a
|
||||
@@ -56,21 +81,18 @@
|
||||
ain (K E~ // pain
|
||||
Ct) ain (_ E~n2 // certain ami
|
||||
ch) ain (_ E~n2 // prochain arret
|
||||
ai (_ e // dirai ferai...
|
||||
_ess) ai (_ E2 // essai
|
||||
_vr) ai (_ E2 // vrai
|
||||
ai (b E // faible
|
||||
ais (_ E2z2 // dirais ferais...
|
||||
ait (_ E2t2 // dirait ferait...
|
||||
aient (_ E2t2 // diraient feraient...
|
||||
ai E
|
||||
ai (_ e
|
||||
_bal) ai (_ E
|
||||
_ess) ai (_ E
|
||||
_vr) ai (_ E
|
||||
aie E
|
||||
ais (_ Ez2
|
||||
ait (_ Et2
|
||||
aient Et2
|
||||
f) ai (sA @ // faisons faisan
|
||||
a (ilK a
|
||||
aie (me E2 // paiement
|
||||
ai E // aile
|
||||
ai (L06 E // aile
|
||||
ai (CAX E // aile
|
||||
am (b A~ // jambon
|
||||
am (p A~ // camp
|
||||
am (L11 A~ // jambon, tampon
|
||||
am (m a // programmation
|
||||
_) am (n am // amnistie
|
||||
am (n a // condamner
|
||||
@@ -106,22 +128,22 @@
|
||||
aud (_ o // chaud
|
||||
_C) aud (_ od // Maud
|
||||
au (l_ O // Paul
|
||||
au (re_ o // dinosaure
|
||||
au (re_ O // dinosaure
|
||||
_) audio (@P5 odio
|
||||
_) auto (@P4 oto
|
||||
_) autom (n otO
|
||||
bb) aye (X ei // abbaye
|
||||
ay (C E // aymé
|
||||
ay Ej // paye
|
||||
ay (_ E2 // display
|
||||
Xl) ayer (X E2jWr // player, layer
|
||||
ay (_ E // display
|
||||
Xl) ayer (X EjWr // player, layer
|
||||
h) am (_S2 am
|
||||
w) an (_ an
|
||||
a a // bateau
|
||||
|
||||
// group a: English section
|
||||
sm) all _^_en // small, smaller
|
||||
a (wC _^_en
|
||||
any _^_en
|
||||
aw (K _^_en
|
||||
|
||||
|
||||
.group b
|
||||
@@ -131,12 +153,9 @@ _C) aud (_ od // Maud
|
||||
|
||||
// group b: English section
|
||||
back _^_en
|
||||
bbl _^_en
|
||||
bird _^_en // bird
|
||||
board _^_en // board, keyboard
|
||||
box (_ _^_en // box, inbox, outbox
|
||||
bugg _^_en // debugger
|
||||
_) by _^_en // by, bye, bypass
|
||||
|
||||
|
||||
.group c
|
||||
@@ -239,50 +258,64 @@ _ingré) dien (t_ djA~ // ingrédient
|
||||
_) devic _^_en
|
||||
dle (X _^_en // bundle, handle
|
||||
|
||||
|
||||
.group e
|
||||
|
||||
// Define use of the final 'e' in french
|
||||
e (_
|
||||
|
||||
// Manage mute e inside words
|
||||
@C) e (CeCA @
|
||||
@L08) e (CA
|
||||
@L08) e (CL10C @
|
||||
@L08) e (L06
|
||||
@L08) e (L06L10C @
|
||||
@L06) e (CA @
|
||||
@L06) e (L06 @
|
||||
@L07) e (CA @
|
||||
@L07) e (L06 @
|
||||
@L09gu) e (CA @
|
||||
@L09gu) e (L06 @
|
||||
@L09qu) e (CA @
|
||||
@L09qu) e (L06 @
|
||||
e (ct+++++ E
|
||||
e (x+++++ E
|
||||
|
||||
_C) e (_ @ // je te
|
||||
-c) e (_
|
||||
-j) e (_
|
||||
C) e (-
|
||||
|
||||
e (Ce_ E
|
||||
eau o // bateau
|
||||
g) ea (s_ a // mangeas
|
||||
cap) e (la_ e
|
||||
gh) e (tAX e // spagheti
|
||||
j) e (a // Jean Jeanne
|
||||
p) ect (_ E2 // suspect
|
||||
_) e (CAN e // Evident
|
||||
_) e (L06A e // Ecran
|
||||
_eC) e (CA++ E // Evenement
|
||||
eau (++ o // bateau
|
||||
e (CC E
|
||||
cap) e (la_ E
|
||||
gh) e (tAX E // spagheti
|
||||
p) ect (_ E // suspect
|
||||
ect (_ Ekt // direct
|
||||
pi) ed (_ e // pied
|
||||
_art) e (++ e // arte, artefact
|
||||
_cl) ef (_ e // clef
|
||||
_cr) e (at e
|
||||
_) ein (K En // Einstein
|
||||
ein (K E~ // peindre
|
||||
pl) ein (_ E~n2 // plein emploi
|
||||
e (il E // vieille
|
||||
ei E // neige
|
||||
eoi wa // asseoir
|
||||
ell El // selle
|
||||
el (K El // celsius, caramel
|
||||
e (oi // asseoir
|
||||
el (l E // belle
|
||||
_f) em (me a // femme
|
||||
i) e (mA // remerciement, d�ploiement
|
||||
e (ro_ e // Cicero
|
||||
A) e (rA // remerciera
|
||||
tch) e (rX W
|
||||
@) em (me a // patiemment
|
||||
em (b A~ // décembre
|
||||
em (L11 A~ // décembre
|
||||
em (mACC A~ // emmancher
|
||||
em (mACAC A~ // emmagasiner
|
||||
em (ma E2 // emmanuel
|
||||
em (ma E // emmanuel
|
||||
em (mai A~ // emmailloter
|
||||
l) em (n a // solemnel
|
||||
il) emn Em // dilemne
|
||||
em (p A~
|
||||
en (_ A~n2 // en
|
||||
en (hA A~n // enharmonique
|
||||
_C) en (j E~ // benjamin
|
||||
@@ -440,7 +473,7 @@ s_couv) en (t_ // elles couvent
|
||||
_hiv) er (X Er // hiver
|
||||
Cst) er (X Er // hamster
|
||||
_cart) er (X Er // carter
|
||||
_cutt) er (X Er // cutter
|
||||
_cutt) er (X Wr // cutter
|
||||
tain) er (X Er // container
|
||||
_ti) er (_ Er
|
||||
ack) er (K Wr
|
||||
@@ -467,6 +500,7 @@ s_couv) en (t_ // elles couvent
|
||||
Am) es (nA e // Dumesnil
|
||||
|
||||
d) esh (A ez // Deshormeaux
|
||||
f) eb (vA E // Lefebvre
|
||||
|
||||
_r) e (ss @ // ressembler
|
||||
_r) e (ssu e // ressusciter
|
||||
@@ -477,13 +511,14 @@ s_couv) en (t_ // elles couvent
|
||||
|
||||
dg) et (_ Et // Bridget, gadget
|
||||
k) et (_ Et
|
||||
tick) et (_ E2
|
||||
tick) et (_ E
|
||||
m) et (_ Et2
|
||||
|
||||
eu Y // eu
|
||||
eu (CX W // neuf
|
||||
eu (CeX W // fleuve
|
||||
eu (Cer_ Y // pleurer
|
||||
eu (i W // feuille
|
||||
eu (CeX Y // meule
|
||||
eu (reX W // demeure
|
||||
gu) eu (leX W // gueule
|
||||
@@ -494,82 +529,46 @@ gu) eu (ler Y // gueuler
|
||||
|
||||
_) eut (_ yt2
|
||||
eut (_ Yt2
|
||||
_) extra (uP5 E2kstra
|
||||
_) extra (CP5 E2kstra
|
||||
eux (_ Yz2
|
||||
_) extra (uP5 Ekstra
|
||||
_) extra (CP5 Ekstra
|
||||
_) eû y // eût
|
||||
eû Y: // jeûne
|
||||
|
||||
ey (_ E2 // dahomey
|
||||
ey (C E2 // ceylan
|
||||
ey (_ E // dahomey
|
||||
ey (C E // ceylan
|
||||
ey Ej // asseye
|
||||
|
||||
ez (_ ez2 // nez mangez chez
|
||||
|
||||
g) e (A // mangeons
|
||||
g) eu Y // vengeur
|
||||
g) eu W // vengeur
|
||||
g) eu (re y // gageure
|
||||
|
||||
_d) e (ch @
|
||||
_r) e (ch @ // recherche
|
||||
e (Cl @
|
||||
|
||||
_l) e (xA E2
|
||||
_m) e (xA E2
|
||||
_l) e (CA @
|
||||
_l) e (ChA @
|
||||
_l) e (ClA @ // Leclerc
|
||||
tr) e (CA @
|
||||
tr) e (ChA @
|
||||
|
||||
e (CC E // infect pelle mettre
|
||||
e (Cr @
|
||||
_) e (C% e // effet, effectuer
|
||||
e (C_ E
|
||||
e (t_ E2
|
||||
e (rC E
|
||||
es (_ z2
|
||||
|
||||
%C) e (xA E2
|
||||
|
||||
@gu) e (CA
|
||||
@gu) er (A r
|
||||
@qu) e (CA
|
||||
@qu) er (A r
|
||||
_qu) e (CA @
|
||||
@L06gu) e (CA @
|
||||
@L06qu) e (CA @
|
||||
@C) e (CA
|
||||
@C) e (li @
|
||||
@ch) e (li @
|
||||
@C) er (A r
|
||||
@C) e (rion++ @
|
||||
@C) e (riez++ @
|
||||
@ch) e (CA
|
||||
@ch) er (A r
|
||||
L06ch) e (CA @
|
||||
@L06C) e (CA @
|
||||
@CL06) e (CA @
|
||||
@bC) e (CA @
|
||||
@ct) e (CA @
|
||||
%C) e (CA++
|
||||
%C) er (A++ r
|
||||
@C) e (xA++ E2
|
||||
@c) e (v++ @
|
||||
@d) e (v++ @
|
||||
|
||||
@C) e (CrA
|
||||
@ch) e (CrA
|
||||
@L06ch) e (CrA @
|
||||
@L06C) e (CrA @
|
||||
@L06C) e (rrA E
|
||||
@CL06) e (CrA @
|
||||
%C) e (CrA++
|
||||
e (ri_++ e
|
||||
e (ria_++ e
|
||||
e (ro_++ e // Cicero
|
||||
e (rr+++ E
|
||||
|
||||
e @ // menue
|
||||
_) e (CA e
|
||||
_) e (xC++ E2
|
||||
Cr) eam Im
|
||||
Cr) eam I:m
|
||||
Cr) eamer ImWr
|
||||
Cl) eaner InWr
|
||||
vert) e (rX W
|
||||
@@ -580,26 +579,23 @@ gu) eu (ler Y // gueuler
|
||||
|
||||
|
||||
// group e: English section
|
||||
eac _^_en
|
||||
C) ead _^_en // read, head
|
||||
eak _^_en // break, speak
|
||||
eal _^_en // deal
|
||||
ear _^_en // ear, search
|
||||
eas _^_en // please
|
||||
eave _^_en // leave
|
||||
ea _^_en
|
||||
e (CeX _^_en
|
||||
ed (_ _^_en
|
||||
ee _^_en // meeting
|
||||
efore (_ _^_en // before
|
||||
eing (_ _^_en // being, boeing
|
||||
eive _^_en // receive
|
||||
eld (_ _^_en // field
|
||||
el (CX _^_en // field
|
||||
el (sX El
|
||||
_) enter (_ _^_en // enter
|
||||
_) enhan _^_en
|
||||
qu) est (_ _^_en // request
|
||||
qu) este (X_ _^_en // requested, requester
|
||||
_) even (X _^_en // forever, however
|
||||
_) ever _^_en // forever, however
|
||||
_) even (K _^_en
|
||||
_) ever _^_en
|
||||
oC) ever _^_en // forever, however
|
||||
ew (++ _^_en
|
||||
_) eye _^_en
|
||||
|
||||
|
||||
@@ -636,6 +632,8 @@ gu) eu (ler Y // gueuler
|
||||
.group g
|
||||
g g
|
||||
g (Y Z
|
||||
ge (a Z
|
||||
ge (o Z
|
||||
|
||||
su) gg (Y gZ // suggérer suggestif
|
||||
gg g // agglomérer
|
||||
@@ -683,6 +681,7 @@ _quatrevin) gts (_ z2
|
||||
// group g: English section
|
||||
_) game (X _^_en
|
||||
girl _^_en // girl
|
||||
gh (K _^_en
|
||||
gy (_ _^_en
|
||||
|
||||
|
||||
@@ -732,7 +731,7 @@ _quatrevin) gts (_ z2
|
||||
|
||||
// group h: English section
|
||||
_) half _^_en
|
||||
here (_ _^_en // here
|
||||
_) ha (C_ _^_en
|
||||
|
||||
|
||||
.group i
|
||||
@@ -751,11 +750,8 @@ _quatrevin) gts (_ z2
|
||||
or) ien (t iA~ // orient, orienter
|
||||
ot) ien (t_ jA~ // quotient
|
||||
|
||||
i (e_ i
|
||||
_) i (ce@ aj // iceberg
|
||||
_) ill il // illégal
|
||||
ill (_ il // Bill
|
||||
_C) ill (y_ il // Billy
|
||||
_) il (l i // illégal
|
||||
aigu) ill ij // aiguille
|
||||
anqu) ill il // tranquille
|
||||
c) ill (i il
|
||||
@@ -776,17 +772,14 @@ _quatrevin) gts (_ z2
|
||||
imm imm // immaculé
|
||||
im (_ im // karim
|
||||
im (C E~ // timbre
|
||||
w) in in // winrar
|
||||
inct (_ E~ // distinct
|
||||
in (h in // inhumain
|
||||
in (kX iN // link
|
||||
in (n i // innombrable
|
||||
in (C E~ // vingt
|
||||
in (_ E~ // vin
|
||||
ing (_ iN
|
||||
// ing (_ iN
|
||||
ing (h ing
|
||||
ing (s iN
|
||||
ing (to iN
|
||||
_) infra (sP5 E~fra
|
||||
_) inter (@@P5 E~tEr
|
||||
_) interr (A E~tEr
|
||||
@@ -810,13 +803,17 @@ _quatrevin) gts (_ z2
|
||||
ibuter (X _^_en
|
||||
iev _^_en
|
||||
ife (_ _^_en
|
||||
igh _^_en
|
||||
ign (_ _^_en
|
||||
ill (_ _^_en // Bill
|
||||
C) ill (y_ _^_en // Billy
|
||||
ing (_ _^_en
|
||||
C) irt (_ _^_en
|
||||
iven (_ _^_en
|
||||
ind (X _^_en // find, mind
|
||||
_C) ind (erX _^_en // finder
|
||||
AC) ind (erX _^_en // reminder
|
||||
ize (X _^_en // realize
|
||||
_bAl) i (ze i
|
||||
C) ird (X _^_en // bird
|
||||
ize (K _^_en // realize
|
||||
ram_f) i (le _^_en
|
||||
|
||||
.group ï
|
||||
@@ -833,6 +830,7 @@ _quatrevin) gts (_ z2
|
||||
|
||||
.group j
|
||||
j Z // adjoint joujoux
|
||||
je (a Z // Jean
|
||||
_) j' (P2v Z
|
||||
_) jazz dZaz
|
||||
_) j (obK dZ
|
||||
@@ -849,10 +847,11 @@ _quatrevin) gts (_ z2
|
||||
ke (s_ _^_en // makes, takes
|
||||
ke (rX _^_en // maker
|
||||
ke (nX _^_en // taken
|
||||
AC) k (X _^_en // bank
|
||||
|
||||
.group l
|
||||
l l // lit
|
||||
ll l // aller
|
||||
ll (A l // aller
|
||||
_) l' (P2 l
|
||||
au) lt // hérault
|
||||
uCi) l (_ // outil, fusil
|
||||
@@ -862,10 +861,15 @@ _quatrevin) gts (_ z2
|
||||
_) lorsqu' (P7 lorsk
|
||||
|
||||
// group l: English section
|
||||
ld (_ _^_en // could
|
||||
less (_ _^_en // noiseless
|
||||
%C) l (eX _^_en
|
||||
ff) l (eX l
|
||||
pp) l (eX l
|
||||
_) line (X _^_en
|
||||
_) live _^_en
|
||||
@) loud (_ _^_en
|
||||
ll (X _^_en
|
||||
AC) l (X _^_en
|
||||
|
||||
|
||||
.group m
|
||||
@@ -877,8 +881,9 @@ _quatrevin) gts (_ z2
|
||||
master (_S6 mastWr
|
||||
|
||||
// group m: English section
|
||||
_) mail (_ _^_en // mailer
|
||||
mov (ieX _^_en // move, movy
|
||||
m (n_ _^_en // column, autumn
|
||||
mov (AX _^_en // move, movy
|
||||
mov (ie_ _^_en // move, movy
|
||||
|
||||
|
||||
.group n
|
||||
@@ -894,19 +899,23 @@ _quatrevin) gts (_ z2
|
||||
_) neuro (@@P5 nYro
|
||||
_) nvda (P4 Envedea
|
||||
|
||||
// group n: English section
|
||||
_) name _^_en
|
||||
_re) name _^_en
|
||||
n (eme_ _^_en
|
||||
n (emes_ _^_en
|
||||
|
||||
|
||||
.group o
|
||||
br) oc (_ o // broc
|
||||
cr) oc (_ o // escroc
|
||||
ls) on (_ On
|
||||
Cst) on (_ On
|
||||
_) os (_ Os
|
||||
_) os (_++ Os
|
||||
_v) os (gY o
|
||||
s_) os (_ o
|
||||
x_) os (_ o
|
||||
o (t_ o
|
||||
|
||||
oe (ll wa // moelleux
|
||||
oe (llA wa // moelleux
|
||||
oe (i W // oeil
|
||||
_) oe (C Y // oesophage
|
||||
_ph) oe (C e // phoetus
|
||||
@@ -921,8 +930,7 @@ _quatrevin) gts (_ z2
|
||||
oin (_ wE~ // coin
|
||||
oi wa // poil
|
||||
oê (l wa // poêle
|
||||
om (b O~ // bombe
|
||||
om (p O~ // trompe
|
||||
om (L11 O~ // bombe, pompe
|
||||
n) om (X O~ // nom
|
||||
om (_ Om // www.web.com
|
||||
|
||||
@@ -937,10 +945,6 @@ _quatrevin) gts (_ z2
|
||||
_) on (z _|O~ // onze, onzième
|
||||
|
||||
_c) on (_ O~ // no comment
|
||||
ps) on (_ On // Epson
|
||||
gt) on (_ On // Washington
|
||||
Cst) on (_ On
|
||||
ps) on (_ On
|
||||
_C) on (_ O~n2 // mon appui, mon histoire, mon havre
|
||||
|
||||
alc) oo (l O // alcool
|
||||
@@ -969,7 +973,10 @@ _quatrevin) gts (_ z2
|
||||
o (_ o // zorro allégro
|
||||
gr) oss os // grosse, grossir
|
||||
|
||||
C) o (sA o // position
|
||||
C) o (me_ o // atome, chrome
|
||||
_C) o (me_ O // Rome tome
|
||||
o (sA o // position
|
||||
o (zA o // Mozilla
|
||||
o (CC O // poste, votre
|
||||
o O
|
||||
|
||||
@@ -979,8 +986,13 @@ _quatrevin) gts (_ z2
|
||||
oa (s_ oa
|
||||
oa (CerX _^_en
|
||||
oach _^_en
|
||||
old (er_ _^_en // folder, older
|
||||
oes _^_en
|
||||
_) of (X _^_en
|
||||
o (lder_ _^_en // folder, older
|
||||
_) o (rder_ _^_en // order
|
||||
C) oing (_ _^_en // going
|
||||
gt) on (_ _^_en
|
||||
Cst) on (_ _^_en
|
||||
oo (Ce _^_en // boomer
|
||||
oo (k _^_en // book, cook
|
||||
oo (st _^_en // booster
|
||||
@@ -992,7 +1004,7 @@ _quatrevin) gts (_ z2
|
||||
_sC) ot _^_en // shot, slot, spot
|
||||
ow (e _^_en // flower, power
|
||||
ow (X _^_en
|
||||
oy (X _^_en // boy, toy
|
||||
_C) oy (X _^_en // boy, toy
|
||||
|
||||
|
||||
.group ô
|
||||
@@ -1005,11 +1017,11 @@ _quatrevin) gts (_ z2
|
||||
_) para (pCP4 para
|
||||
_) photo (@P5 foto
|
||||
_) poly (@P4 poli
|
||||
_) post (KP4 post
|
||||
_) post (CP4 post
|
||||
_) post (ACCP4 post
|
||||
_) pseudo (@P6 psYdo
|
||||
p (p // appliquer
|
||||
pays pE2iz2 // pays, paysage
|
||||
pays pEiz2 // pays, paysage
|
||||
ph f // phrase
|
||||
|
||||
m) ps (_ // temps champs
|
||||
@@ -1076,7 +1088,6 @@ _quatrevin) gts (_ z2
|
||||
|
||||
// group r: English section
|
||||
_) real _^_en
|
||||
resen _^_en
|
||||
rst (_ _^_en
|
||||
_) rule _^_en
|
||||
|
||||
@@ -1175,13 +1186,19 @@ _cACpu) s (_ s
|
||||
_tou) s (_leurs_
|
||||
|
||||
// group s: English section
|
||||
CA) sh (_ _^_en // punish
|
||||
send (_ _^_en
|
||||
sh (_ _^_en
|
||||
sh (Ap _^_en // shop, ship
|
||||
sh (At _^_en // shut, shot
|
||||
_) side (X+++ _^_en
|
||||
L14) side (X+++ _^_en
|
||||
_) sky _^_en
|
||||
_) smil _^_en // smile, smiley
|
||||
spy _^_en
|
||||
_A) s (_ _^_en
|
||||
L13) son (_ _^_en
|
||||
L13) ston (_ _^_en
|
||||
stone (_ _^_en
|
||||
|
||||
|
||||
.group t
|
||||
@@ -1194,7 +1211,9 @@ _cACpu) s (_ s
|
||||
VCi) t (_ t2
|
||||
t (_
|
||||
peti) t (_ t2
|
||||
_) th t // thon
|
||||
th (L12++ t
|
||||
or) th (++ t
|
||||
_) th (erm t
|
||||
ts (_S1 z2 // silent at end of word unless next word starts with a vowel
|
||||
C) t (_ t // compost watt soft script malttact abrupt
|
||||
ki) t (_ t // kit
|
||||
@@ -1284,13 +1303,13 @@ _cACpu) s (_ s
|
||||
_transA) t (_ t
|
||||
|
||||
// group t: English section
|
||||
C) th (_ _^_en // month
|
||||
_) th (eX _^_en // the, then
|
||||
_) th (aX _^_en // than, that
|
||||
th (A _^_en // this
|
||||
th (K _^_en // month
|
||||
_) time _^_en
|
||||
tle (_ _^_en
|
||||
too _^_en
|
||||
ttl _^_en
|
||||
g) ton (_ _^_en // try, country
|
||||
try (_ _^_en // try, country
|
||||
sCar) t (_ _^_en // smart, start
|
||||
sCar) t (er_ _^_en // starter
|
||||
@@ -1299,34 +1318,30 @@ _transA) t (_ t
|
||||
|
||||
.group u
|
||||
u y // cruel nuage brut
|
||||
ue (il W // orgueil
|
||||
ui yi // nuit, fuite
|
||||
uin (K yE~ // juin
|
||||
_s) u (rfX W
|
||||
_C) u (rfX W
|
||||
_bl) u (ff W
|
||||
_s) u (rfeX W
|
||||
uy (A yij
|
||||
|
||||
C) ucci utSi // capuccino
|
||||
c) ueill Wj // cueillir
|
||||
c) ueil (_ Wj // recueil
|
||||
_g) ua wa
|
||||
ag) ua (X wa
|
||||
Ctig) ua (_ wa
|
||||
_c) ul (_ y
|
||||
_) ultra (P5 yltra
|
||||
g) u (ay u
|
||||
g) ueill Wj // orgueilleux
|
||||
haïk) u (X u
|
||||
|
||||
C) u (bX W // hub, club
|
||||
C) u (gX W // bug, mug
|
||||
_n) u (rse W // nurse
|
||||
r) u (nX W // run, autorun
|
||||
pr) unt (_ W~ // emprunt
|
||||
um (_ Om // album
|
||||
f) um (_ W~ // parfum
|
||||
um (b W~ // humble
|
||||
um (p W~
|
||||
um (L11 W~ // humble
|
||||
un (C W~ // emprunt lundi
|
||||
un (n y // tunnel
|
||||
CC) un (_ W~ // brun
|
||||
@@ -1341,10 +1356,14 @@ _transA) t (_ t
|
||||
uz (z W
|
||||
|
||||
// group u: English section
|
||||
ual (_ _^_en // usual
|
||||
uch (_ _^_en // much
|
||||
_b) usi _^_en // business, businessman
|
||||
C) ui (ce _^_en // produice, juice
|
||||
C) ult (_ _^_en
|
||||
umber (_ _^_en
|
||||
ump (_ _^_en
|
||||
r) u (nX _^_en // run, autorun
|
||||
unch _^_en
|
||||
under _^_en // under, understand, thunder
|
||||
_C) un (_ _^_en
|
||||
@@ -1353,6 +1372,7 @@ _transA) t (_ t
|
||||
up (_ _^_en // setup
|
||||
urn (X _^_en // burn, turn
|
||||
ust (_ _^_en // just, trust
|
||||
uzz _^_en // buzz
|
||||
|
||||
|
||||
.group ü
|
||||
@@ -1378,19 +1398,19 @@ _transA) t (_ t
|
||||
.group w
|
||||
w w
|
||||
_) w (A _|w
|
||||
w (ag v // wagon
|
||||
wa (ve_ wE:j // wave
|
||||
wa (re_ wE: // hardware software
|
||||
w (ag++ v // wagon
|
||||
|
||||
// group w: English section
|
||||
e) w (K _^_en
|
||||
_) wan _^_en
|
||||
_) w (AC _^_en
|
||||
_) w (ina w
|
||||
_) w (Ai _^_en
|
||||
_) w (ACo w
|
||||
_) we _^_en
|
||||
wh _^_en // why whisky when
|
||||
wr _^_en // write
|
||||
war _^_en // war
|
||||
wav _^_en // wave
|
||||
way _^_en // way, away
|
||||
_) wir _^_en // wire
|
||||
winn _^_en // winner
|
||||
wise _^_en
|
||||
with _^_en
|
||||
wor _^_en
|
||||
|
||||
|
||||
@@ -1432,13 +1452,19 @@ _transA) t (_ t
|
||||
_) yacht _^_en // yacht, yachtman
|
||||
|
||||
_) yahoo (P5 ja'u
|
||||
ym (K E~ // tympan
|
||||
y (nn i
|
||||
y (nA i
|
||||
ym (L11 E~ // tympan
|
||||
X) ys (_ is
|
||||
yx (_ iks
|
||||
|
||||
yn E~ // laryngite
|
||||
yn (K E~ // laryngite
|
||||
y (nn i
|
||||
|
||||
// group y: English section
|
||||
_C) y (_ _^_en
|
||||
C) y (e_ _^_en
|
||||
%C) y (_ _^_en
|
||||
//@CAC) y (_ _^_en
|
||||
nC) y (_ _^_en
|
||||
yze _^_en
|
||||
|
||||
|
||||
.group z
|
||||
@@ -1466,6 +1492,7 @@ _transA) t (_ t
|
||||
$ dOlar
|
||||
° d@gre
|
||||
_n_) ° // n°
|
||||
' (C _^_en
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -172,6 +172,29 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
|
||||
फ़ f@
|
||||
य़ j@
|
||||
|
||||
// combining vowel signs
|
||||
ा #X2a:
|
||||
ि #X1I
|
||||
ी #X2i:
|
||||
ु #X1U
|
||||
ू #X2u:
|
||||
ृ #X1rI
|
||||
ॄ #X1rI
|
||||
ॅ #X1E
|
||||
ॆ #X1e
|
||||
े #X2e:
|
||||
ै #X2E:
|
||||
?2 ै #X2aI
|
||||
ॉ #X1O
|
||||
ॊ #X1o
|
||||
ो #X2o:
|
||||
ौ #X2O:
|
||||
?3 ौ #X2aU
|
||||
ॢ #X1l-
|
||||
ॣ #X2l-:
|
||||
ॐ #X1o~m
|
||||
|
||||
|
||||
// Punctuation
|
||||
। dVn.d.V
|
||||
|
||||
|
||||
+58
-12
@@ -28,7 +28,6 @@ _9X kilEntsvEn
|
||||
_0C sa:z
|
||||
|
||||
_0M1 EzER2
|
||||
_1M1 EzER2
|
||||
_2M1 ke:tEzER2
|
||||
_0M2 millio:
|
||||
_1M2 EJmillio:
|
||||
@@ -129,15 +128,15 @@ _#-től e:tY:l $alt2
|
||||
_#-tól a:to:l $alt2
|
||||
_#-ig e:ig $alt2 //special date ordinal numbers for example elsejéig, negyedikéig etc.
|
||||
_#-éről e:R2Y:l
|
||||
_#-áról a:R2o:l $alt2
|
||||
_#-áról a:R2o:l
|
||||
|
||||
_#-ától a:to:l $alt2
|
||||
_#-ától a:to:l
|
||||
_#-ről e:R2Y:l $alt2
|
||||
_#-ról a:R2o:l $alt2
|
||||
_#-ével e:vEl $alt2
|
||||
_#-ával a:vAl $alt2
|
||||
_#-éig e:ig $alt2
|
||||
_#-áig a:ig $alt2
|
||||
_#-ével e:vEl
|
||||
_#-ával a:vAl
|
||||
_#-éig e:ig
|
||||
_#-áig a:ig
|
||||
_#-étől e:tY:l $alt2
|
||||
_#-ét e:t $alt2
|
||||
_#-át a:t $alt2
|
||||
@@ -168,8 +167,8 @@ _#-ához a:hoz
|
||||
(1-ig) elsejéig $text $alt2
|
||||
(1-éről) elsejéről $text $alt2
|
||||
(1-ről) elsejéről $text $alt2
|
||||
(1-ével) elsejével $text $alt2
|
||||
(1-éig) elsejéig $text $alt2
|
||||
(1-ével) elsejével $text
|
||||
(1-éig) elsejéig $text
|
||||
(1-étől) elsejétől $text $alt2
|
||||
(1-ét) elsejét $text $alt2
|
||||
(1-je) elseje $text $alt2
|
||||
@@ -188,6 +187,8 @@ _#-ához a:hoz
|
||||
(1-éhez) elsejéhez $text $alt2
|
||||
(2-i) másodikai $text $alt2
|
||||
(2-ig) másodikáig $text $alt2
|
||||
(2-étől) másodikától $text $alt2 //this is not mistake, don't change!
|
||||
(2-től) másodikától $text $alt2 //this is not a mistake, don't change!
|
||||
(3-i) hAR2_mAdikAi $alt2
|
||||
(3-ig) harmadikáig $text $alt2
|
||||
(6-i) hAtodikAi $alt2
|
||||
@@ -238,6 +239,7 @@ _#-ához a:hoz
|
||||
(2-őn) kEt:Y:n
|
||||
(2-n) kEt:Y:n
|
||||
(2-m) kEt:Y:m
|
||||
(2-el) kEt:Y:vEl
|
||||
// entries with a single digit such as (2-i) also apply to 22, 32, etc, unless $only
|
||||
(30-cal) hAR2mints:Al
|
||||
(3-al) ha:R2om:Al
|
||||
@@ -294,6 +296,18 @@ _20e hus
|
||||
(80-al) n^oltsvAn:Al
|
||||
(90-el) kilEntsvEn:El
|
||||
|
||||
//Special roman number suffixes and exceptions
|
||||
(XVI-ig) tizEnhAtodikig //Special roman number suffix exception
|
||||
(II-el) kEt:Y:vEl
|
||||
(III-al) ha:R2om:Al
|
||||
(IV-el) ne:J:El
|
||||
(5-el) Yt:El //this exception not working, Espeak always spokening YtEl phoneme, but Yt:El phoneme is right
|
||||
(VI-al) hAt:Al
|
||||
(VII-el) he:t:El
|
||||
(VIII-al) n^olts:Al
|
||||
(IX-el) kilEnts:El
|
||||
(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
|
||||
január $alt
|
||||
február $alt
|
||||
@@ -346,6 +360,8 @@ tavaszi $alt
|
||||
nyári $alt
|
||||
őszi $alt
|
||||
téli $alt
|
||||
végén $alt
|
||||
elején $alt
|
||||
|
||||
// accent names
|
||||
_lig ligAtu:R2A
|
||||
@@ -403,7 +419,7 @@ BAR bAR2 $allcaps
|
||||
|
||||
(a . m .) An^n^i||m'int
|
||||
ún u:JnEvEzEt: $hasdot
|
||||
dr doktoR2 $dot
|
||||
dr doktoR2 $hasdot
|
||||
mr mistER2 $hasdot //in hungarian we not use, but lot of books contains this word.
|
||||
mrs misis $hasdot //In hungarian we not use, but lot of book contains this word.
|
||||
miss mis: $hasdot
|
||||
@@ -413,7 +429,7 @@ MB mEgAba:jt $allcaps
|
||||
OK ok $allcaps
|
||||
mvgyosz Emve:Je:oEs
|
||||
OTP o:te:pe: $allcaps
|
||||
id idY:SEb: $hasdot
|
||||
id idY:SEb: $hasdot $only
|
||||
ill illEtvE $hasdot
|
||||
ifj ifjAb: $hasdot
|
||||
mta $abbrev
|
||||
@@ -1007,6 +1023,36 @@ halt $unstressend
|
||||
ész $unstressend
|
||||
kapta $unstressend
|
||||
kaptak $unstressend
|
||||
kék $unstressend
|
||||
kelt $unstressend
|
||||
kárt $unstressend
|
||||
gróf $unstressend
|
||||
grófot $unstressend
|
||||
lakik $unstressend
|
||||
laknak $unstressend
|
||||
laktak $unstressend
|
||||
kapsz $unstressend
|
||||
tudta $unstressend
|
||||
kapnak $unstressend
|
||||
tért $unstressend
|
||||
törtek $unstressend
|
||||
tört $unstressend
|
||||
vész $unstressend
|
||||
park $unstressend
|
||||
tartja $unstressend
|
||||
válik $unstressend
|
||||
rajta $unstressend
|
||||
merült $unstressend
|
||||
zuhant $unstressend
|
||||
jöttek $unstressend
|
||||
leltem $unstressend
|
||||
múlva $unstressend
|
||||
várta $unstressend
|
||||
ház $unstressend
|
||||
állnak $unstressend
|
||||
idején $unstressend
|
||||
néznek $unstressend
|
||||
érezte $unstressend
|
||||
|
||||
// word pairs
|
||||
|
||||
@@ -1045,7 +1091,7 @@ kell $unstressend // should
|
||||
|
||||
szabad $u+ // can (allowed)
|
||||
|
||||
fog $u+ // going to
|
||||
fog $unstressend // going to
|
||||
fogok $u+
|
||||
fogsz $u+
|
||||
fogunk $u+
|
||||
|
||||
+44
-14
@@ -83,6 +83,9 @@ gyümöl) cs (zs tS
|
||||
fil) c (csiz ts
|
||||
szo) c (segély ts
|
||||
_kó) c (csomó ts
|
||||
árbó) c (csúcs ts
|
||||
árbo) c (csúcs ts
|
||||
fegyen) c (csoport ts
|
||||
|
||||
.group ch
|
||||
anar) ch (i h
|
||||
@@ -208,12 +211,15 @@ menetren) dsz (erű d|s
|
||||
va) d (szeder d
|
||||
twee) d (sapk d
|
||||
fe) dd (hetetlen d
|
||||
ezre) d (segé d
|
||||
erő) d (szerű d
|
||||
csalá) d (szociol d
|
||||
száza) d (szemle d
|
||||
zöl) d (szem d
|
||||
|
||||
ezre) d (segé d
|
||||
erő) d (szerű d
|
||||
csalá) d (szociol d
|
||||
száza) d (szemle d
|
||||
zöl) d (szem d
|
||||
utó) d (jelöl d
|
||||
cselé) ds (ég tS:
|
||||
föl) d (szegély d
|
||||
stran) d (szezon d
|
||||
|
||||
.group dz
|
||||
fogó) dz (kod ts
|
||||
@@ -250,9 +256,11 @@ titkoló) dz z
|
||||
ringató) dz z
|
||||
mére) dz (k ts
|
||||
pilóta) dzs (ek dZ
|
||||
ezre) dz (ene d|z
|
||||
száza) dz (ene d|z
|
||||
honvé) dz (ászló d|z
|
||||
ezre) dz (ene d|z
|
||||
száza) dz (ene d|z
|
||||
honvé) dz (ászló d|z
|
||||
smarag) dz (öld d|z
|
||||
kapáló) dz z
|
||||
|
||||
.group e
|
||||
e E
|
||||
@@ -261,7 +269,7 @@ honvé) dz (ászló d|z
|
||||
|
||||
_) ehhez EhEz
|
||||
_) egyezség EJ:ESSe:g
|
||||
|
||||
_) egyezségg EJ:ESSe:g:
|
||||
|
||||
.group é
|
||||
é e:
|
||||
@@ -410,6 +418,13 @@ tizene) gy (en J:
|
||||
_e) gy (év J:
|
||||
_e) gy (órá J:
|
||||
_e) gy (se J
|
||||
je) gy (ezte J
|
||||
na) gy (sebes J
|
||||
_í) gys (e J|S
|
||||
na) gy (siker J
|
||||
huszone) gy (edik J:
|
||||
je) gy (ért J
|
||||
harmince) gy (edik J:
|
||||
|
||||
.group h
|
||||
h h
|
||||
@@ -461,6 +476,7 @@ tizene) gy (en J:
|
||||
kk k:
|
||||
kk (C k:
|
||||
_) köztársaság k'Ysta:R2SASa:g
|
||||
_) köztársaságg k'Ysta:R2SASa:g:
|
||||
központ kYspont
|
||||
központt kYspont:
|
||||
központj kYsponc
|
||||
@@ -525,7 +541,7 @@ keresztü) l (j l
|
||||
_) e) lj (ár lj
|
||||
ha) ll (ga l
|
||||
_ta) lj (án lj
|
||||
_fé) l (jobb l
|
||||
_fé) l (jobb l
|
||||
|
||||
|
||||
|
||||
@@ -846,6 +862,7 @@ kitöré) ssz (erű Ss
|
||||
nyúva) ssz s:
|
||||
hirdeté) ssz (erve Ss
|
||||
páncélo) ssz Ss
|
||||
hajtá) ssz (erű Ss
|
||||
|
||||
.group sz
|
||||
sz s
|
||||
@@ -1030,7 +1047,7 @@ négyze) t (centi t
|
||||
á) tj (öt t|j
|
||||
á) tj (ön t|j
|
||||
á) t (süvít t
|
||||
bará) tj (ára c:
|
||||
bará) tj (ár c: //barátjára, barátjáról words need spokening c: phoneme
|
||||
kísérle) t (sorozat t
|
||||
á) t (sült t
|
||||
á) t (süt t
|
||||
@@ -1084,7 +1101,19 @@ fejeze) t (cím t
|
||||
pán) t (szél t
|
||||
boo) t (sorrend t
|
||||
_á) t (jöj t
|
||||
ú) tsz (oros t|s
|
||||
ú) tsz (oros t|s
|
||||
művele) t (sáv t
|
||||
_ké) t (szob t
|
||||
ne) t (sátor t
|
||||
há) tj (ár c:
|
||||
ker) t (szomszéd t
|
||||
éle) t (járadék t
|
||||
_á) t (sodor t
|
||||
par) t (sáv t
|
||||
tes) t (játék t
|
||||
ö) t (jegyű t
|
||||
ha) t (jegyű t
|
||||
hé) t (jegyű t
|
||||
|
||||
.group ts
|
||||
ts (_S2 tS //general rule with word end of ts letters
|
||||
@@ -1171,6 +1200,7 @@ indula) tsz (ó t|s
|
||||
sie) tsz ts:
|
||||
szemé) ts (ég tS:
|
||||
ré) ts (ég tS:
|
||||
já) tsz (ok ts:
|
||||
|
||||
.group u
|
||||
u u
|
||||
@@ -1242,7 +1272,7 @@ lefeje) z (ték s
|
||||
gá) z (cső z
|
||||
|
||||
|
||||
ké) z (sz zz
|
||||
ké) z (sz z
|
||||
há) z (so z
|
||||
|
||||
|
||||
|
||||
@@ -108,7 +108,6 @@ _8X t'Axt@x
|
||||
_9X n'e:g@nt@x
|
||||
_0C h'OndErt
|
||||
_0M1 d'WyzEnt
|
||||
_1M1 d'WyzEnt
|
||||
_0M2 m'iljun
|
||||
_0M3 m'iljArt
|
||||
_0M4 b'iljun
|
||||
|
||||
@@ -73,7 +73,6 @@ _8X otS'enta
|
||||
_9X nob'enta
|
||||
_0C sj'en
|
||||
_0M1 m'il
|
||||
_1M1 m'il
|
||||
_0M2 mi'on
|
||||
_dpt _kOma/
|
||||
|
||||
|
||||
+15
-2
@@ -33,6 +33,20 @@ U+bcd ot.RU
|
||||
|
||||
ஏ je:
|
||||
|
||||
// combining vowels, precede by a click so they can be distinguished from stand-alone vowels
|
||||
ா #X2a::
|
||||
ி #X1i
|
||||
ீ #X2i::
|
||||
ு #X1u
|
||||
ூ #X2u::
|
||||
ெ #X1e
|
||||
ே #X2e::
|
||||
ை #X2aI
|
||||
ொ #X1o
|
||||
ோ #X2o::
|
||||
ௌ #X2aU
|
||||
|
||||
|
||||
|
||||
// speak Latin letters as English
|
||||
a e:j
|
||||
@@ -151,9 +165,7 @@ _8C ;en.n.u:t.t.Ri
|
||||
_9C tol.l.a:jirVttU
|
||||
|
||||
_0M1x a:jirVm
|
||||
_1M1x a:jirVm
|
||||
_0M1 a:jirVttU
|
||||
_1M1 a:jirVttU
|
||||
|
||||
_0M2x lVd.tSVm // 100,000
|
||||
_1M2x orUlVd.tSVm
|
||||
@@ -234,6 +246,7 @@ tamil தமிழ் $text
|
||||
பலத்தில் $alt
|
||||
பலத்தின் $alt
|
||||
பைக்ல $alt
|
||||
பாவ்லா $alt
|
||||
(பி . ஏ) bije:
|
||||
|
||||
|
||||
|
||||
+12
-2
@@ -242,7 +242,7 @@
|
||||
அப) க (ீர்த்தி k
|
||||
_பால்) க (ுட k
|
||||
_வளை) க (ுட k
|
||||
மன்னார்) க (ுடி k
|
||||
மன்னார்) கு (டி ku2
|
||||
நற்) க (ுண g
|
||||
_சற்) க (ுண g
|
||||
க (ுமார k
|
||||
@@ -281,6 +281,8 @@
|
||||
வி) க்ட (ோரியா kt. // victoria
|
||||
வி) க (்ரம k
|
||||
ஆ) க (்ரோஷ k
|
||||
_கால) க (ட்ட kV
|
||||
_வலை) க (ாப் k
|
||||
//endsort
|
||||
|
||||
|
||||
@@ -388,7 +390,6 @@
|
||||
ிங்) ட (ன் t.V // -ington
|
||||
_) ட (ாக்க t. // talkies
|
||||
_) டிராக்ட (ர t.ira:gt.V
|
||||
_) ட (யர t.V
|
||||
_) ட (ைம்_ t.
|
||||
டெலிப (ோன t.elif
|
||||
_) ட (ம்ப்ளர t.V
|
||||
@@ -404,6 +405,9 @@
|
||||
_) ட (ேப t.
|
||||
_) டாக (்ஸி t.a:k
|
||||
_ல) ட்ட d.d.V#
|
||||
_) ட (யர் t.V
|
||||
_) ட (யரில t.V
|
||||
|
||||
|
||||
.group ண
|
||||
ண n.V
|
||||
@@ -684,6 +688,7 @@ _பார்வ) த (ி t
|
||||
ச) த (்ரு t
|
||||
த) த (்ரூப t
|
||||
பா) த (்ரூம t
|
||||
_கௌ) த (மி tV
|
||||
//endsort
|
||||
|
||||
|
||||
@@ -733,6 +738,7 @@ _பார்வ) த (ி t
|
||||
_) ப (கிரங்க bV
|
||||
_) ப (கிஷ்க bV
|
||||
_) ப (கீர bV
|
||||
_) ப (க்கெட் bV
|
||||
_) பக் (த bVk
|
||||
_) ப (ங்கம bV
|
||||
_) ப (ங்களா bV
|
||||
@@ -790,12 +796,14 @@ _பார்வ) த (ி t
|
||||
_) ப (லூன bV
|
||||
_) ப (வாணி bV
|
||||
_) ப (வானி bV
|
||||
_) பவுண்ட (ன faUn.t.V
|
||||
_) ப (வ்ய bV
|
||||
_) ப (ஸ bV
|
||||
_) ப (ாகங்க b
|
||||
_) ப (ாகத b
|
||||
_) ப (ாகம b
|
||||
_) ப (ாக்கிய b
|
||||
_) ப (ாங்க் b
|
||||
_) ப (ாசு b
|
||||
_) ப (ாசுர p
|
||||
_) ப (ாடி_பில்டிங் b
|
||||
@@ -1062,6 +1070,8 @@ _முகத்தின்_) ப (ாவ b
|
||||
மன) ப்பி (ரமை bb
|
||||
துர்) ப்ப (ோதனை bb
|
||||
கம்) ப்யூட (ர pjU:t.V
|
||||
மென்) ப (ொருள் p
|
||||
வன்) ப (ொருள் p
|
||||
//endsort
|
||||
|
||||
// If ப+ appearing in the middle of a word is followed by ட+
|
||||
|
||||
@@ -113,7 +113,6 @@ _9X doksan
|
||||
_0C jyz
|
||||
_2C 'icijyz
|
||||
_0M1 bIn
|
||||
_1M1 bIn
|
||||
_0M2 miljon
|
||||
_0M3 miljar
|
||||
_dpt _viRg,Yl_|
|
||||
|
||||
+2
-1
@@ -327,4 +327,5 @@
|
||||
.group
|
||||
$ dolar
|
||||
' (Pb // split a word at ' and translate the first part separately.
|
||||
|
||||
ə E // used in Aberbaijan
|
||||
ä E
|
||||
|
||||
+39
-27
@@ -1,4 +1,4 @@
|
||||
64 phoneme tables
|
||||
65 phoneme tables
|
||||
new total
|
||||
base 107 107
|
||||
consonants 9 115
|
||||
@@ -17,17 +17,17 @@ consonants 9 115
|
||||
jbo 2 114
|
||||
nci 3 123
|
||||
fi 40 133
|
||||
fr 55 137
|
||||
fr-ca 11 137
|
||||
hi 58 149
|
||||
ta 20 151
|
||||
fr 58 140
|
||||
fr-ca 11 140
|
||||
hi 59 150
|
||||
ta 21 153
|
||||
hu 24 121
|
||||
lv 29 125
|
||||
nl 24 125
|
||||
pl 20 118
|
||||
sk 28 133
|
||||
cs 6 133
|
||||
hr 26 138
|
||||
hr 25 138
|
||||
mk 3 139
|
||||
sr 14 138
|
||||
it 18 126
|
||||
@@ -55,15 +55,16 @@ consonants 9 115
|
||||
hy 23 117
|
||||
da 24 120
|
||||
rw 15 130
|
||||
ml 13 150
|
||||
ne 18 156
|
||||
pa 14 150
|
||||
ml 13 151
|
||||
ne 18 157
|
||||
pa 14 151
|
||||
prs 8 111
|
||||
sl 7 133
|
||||
gd 6 107
|
||||
bg 10 119
|
||||
nso 8 107
|
||||
ht 11 137
|
||||
ht 11 140
|
||||
az 10 127
|
||||
|
||||
Data file Used by
|
||||
b/b [b] base
|
||||
@@ -341,8 +342,8 @@ l/l_ [l/] base
|
||||
[l/] fr
|
||||
l/l_@ [l/3] base
|
||||
[l/] fr
|
||||
l/l@ [l#] base
|
||||
[€¦] base
|
||||
l/l@ [h&w] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
l/L1_aL [l/] base
|
||||
@@ -367,14 +368,14 @@ l/L2_oL [l/2] base
|
||||
l/L2_uL [l/2] base
|
||||
l/l_3 [l/] de
|
||||
l/l_4 [ll] sq
|
||||
l/la [l#] base
|
||||
[€¦] base
|
||||
l/la [h&w] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
l/l_a [l/3] base
|
||||
[l/] fr
|
||||
l/le [l#] base
|
||||
[€¦] base
|
||||
l/le [h&w] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
l/l_e [l/3] base
|
||||
@@ -383,8 +384,8 @@ l/L_eL_af [&] af
|
||||
[&:] af
|
||||
l/l_front [L] sq
|
||||
l/l_front_ [l/4] sq
|
||||
l/li [l#] base
|
||||
[€¦] base
|
||||
l/li [h&w] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[l] zh
|
||||
@@ -395,15 +396,15 @@ ll/ll [L] bg
|
||||
ll/_ll [L] bg
|
||||
l/l_long [l] base
|
||||
[l] fr
|
||||
l/lo [l#] base
|
||||
[€¦] base
|
||||
l/lo [h&w] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
l/l_o [l/3] base
|
||||
[l/] fr
|
||||
l^/l_rfx [l.] base
|
||||
l/lu [l#] base
|
||||
[€¦] base
|
||||
l/lu [h&w] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
l/l_u [l/3] base
|
||||
@@ -731,6 +732,7 @@ ustop/p_asp [ph] consonants
|
||||
[bh] hi
|
||||
[ph] zh
|
||||
[p#] hy
|
||||
ustop/percus02 [#X2] hi
|
||||
ustop/percus10 [#X1] base
|
||||
ustop/pl [p] base
|
||||
[p-] consonants
|
||||
@@ -834,6 +836,7 @@ vdiph/0i [OI] pt
|
||||
vdiph/0i_2 [OI] en-sc
|
||||
[OI] en-wi
|
||||
[AI] no
|
||||
vdiph2/8@ [U@] en
|
||||
vdiph2/e@ [3:] en-sc
|
||||
[e@] en-sc
|
||||
[e@] en-wi
|
||||
@@ -1047,8 +1050,7 @@ vdiph/@u [u:] en-wm
|
||||
[@U] vi
|
||||
[@:U] vi
|
||||
vdiph/@u_2 [oU] en-rp
|
||||
vdiph/@u_3 [o3] fr
|
||||
[@U] ro
|
||||
vdiph/@u_3 [@U] ro
|
||||
vdiph/@u_en [oU] en
|
||||
[@U] id
|
||||
vdiph/ui [uI] base2
|
||||
@@ -1202,6 +1204,7 @@ vowel/& [a] en-rp
|
||||
[&:] lv
|
||||
[&] sv
|
||||
[&#] da
|
||||
[&] az
|
||||
vowel/0 [0] en
|
||||
[O] hi
|
||||
[O] pt
|
||||
@@ -1238,6 +1241,7 @@ vowel/@_4 [@] en-us
|
||||
[@] no
|
||||
vowel/@_6 [@] en
|
||||
[W] fr
|
||||
[W2] fr
|
||||
vowel/8 [o-] zh
|
||||
vowel/8_2 [U] en-us
|
||||
[8] sv
|
||||
@@ -1343,6 +1347,7 @@ vowel/aa [A] fr-ca
|
||||
[A:] no
|
||||
[aa] zhy
|
||||
[a] hy
|
||||
[a] az
|
||||
vowel/aa# [O] en-us
|
||||
[0] en-wi
|
||||
[a2] fi
|
||||
@@ -1422,7 +1427,6 @@ vowel/e_5 [i] en-sc
|
||||
vowel/e_6 [e] ht
|
||||
vowel/e_8 [E:] de
|
||||
[e] fr
|
||||
vowel/e_9 [E2] fr
|
||||
vowel/ee [E] en-n
|
||||
[E] sv
|
||||
vowel/e_e [E] en-sc
|
||||
@@ -1497,6 +1501,7 @@ vowel/e_mid2 [E] af
|
||||
[E] da
|
||||
[e] bg
|
||||
[e] nso
|
||||
[e] az
|
||||
vowel/@_fnt [@] en-wi
|
||||
[@2] en-wi
|
||||
[@2] hr
|
||||
@@ -1535,7 +1540,6 @@ vowel/i_2 [i2] de
|
||||
[i:] la
|
||||
[i:] sv
|
||||
vowel/i_3 [i] af
|
||||
[I] fr
|
||||
[i:] sk
|
||||
vowel/i_4 [i] fi
|
||||
[i] hu
|
||||
@@ -1605,6 +1609,7 @@ vowel/ii_4 [I2] en
|
||||
vowel/ii_5 [I] la
|
||||
[i] zh
|
||||
[i] bg
|
||||
[i] az
|
||||
vowel/ii_6 [I] en-wm
|
||||
[I] en-wi
|
||||
[I2] en-wi
|
||||
@@ -1683,10 +1688,12 @@ vowel/oe [W] af
|
||||
vowel/oe_2 [W] no
|
||||
vowel/oe_4 [W] sv
|
||||
vowel/o_mid [U@] en-rp
|
||||
[O] fr
|
||||
[o] hu
|
||||
[o] tr
|
||||
[o] ne
|
||||
[o] bg
|
||||
[o] az
|
||||
vowel/o_mid2 [O] fr
|
||||
[O] ht
|
||||
vowel/oo [o] base
|
||||
@@ -1750,7 +1757,6 @@ vowelr/o_r [o@] en-sc
|
||||
vowelr/r-voc [r-] base
|
||||
[r-] sk
|
||||
[r:] sk
|
||||
[r-] hr
|
||||
vowelr/V3_r [VR] en
|
||||
[3] en-sc
|
||||
[@r] zh
|
||||
@@ -1784,15 +1790,18 @@ vowel/u#_4 [U] en-sc
|
||||
[u:] en-sc
|
||||
vowel/u_5 [u] sw
|
||||
[u] nso
|
||||
[u] az
|
||||
vowel/u#_5 [y] vi
|
||||
vowel/u_6 [u:] en-rp
|
||||
[u] ta
|
||||
[u2] ta
|
||||
[u:] ta
|
||||
[U] pt-pt
|
||||
[u] pt-pt
|
||||
[u] ku
|
||||
vowel/u_7 [u] vi
|
||||
vowel/u#_7 [@] tr
|
||||
[@] az
|
||||
vowel/u_bck [u] base2
|
||||
[U] cy
|
||||
[u] fi
|
||||
@@ -1849,6 +1858,7 @@ vowel/V [3] en-sc
|
||||
[@] bg
|
||||
vowel/V_2 [V] en
|
||||
[a] af
|
||||
[V] fr
|
||||
[V] ru
|
||||
[V#] ru
|
||||
[V] ku
|
||||
@@ -1873,6 +1883,7 @@ vowel/y [y] base2
|
||||
[yu] zhy
|
||||
[y] sq
|
||||
[y] da
|
||||
[y] az
|
||||
vowel/y# [Y] base2
|
||||
[3:] en-wm
|
||||
[Y:] de
|
||||
@@ -1888,6 +1899,7 @@ vowel/y_2 [y:] la
|
||||
[y] zh
|
||||
vowel/y#_2 [Y] hu
|
||||
[Y:] sv
|
||||
[W] az
|
||||
vowel/y_3 [y] af
|
||||
vowel/y#_3 [W] is
|
||||
[W:] is
|
||||
|
||||
+2
-1
@@ -99,7 +99,7 @@ tune c3
|
||||
prehead 46 57
|
||||
headenv fall 16
|
||||
head 4 80 30 -5 -15
|
||||
headextend 25 63 38 13 0
|
||||
headextend 0 63 38 13 0
|
||||
nucleus0 fall-rise 75 40
|
||||
endtune
|
||||
|
||||
@@ -122,3 +122,4 @@ headextend 16 82 50 32 16
|
||||
nucleus0 fall 92 8
|
||||
nucleus fall 92 80 76 8
|
||||
endtune
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ endphoneme
|
||||
|
||||
phoneme a // short A
|
||||
vowel starttype #a endtype #a
|
||||
ipa ɐ
|
||||
length 140
|
||||
FMT(vowel/V_2)
|
||||
endphoneme
|
||||
@@ -38,6 +39,7 @@ endphoneme
|
||||
|
||||
phoneme I // short I, Schwa
|
||||
vowel starttype #@ endtype #@
|
||||
ipa ə
|
||||
length 140
|
||||
IF nextPh(r/) THEN
|
||||
Length 190
|
||||
@@ -106,6 +108,7 @@ endphoneme
|
||||
|
||||
phoneme e@ // long E
|
||||
vowel starttype #i endtype #@
|
||||
ipa iə
|
||||
length 230
|
||||
FMT(vdiph/i@_2)
|
||||
endphoneme
|
||||
@@ -121,6 +124,7 @@ endphoneme
|
||||
|
||||
phoneme o@ // long O
|
||||
vowel starttype #u endtype #@
|
||||
ipa ʊə
|
||||
length 250
|
||||
FMT(vdiph2/o@)
|
||||
endphoneme
|
||||
@@ -165,6 +169,7 @@ endphoneme
|
||||
|
||||
phoneme eI
|
||||
vowel starttype #e endtype #i
|
||||
ipa ɛɪ
|
||||
length 170
|
||||
IfNextVowelAppend(;)
|
||||
FMT(vdiph/@i_2)
|
||||
@@ -181,6 +186,7 @@ endphoneme
|
||||
|
||||
phoneme oI
|
||||
vowel starttype #o endtype #i
|
||||
ipa ʊɪ
|
||||
length 290
|
||||
IfNextVowelAppend(;)
|
||||
FMT(vdiph/oi_2)
|
||||
@@ -325,4 +331,3 @@ phoneme c // used in -tjie
|
||||
WAV(ustop/ki)
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ endphoneme
|
||||
|
||||
phoneme a#
|
||||
vowel starttype #@ endtype #@
|
||||
ipa ɐ
|
||||
unstressed
|
||||
length 170
|
||||
FMT(vowel/a#_3)
|
||||
|
||||
@@ -230,13 +230,6 @@ phoneme x
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme r- // syllabic r
|
||||
vowel starttype #@ endtype #@
|
||||
length 240
|
||||
FMT(vowelr/r-voc)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme R
|
||||
import_phoneme base/R
|
||||
endphoneme
|
||||
@@ -245,7 +238,7 @@ endphoneme
|
||||
phoneme r*
|
||||
vowel nonsyllabic
|
||||
unstressed
|
||||
ipa r
|
||||
ipa NULL
|
||||
length 50
|
||||
starttype #@ endtype #@
|
||||
AppendPhoneme(*)
|
||||
|
||||
+5
-1
@@ -204,6 +204,7 @@ endphoneme
|
||||
|
||||
phoneme i // optional variant of [I] for end of words
|
||||
vowel starttype #i endtype #i
|
||||
ipa ɪ
|
||||
length 140
|
||||
IfNextVowelAppend(;)
|
||||
FMT(vowel/ii_en)
|
||||
@@ -334,7 +335,7 @@ endphoneme
|
||||
phoneme aI
|
||||
vowel starttype #a endtype #i
|
||||
length 240
|
||||
IF nextPh(#a) OR nextPh(#o) THEN
|
||||
IF nextPh(#a) THEN
|
||||
AppendPhoneme(;)
|
||||
ENDIF
|
||||
FMT(vdiph/ai_2)
|
||||
@@ -383,6 +384,9 @@ phoneme U@
|
||||
vowel starttype #u endtype #@
|
||||
length 200
|
||||
IfNextVowelAppend(r-)
|
||||
IF thisPh(isUnstressed) THEN
|
||||
FMT(vdiph2/8@)
|
||||
ENDIF
|
||||
FMT(vdiph2/uu@)
|
||||
endphoneme
|
||||
|
||||
|
||||
+123
-29
@@ -1,7 +1,7 @@
|
||||
//====================================================
|
||||
// French
|
||||
//====================================================
|
||||
// Updated 2010-07-16 Michel Such <michel.such@free.fr>
|
||||
// Updated 2010-07-25 Michel Such <michel.such@free.fr>
|
||||
|
||||
phoneme #l virtual
|
||||
// Used for l and l/
|
||||
@@ -24,7 +24,7 @@ endphoneme
|
||||
procedure pre_r
|
||||
IF prevPh(y) THEN
|
||||
VowelEnding(vwl_fr/y2r)
|
||||
ELIF prevPh(E) OR prevPh(E2) THEN
|
||||
ELIF prevPh(E) THEN
|
||||
VowelEnding(vwl_fr/e_2r)
|
||||
ELIF prevPh(A~) THEN
|
||||
VowelEnding(vwl_fr/aa2r)
|
||||
@@ -47,7 +47,7 @@ endprocedure
|
||||
|
||||
procedure post_r
|
||||
|
||||
IF nextPh(E) OR nextPh(E2) THEN
|
||||
IF nextPh(E) THEN
|
||||
VowelStart(vwl_fr/re2)
|
||||
ELIF nextPh(W) THEN
|
||||
VowelStart(vwl_fr/r@2)
|
||||
@@ -285,6 +285,11 @@ phoneme a
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme a# // For english words
|
||||
import_phoneme en/a#
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme e
|
||||
vowel starttype #e endtype #e
|
||||
|
||||
@@ -313,14 +318,6 @@ phoneme E
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme E2 // Between e and E
|
||||
vowel starttype #e endtype #e
|
||||
length 170
|
||||
|
||||
FMT(vowel/e_9)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme i
|
||||
vowel starttype #i endtype #i
|
||||
palatal
|
||||
@@ -347,15 +344,13 @@ phoneme i
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme I // longer than i
|
||||
vowel starttype #i endtype #i
|
||||
palatal
|
||||
length 240
|
||||
ipa i
|
||||
phoneme I // For english words
|
||||
import_phoneme en/I
|
||||
endphoneme
|
||||
|
||||
IfNextVowelAppend(;)
|
||||
|
||||
FMT(vowel/i_3)
|
||||
phoneme I2 // For english words
|
||||
import_phoneme en/I2
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -396,18 +391,22 @@ phoneme O
|
||||
vowel starttype #o endtype #o
|
||||
length 170
|
||||
|
||||
IF nextPhW(z) OR nextPhW(z2) OR nextPhW(z3) THEN
|
||||
ChangePhoneme(o)
|
||||
IF thisPh(isFinalVowel) THEN
|
||||
FMT(vowel/o_mid2)
|
||||
ENDIF
|
||||
IF nextPhW(#l) AND next2Ph(isNotVowel) THEN
|
||||
FMT(vowel/o_mid2)
|
||||
ENDIF
|
||||
IF nextPhW(#r) AND next2Ph(isNotVowel) THEN
|
||||
FMT(vowel/o_mid2)
|
||||
ENDIF
|
||||
|
||||
FMT(vowel/o_mid2)
|
||||
FMT(vowel/o_mid)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme o3 // almost like english oU
|
||||
vowel starttype #@ endtype #u
|
||||
length 220
|
||||
FMT(vdiph/@u_3)
|
||||
phoneme oU
|
||||
import_phoneme en/oU
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -451,6 +450,15 @@ phoneme W
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme W2 // For english words
|
||||
vowel starttype #@ endtype #@
|
||||
length 100
|
||||
unstressed
|
||||
|
||||
FMT(vowel/@_6)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme Y
|
||||
vowel starttype #@ endtype #@
|
||||
length 170
|
||||
@@ -714,14 +722,14 @@ phoneme p
|
||||
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
|
||||
|
||||
IF nextPh(isPause2) THEN
|
||||
WAV(ustop/p_, 70)
|
||||
WAV(ustop/p_, 80)
|
||||
ELIF nextPh(@-) THEN
|
||||
WAV(ustop/p_unasp, 60)
|
||||
WAV(ustop/p_unasp, 70)
|
||||
ELIF nextPh(#l) THEN
|
||||
WAV(ustop/pl, 30)
|
||||
WAV(ustop/pl, 40)
|
||||
ELIF nextPh(#r) THEN
|
||||
length 40
|
||||
WAV(ustop/p_, 60)
|
||||
WAV(ustop/p_, 70)
|
||||
ENDIF
|
||||
WAV(ustop/p_unasp_, 90)
|
||||
endphoneme
|
||||
@@ -849,6 +857,14 @@ phoneme v
|
||||
FMT(voc/v) addWav(vocw/v, 60)
|
||||
endphoneme
|
||||
|
||||
phoneme V // For english words
|
||||
vowel starttype #a endtype #@
|
||||
length 140
|
||||
|
||||
ChangeIfDiminished(@)
|
||||
FMT(vowel/V_2)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme z
|
||||
vcd alv frc sibilant
|
||||
@@ -895,4 +911,82 @@ phoneme z3 // "six" and "dix". [s] before pause, [z] before vowel, else []
|
||||
endphoneme
|
||||
|
||||
|
||||
// translate from English to French phonemes
|
||||
equivalents en
|
||||
remove_stress
|
||||
0 O
|
||||
3 W r
|
||||
3: W : r
|
||||
@ W
|
||||
@- W
|
||||
@2 W
|
||||
@5 W
|
||||
@L W l
|
||||
a a
|
||||
a# a#
|
||||
A: a :
|
||||
A@ a r
|
||||
aa a :
|
||||
aI a j
|
||||
aI@ a j W2 r
|
||||
aU a w
|
||||
aU@ a w @
|
||||
A~ A~
|
||||
E E
|
||||
e: e
|
||||
e@ E : r
|
||||
eI E : j/
|
||||
i i
|
||||
I I
|
||||
I2 I2
|
||||
i: i :
|
||||
i@ i r
|
||||
i@3 i : r
|
||||
O O
|
||||
O: O :
|
||||
o: o
|
||||
O@ O r
|
||||
o@ O r
|
||||
OI O j
|
||||
oU oU
|
||||
O~ O~
|
||||
U u
|
||||
u: u:
|
||||
U@ u r
|
||||
V V
|
||||
IR i r
|
||||
VR W r
|
||||
b b
|
||||
C C
|
||||
d d
|
||||
D D
|
||||
dZ dZ
|
||||
f f
|
||||
g g
|
||||
h h
|
||||
j j
|
||||
k k
|
||||
l l
|
||||
l# l#
|
||||
m m
|
||||
n n
|
||||
N N
|
||||
n^ n^
|
||||
p p
|
||||
Q Q
|
||||
r r
|
||||
r- r
|
||||
s s
|
||||
S S
|
||||
t t
|
||||
T T
|
||||
t2 t
|
||||
tS tS
|
||||
v v
|
||||
w w/
|
||||
x x
|
||||
z z
|
||||
Z Z
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
+79
-1
@@ -110,7 +110,7 @@ endphoneme
|
||||
phoneme A // reduces to [a] if not stressed
|
||||
vowel starttype #a endtype #a
|
||||
length 250
|
||||
ChangeIfNotStressed(a)
|
||||
ChangeIfUnstressed(a)
|
||||
FMT(vowel/aa_6)
|
||||
endphoneme
|
||||
|
||||
@@ -377,3 +377,81 @@ phoneme UR
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
|
||||
// translate from English to German phonemes
|
||||
equivalents en
|
||||
0 O
|
||||
3 3
|
||||
3: W :
|
||||
@ @
|
||||
@- @-
|
||||
@2 @
|
||||
@5 @
|
||||
@L U l
|
||||
a a
|
||||
a# a
|
||||
A: A:
|
||||
A@ A: r
|
||||
aa a
|
||||
aI aI
|
||||
aI@ aI 3
|
||||
aU aU
|
||||
aU@ aU 3
|
||||
A~ O n
|
||||
E E
|
||||
e: e:
|
||||
e@ E: r
|
||||
eI e:
|
||||
i I
|
||||
I I
|
||||
I2 I
|
||||
i: i:
|
||||
i@ i: 3
|
||||
i@3 i: r
|
||||
O O
|
||||
O: O :
|
||||
o: o:
|
||||
O@ O : r
|
||||
o@ O : r
|
||||
OI OY
|
||||
oU o:
|
||||
O~ O n
|
||||
U U
|
||||
u: u:
|
||||
U@ U r
|
||||
V W
|
||||
IR I r
|
||||
VR W r
|
||||
b b
|
||||
C C
|
||||
d d
|
||||
D D
|
||||
dZ dZ
|
||||
f f
|
||||
g g
|
||||
h h
|
||||
j j
|
||||
k k
|
||||
l l
|
||||
l# l#
|
||||
m m
|
||||
n n
|
||||
N N
|
||||
n^ n^
|
||||
p p
|
||||
Q Q
|
||||
r r
|
||||
r- r
|
||||
s s
|
||||
S S
|
||||
t t
|
||||
T T
|
||||
t2 t
|
||||
tS tS
|
||||
v v
|
||||
w w
|
||||
x x
|
||||
z z
|
||||
Z Z
|
||||
endphoneme
|
||||
|
||||
@@ -477,5 +477,12 @@ phoneme gh
|
||||
FMT(g2/xg) addWav(ustop/k_asp, 70)
|
||||
endphoneme
|
||||
|
||||
//================
|
||||
|
||||
phoneme #X2 // click, use for indicating combining long vowels
|
||||
vls alv frc sibilant
|
||||
lengthmod 3
|
||||
WAV(ustop/percus02)
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -102,14 +102,14 @@ endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme r-
|
||||
phoneme r- // syllabic r
|
||||
vowel starttype #@ endtype #@
|
||||
ipa rU+0329
|
||||
length 220
|
||||
FMT(vowelr/r-voc)
|
||||
endphoneme
|
||||
|
||||
phoneme r:
|
||||
phoneme r: // syllabic r
|
||||
vowel starttype #@ endtype #@
|
||||
ipa rU+0329ː
|
||||
length 300
|
||||
|
||||
@@ -53,6 +53,7 @@ endphoneme
|
||||
|
||||
phoneme E-
|
||||
vowel starttype #@ endtype #@
|
||||
ipa ə
|
||||
unstressed
|
||||
length 140
|
||||
FMT(vowel/ee#_2)
|
||||
@@ -74,6 +75,7 @@ endphoneme
|
||||
|
||||
phoneme u-
|
||||
vowel starttype #u endtype #u
|
||||
ipa ʉ
|
||||
length 200
|
||||
FMT(vowel/u#_2)
|
||||
endphoneme
|
||||
|
||||
@@ -85,8 +85,15 @@ phoneme u
|
||||
FMT(vowel/u_6)
|
||||
endphoneme
|
||||
|
||||
phoneme u2 // as [u] but don't reduce
|
||||
vowel starttype #u endtype #u
|
||||
length 110
|
||||
FMT(vowel/u_6)
|
||||
endphoneme
|
||||
|
||||
phoneme U
|
||||
vowel starttype #u endtype #u
|
||||
ipa ʉ
|
||||
length 110
|
||||
FMT(vowel/u#_3)
|
||||
endphoneme
|
||||
@@ -103,6 +110,7 @@ endphoneme
|
||||
|
||||
phoneme U:
|
||||
vowel starttype #u endtype #u
|
||||
ipa ʉ
|
||||
length 240
|
||||
FMT(vowel/u#_3)
|
||||
endphoneme
|
||||
|
||||
+4
-1
@@ -84,14 +84,17 @@ phoneme u
|
||||
FMT(vowel/u_2)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme U
|
||||
vowel starttype #u endtype #u
|
||||
length 150
|
||||
FMT(vowel/uu_2)
|
||||
endphoneme
|
||||
|
||||
phoneme @ // previously u#
|
||||
|
||||
phoneme @
|
||||
vowel starttype #@ endtype #@
|
||||
ipa ɯ
|
||||
length 150
|
||||
FMT(vowel/u#_7)
|
||||
endphoneme
|
||||
|
||||
@@ -198,6 +198,7 @@ endphoneme
|
||||
|
||||
phoneme m-
|
||||
vowel starttype #@ endtype #@
|
||||
ipa mU+0329
|
||||
length 170
|
||||
|
||||
IF thisPh(isWordStart) THEN
|
||||
@@ -211,6 +212,7 @@ endphoneme
|
||||
|
||||
phoneme n-
|
||||
vowel starttype #@ endtype #@
|
||||
ipa nU+0329
|
||||
length 170
|
||||
|
||||
IF thisPh(isWordStart) THEN
|
||||
@@ -224,6 +226,7 @@ endphoneme
|
||||
|
||||
phoneme N-
|
||||
vowel starttype #e endtype #e
|
||||
ipa ŋU+0329
|
||||
length 190
|
||||
FMT(nn/nn-syl)
|
||||
endphoneme
|
||||
@@ -1811,3 +1814,6 @@ include ph_northern-sotho
|
||||
|
||||
phonemetable ht fr
|
||||
include ph_haitian
|
||||
|
||||
phonemetable az tr
|
||||
include ph_azerbaijani
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Binary file not shown.
@@ -288,7 +288,7 @@ void swap_phonindex (const char *infile, const char *outfile)
|
||||
{//==========================================================
|
||||
FILE *in, *out;
|
||||
char buf_4[4];
|
||||
unsigned int val;
|
||||
unsigned short val;
|
||||
|
||||
in = fopen (infile, "rb");
|
||||
if (in == NULL) {
|
||||
@@ -324,7 +324,7 @@ void swap_phonindex (const char *infile, const char *outfile)
|
||||
void swap_phontab (const char *infile, const char *outfile)
|
||||
{//========================================================
|
||||
FILE *in, *out;
|
||||
char buf_4[4];
|
||||
char buf_8[8];
|
||||
int i, n_phoneme_tables;
|
||||
|
||||
in = fopen (infile, "rb");
|
||||
@@ -339,18 +339,18 @@ void swap_phontab (const char *infile, const char *outfile)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
fread (buf_4, 4, 1, in);
|
||||
fwrite (buf_4, 4, 1, out);
|
||||
n_phoneme_tables = buf_4[0];
|
||||
fread (buf_8, 4, 1, in);
|
||||
fwrite (buf_8, 4, 1, out);
|
||||
n_phoneme_tables = buf_8[0];
|
||||
|
||||
for (i = 0; i < n_phoneme_tables; i++) {
|
||||
int n_phonemes, j;
|
||||
char tab_name[N_PHONEME_TAB_NAME];
|
||||
|
||||
fread (buf_4, 4, 1, in);
|
||||
fwrite (buf_4, 4, 1, out);
|
||||
fread (buf_8, 8, 1, in);
|
||||
fwrite (buf_8, 8, 1, out);
|
||||
|
||||
n_phonemes = buf_4[0];
|
||||
n_phonemes = buf_8[0];
|
||||
|
||||
fread (tab_name, N_PHONEME_TAB_NAME, 1, in);
|
||||
fwrite (tab_name, N_PHONEME_TAB_NAME, 1, out);
|
||||
|
||||
+171
-27
@@ -149,6 +149,7 @@ enum {
|
||||
kPROCEDURE,
|
||||
kENDPHONEME,
|
||||
kENDPROCEDURE,
|
||||
kEQUIVALENTS,
|
||||
kPHONEMENUMBER,
|
||||
kPHONEMETABLE,
|
||||
kINCLUDE,
|
||||
@@ -243,6 +244,7 @@ static keywtab_t keywords[] = {
|
||||
{"procedure", tSTATEMENT, kPROCEDURE},
|
||||
{"endphoneme", tSTATEMENT, kENDPHONEME},
|
||||
{"endprocedure", tSTATEMENT, kENDPROCEDURE},
|
||||
{"equivalents", tSTATEMENT, kEQUIVALENTS},
|
||||
{"import_phoneme", tSTATEMENT, kIMPORT_PH},
|
||||
{"stress_type",tSTATEMENT, kSTRESSTYPE},
|
||||
{"starttype", tSTATEMENT, kSTARTTYPE},
|
||||
@@ -363,6 +365,10 @@ static PHONEME_TAB *phoneme_tab2;
|
||||
static int phoneme_flags;
|
||||
static int place_articulation;
|
||||
|
||||
static char *p_equivalence;
|
||||
static char equivalence_buf[20000];
|
||||
|
||||
|
||||
#define N_PROCS 50
|
||||
int n_procs;
|
||||
int proc_addr[N_PROCS];
|
||||
@@ -2479,6 +2485,23 @@ static int CompileSwitch(int type)
|
||||
|
||||
|
||||
|
||||
static PHONEME_TAB_LIST *FindPhonemeTable(const char *string)
|
||||
{//==========================================================
|
||||
int ix;
|
||||
|
||||
for(ix=0; ix<n_phoneme_tabs; ix++)
|
||||
{
|
||||
if(strcmp(phoneme_tab_list2[ix].name, string) == 0)
|
||||
{
|
||||
return(&phoneme_tab_list2[ix]);
|
||||
}
|
||||
}
|
||||
error("Unknown phoneme table: '%s'",string);
|
||||
return(NULL);
|
||||
} // end of FindPhonemeTable
|
||||
|
||||
|
||||
|
||||
static PHONEME_TAB *FindPhoneme(const char *string)
|
||||
{//================================================
|
||||
PHONEME_TAB_LIST *phtab = NULL;
|
||||
@@ -2487,7 +2510,7 @@ static PHONEME_TAB *FindPhoneme(const char *string)
|
||||
char *phname;
|
||||
char buf[200];
|
||||
|
||||
// is this the name of a phoneme which is ijn scope
|
||||
// is this the name of a phoneme which is in scope
|
||||
if((strlen(string) <= 4) && ((ix = LookupPhoneme(string,0)) != -1))
|
||||
{
|
||||
return(&phoneme_tab2[ix]);
|
||||
@@ -2500,17 +2523,9 @@ static PHONEME_TAB *FindPhoneme(const char *string)
|
||||
*phname++ = 0;
|
||||
}
|
||||
|
||||
for(ix=0; ix<n_phoneme_tabs; ix++)
|
||||
{
|
||||
if(strcmp(phoneme_tab_list2[ix].name,buf) == 0)
|
||||
{
|
||||
phtab = &phoneme_tab_list2[ix];
|
||||
break;
|
||||
}
|
||||
}
|
||||
phtab = FindPhonemeTable(buf);
|
||||
if(phtab == NULL)
|
||||
{
|
||||
error("Unknown phoneme table: '%s'",buf);
|
||||
return(NULL); // phoneme table not found
|
||||
}
|
||||
|
||||
@@ -3025,6 +3040,7 @@ static void WritePhonemeTables()
|
||||
fputc(phoneme_tab_list2[ix].includes,f_phtab);
|
||||
fputc(0,f_phtab);
|
||||
fputc(0,f_phtab);
|
||||
Write4Bytes(f_phtab, phoneme_tab_list2[ix].equivalence_tables); // byte index into phondata for equivalence tables
|
||||
|
||||
fwrite(phoneme_tab_list2[ix].name,1,N_PHONEME_TAB_NAME,f_phtab);
|
||||
|
||||
@@ -3047,6 +3063,8 @@ static void WritePhonemeTables()
|
||||
static void EndPhonemeTable()
|
||||
{//==========================
|
||||
int ix;
|
||||
int *pw;
|
||||
int length;
|
||||
|
||||
if(n_phoneme_tabs == 0)
|
||||
return;
|
||||
@@ -3061,10 +3079,24 @@ static void EndPhonemeTable()
|
||||
fprintf(f_errors,"%3d: Phoneme [%s] not declared, referenced at line %d\n",linenum,
|
||||
WordToString(phoneme_tab2[ix].mnemonic),int(phoneme_tab2[ix].program));
|
||||
error_count++;
|
||||
phoneme_tab2[ix].type = 0; // prevent the error message repeating
|
||||
}
|
||||
}
|
||||
|
||||
n_phcodes_list[n_phoneme_tabs-1] = n_phcodes;
|
||||
|
||||
if((length = p_equivalence - equivalence_buf) > 0)
|
||||
{
|
||||
// terminate the list of phoneme equivalence tables
|
||||
pw = (int *)p_equivalence;
|
||||
pw[0] = 0;
|
||||
|
||||
// write the equivalence data into phondata, and remember it's address
|
||||
ix = ftell(f_phdata);
|
||||
fprintf(f_phcontents,"Q 0x%.5x %s\n", ix, phoneme_tab_list2[n_phoneme_tabs-1].name);
|
||||
phoneme_tab_list2[n_phoneme_tabs-1].equivalence_tables = ix;
|
||||
fwrite(equivalence_buf, length+4, 1, f_phdata);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3092,11 +3124,12 @@ static void StartPhonemeTable(const char *name)
|
||||
if(gui_flag)
|
||||
progress->Update(n_phoneme_tabs);
|
||||
|
||||
memset(&phoneme_tab_list2[n_phoneme_tabs], 0, sizeof(PHONEME_TAB_LIST));
|
||||
phoneme_tab_list2[n_phoneme_tabs].phoneme_tab_ptr = phoneme_tab2 = p;
|
||||
memset(phoneme_tab_list2[n_phoneme_tabs].name, 0, N_PHONEME_TAB_NAME);
|
||||
strncpy0(phoneme_tab_list2[n_phoneme_tabs].name, name, N_PHONEME_TAB_NAME);
|
||||
n_phcodes = 1;
|
||||
phoneme_tab_list2[n_phoneme_tabs].includes = 0;
|
||||
p_equivalence = equivalence_buf;
|
||||
|
||||
if(n_phoneme_tabs > 0)
|
||||
{
|
||||
@@ -3131,6 +3164,111 @@ static void StartPhonemeTable(const char *name)
|
||||
} // end of StartPhonemeTable
|
||||
|
||||
|
||||
static void CompileEquivalents()
|
||||
{//=============================
|
||||
// a list of phonemes in another language and the equivalent phoneme strings in this language
|
||||
|
||||
int ix;
|
||||
int n_names;
|
||||
int n_bytes;
|
||||
int foreign_phoneme;
|
||||
int foreign_error = 0;
|
||||
int remove_stress = 0;
|
||||
char *p_start;
|
||||
char *p;
|
||||
int foreign_table;
|
||||
char foreign_table_name[40];
|
||||
char line_buf[80];
|
||||
char names[6][80];
|
||||
char phcode[7];
|
||||
char save_voice_name[80];
|
||||
|
||||
NextItem(tSTRING);
|
||||
strcpy(foreign_table_name, item_string);
|
||||
strcpy(save_voice_name,voice_name2);
|
||||
|
||||
if((foreign_table = SelectPhonemeTableName(foreign_table_name)) < 0)
|
||||
{
|
||||
error("Unknown phoneme table '%s'", foreign_table_name);
|
||||
foreign_error = 1;
|
||||
foreign_phoneme = 0;
|
||||
}
|
||||
|
||||
p_start = p_equivalence;
|
||||
p_equivalence += 8;
|
||||
|
||||
p_start[0] = foreign_table;
|
||||
|
||||
linenum--;
|
||||
while(!feof(f_in))
|
||||
{
|
||||
linenum++;
|
||||
if(fgets(line_buf, sizeof(line_buf), f_in) == NULL)
|
||||
break;
|
||||
|
||||
if((p = strstr(line_buf,"//")) != NULL)
|
||||
*p = 0;
|
||||
|
||||
for(ix=0; ix<6; ix++)
|
||||
names[ix][0] = 0;
|
||||
n_names = sscanf(line_buf,"%s %s %s %s %s %s",names[0],names[1],names[2],names[3],names[4],names[5]);
|
||||
if(n_names < 1)
|
||||
continue;
|
||||
|
||||
if(strcmp(names[0],"endphoneme") == 0)
|
||||
break;
|
||||
|
||||
if(strcmp(names[0],"remove_stress") == 0)
|
||||
{
|
||||
remove_stress = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(p_equivalence > &equivalence_buf[sizeof(equivalence_buf) - 16])
|
||||
{
|
||||
error("'equivalents' tables are too large",NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
if(foreign_error == 0)
|
||||
{
|
||||
phcode[0] = foreign_phoneme = LookupPhonemeString(names[0]);
|
||||
if(foreign_phoneme == 0)
|
||||
{
|
||||
sprintf(line_buf,"%s/%s", foreign_table_name, names[0]);
|
||||
error("Unknown phoneme '%s'", line_buf);
|
||||
}
|
||||
}
|
||||
|
||||
for(ix=1; ix<n_names; ix++)
|
||||
{
|
||||
phcode[ix] = LookupPhoneme(names[ix], 1);
|
||||
}
|
||||
|
||||
// only write a translation if it has an effect
|
||||
if((n_names > 2) || (phcode[0] != phcode[1]))
|
||||
{
|
||||
// write: foreign phoneme number, then a string of local phoneme numbers
|
||||
memcpy(p_equivalence, phcode, n_names);
|
||||
p_equivalence += n_names;
|
||||
*p_equivalence++ = 0;
|
||||
}
|
||||
}
|
||||
*p_equivalence++ = 0;
|
||||
|
||||
p_equivalence = (char *)((int)(p_equivalence + 3) & ~0x3); // align to word boundary
|
||||
n_bytes = p_equivalence - p_start;
|
||||
p_start[1] = remove_stress;
|
||||
n_bytes = n_bytes / 4;
|
||||
p_start[2] = n_bytes >> 8; // index of next table
|
||||
p_start[3] = n_bytes;
|
||||
|
||||
LoadVoice(voice_name2,0); // reset the original phoneme table
|
||||
LoadVoiceVariant(save_voice_name,0);
|
||||
} // end of CompileEquivalents
|
||||
|
||||
|
||||
|
||||
static void CompilePhonemeFiles()
|
||||
{//==============================
|
||||
int item;
|
||||
@@ -3161,8 +3299,9 @@ static void CompilePhonemeFiles()
|
||||
|
||||
item = NextItem(tKEYWORD);
|
||||
|
||||
if(item == kINCLUDE)
|
||||
switch(item)
|
||||
{
|
||||
case kINCLUDE:
|
||||
NextItem(tSTRING);
|
||||
sprintf(buf,"%s%s",path_source,item_string);
|
||||
if((stack_ix < N_STACK) && (f = fopen_log(f_errors,buf,"rb")) != NULL)
|
||||
@@ -3176,32 +3315,36 @@ static void CompilePhonemeFiles()
|
||||
strncpy0(current_fname,item_string,sizeof(current_fname));
|
||||
linenum = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
if(item == kPHONEMETABLE)
|
||||
{
|
||||
break;
|
||||
|
||||
case kPHONEMETABLE:
|
||||
EndPhonemeTable();
|
||||
NextItem(tSTRING); // name of the new phoneme table
|
||||
StartPhonemeTable(item_string);
|
||||
}
|
||||
else
|
||||
if(item == kPHONEMESTART)
|
||||
{
|
||||
break;
|
||||
|
||||
case kPHONEMESTART:
|
||||
if(n_phoneme_tabs == 0)
|
||||
{
|
||||
Error("phonemetable is missing");
|
||||
return;
|
||||
}
|
||||
CompilePhoneme(1);
|
||||
}
|
||||
else
|
||||
if(item == kPROCEDURE)
|
||||
{
|
||||
break;
|
||||
|
||||
case kPROCEDURE:
|
||||
CompilePhoneme(0);
|
||||
break;
|
||||
|
||||
case kEQUIVALENTS:
|
||||
CompileEquivalents();
|
||||
break;
|
||||
|
||||
default:
|
||||
if(!feof(f_in))
|
||||
Error("Keyword 'phoneme' expected");
|
||||
break;
|
||||
}
|
||||
else
|
||||
if(!feof(f_in))
|
||||
Error("Keyword 'phoneme' expected");
|
||||
}
|
||||
phoneme_tab2[n_phcodes+1].mnemonic = 0; // terminator
|
||||
} // end of CompilePhonemeFiles
|
||||
@@ -3275,6 +3418,7 @@ memset(markers_used,0,sizeof(markers_used));
|
||||
"# S - A SPECT_SEQ structure\n"
|
||||
"# W - A wavefile segment\n"
|
||||
"# E - An envelope\n"
|
||||
"# Q - Phoneme equivalence tables\n"
|
||||
"#\n"
|
||||
"# Address is the displacement within phondata of this item\n"
|
||||
"#\n"
|
||||
|
||||
+12
-7
@@ -53,6 +53,7 @@ static char *hash_chains[N_HASH_DICT];
|
||||
static char letterGroupsDefined[N_LETTER_GROUPS];
|
||||
|
||||
MNEM_TAB mnem_rules[] = {
|
||||
{"unpr", 0x01},
|
||||
{"w_alt2", 0x12},
|
||||
{"w_alt3", 0x13},
|
||||
{"w_alt", 0x11}, // note: put longer names before their sub-strings
|
||||
@@ -192,8 +193,8 @@ char *print_dictionary_flags(unsigned int *flags)
|
||||
|
||||
|
||||
|
||||
char *DecodeRule(const char *group_chars, int group_length, char *rule)
|
||||
{//====================================================================
|
||||
char *DecodeRule(const char *group_chars, int group_length, char *rule, int control)
|
||||
{//=================================================================================
|
||||
/* Convert compiled match template to ascii */
|
||||
|
||||
unsigned char rb;
|
||||
@@ -268,16 +269,20 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule)
|
||||
|
||||
if(rb == RULE_DOLLAR)
|
||||
{
|
||||
p[0] = '$';
|
||||
name = LookupMnemName(mnem_rules, *rule++);
|
||||
strcpy(&p[1],name);
|
||||
p += (strlen(name)+1);
|
||||
value = *rule++ & 0xff;
|
||||
if((value != 0x01) || (control & FLAG_UNPRON_TEST))
|
||||
{
|
||||
p[0] = '$';
|
||||
name = LookupMnemName(mnem_rules, value);
|
||||
strcpy(&p[1],name);
|
||||
p += (strlen(name)+1);
|
||||
}
|
||||
c = ' ';
|
||||
}
|
||||
else
|
||||
if(rb == RULE_ENDING)
|
||||
{
|
||||
static const char *flag_chars = "ei vtfq t";
|
||||
static const char *flag_chars = "eipvdfq tba ";
|
||||
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
|
||||
suffix_char = 'S';
|
||||
if(flags & (SUFX_P >> 8))
|
||||
|
||||
+76
-127
@@ -38,15 +38,16 @@ int dictionary_skipwords;
|
||||
char dictionary_name[40];
|
||||
|
||||
extern char *print_dictionary_flags(unsigned int *flags);
|
||||
extern char *DecodeRule(const char *group_chars, int group_length, char *rule);
|
||||
extern char *DecodeRule(const char *group_chars, int group_length, char *rule, int control);
|
||||
|
||||
// accented characters which indicate (in some languages) the start of a separate syllable
|
||||
//static const unsigned short diereses_list[7] = {L'ä',L'ë',L'ï',L'ö',L'ü',L'ÿ',0};
|
||||
static const unsigned short diereses_list[7] = {0xe4,0xeb,0xef,0xf6,0xfc,0xff,0};
|
||||
|
||||
// convert characters to an approximate 7 bit ascii equivalent
|
||||
// used for checking for vowels
|
||||
static unsigned char remove_accent[] = {
|
||||
// used for checking for vowels (up to 0x259=schwa)
|
||||
#define N_REMOVE_ACCENT 0x25e
|
||||
static unsigned char remove_accent[N_REMOVE_ACCENT] = {
|
||||
'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0c0
|
||||
'd','n','o','o','o','o','o', 0, 'o','u','u','u','u','y','t','s', // 0d0
|
||||
'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0e0
|
||||
@@ -73,7 +74,9 @@ static unsigned char remove_accent[] = {
|
||||
'r','r','r','r','u','u','u','u','s','s','t','t','y','y','h','h', // 210
|
||||
'n','d','o','o','z','z','a','a','e','e','o','o','o','o','o','o', // 220
|
||||
'o','o','y','y','l','n','t','j','d','q','a','c','c','l','t','s', // 230
|
||||
'z', 0 };
|
||||
'z', 0, 0, 'b','u','v','e','e','j','j','q','q','r','r','y','y', // 240
|
||||
'a','a','a','b','o','c','d','d','e','e','e','e','e','e' };
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -86,8 +89,8 @@ void strncpy0(char *to,const char *from, int size)
|
||||
}
|
||||
|
||||
|
||||
static int reverse_word_bytes(int word)
|
||||
{//=============================
|
||||
int Reverse4Bytes(int word)
|
||||
{//========================
|
||||
// reverse the order of bytes from little-endian to big-endian
|
||||
#ifdef ARCH_BIG
|
||||
int ix;
|
||||
@@ -170,9 +173,9 @@ static void InitGroups(Translator *tr)
|
||||
pw = (unsigned int *)(tr->langopts.replace_chars);
|
||||
while(*pw != 0)
|
||||
{
|
||||
*pw = reverse_word_bytes(*pw);
|
||||
*pw = Reverse4Bytes(*pw);
|
||||
pw++;
|
||||
*pw = reverse_word_bytes(*pw);
|
||||
*pw = Reverse4Bytes(*pw);
|
||||
pw++;
|
||||
}
|
||||
#endif
|
||||
@@ -275,7 +278,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error)
|
||||
|
||||
|
||||
pw = (int *)(tr->data_dictlist);
|
||||
length = reverse_word_bytes(pw[1]);
|
||||
length = Reverse4Bytes(pw[1]);
|
||||
|
||||
if(size <= (N_HASH_DICT + sizeof(int)*2))
|
||||
{
|
||||
@@ -283,10 +286,10 @@ int LoadDictionary(Translator *tr, const char *name, int no_error)
|
||||
return(2);
|
||||
}
|
||||
|
||||
if((reverse_word_bytes(pw[0]) != N_HASH_DICT) ||
|
||||
if((Reverse4Bytes(pw[0]) != N_HASH_DICT) ||
|
||||
(length <= 0) || (length > 0x8000000))
|
||||
{
|
||||
fprintf(stderr,"Bad data: '%s' (%x length=%x)\n",fname,reverse_word_bytes(pw[0]),length);
|
||||
fprintf(stderr,"Bad data: '%s' (%x length=%x)\n",fname,Reverse4Bytes(pw[0]),length);
|
||||
return(2);
|
||||
}
|
||||
tr->data_dictrules = &(tr->data_dictlist[length]);
|
||||
@@ -742,7 +745,7 @@ static int IsLetter(Translator *tr, int letter, int group)
|
||||
}
|
||||
else
|
||||
{
|
||||
if((letter >= 0xc0) && (letter <= 0x241))
|
||||
if((letter >= 0xc0) && (letter < N_REMOVE_ACCENT))
|
||||
return(tr->letter_bits[remove_accent[letter-0xc0]] & (1L << group));
|
||||
}
|
||||
|
||||
@@ -753,107 +756,31 @@ static int IsLetter(Translator *tr, int letter, int group)
|
||||
}
|
||||
|
||||
|
||||
static int IsVowel(Translator *tr, int letter)
|
||||
{//===========================================
|
||||
return(IsLetter(tr, letter, 0));
|
||||
int IsVowel(Translator *tr, int letter)
|
||||
{//====================================
|
||||
return(IsLetter(tr, letter, LETTERGP_VOWEL2));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static int Unpronouncable_en(Translator *tr, char *word)
|
||||
{//=====================================================
|
||||
/* Determines whether a word in 'unpronouncable', i.e. whether it should
|
||||
be spoken as individual letters.
|
||||
|
||||
This function is language specific.
|
||||
*/
|
||||
|
||||
static int Unpronouncable2(Translator *tr, char *word)
|
||||
{//===================================================
|
||||
int c;
|
||||
int vowel_posn=9;
|
||||
int index;
|
||||
int count;
|
||||
int ix;
|
||||
int apostrophe=0;
|
||||
int end_flags;
|
||||
char ph_buf[N_WORD_PHONEMES];
|
||||
|
||||
static unsigned char initials_bitmap[86] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x88, // 0
|
||||
0x20, 0x24, 0x20, 0x80, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x28, 0x08, 0x00, 0x88, 0x22, 0x04, 0x00, // 16
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x88, 0x22, 0x04, 0x00, 0x02, 0x00, 0x04, // 32
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x28, 0x8a, 0x03, 0x00, 0x00, 0x40, 0x00, // 48
|
||||
0x02, 0x00, 0x41, 0xca, 0xbb, 0x06, 0x20, 0x80,
|
||||
0x91, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, // 64
|
||||
0x08, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x22, 0x00, 0x01, 0x00, };
|
||||
|
||||
|
||||
// words which we pass through to the dictionary, even though they look unpronouncable
|
||||
static const char *exceptions[] = {
|
||||
"'s ", "st ","nd ","rd ","th ",NULL };
|
||||
|
||||
if((*word == ' ') || (*word == 0))
|
||||
return(0);
|
||||
|
||||
for(ix=0; exceptions[ix] != NULL; ix++)
|
||||
{
|
||||
// Seemingly uncpronouncable words, but to be looked in the dictionary rules instead
|
||||
if(memcmp(word,exceptions[ix],3)==0)
|
||||
return(0);
|
||||
}
|
||||
|
||||
index=0;
|
||||
count=0;
|
||||
for(;;)
|
||||
{
|
||||
index += utf8_in(&c,&word[index]);
|
||||
count++;
|
||||
|
||||
if((c==0) || (c==' ') || (c == '\''))
|
||||
break;
|
||||
|
||||
if(IsVowel(tr, c) || (c == 'y'))
|
||||
{
|
||||
vowel_posn = count;
|
||||
break;
|
||||
}
|
||||
|
||||
if(c == '\'')
|
||||
apostrophe = 1;
|
||||
else
|
||||
if(!IsAlpha(c))
|
||||
return(0); // letter (not vowel) outside Latin character range or apostrophe, abort test
|
||||
}
|
||||
if((vowel_posn > 5) || ((word[0]!='s') && (vowel_posn > 4)))
|
||||
return(1); // no vowel, or no vowel in first four letters
|
||||
|
||||
/* there is at least one vowel, is the initial letter combination valid ? */
|
||||
|
||||
if(vowel_posn < 3)
|
||||
return(0); /* vowel in first two letters, OK */
|
||||
|
||||
if(apostrophe)
|
||||
return(0); // first two letters not a-z, abort test
|
||||
|
||||
index = (word[0]-'a') * 26 + (word[1]-'a');
|
||||
if(initials_bitmap[index >> 3] & (1L << (index & 7)))
|
||||
return(0);
|
||||
else
|
||||
return(1); /****/
|
||||
} /* end of Unpronounceable */
|
||||
|
||||
|
||||
static int Unpronouncable_de(Translator *tr, char *word)
|
||||
{//=====================================================
|
||||
if(memcmp(word,"tsch",4)==0)
|
||||
return(0);
|
||||
return(2);
|
||||
ph_buf[0] = 0;
|
||||
c = word[-1];
|
||||
word[-1] = ' '; // ensure there is a space before the "word"
|
||||
end_flags = TranslateRules(tr, word, ph_buf, sizeof(ph_buf), NULL, FLAG_UNPRON_TEST, NULL);
|
||||
word[-1] = c;
|
||||
if((end_flags == 0) || (end_flags & SUFX_UNPRON))
|
||||
return(1);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int Unpronouncable(Translator *tr, char *word)
|
||||
{//===========================================
|
||||
/* Determines whether a word in 'unpronouncable', i.e. whether it should
|
||||
@@ -868,18 +795,6 @@ int Unpronouncable(Translator *tr, char *word)
|
||||
int index;
|
||||
int count;
|
||||
int apostrophe=0;
|
||||
int result=2; // unknown
|
||||
|
||||
if(tr->translator_name == L('e','n'))
|
||||
{
|
||||
return(Unpronouncable_en(tr,word));
|
||||
}
|
||||
if(tr->translator_name == L('d','e'))
|
||||
{
|
||||
result = Unpronouncable_de(tr,word);
|
||||
}
|
||||
if(result < 2)
|
||||
return(result);
|
||||
|
||||
utf8_in(&c,word);
|
||||
if((tr->letter_bits_offset > 0) && (c < 0x241))
|
||||
@@ -899,9 +814,12 @@ int Unpronouncable(Translator *tr, char *word)
|
||||
for(;;)
|
||||
{
|
||||
index += utf8_in(&c,&word[index]);
|
||||
if((c==0) || (c==' ') || (c == '\''))
|
||||
if((c==0) || (c==' '))
|
||||
break;
|
||||
|
||||
if((c=='\'') && (count > 1))
|
||||
break; // "tv'" but not "l'"
|
||||
|
||||
if(count==0)
|
||||
c1 = c;
|
||||
count++;
|
||||
@@ -916,11 +834,14 @@ int Unpronouncable(Translator *tr, char *word)
|
||||
apostrophe = 1;
|
||||
else
|
||||
if(!iswalpha(c))
|
||||
return(0); // letter (not vowel) outside a-z range or apostrophe, abort test
|
||||
return(0);
|
||||
}
|
||||
|
||||
if((vowel_posn < 9) && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 2))
|
||||
return(0); // option means allow any word with a vowel
|
||||
if((vowel_posn > 2) && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 2))
|
||||
{
|
||||
// Lookup unpronounable rules in *_rules
|
||||
return(Unpronouncable2(tr, word));
|
||||
}
|
||||
|
||||
if(c1 == tr->langopts.param[LOPT_UNPRONOUNCABLE])
|
||||
vowel_posn--; // disregard this as the initial letter when counting
|
||||
@@ -1813,6 +1734,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
|
||||
int match_type; /* left, right, or consume */
|
||||
int failed;
|
||||
int unpron_ignore;
|
||||
int consumed; /* number of letters consumed from input */
|
||||
int count; /* count through rules in the group */
|
||||
int syllable_count;
|
||||
@@ -1858,6 +1780,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
/* search through dictionary rules */
|
||||
while(rule[0] != RULE_GROUP_END)
|
||||
{
|
||||
unpron_ignore = word_flags & FLAG_UNPRON_TEST;
|
||||
match_type=0;
|
||||
consumed = 0;
|
||||
letter = 0;
|
||||
@@ -1874,6 +1797,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
|
||||
/* work through next rule until end, or until no-match proved */
|
||||
rule_start = rule;
|
||||
|
||||
failed = 0;
|
||||
while(!failed)
|
||||
{
|
||||
@@ -1904,6 +1828,14 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
break;
|
||||
case RULE_PRE:
|
||||
match_type = RULE_PRE;
|
||||
if(word_flags & FLAG_UNPRON_TEST)
|
||||
{
|
||||
// checking the start of the word for unpronouncable character sequences, only
|
||||
// consider rules which explicitly match the start of a word
|
||||
if(rule[0] != ' ')
|
||||
failed = 1;
|
||||
unpron_ignore = 0;
|
||||
}
|
||||
break;
|
||||
case RULE_POST:
|
||||
match_type = RULE_POST;
|
||||
@@ -2046,8 +1978,14 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
|
||||
case RULE_DOLLAR:
|
||||
command = *rule++;
|
||||
if(command == 0x01)
|
||||
{
|
||||
match.end_type = SUFX_UNPRON; // $unpron
|
||||
}
|
||||
else
|
||||
if((command & 0xf0) == 0x10)
|
||||
{
|
||||
// $w_alt
|
||||
if(dict_flags & (1 << (BITNUM_FLAG_ALT + (command & 0xf))))
|
||||
add_points = 23;
|
||||
else
|
||||
@@ -2056,6 +1994,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
else
|
||||
if((command & 0xf0) == 0x20)
|
||||
{
|
||||
// $p_alt
|
||||
// make a copy of the word up to the post-match characters
|
||||
ix = *word - word_start + consumed + group_length + 1;
|
||||
memcpy(word_buf, word_start-1, ix);
|
||||
@@ -2151,8 +2090,8 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
break;
|
||||
|
||||
case RULE_DEL_FWD:
|
||||
// find the next 'e' in the word and replace by ''
|
||||
for(p = *word + group_length; *p != ' '; p++)
|
||||
// find the next 'e' in the word and replace by 'E'
|
||||
for(p = *word + group_length; p < post_ptr; p++)
|
||||
{
|
||||
if(*p == 'e')
|
||||
{
|
||||
@@ -2366,9 +2305,11 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
match.points += add_points;
|
||||
}
|
||||
|
||||
if(failed == 2)
|
||||
|
||||
if((failed == 2) && (unpron_ignore == 0))
|
||||
{
|
||||
/* matched OK, is this better than the last best match ? */
|
||||
|
||||
if(match.points >= best.points)
|
||||
{
|
||||
memcpy(&best,&match,sizeof(match));
|
||||
@@ -2386,7 +2327,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
|
||||
if(group_length > 1)
|
||||
pts += 35; // to account for an extra letter matching
|
||||
DecodePhonemes(match.phonemes,decoded_phonemes);
|
||||
fprintf(f_trans,"%3d\t%s [%s]\n",pts,DecodeRule(group_chars, group_length, rule_start),decoded_phonemes);
|
||||
fprintf(f_trans,"%3d\t%s [%s]\n",pts,DecodeRule(group_chars, group_length, rule_start, word_flags), decoded_phonemes);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2469,7 +2410,10 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
wordbuf[ix] = c;
|
||||
}
|
||||
wordbuf[ix] = 0;
|
||||
fprintf(f_trans,"Translate '%s'\n",wordbuf);
|
||||
if(word_flags & FLAG_UNPRON_TEST)
|
||||
fprintf(f_trans,"Unpronouncable? '%s'\n",wordbuf);
|
||||
else
|
||||
fprintf(f_trans,"Translate '%s'\n",wordbuf);
|
||||
}
|
||||
|
||||
p = p_start;
|
||||
@@ -2597,7 +2541,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
}
|
||||
|
||||
// no match, try removing the accent and re-translating the word
|
||||
if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0))
|
||||
if((letter >= 0xc0) && (letter < N_REMOVE_ACCENT) && ((ix = remove_accent[letter-0xc0]) != 0))
|
||||
{
|
||||
// within range of the remove_accent table
|
||||
if((p[-2] != ' ') || (p[n] != ' '))
|
||||
@@ -2682,7 +2626,11 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
strcpy(phonemes,match1.phonemes);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
if(word_flags & FLAG_UNPRON_TEST)
|
||||
return(match1.end_type | 1);
|
||||
match1.end_type &= ~SUFX_UNPRON;
|
||||
|
||||
if((match1.end_type != 0) && (end_phonemes != NULL))
|
||||
{
|
||||
/* a standard ending has been found, re-translate the word without it */
|
||||
@@ -3524,7 +3472,8 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
|
||||
if((strcmp(ending,"s")==0) || (strcmp(ending,"es")==0))
|
||||
end_flags |= FLAG_SUFX_S;
|
||||
|
||||
if(strcmp(ending,"'s")==0)
|
||||
// if(strcmp(ending,"'s")==0)
|
||||
if(ending[0] == '\'')
|
||||
end_flags &= ~FLAG_SUFX; // don't consider 's as an added suffix
|
||||
|
||||
return(end_flags);
|
||||
|
||||
@@ -233,6 +233,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame)
|
||||
EVT_MENU(MENU_LEXICON_DE, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_IT, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_IT2, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_TEST, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_TO_UTF8, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_COUNT_WORDS, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_TEST, MyFrame::OnTools)
|
||||
@@ -608,6 +609,7 @@ void MyFrame::OnTools(wxCommandEvent& event)
|
||||
case MENU_LEXICON_DE:
|
||||
case MENU_LEXICON_IT:
|
||||
case MENU_LEXICON_IT2:
|
||||
case MENU_LEXICON_TEST:
|
||||
CompareLexicon(event.GetId()); // Compare a lexicon with _rules translation
|
||||
break;
|
||||
|
||||
|
||||
@@ -763,6 +763,75 @@ void Lexicon_De()
|
||||
}
|
||||
|
||||
|
||||
extern int IsVowel(Translator *tr, int letter);
|
||||
|
||||
void Lexicon_Test()
|
||||
{//================
|
||||
int c1, c2, c3;
|
||||
char *p;
|
||||
int prev_c1=0;
|
||||
int prev_c2=0;
|
||||
int prev_c3 = 0;
|
||||
FILE *f_in;
|
||||
FILE *f_out;
|
||||
char buf[200];
|
||||
|
||||
wxString s_fname = wxFileSelector(_T("List of UTF-8 words with Combining Grave Accent U+300 to indicate stress"),path_dir1,
|
||||
_T(""),_T(""),_T("*"),wxOPEN);
|
||||
if(s_fname.IsEmpty())
|
||||
return;
|
||||
strcpy(buf,s_fname.mb_str(wxConvLocal));
|
||||
path_dir1 = wxFileName(s_fname).GetPath();
|
||||
|
||||
if((f_in = fopen(buf,"r")) == NULL)
|
||||
{
|
||||
wxLogError(_T("Can't read file: ") + wxString(buf,wxConvLocal));
|
||||
return;
|
||||
}
|
||||
|
||||
strcat(buf,"_1");
|
||||
if((f_out = fopen(buf,"w")) == NULL)
|
||||
{
|
||||
wxLogError(_T("Can't write file: ") + wxString(buf,wxConvLocal));
|
||||
fclose(f_in);
|
||||
return;
|
||||
}
|
||||
|
||||
while(!feof(f_in))
|
||||
{
|
||||
if((p = fgets(buf,sizeof(buf),f_in)) == NULL)
|
||||
break;
|
||||
|
||||
if(buf[0] == 0)
|
||||
continue;
|
||||
|
||||
p += utf8_in(&c1, p);
|
||||
p += utf8_in(&c2, p);
|
||||
p += utf8_in(&c3, p);
|
||||
|
||||
c1 = towlower(c1);
|
||||
c2 = towlower(c2);
|
||||
c3 = towlower(c3);
|
||||
|
||||
if(IsVowel(translator, c1))
|
||||
continue;
|
||||
if(IsVowel(translator, c2))
|
||||
continue;
|
||||
|
||||
if((prev_c1 != c1) || (prev_c2 != c2) || ((prev_c3 != c3) && !IsVowel(translator,c3)))
|
||||
fputc('\n',f_out);
|
||||
prev_c1 = c1;
|
||||
prev_c2 = c2;
|
||||
prev_c3 = c3;
|
||||
fprintf(f_out,"%s",buf);
|
||||
|
||||
}
|
||||
fclose(f_in);
|
||||
fclose(f_out);
|
||||
} // end of Lexicon_Test
|
||||
|
||||
|
||||
|
||||
void Lexicon_Bg()
|
||||
{//==============
|
||||
// Bulgarian: compare stress markup in a list of words with lookup using bg_rules
|
||||
@@ -1275,6 +1344,9 @@ void CompareLexicon(int id)
|
||||
case MENU_LEXICON_IT2:
|
||||
Lexicon_It(2);
|
||||
break;
|
||||
case MENU_LEXICON_TEST:
|
||||
Lexicon_Test();
|
||||
break;
|
||||
}
|
||||
} // end of CompareLexicon
|
||||
|
||||
|
||||
@@ -161,6 +161,7 @@ enum {
|
||||
MENU_LEXICON_DE,
|
||||
MENU_LEXICON_IT,
|
||||
MENU_LEXICON_IT2,
|
||||
MENU_LEXICON_TEST,
|
||||
MENU_TO_UTF8,
|
||||
MENU_COUNT_WORDS,
|
||||
MENU_TEST,
|
||||
|
||||
@@ -128,6 +128,7 @@ wxMenuBar *MakeMenu(int type, const char *dict_name)
|
||||
lexicon_menu->Append(MENU_LEXICON_DE, _("German"));
|
||||
lexicon_menu->Append(MENU_LEXICON_IT, _("Italian"));
|
||||
lexicon_menu->Append(MENU_LEXICON_IT2, _("Italian, pass 2"));
|
||||
// lexicon_menu->Append(MENU_LEXICON_TEST, _("Test"));
|
||||
|
||||
tools_menu = new wxMenu;
|
||||
tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu);
|
||||
|
||||
+16
-3
@@ -766,7 +766,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB
|
||||
if(word_end[0] == '.')
|
||||
utf8_in(&c2, &word_end[2]);
|
||||
else
|
||||
utf8_in(&c2, &word_end[1]);
|
||||
utf8_in(&c2, &word_end[0]);
|
||||
|
||||
if((word_end[1] != 0) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || IsAlpha(c2)))
|
||||
{
|
||||
@@ -850,8 +850,8 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
flags[0] = 0;
|
||||
flags[1] = 0;
|
||||
|
||||
if((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER))
|
||||
return(0);
|
||||
if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || isdigit(word[-2]))
|
||||
return(0); // not '2xx'
|
||||
|
||||
word_start = word;
|
||||
while((c = *word++) != ' ')
|
||||
@@ -889,6 +889,10 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
prev = value;
|
||||
n_digits++;
|
||||
}
|
||||
|
||||
if(isdigit(word[0]))
|
||||
return(0); // eg. 'xx2'
|
||||
|
||||
acc += prev;
|
||||
if(acc < tr->langopts.min_roman)
|
||||
return(0);
|
||||
@@ -896,6 +900,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
if(acc > tr->langopts.max_roman)
|
||||
return(0);
|
||||
|
||||
|
||||
Lookup(tr, "_roman",ph_roman); // precede by "roman" if _rom is defined in *_list
|
||||
p = &ph_out[0];
|
||||
|
||||
@@ -931,6 +936,10 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wtab[0].flags |= FLAG_ORDINAL;
|
||||
}
|
||||
}
|
||||
|
||||
tr->prev_dict_flags = 0;
|
||||
@@ -1071,6 +1080,10 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, int thou
|
||||
}
|
||||
}
|
||||
sprintf(ph_out,"%s%s",ph_of,ph_thousands);
|
||||
|
||||
if((value == 1) && (thousandplex == 1) && (tr->langopts.numbers & NUM_OMIT_1_THOUSAND))
|
||||
return(1);
|
||||
|
||||
return(found_value);
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -130,7 +130,8 @@ typedef struct {
|
||||
char name[N_PHONEME_TAB_NAME];
|
||||
PHONEME_TAB *phoneme_tab_ptr;
|
||||
int n_phonemes;
|
||||
int includes; // also include the phonemes from this other phoneme table
|
||||
int includes; // also include the phonemes from this other phoneme table
|
||||
int equivalence_tables; // lists of equivalent phonemes to match other languages, byte index into phondata
|
||||
} PHONEME_TAB_LIST;
|
||||
|
||||
|
||||
|
||||
@@ -613,7 +613,7 @@ void MyFrame::OnProsody(wxCommandEvent& WXUNUSED(event))
|
||||
prosodyframe->CreateStatusBar();
|
||||
|
||||
int width, height;
|
||||
wxMDIClientWindow *clientwin = this->GetClientWindow();
|
||||
wxMDIClientWindow *clientwin = (wxMDIClientWindow *)this->GetClientWindow();
|
||||
clientwin->GetClientSize(&width, &height);
|
||||
|
||||
#ifdef deleted
|
||||
|
||||
+5
-9
@@ -1995,8 +1995,8 @@ static MNEM_TAB xml_char_mnemonics[] = {
|
||||
{NULL,-1}};
|
||||
|
||||
|
||||
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type)
|
||||
{//=============================================================================================================
|
||||
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change)
|
||||
{//=================================================================================================================================
|
||||
/* Find the end of the current clause.
|
||||
Write the clause into buf
|
||||
|
||||
@@ -2051,6 +2051,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix
|
||||
tr->clause_lower_count = 0;
|
||||
end_of_input = 0;
|
||||
*tone_type = 0;
|
||||
*voice_change = 0;
|
||||
|
||||
f_input = f_in; // for GetC etc
|
||||
|
||||
@@ -2218,16 +2219,11 @@ f_input = f_in; // for GetC etc
|
||||
|
||||
if(terminator & CLAUSE_BIT_VOICE)
|
||||
{
|
||||
// a change in voice, write the new voice name to the end of the buf
|
||||
p = current_voice_id;
|
||||
while((*p != 0) && (ix < (n_buf-1)))
|
||||
{
|
||||
buf[ix++] = *p++;
|
||||
}
|
||||
buf[ix++] = 0;
|
||||
strcpy(voice_change, current_voice_id);
|
||||
}
|
||||
return(terminator);
|
||||
}
|
||||
c1 = ' ';
|
||||
c2 = GetC();
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ BOOL load_MBR()
|
||||
if(hinstDllMBR != NULL)
|
||||
return TRUE; // already loaded
|
||||
|
||||
if (!(hinstDllMBR=LoadLibraryA("mbrola.dll")))
|
||||
if ((hinstDllMBR=LoadLibraryA("mbrola.dll")) == 0)
|
||||
return FALSE;
|
||||
init_MBR =(PROCIC) GetProcAddress(hinstDllMBR,"init_MBR");
|
||||
write_MBR =(PROCIC) GetProcAddress(hinstDllMBR,"write_MBR");
|
||||
|
||||
+14
-11
@@ -35,8 +35,8 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.43.57 18.Jul.10";
|
||||
const int version_phdata = 0x014354;
|
||||
const char *version_string = "1.43.63 02.Aug.10";
|
||||
const int version_phdata = 0x014361;
|
||||
|
||||
int option_device_number = -1;
|
||||
FILE *f_logespeak = NULL;
|
||||
@@ -49,7 +49,7 @@ PHONEME_TAB *phoneme_tab[N_PHONEME_TAB];
|
||||
unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited
|
||||
|
||||
USHORT *phoneme_index=NULL;
|
||||
char *spects_data=NULL;
|
||||
char *phondata_ptr=NULL;
|
||||
unsigned char *wavefile_data=NULL;
|
||||
static unsigned char *phoneme_tab_data = NULL;
|
||||
|
||||
@@ -116,16 +116,17 @@ int LoadPhData()
|
||||
int result = 1;
|
||||
int length;
|
||||
unsigned char *p;
|
||||
int *pw;
|
||||
|
||||
if((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data),"phontab",NULL)) == NULL)
|
||||
return(-1);
|
||||
if((phoneme_index = (USHORT *)ReadPhFile((void *)(phoneme_index),"phonindex",NULL)) == NULL)
|
||||
return(-1);
|
||||
if((spects_data = ReadPhFile((void *)(spects_data),"phondata",NULL)) == NULL)
|
||||
if((phondata_ptr = ReadPhFile((void *)(phondata_ptr),"phondata",NULL)) == NULL)
|
||||
return(-1);
|
||||
if((tunes = (TUNE *)ReadPhFile((void *)(tunes),"intonations",&length)) == NULL)
|
||||
return(-1);
|
||||
wavefile_data = (unsigned char *)spects_data;
|
||||
wavefile_data = (unsigned char *)phondata_ptr;
|
||||
n_tunes = length / sizeof(TUNE);
|
||||
|
||||
// read the version number from the first 4 bytes of phondata
|
||||
@@ -150,7 +151,9 @@ int LoadPhData()
|
||||
n_phonemes = p[0];
|
||||
phoneme_tab_list[ix].n_phonemes = p[0];
|
||||
phoneme_tab_list[ix].includes = p[1];
|
||||
p += 4;
|
||||
pw = (int *)p;
|
||||
phoneme_tab_list[ix].equivalence_tables = Reverse4Bytes(pw[1]);
|
||||
p += 8;
|
||||
memcpy(phoneme_tab_list[ix].name,p,N_PHONEME_TAB_NAME);
|
||||
p += N_PHONEME_TAB_NAME;
|
||||
phoneme_tab_list[ix].phoneme_tab_ptr = (PHONEME_TAB *)p;
|
||||
@@ -168,10 +171,10 @@ void FreePhData(void)
|
||||
{//==================
|
||||
Free(phoneme_tab_data);
|
||||
Free(phoneme_index);
|
||||
Free(spects_data);
|
||||
Free(phondata_ptr);
|
||||
phoneme_tab_data=NULL;
|
||||
phoneme_index=NULL;
|
||||
spects_data=NULL;
|
||||
phondata_ptr=NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -226,7 +229,7 @@ frameref_t *LookupSpect(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params,
|
||||
frame_t *frame;
|
||||
static frameref_t frames_buf[N_SEQ_FRAMES];
|
||||
|
||||
seq = (SPECT_SEQ *)(&spects_data[fmt_params->fmt_addr]);
|
||||
seq = (SPECT_SEQ *)(&phondata_ptr[fmt_params->fmt_addr]);
|
||||
seqk = (SPECT_SEQK *)seq;
|
||||
nf = seq->n_frames;
|
||||
|
||||
@@ -279,7 +282,7 @@ frameref_t *LookupSpect(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params,
|
||||
{
|
||||
// a secondary reference has been returned, which is not a wavefile
|
||||
// add these spectra to the main sequence
|
||||
seq2 = (SPECT_SEQ *)(&spects_data[fmt_params->fmt2_addr]);
|
||||
seq2 = (SPECT_SEQ *)(&phondata_ptr[fmt_params->fmt2_addr]);
|
||||
seqk2 = (SPECT_SEQK *)seq2;
|
||||
|
||||
// first frame of the addition just sets the length of the last frame of the main seq
|
||||
@@ -371,7 +374,7 @@ unsigned char *GetEnvelope(int index)
|
||||
fprintf(stderr,"espeak: No envelope\n");
|
||||
return(envelope_data[0]); // not found, use a default envelope
|
||||
}
|
||||
return((unsigned char *)&spects_data[index]);
|
||||
return((unsigned char *)&phondata_ptr[index]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+5
-1
@@ -254,6 +254,9 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
|
||||
wav_length = (p[1] * 256);
|
||||
wav_length += p[0]; // length in bytes
|
||||
|
||||
if(wav_length == 0)
|
||||
return(0);
|
||||
|
||||
min_length = speed.min_sample_len;
|
||||
|
||||
if(wav_scale==0)
|
||||
@@ -1656,7 +1659,8 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
|
||||
{
|
||||
InterpretPhoneme2(p->tone_ph, &phdata_tone);
|
||||
pitch_env = GetEnvelope(phdata_tone.pitch_env);
|
||||
amp_env = GetEnvelope(phdata_tone.amp_env);
|
||||
if(phdata_tone.amp_env > 0)
|
||||
amp_env = GetEnvelope(phdata_tone.amp_env);
|
||||
}
|
||||
|
||||
StartSyllable();
|
||||
|
||||
@@ -533,6 +533,7 @@ int SelectPhonemeTableName(const char *name);
|
||||
|
||||
void Write4Bytes(FILE *f, int value);
|
||||
int Read4Bytes(FILE *f);
|
||||
int Reverse4Bytes(int word);
|
||||
int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags);
|
||||
|
||||
|
||||
|
||||
+17
-10
@@ -130,7 +130,7 @@ static Translator* NewTranslator(void)
|
||||
memset(tr->letter_bits,0,sizeof(tr->letter_bits));
|
||||
memset(tr->letter_groups,0,sizeof(tr->letter_groups));
|
||||
|
||||
// 0-5 sets of characters matched by A B C E F G in pronunciation rules
|
||||
// 0-5 sets of characters matched by A B C H F G Y in pronunciation rules
|
||||
// these may be set differently for different languages
|
||||
SetLetterBits(tr,0,"aeiou"); // A vowels, except y
|
||||
SetLetterBits(tr,1,"bcdfgjklmnpqstvxz"); // B hard consonants, excluding h,r,w
|
||||
@@ -424,7 +424,7 @@ Translator *SelectTranslator(const char *name)
|
||||
|
||||
tr->langopts.stress_rule = STRESSPOSN_1L;
|
||||
SetLetterVowel(tr,'y');
|
||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900;
|
||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900 | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -440,8 +440,9 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2;
|
||||
memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths));
|
||||
|
||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN;
|
||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN;
|
||||
SetLetterVowel(tr,'y');
|
||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 2; // use de_rules for unpronouncable rules
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -458,6 +459,8 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.numbers = NUM_HUNDRED_AND | NUM_ROMAN | NUM_1900;
|
||||
tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word
|
||||
tr->langopts.suffix_add_e = 'e';
|
||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 2; // use en_rules for unpronouncable rules
|
||||
SetLetterBits(tr,6,"aeiouy"); // Group Y: vowels, including y
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -547,7 +550,7 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.unstressed_wd2 = 2;
|
||||
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_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;
|
||||
|
||||
if(name2 == L('c','a'))
|
||||
{
|
||||
@@ -559,6 +562,10 @@ Translator *SelectTranslator(const char *name)
|
||||
{
|
||||
tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel
|
||||
}
|
||||
else
|
||||
{
|
||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 2; // use es_rules for unpronouncable rules
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -702,7 +709,7 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.param[LOPT_IT_DOUBLING] = 1;
|
||||
tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? !
|
||||
|
||||
tr->langopts.numbers = NUM_DFRACTION_5 | NUM_ALLOW_SPACE | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS | NUM_ORDINAL_DOT | NUM_OMIT_1_HUNDRED;
|
||||
tr->langopts.numbers = NUM_DFRACTION_5 | NUM_ALLOW_SPACE | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS | NUM_ORDINAL_DOT | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND;
|
||||
tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator
|
||||
tr->langopts.decimal_sep = ',';
|
||||
tr->langopts.max_roman = 899;
|
||||
@@ -879,7 +886,7 @@ SetLengthMods(tr,3); // all equal
|
||||
tr->letter_groups[0] = vowels_cyrillic;
|
||||
|
||||
tr->langopts.stress_rule = STRESSPOSN_3R; // antipenultimate
|
||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2;
|
||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
|
||||
tr->langopts.numbers2 = 0x8a; // variant numbers before thousands,milliards
|
||||
}
|
||||
break;
|
||||
@@ -1098,7 +1105,7 @@ SetLengthMods(tr,3); // all equal
|
||||
if(name2 == L('t','a'))
|
||||
{
|
||||
tr->letter_bits_offset = OFFSET_TAMIL;
|
||||
tr->langopts.numbers = 0x1;
|
||||
tr->langopts.numbers = NUM_OMIT_1_THOUSAND ;
|
||||
}
|
||||
if(name2 == L('m','r'))
|
||||
{
|
||||
@@ -1140,8 +1147,8 @@ SetLengthMods(tr,3); // all equal
|
||||
|
||||
case L('t','r'): // Turkish
|
||||
{
|
||||
static const unsigned char stress_amps_tr[8] = {18,16, 20,20, 20,21, 21,20 };
|
||||
static const short stress_lengths_tr[8] = {190,180, 200,200, 0,0, 240,250};
|
||||
static const unsigned char stress_amps_tr[8] = {18,16, 20,21, 20,21, 21,20 };
|
||||
static const short stress_lengths_tr[8] = {190,180, 200,230, 0,0, 240,250};
|
||||
|
||||
SetupTranslator(tr,stress_lengths_tr,stress_amps_tr);
|
||||
tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5
|
||||
@@ -1149,7 +1156,7 @@ SetLengthMods(tr,3); // all equal
|
||||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable
|
||||
tr->langopts.stress_flags = 0x20; //no automatic secondary stress
|
||||
|
||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2;
|
||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
|
||||
tr->langopts.max_initial_consonants = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
+114
-2
@@ -667,6 +667,98 @@ static int CheckDottedAbbrev(char *word1, WORD_TAB *wtab)
|
||||
} // end of CheckDottedAbbrev
|
||||
|
||||
|
||||
extern char *phondata_ptr;
|
||||
|
||||
int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes)
|
||||
{//====================================================================
|
||||
// tr: the original language
|
||||
// lang2: phoneme table number for the temporary language
|
||||
// phonemes: the phonemes to be replaced
|
||||
|
||||
int ix;
|
||||
int len;
|
||||
char phon;
|
||||
char *p;
|
||||
unsigned char *pb;
|
||||
char *eqlist;
|
||||
char *p_out;
|
||||
char *p_in;
|
||||
int remove_stress = 0;
|
||||
char phonbuf[N_WORD_PHONEMES];
|
||||
|
||||
// has a phoneme equivalence table been specified for thus language pair?
|
||||
if((ix = phoneme_tab_list[tr->phoneme_tab_ix].equivalence_tables) == 0)
|
||||
return(0);
|
||||
|
||||
pb = (unsigned char *)&phondata_ptr[ix];
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if(pb[0] == 0)
|
||||
return(0); // table not found
|
||||
|
||||
if(pb[0] == lang2)
|
||||
break;
|
||||
|
||||
len = (pb[2] << 8) + pb[3]; // size of this table in words
|
||||
pb += (len * 4);
|
||||
}
|
||||
remove_stress = pb[1];
|
||||
|
||||
if(option_phonemes == 2)
|
||||
{
|
||||
DecodePhonemes(phonemes, phonbuf);
|
||||
fprintf(f_trans,"(%s) %s -> (%s) ", phoneme_tab_list[lang2].name, phonbuf, phoneme_tab_list[tr->phoneme_tab_ix].name);
|
||||
}
|
||||
|
||||
p_in = phonemes;
|
||||
eqlist = (char *)&pb[8];
|
||||
p_out = phonbuf;
|
||||
|
||||
while((phon = *p_in++) != 0)
|
||||
{
|
||||
if(remove_stress && ((phon & 0xff) < phonSTRESS_PREV))
|
||||
continue; // remove stress marks
|
||||
|
||||
// is there a translation for this phoneme code?
|
||||
p = eqlist;
|
||||
while(*p != 0)
|
||||
{
|
||||
len = strlen(&p[1]);
|
||||
if(*p == phon)
|
||||
{
|
||||
strcpy(p_out, &p[1]);
|
||||
p_out += len;
|
||||
break;
|
||||
}
|
||||
p += (len + 2);
|
||||
}
|
||||
if(*p == 0)
|
||||
{
|
||||
// no translation found
|
||||
*p_out++ = phon;
|
||||
}
|
||||
}
|
||||
*p_out = 0;
|
||||
|
||||
if(remove_stress)
|
||||
{
|
||||
SetWordStress(tr, phonbuf, NULL, -1, 0);
|
||||
}
|
||||
|
||||
strcpy(phonemes, phonbuf);
|
||||
|
||||
if(option_phonemes == 2)
|
||||
{
|
||||
SelectPhonemeTable(tr->phoneme_tab_ix);
|
||||
DecodePhonemes(phonemes, phonbuf);
|
||||
fprintf(f_trans,"%s\n\n", phonbuf);
|
||||
}
|
||||
return(1);
|
||||
} // end of ChangeEquivalentPhonemes
|
||||
|
||||
|
||||
|
||||
|
||||
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab)
|
||||
{//===========================================================================
|
||||
@@ -1148,6 +1240,12 @@ strcpy(phonemes2,phonemes);
|
||||
strcpy(word_phonemes,phonemes);
|
||||
return(0);
|
||||
}
|
||||
|
||||
if(dictionary_flags2[0] & FLAG_ABBREV)
|
||||
{
|
||||
// Removing the suffix leaves a word which should be spoken as individual letters
|
||||
// Not yet implemented
|
||||
}
|
||||
if(dictionary_flags[0]==0)
|
||||
{
|
||||
dictionary_flags[0] = dictionary_flags2[0];
|
||||
@@ -1697,6 +1795,19 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
|
||||
p[1] = phonSCHWA;
|
||||
p[2] = 0;
|
||||
}
|
||||
|
||||
// ?? Option to convert from language2 phonemes to the equivalent language1 phonemes
|
||||
// ?? Option to set the word-stress according to language1 rules eg. lang=fr)
|
||||
if(ChangeEquivalentPhonemes(tr, switch_phonemes, (char *)p))
|
||||
{
|
||||
switch_phonemes = -1;
|
||||
}
|
||||
|
||||
if(switch_phonemes == -1)
|
||||
{
|
||||
strcpy(dictionary_name, old_dictionary_name);
|
||||
SelectPhonemeTable(voice->phoneme_tab_ix);
|
||||
}
|
||||
}
|
||||
|
||||
if(!(word_flags & FLAG_HYPHEN))
|
||||
@@ -2196,6 +2307,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
|
||||
|
||||
short charix[N_TR_SOURCE+4];
|
||||
WORD_TAB words[N_CLAUSE_WORDS];
|
||||
static char voice_change_name[40];
|
||||
int word_count=0; // index into words
|
||||
|
||||
char sbuf[N_TR_SOURCE];
|
||||
@@ -2218,7 +2330,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
|
||||
|
||||
for(ix=0; ix<N_TR_SOURCE; ix++)
|
||||
charix[ix] = 0;
|
||||
terminator = ReadClause(tr, f_text, source, charix, &charix_top, N_TR_SOURCE, &tone2);
|
||||
terminator = ReadClause(tr, f_text, source, charix, &charix_top, N_TR_SOURCE, &tone2, voice_change_name);
|
||||
|
||||
if((f_logespeak != NULL) && (logging_type & 4))
|
||||
{
|
||||
@@ -3038,7 +3150,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
|
||||
{
|
||||
// return new voice name if an embedded voice change command terminated the clause
|
||||
if(terminator & CLAUSE_BIT_VOICE)
|
||||
*voice_change = &source[source_index];
|
||||
*voice_change = voice_change_name;
|
||||
else
|
||||
*voice_change = NULL;
|
||||
}
|
||||
|
||||
+11
-4
@@ -112,6 +112,8 @@
|
||||
#define FLAG_SUFFIX_VOWEL 0x08000000 // remember an initial vowel from the suffix
|
||||
#define FLAG_NO_TRACE 0x10000000 // passed to TranslateRules() to suppress dictionary lookup printout
|
||||
#define FLAG_NO_PREFIX 0x20000000
|
||||
#define FLAG_UNPRON_TEST 0x80000000 // do unpronounability test on the beginning of the word
|
||||
|
||||
|
||||
// prefix/suffix flags (bits 8 to 14, bits 16 to 22) don't use 0x8000, 0x800000
|
||||
#define SUFX_E 0x0100 // e may have been added
|
||||
@@ -125,6 +127,8 @@
|
||||
#define SUFX_B 0x20000 // break, this character breaks the word into stem and suffix (used with SUFX_P)
|
||||
#define SUFX_A 0x40000 // remember that the suffix starts with a vowel
|
||||
|
||||
#define SUFX_UNPRON 0x8000 // used to return $unpron flag from *_rules
|
||||
|
||||
|
||||
#define FLAG_ALLOW_TEXTMODE 0x02 // allow dictionary to translate to text rather than phonemes
|
||||
#define FLAG_SUFX 0x04
|
||||
@@ -221,9 +225,9 @@
|
||||
typedef const char * constcharptr;
|
||||
|
||||
typedef struct {
|
||||
int points;
|
||||
int points;
|
||||
const char *phonemes;
|
||||
int end_type;
|
||||
int end_type;
|
||||
char *del_fwd;
|
||||
} MatchRecord;
|
||||
|
||||
@@ -388,6 +392,7 @@ typedef struct {
|
||||
#define NUM_AND_HUNDRED 0x40000
|
||||
#define NUM_THOUSAND_AND 0x80000
|
||||
#define NUM_VIGESIMAL 0x100000
|
||||
#define NUM_OMIT_1_THOUSAND 0x200000
|
||||
|
||||
#define NUM_ROMAN 0x1000000
|
||||
#define NUM_ROMAN_CAPITALS 0x2000000
|
||||
@@ -413,6 +418,7 @@ typedef struct {
|
||||
// bit18= 'and' before hundreds
|
||||
// bit19= 'and' after thousands if there are no hundreds
|
||||
// bit20= vigesimal number, if tens are not found
|
||||
// bit21= omit "one" before "thousand"
|
||||
|
||||
// bit24= recognize roman numbers
|
||||
// bit25= Roman numbers only if upper case
|
||||
@@ -484,7 +490,8 @@ typedef struct
|
||||
|
||||
char phon_out[300];
|
||||
char phonemes_repeat[20];
|
||||
int phonemes_repeat_count;
|
||||
int phonemes_repeat_count;
|
||||
int phoneme_tab_ix;
|
||||
|
||||
unsigned char stress_amps[8];
|
||||
unsigned char stress_amps_r[8];
|
||||
@@ -650,7 +657,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
|
||||
int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
|
||||
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);
|
||||
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change);
|
||||
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type);
|
||||
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change);
|
||||
|
||||
void SetVoiceStack(espeak_VOICE *v);
|
||||
void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata);
|
||||
|
||||
@@ -978,6 +978,7 @@ voice_t *LoadVoice(const char *vname, int control)
|
||||
fprintf(stderr,"Unknown phoneme table: '%s'\n",phonemes_name);
|
||||
}
|
||||
voice->phoneme_tab_ix = ix;
|
||||
new_translator->phoneme_tab_ix = ix;
|
||||
error = LoadDictionary(new_translator, new_dictionary, control & 4);
|
||||
if(dictionary_name[0]==0)
|
||||
return(NULL); // no dictionary loaded
|
||||
|
||||
+2
-2
@@ -41,7 +41,7 @@
|
||||
*/
|
||||
extern wxString path_phsource;
|
||||
|
||||
extern char *spects_data;
|
||||
extern char *phondata_ptr;
|
||||
extern USHORT *phoneme_index;
|
||||
extern int n_phoneme_tables;
|
||||
|
||||
@@ -664,7 +664,7 @@ void MakeVowelLists(void)
|
||||
{
|
||||
ix = vowelfmt_addr[vowelfmt_ix];
|
||||
|
||||
seq = (SPECT_SEQ *)(&spects_data[ix]);
|
||||
seq = (SPECT_SEQ *)(&phondata_ptr[ix]);
|
||||
seqk = (SPECT_SEQK *)seq;
|
||||
|
||||
if(seq->frame[0].frflags & FRFLAG_KLATT)
|
||||
|
||||
Reference in New Issue
Block a user