+espeak 1.47.09 29.04.2013
+ Bug fix (lookup in *_list occasionally found the wrong word).
+
+espeak 1.47.08 26.04.2013
+
+Automatically generate character names for subscript and
+superscript characters.
+
+Use internal ctype data for character codes up to U+024F.
+
+Add API function espeak_TextToPhonemes().
+
+Add test language az, Azerbaijani.
+
+
espeak 1.47.07 18.04.2013
Language data changes only.
--- /dev/null
+
+// This file is UTF8 encoded
+// Spelling to phoneme rules for Azerbaijani
+
+
+// Numbers
+_0 s@f'@R
+_1 b'iR
+_2 ic'i
+_3 'ytS
+_4 d'WRd
+_5 b'eS
+_6 alt'@
+_7 jedd'i
+_8 s&Cc'iz
+_9 dogg'uz
+_1X 'on
+_2X ijiRm'i
+_3X ot'uz
+_4X g'@Rx
+_5X &ll'i
+_6X altm'@S
+_7X jetm'iS
+_8X s&Cs'&n
+_9X doxs'an
+_0C j'yz
+_0M1 m'in
+_0M2 milj'on
+_0M3 milj'aRd
+_dpt _t,am_| // ??
+
+
+// Function words
+ // personal pronouns
+mən $u+
+sən $u+
+o $u+
+biz $u+
+siz $u+
+onlar $u+
+
+ // possessive pronouns
+mənim $u+
+sənin $u+
+onun $u+
+bizim $u+
+sizin $u+
+onların $u+
+
+bu $u+
+
+
+// conjunctions
+və $u+
+isə $u+
+də $u+
+həm $u+
+ya $u+
+da $u+
+
+// prepositions
+aid $u+ // about
+ilə $u+ // with, by, in
+dair $u+ // about
+
+// postpositions
+ci $u
+cı $u
+cü $u
+de $u
+dir $u
+li $u
+in $u
+nə $u
+ya $u
+yə $u
+
+// Character names
+b be
+c dZe
+ç tSe
+_ə &
+d de
+f fe
+g Je
+ğ Qe
+h he
+x xe
+j Ze
+k ka
+q ge
+l el
+m em
+n en
+_o o
+p pe
+r eR
+s se
+ş Se
+t te
+v ve
+w dubElv'E
+y je
+z ze
+
+* ulduz $text
+% faiz $text
+
+
+
--- /dev/null
+
+// This file is UTF8 encoded
+// Spelling to phoneme rules for Azerbaijani
+
+// Stress rule: Right-most vowel, but stop before the vowel which is
+// marked as unstressed [%].
+
+.L02 ı a o u // back vowels
+.L03 i e ö ü
+
+.group a
+ a a
+ ai (K aI
+ -) a (_ a
+
+.group b
+ b b
+
+.group c
+ c dZ
+
+.group ç
+ ç tS
+
+.group d
+ d d
+
+ -) dan (_ d%an
+ -) dən (_ d%&n
+ -) dək (_ d%&k
+
+.group e
+ e e
+
+.group ə
+ ə &
+ @) ə (_ %&
+ -) ə (_ %&
+
+.group f
+ f f
+
+.group g
+ g J
+
+.group ğ
+ ğ Q
+ A) ğ :
+ a) ğa :
+ o) ğo :
+ u) ğu :
+ ö) ğö :
+ ü) ğü :
+ i) ğ j
+ e) ğ j
+
+.group h
+ h h
+
+.group x
+ x x
+
+.group ı
+ ı @
+
+.group i
+ i i
+
+ @) iya (_ =i;a
+
+.group j
+ j Z
+
+.group k
+ k c
+ k (K C
+
+.group q
+ q g
+ q (_ x
+
+.group l
+ l l
+ l (L02 L
+ L02) l (K L
+
+.group m
+ m m
+
+.group n
+ n n
+
+.group o
+ o o
+
+.group ö
+ ö W
+
+.group p
+ p p
+
+.group r
+ r R
+ A) r (A *
+ ğ) r (A *
+ C) r (_ @-r
+
+.group s
+ s s
+
+.group ş
+ ş S
+
+.group t
+ t t
+ L03) t (L03 ts
+
+.group u
+ u u
+
+.group ü
+ ü y
+
+.group v
+ v v
+
+.group w
+ w w
+
+.group y
+ y j
+
+.group z
+ z z
+
+.group
+ ä &
_1 '&k
_2 d'uj
_3 t'in
-_4 tS'ar
+_4 tS#'ar
_5 p'a~tS
-_6 tSh'Oj
+_6 tS#'Oj
_7 S'at
_8 'at.#
_9 n'Oj
_2a d'u // with hundreds etc.
-_6a tSh'O
+_6a tS#'O
_9a n'O
_11 '&garo
_12 b'arO
_13 t'erO
-_14 tS'oddO
+_14 tS#'oddO
_15 p'OnerO
_16 S'olO
_17 S'OterO
_?? zymb'o:l
_?A b'u:xstA:b@
_cap gr'o:s
+_sub 'Unt@R|3_!,IndEks||
+_sup 'o:b@R|3_!,IndEks||
// accent names
pochs pOxs
präsident $3
prämie $alt
-privatisier pri:vati:z'i:r
-problematisier pro:ble:m'a:tIzi:r
+privatisier $4
+problematisier $3 //pro:ble:m'a:tIzi:r
reliquie $alt
risik $1
Compiling: '/home/jsd1/speechdata/dictsource/an_rules'
172 rules, 29 groups (0)
+Using phonemetable: 'az'
+Compiling: '/home/jsd1/speechdata/dictsource/az_list'
+ 84 entries
+Compiling: '/home/jsd1/speechdata/dictsource/az_rules'
+ 58 rules, 34 groups (0)
+
Using phonemetable: 'bg'
Compiling: '/home/jsd1/speechdata/dictsource/bg_listx'
2790 entries
Using phonemetable: 'de'
Compiling: '/home/jsd1/speechdata/dictsource/de_list'
- 648 entries
+ 650 entries
Compiling: '/home/jsd1/speechdata/dictsource/de_rules'
1241 rules, 34 groups (0)
Using phonemetable: 'en'
Compiling: '/home/jsd1/speechdata/dictsource/en_list'
- 4117 entries
+ 4131 entries
Compiling: '/home/jsd1/speechdata/dictsource/en_rules'
- 5843 rules, 101 groups (0)
+ 5852 rules, 101 groups (0)
Using phonemetable: 'eo'
Compiling: '/home/jsd1/speechdata/dictsource/eo_list'
Compiling: '/home/jsd1/speechdata/dictsource/es_list'
358 entries
Compiling: '/home/jsd1/speechdata/dictsource/es_rules'
- 184 rules, 27 groups (0)
+ 187 rules, 27 groups (0)
Using phonemetable: 'et'
Compiling: '/home/jsd1/speechdata/dictsource/et_list'
Using phonemetable: 'ga'
Compiling: '/home/jsd1/speechdata/dictsource/ga_list'
- 218 entries
+ 226 entries
Compiling: '/home/jsd1/speechdata/dictsource/ga_rules'
- 356 rules, 34 groups (0)
+ 408 rules, 34 groups (0)
Using phonemetable: 'grc'
Compiling: '/home/jsd1/speechdata/dictsource/grc_list'
Compiling: '/home/jsd1/speechdata/dictsource/hi_list'
259 entries
Compiling: '/home/jsd1/speechdata/dictsource/hi_rules'
- 252 rules, 87 groups (86)
+ 265 rules, 87 groups (86)
Using phonemetable: 'hu'
Compiling: '/home/jsd1/speechdata/dictsource/hu_list'
Using phonemetable: 'hy'
Compiling: '/home/jsd1/speechdata/dictsource/hy_list'
- 70 entries
+ 112 entries
Compiling: '/home/jsd1/speechdata/dictsource/hy_rules'
- 93 rules, 39 groups (38)
+ 94 rules, 38 groups (38)
Using phonemetable: 'id'
Compiling: '/home/jsd1/speechdata/dictsource/id_list'
Compiling: '/home/jsd1/speechdata/dictsource/ne_list'
194 entries
Compiling: '/home/jsd1/speechdata/dictsource/ne_rules'
- 524 rules, 100 groups (92)
+ 520 rules, 100 groups (92)
Using phonemetable: 'nl'
Compiling: '/home/jsd1/speechdata/dictsource/nl_list'
- 1507 entries
+ 1519 entries
Compiling: '/home/jsd1/speechdata/dictsource/nl_rules'
- 698 rules, 34 groups (0)
+ 726 rules, 35 groups (0)
Using phonemetable: 'no'
Compiling: '/home/jsd1/speechdata/dictsource/no_list'
Using phonemetable: 'pt'
Compiling: '/home/jsd1/speechdata/dictsource/pt_list'
- 1207 entries
+ 1246 entries
Compiling: '/home/jsd1/speechdata/dictsource/pt_rules'
- 964 rules, 39 groups (0)
+ 997 rules, 39 groups (0)
Using phonemetable: 'ro'
Compiling: '/home/jsd1/speechdata/dictsource/ro_list'
Using phonemetable: 'sk'
Compiling: '/home/jsd1/speechdata/dictsource/sk_list'
- 321 entries
+ 347 entries
Compiling: '/home/jsd1/speechdata/dictsource/sk_rules'
535 rules, 46 groups (0)
Compiling: '/home/jsd1/speechdata/dictsource/sl_list'
105 entries
Compiling: '/home/jsd1/speechdata/dictsource/sl_rules'
- 81 rules, 30 groups (0)
+ 84 rules, 31 groups (0)
Using phonemetable: 'sq'
Compiling: '/home/jsd1/speechdata/dictsource/sq_list'
Compiling: '/home/jsd1/speechdata/dictsource/tr_list'
252 entries
Compiling: '/home/jsd1/speechdata/dictsource/tr_rules'
- 200 rules, 33 groups (0)
+ 207 rules, 34 groups (0)
Using phonemetable: 'ur'
Compiling: '/home/jsd1/speechdata/dictsource/ur_list'
Compiling: '/home/jsd1/speechdata/dictsource/vi_list'
135 entries
Compiling: '/home/jsd1/speechdata/dictsource/vi_rules'
- 463 rules, 97 groups (0)
+ 547 rules, 97 groups (0)
Using phonemetable: 'zh'
Compiling: '/home/jsd1/speechdata/dictsource/zh_list'
t# tS w x
+Dictionary az_dict 2013-04-25
+
+& @ @- a aI e E i
+o u W y
+
+* : ; b c C d dZ
+f g h j J k l L
+m n p Q r R s S
+t tS ts v w x z Z
+
+
Dictionary bg_dict 2013-03-16
@ a e i o u
Z z;
-Dictionary bn_dict 2013-04-18
+Dictionary bn_dict 2013-04-29
& a a~ e e~ i i: i~
l- o O o: O~ o~ r- u
v w x z Z
-Dictionary de_dict 2013-03-10
+Dictionary de_dict 2013-04-27
3 @ @- a A A: aI aU
A~ E E2 E: e: EI i I
ts v x z
-Dictionary en_dict 2013-04-18
+Dictionary en_dict 2013-04-29
0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3
x z Z
-Dictionary es_dict 2013-03-29
+Dictionary es_dict 2013-04-22
@ a aI aU e E eI eU
i o O oI u
tS v z Z z2 z3
-Dictionary ga_dict 2013-03-20
+Dictionary ga_dict 2013-04-25
0 0# @ a a# A: aI aI#
aU aU# e E E# e: eI i
t tS ts tS; v x z Z
-Dictionary hi_dict 2013-04-10
+Dictionary hi_dict 2013-04-29
-@ @2 a a: aI aU a~ e
+@ @- a a: aI aU a~ e
E e: E: e~ E~ i I i:
i~ l- o O o: O: O~ o~
r- u U u: u~ V
-#X1 #X2 - : b b# c c#
-d d# d. d.# f g g# h
-H j J J# k k# l l.
-m n N n. n^ p p# Q
-q r r. s S s. t T
+#X1 #X2 * - : b b# c
+c# d d# d. d.# f g g#
+h H j J J# k k# l
+l. m n N n. n^ p p#
+Q q r r. s S s. t
t# t. t.# v w x z
z Z
-Dictionary hy_dict 2008-12-22
+Dictionary hy_dict 2013-04-26
@ a aI e eI i i@ o
u W y
-** b c d dZ dz f g
-h j k k# l m n p
-p# r R r" s S t t#
-tS ts ts# v X z Z
+* ** b c d dZ dz f
+g h j k k# l m n
+p p# r R r" R2 s S
+t t# tS ts ts# v w X
+z Z
Dictionary id_dict 2011-02-21
t tS v w x
-Dictionary ne_dict 2013-03-09
+Dictionary ne_dict 2013-04-28
@ @/ @2 @3 a a: aI aU
a~ e E e: E: eI e~ E~
t.# v w x z
-Dictionary nl_dict 2013-04-12
+Dictionary nl_dict 2013-04-25
8 @ @- a A a: A~ e
E e# E2 e: EI eU i I
z Z
-Dictionary pa_dict 2013-03-17
+Dictionary pa_dict 2013-04-24
@ a a~ e E e~ E~ i
I i~ I~ o O o: O~ o~
: ; b b# c c# d d#
d. d.# f g g# h H j
J J# k k# l l. m n
-N n. n^ p p# Q R r.
-R2 s S t t# t. t.# v
-x z
+N n. n^ p p# Q r R
+r. R2 s S t t# t. t.#
+v x z
Dictionary pl_dict 2013-04-06
ts; v w x z Z Z;
-Dictionary pt_dict 2013-04-18
+Dictionary pt_dict 2013-04-26
& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
s. t t# t. t.# tS v w
-Dictionary sk_dict 2011-08-08
+Dictionary sk_dict 2013-04-26
& @- a a: e e: i i:
l- l: o o: oU r- r: u
u:
-* ; b d d; dZ dz f
-g h j k l l^ m n
-N n^ p r R R^ R^/ s
-S t t; tS ts v w x
-z Z
+* ; b c d d; dZ dz
+f g h j k l l^ m
+n N n^ p r R R^ R^/
+s S t t; tS ts v w
+x z Z
-Dictionary sl_dict 2013-01-30
+Dictionary sl_dict 2013-04-28
@ @- a a: e E e: i
i: o O o: u u: y
-: b d dZ dz f g h
-j k l l^ m n N n^
-p R R^ s S t tS ts
-v v# w x z Z
+* : b d dZ dz f g
+h j k l l^ m n N
+n^ p R R^ s S t tS
+ts tS; v v# w x z Z
Dictionary sq_dict 2008-12-22
v v# w z
-Dictionary tr_dict 2011-09-16
+Dictionary tr_dict 2013-04-25
@ a e E i I o O
u U W y Y
* : b c d dZ f g
-G h j J k l m n
-p Q r R s S t tS
-v w z Z
+G h j J k l L m
+n p Q r R s S t
+tS v w z Z
Dictionary ur_dict 2013-03-28
v w x z Z z.
-Dictionary vi_dict 2013-03-16
+Dictionary vi_dict 2013-04-21
-@ @: @:I @:U @I @U a a:
-a:I a:U aI aU e E eU EU
-i i@ iE iU o O o# O#
-o& o@ OI oI u u@ uI y
-y@ yI
+@ @- @: @:I @:U @I @U a
+a: a:I a:U aI aU e E eU
+EU i i@ iE iU o O o#
+O# o& O- o@ OI oI Oi u
+u- u@ uI y y@ yI
b c cr d D f g h
j J J^ k kh l m n
N n^ p Q s s. t t[
-v w x z Z z.
+tS tS; v w x z Z z.
Dictionary zh_dict 2013-01-25
// ?8 Use full vowel, not schwa in some word endings
// $alt1 use strong ending (-an, -table, -inal, -ier)
-// $alt2 use weak ending (ate, ery, ess, ile, men)
+// $alt2 use weak ending (ard, ate, ery, ess, ile, men)
// $alt3 use weak first vowel, a->[a#], e->[@], o->[0#]
// $alt4 separate 'h', not 'th'
// $alt6 'to'
// character names
_cap k,ap@-t@L
+_sub s,VbskrIpt||
+_sup s,u:p3skrIpt||
_?A l,Et3
_?? sImb@L
_braille br'eIl
_¡ %Inv,3:tI2dEkskl@m'eIS@n
_¦ broUk@nb'A@
_¨ daIa#r'i:sIs
-_ª fEmI2nIn'O@dI2n@L
_« lEft'gIl@mEt
_ makr0n
-² tu:
-³ Tri:
-_¹ su:p@skrIptw'0n
-_² su:p@skrIptt'u:
-_³ su:p@skrIptT'ri:
+² tu: $native
+³ Tri: $native
+
_´ a#kju:taksEnt
_· mId@Ld0t
_¸ sEd'Il@
-//_º maskjUlIn'O@dI2n@L
-_º dI2gr'i:z
_» raIt'gIl@mEt
_¿ %Inv,3:tI2dkw'EstS@n
_zh tS'aIni:z
// Cyrillic letters
-а a
-б bE
-в vE
-г gE
-д dE
-е jE
-ё jo
-ж ZE
-з zE
-и I
+а a:
+б bE:
+в vE:
+г gE:
+д dE:
+е jE:
+ё jo:
+ж ZE:
+з zE:
+и I:
й ,Ik@-*'atkOji
-к ka
+к ka:
л El/1
м Em
н En
-о o
-п pE
+о o:
+п pE:
р Er
с Es
-т tE
-у u
+т tE:
+у u|:
ф Ef
-х xa
-ц tsE
-ч tSE
-ш Sa
-щ StSa
+х xa:
+ц tsE:
+ч tSE:
+ш Sa:
+щ StSa:
ъ jEr
ы j'Eru
ь j'eri
-э E
-ю ju
-я ja
-ћ tS;E
-ђ djE
-ќ kjE
+э E:
+ю ju|:
+я ja:
+ћ tS;E:
+ђ djE:
+ќ kjE:
// Arabic letters
_5o f'If
_20o tw'Enti@
_30o T'3:ti@
-?3 _30o T'IRti@
+?5 _30o T'IRti@
_40o f'o@ti@
_50o f'Ifti@
_60o s'Iksti@
imo $abbrev
inlb $abbrev
ios $abbrev
+ipa $abbrev
irc $abbrev
irs $abbrev
isbn $abbrev
adieus a#dju:z
adieux a#dju:z
adios aDj'o:s
+adjective $1
admirable adm@r@b@L
admirably adm@r@bli
admonition adm@n'IS@n
antichrist $1
anticline $1
antidote $1
-antifreze $1
+antifreeze $1
antigen $1
antihero $1
antilog $1
cosmos k0zm0s
?3 cosmos k0zmoUs
cougar ku:g3
+counteract $3
countered kaUnt3d
(coup de grâce) ku:d@||gr'A:
coupon ku:p0n
d'ye dj@
dynamo $1
+earlobe i@3loUb
early 3:lI
eavesdrop i:vzdr0p
ebay i:beI
facade f@sA:d
façade f@sA:d
facetious $alt3
+faculty fak@Lt2i
faeces fi:si:z
fahrenheit far@nhaIt
fairest fe@r@st
foyer fOIeI
freelance fri:laans
freon fri:0n
-frequent frI2kwEnt $verb
fricassee frIka#seI
frigate frIg@t
fringer frIndZ3 // infringer
henceforth hEnsfo@T
?3 herb 3:b
hercules h3:kjUli:z
+heredity h3rEdI2ti
?3 hereford h3:f3d
heretical hI2rEtI2k@L
hereto hi@3'tu:
takel tak@L
talent tal@nt
tallyho talI'hoU
+timbre tamb3
tampon tamp0n
tangerine tandZ@r'i:n
taoiseach ti:S@x
?!3 temporary tEmpr@rI
?3 template tEmpl@t
therefore $1
+thereof De@r'0v
thermos T3:m@s
thermostable $alt1
thesis Ti:sIs
vestige vEstI2dZ
vex vEks // for vexed
viagra vaI'agr@
+vibrato vI2brA:toU
vicar vIk3
vigilante vIdZI2l'anti
vignette vInj'Et
Belize bEl'i:z
Bengal b,Eng'O:l
Benin bEnIn
+Berkeley b3:kli
Bhutan bu:t'an
Bideford bIdIf@d
Bogota b0g@t'A:
Cyprus saIpr@s
Dahomey $alt3
Dallas dal@s
+Dagestan dA:gIst'A:n
Damascus $alt3
Dakota $alt3
Danish deInIS
Gurmukhi gU@mUki
Harare ha#rA:ri
Hanoi han'OI
+Harvard $alt2
Havana ha#van@
Hawaii h@w'aIi:
Hawai'i h@w'aIi:
?3 Korean k3r'i:@n
Kosovo k0s@voU
Kuala kwA:la#
+Kyrgyz k3:rgIz
+Kyrgyzstan k3:rgIst'A:n
Lagos leIg0s
Lahore $alt3
Lebanon lEb@n0n
Abu abu:
Abraham eIbr@ham
Ada eId@ $onlys
-Andrea $2
Adrian eIdri@n
Agatha aga#T@
-Angelika $2
Aggie agi
Agnes agn@s
Aguilera agi:l'e@r@
Andre 0ndreI
Andrea andri@
Andreas A:ndr'eI@s
-Angela $1
+Angela andZ@l@
+Angelika $2
Anita $alt3
Anthony ant@ni
Anton ant0n
Giovanni dZ@v'A:ni
Graeme greI@m
Graham greI@m
+Gruffydd grIfIT
Guido gwi:doU
Guinevere gwInI#vi@3
Hadrian heIdri:@n
Hamish heImIS
Harriet hari@t
+Harvey hA@vi
Heidi haIdi
Hecate hEk@teI
Hekate hEk@teI
Luigi lu:'i:dZi
Luis lu:Is
Lupe lu:peI
+Luther lu:T3
Madeleine mad@lI2n
Madeline mad@lI2n
Maeve meIv
Wallace w0lI#s
Wally w0li
?3 William wIlj@m
+Yerevan jEr@v'an
Yves i:v
Yvonne $2
Zoe zoUi
(at once) a#t_w0ns
?6 (at once) a#t_wVns
(at will) a#t_w'Il
+(at & t) 'eIt2i:@nt'i:
with wID $u
(with the) w%IDD@2 $nounf
_) ani anI
_) ani (on anaI
&) ani (_ 'A:nI
+ @st) ani (_S1 =i
an (ia 'eIn
ania (c_ 'eInIa
ania (c a#naI@
_t) ar (_ A@
&) ar (dis 3
&) ar (diz 3
+ &) ar (d_$w_alt2 3
&d) ar (d_ 3
gg) ar (d_ 3
&h) ar (d_ 3
?3 _) ar (istocrat a#r
log) ar (i @r
marg) ar (AtA_ 3r'
+ _l) ar (yn ar
m) ar (it ar
p) ar (i ar
p) ar (in e@
&sp) ass (_ @s
rr) ass @s
&v) ass (_ @s
+ as (al eIz
+ b) as (al as
ascii askI
f) asc (ia eIS
f) asci (s aSI
co (rro k@
co (rrup k@
_) costar koUstA@
- _) counter (@P7 k'aUnt@ // prefix
+ _) counter (@P7 k'aUnt3 // prefix
.group d
d d
ery (A 3j
_v) ery ErI2
qu) ery i@rI
+ _x) er (o i@r
z) er (o i@r
_C) er (o_ i@r
er (rA E
iss (a_ 'Is
issimo (_ 'IsImoU
chr) is (t_ aIs
- @) istan (_ =Istan
- @) istani (_ Ist'A:nI
+ @) istan (_ =IstA:n
+ @) istan (_N =Istan
@) iste (_ 'i:st
@) is (tic_ 'Is
r) is (y_ =@s
oea (_ 'i@
_) oe (d i:
p) oe (m oUI
- oer oU@
+ oer oU3
_) oe (s i:
&) oe (s_S2 z
oesopha I2s0f@
pro (voc pr%0#
pro (vok pr@
pro (sec pr0
+ _) prose (l pr0s
pro (fil proU
pro (gra proU
pro (log proU
th (ern_ D
_) thio T,aIoU
th (ith D
+ th (old th
th (ole th
_) th (om@ t
ph) th T
C) yes (_ aIz
_) yes jEs
yeah jEh
+ yew ju:
@C) y (gen I
?!3 d) y (nas I
s) ynch Ink
E (ntu 'E
E (ntous 'E
E (o_ I2
- Eous (_ =j@s
+ Eous (_ =i@s
l) E (ps E
l) E (pt E
Eri (A 'i@rI2
_) d (rA d
_) d (A d
d (A D
+ d (_ D
d (cY D
d (L03 D
+ d (v D
m) d d
n) d d
l) d d
_) gn (A n
_) g (A g
g (A Q
+ g (_ Q
g (cY Q
g (L03 Q
m) g g
// Irish Gaeilge dictionary
// written by Ronan McGuirk
-// January 2013
-// version 2.5
+// 2013
+// version 2.6.1
+// Please send comments and suggestions to espeak.gaeilge@gmail.com
+
// This file is UTF8 encoded
// letters
// accent names
// names of symbols
-ª_. pO#nk
+_. pO#nk
_, k0m@
_; semI
_: ko:l0n
amuigh @mu1'I
amháin @w'A:in
am aUm
-an @n
+anaithnid '0nah@nIdZ
anois @nIS
anonn @naUn
ann aUn
anseo @nS'O
+anuas a#n'u@s
aodh e:
aodha e:
aon e:@n
(ar ais) Er'aS
arís @r'i:S
as 0s
+aschurtha '0sxUrh@
+
atá @t['A: $u
baill bu1'i:l
bhaill vu1'i:l
beidh bEg
bhfuil w'Il
+bheas v'e:@s
bhuel w'El
ceithre kEr@
cathair k'0h@r
chlainne xl'InE
chun xUn $u
crainn kri:n
+chrainn xri:n
de dE $u+
des dEs $u
do dO# $u
domhnach d[aUn@x
domhnaigh d[aUnig
+dúghorm d['u:Q"Or@m
eile 'El@
euro ju:ro:
faic f@ak
(muigheo) mu1'i:||'o:
mhuigh vu1'i:
(mhaigh eo) vu1'i:||'o:
+mhama w'0m@
maith m'0
mhaith w'0
mbeadh m;O#X
os o:s
rabh raU
raibh rEv
+raidió r'adi:o:
réamhrá r'e:@vr,a:
réidh re:
+'s s
samhain saUIn
san s@n
seo S@_
// translation rules for Irish Gaeilge
// This file is UTF-8 encoded
-// written by Ronan McGuirk January 2013
-// Version 2.5B
+// written by Ronan McGuirk 2013
+// Version 2.6.1
+// Please send comments and suggestions to espeak.gaeilge@gmail.com
+
// Conditional rules
// ?1 allow eclipsis as 2 separate words
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid
.L04 b bh mb // for words like beag
.L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a
-.L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h
+.L06 aidh idh aí á eá eadh adh ad adsa imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h
.L07 b c g ch bh gh mb
.L08 lc ll nt bhse // for words like cailc
.L09 cl cr chr f
.L12 á é ó eo ua // when followed by i
.L13 oc omb
.L14 río dún gnío // followed with mh
-.L15 c ch f m d dh g gc gh mh // aoi following
+.L15 c ch f bhf m d dh g gc gh mh // aoi following
.L16 b c bh ch gr ghr // for inn word ending
.L17 l le li niste nn
-.L18 n nt nte neann neadh ntear nim nfear nfinn
+.L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar
.L19 na nea ra rea la llea arga // word endings with silent dh
.L20 eo eoir eá eabh io iu iú // slender m
.L21 ll nn ndán nntán
-.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine
+.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine eann
.L23 ea eo i
.L24 b mb bh g gh p ph bp m mh
abht aU#t[
amhr aUr // words like amhras
K) amhl aUl
- abhra aUr@ // words like slabhra
+ abh (C aU // words like slabhra
aghaidh aIg
t) abhair u:@r
th) abhair u:@r
t) abhar u:@r
th) abhar u:@r
_) an (sL01 @n
- _) an (- 0n // an prefix
+ _) a (nA @
+ _) an (_ @n
+ _) an (- '0n // an prefix
é) a @ // words like féach
X) a (nn_ aU#
X) a (ll_ aU#
_) ao e:
ae e:
amhna (_ aUn@
+ arraing arIng
+ _) ath (@@P3 ,0_
-
.group á
á A:
@) á ,A:
áinig A:nIg
ái 'A:i
-
+
.group ai
ai a#
L04) ai (L17 0#
m) ai (n 0#
c) ai (th 0#
ch) ai (th 0#
+ ai (tín 0#
ai (d 0#
p) ai (l 0#
@) ai (L11_ I
X) aigh 'aI
aigh aI# L04) aill (_ wi:l
aing (_ Ing
+ ai (llimh '0 // words like Gaillimh
+
-
.group b
b b // broad
L01) b b; // slender
bh (_ vv
bh (L22 vj // slender
L01) bh v
-?1 _m_) b (@
+?1 _m_) b (@
_) bhf v // urú broad
_) bhf (L22 v; // urú slender
_) bp b // urú broad
a) bh (a U // for example cabhair
ear) bha u: // words like Cearbhall
bhfaigh v'aI
+ _) beann (@ ba#n
+ _) bheann (@ va#n
+ _) bun (C@P3 b,Un
-
.group c
c k
c (L01 k; // slender
ch (L01 C;
ch (é+ C;
ch (ei+ x;
-?1 _g_) c (@
-?1 _g_) c (L01
+?1 _g_) c (@
+?1 _g_) c (L01
_) cabhr k'aUr
_) chabhr x'aUr
+ _) ceann (C@P5 k;,aUn
+ _) cheann (C@P6 C;,aUn
-
.group d
d d[ // broad
L01) d dZ // slender
d (L22 dZ // slender
d (L01 d; // slender
i) d (i dZ
-?1 _n_) d (@
+?1 _n_) d (@
dh Q // broad
dh (ui Q // broad
dh (ao Q // broad
?1 _) d (_t d[
?1 _) d (_tL01 dZ
_) d' (@P2 d
+
+ _) d' d
+ _) d (_'fh d
+
+ d'fh (L01 d
i) dh (_ g
a) dh (_ X
o) dh (_ X
dheartháir gr@h'A:r
deirfiúr d;r@f'u:r
dheirfiúr g;r@f'u:r
+ _) do (Ch@@P2 d[,U_
+ _) dí (@@P2 d,i:
-
.group e
e E#
eá A:
r) ei (m aI
eighea aI
eighea aI
+ s) ei (nn aI
+ sh) ei (nn aI
eigh aI
eo o:
- eogh o:
+ eoi o:
+ eogha o:
+ eoghai o:
d) eo (ch O#
+ dh) eo (ch O#
_) eo (ch O#
s) eo (_ @
-
+
.group é
é 'e:
éi 'e:
+ éa 'e:
_) éi (rig aI // words like éirigh
+ _h) éi (rí aI
_) éi (rí aI // words like éirí
_) éireoidh aIro:Ig
éacs e:@ks
-
+
.group ea
ea a#
+ eai a#
X) ea (L21_ aU
ea (ltaine aU
g) ea (ll aU
+ l) eamh (n aU
+ dr) ea (m aU
X) ea (ch 0
_L04) ea (g @
_L04) ea (dh_ @
eanbhean 'an@v,an
eadhb aIb
-
+
.group f
f f // broad
f (L22 f; // slender
fh (éin_ h
fh (L22 ; // slender
@) f (L06_ h
-?1 _bh_) f (@
-?1 _bh_) f (L22 ;
+ _) fo (C@@P2 f,U
+ _) fogh f'aU
+?1 _bh_) f (@
+?1 _bh_) f (L22 ;
+
-
.group g
g g // broad
g (L01 g; // slender
-?1 _n_) g (@
+?1 _n_) g (@
_) gh Q"
_) gh (L01 Q"j
_) gc g // urú broad
gh (n X@
gheobh j'o:
gabh gaU
+ _) gearr (C@P5 g;,aR
+ _) ghearr (C@P6 Q"j,aR
-
.group h
h h // silent
-
+
.group i
i I
_) i I
ia i@
ia (tha i:
io O#
+ io (dá I
_) io (nadh u:// words like ionadh
+ s) io (mb I
+ sh) io (mb I
+
_pr) io (n u:
L16) inn (_ i:n
iai i:i
L12) i i // non syllabic short i after long vowel
iú u:
m) i (d_ i: // verb ending
+ _) in (@@P2 ,In_
+ _) ionad (C@@P5 ,Ona#d[
-
.group í
í 'i:
+ íomh 'i:v
+ íochn 'i:xn
+ í (_ i:
+ ín (_ i:n
+ ío i:@
+
-
.group l
l l // broad
L01) l l; // slender
ll (L23 l;
l (g l@
l (b l@
+ _) lorg (@@P4 l,Or@g
+ _) lán (C@@P3 l,A:n
-
.group m
m m // broad
m (L20 m; //slender
_) mh (n v@
léir) mheas vas
r) m @m // words like gorm
+ _) mear (@@P4 m,ar
-
.group n
n n // broad
n (L01 n; // slender
n (ch n@
c) n @n
ch) n @n
+ _) nasc (C@@ n,0sk
-
.group o
o O#
_) o 'O
odl (a O#l
oí i:
-
+
.group ó
ó 'o:
ómhai o:@
-
+ ói (p@ 'o:
+
.group oi
oi O
_L15) oi (+ @'I
_) oi (leá 'I
oidh aI
oir (_ 'ERR
+ _sc) oi (r O
oigh (ea aI
-
+
.group p
p p // broad
ph f // broad
p (L22 p; // slender
ph (L20 f; // slender
-?1 _b_) p (@
+?1 _b_) p (@
.group r
L12i) r (t_ Z
rr R
rg r@g
+ rgh rQ"
L01) rg R@g // slender
r (bh r@
- ríomh ri:@v
s) r (A R
_) ramh raU
-
+
.group s
s s // broad
L01) s S // slender
s (cL01 S
s (CCL01 S // slender
s (pCé s // broad
-?1 _t_) s (@
+?1 _t_) s (@
sh h
sh (CL01 h
sh (L01 h;
s (lL01 S
+ _') s (_ s // 's in poems etc
+ _) sain (@P4 s,an
-
.group t
t t[ // broad
L01) t c // slender
?1 _) t (_L01 c
L01C) t tS // slender after consonant
t (CL01 tS // slender with following consonant before vowels
-?1 _d_) t (@
+?1 _d_) t (@
th h
th (L01 h;
L01C) th h
thne (_ h@nE
A) th (_ // silent th at word end
-
+
.group u
u U#
ua u@
uai (d ui
uá u:'A:
ui I
+ ui (s U
+ ui (sce_ I
uinn (_ 'i:n
uinti U#'i:ntI
_b) uí wi:
_bh) uí wi:
g) uí wi:
+ gh) uí wi:
umh u:
L03) ui @I
_d) u (l_ O#
gh) ui (gh_ @i:
uí i:
uachai 'ux@
+ _) uimhir (C@P6 ,IvIR
+
-
.group ú
ú u:
únmh u:nv
// Numbers
// devanagari numbers are changed to latin characters before translation
-_0 s'u:n.jV
+_0 S'u:nj@-
_1 'e:k
_2 d'o:
_3 t'i:n
-_4 c:'a:r:
+_4 c'a:r
_5 'pa~c
-_6 c#'@2
+_6 c#'VH
_7 s'a:t
_8 'a:t.#
_9 n'O:
?3 _9 n'aU
_10 d'Vs
-_11 gj'a:r-ah
-_12 b'a:rah
-_13 t'e:r@2h
-_14 c#'O:d@2h
-_15 p'Vndr@2h
-_16 s'o:l@2h
-_17 sVtr@2h
-_18 a:t#:arah
+_11 gj'a:*VH
+_12 b'a:rVH
+_13 t'e:rVH
+_14 c'O:dVH
+_15 p'VndrVH
+_16 s'o:lVH
+_17 sVtrVh
+_18 Vt.#'a:rVH
_19 Unn'Is
_20 b'i:s
-_21 Ik:'Is
-_22 b'a:Is
-_23 t'ue:Is
-_24 c'O:bIs
-_25 p@c:'Is
-_26 c#@bb'i:rs
-_27 s@t:'a:Is
-_28 at#:'a:Is
-_29 ,Unt'Is
+_21 Ik:'is
+_22 b'a:is
+_23 t'e:is
+_24 c'O:bis
+_25 p'Vc:is
+_26 c#Vbb'is
+_27 s@t:'a:is
+_28 at#:'a:is
+_29 'Untis
_30 t'i:s
-_31 Ik@t:'Is
-_32 b'at:'I'S
-_33 tE~t'Is // E~ ?
-_34 cO~t'Is
-_35 pE~t'Is
-_36 c#aT'tIs
-_37 sE~t'Is
-_38 art'Is
-_39 Unta:l'Is
-
-_40 ca:l'Is
-_41 Ikta:l'Is
-_42 baIa:l'Is
-_43 tE~ta:l'Is
-_44 cO:wa:l'Is
-_45 paI'nta:l'Is
-_46 c#hIja:l'Is
-_47 sE~ta:l'Is
-_48 arta:l'Is
-_49 'Un^ca:s
-
-_50 p@c'a:s
+_31 Ik@t'is
+_32 b'at:is
+_33 t'E~tis // E~ ?
+_34 c'O~tis
+_35 p'E~tis
+_36 c#'Vt:is
+_37 s'E~tis
+_38 'Vrtis
+_39 Unt'a:lis
+
+_40 c'a:lis
+_41 Ikt'a:lis
+_42 baI'a:lis
+_43 tE~t'a:lis
+_44 cO:v'a:lis
+_45 paInt'a:lis
+_46 c#Ij'a:lis
+_47 sE~t'a:lis
+_48 Vrt'a:lis
+_49 'Unca:s
+
+_50 pVc'a:s
_51 Ikj'a:wVn
_52 b'a:wVn
-_53 t'IrpVn
-_54 c'Ou:wVn
-_55 p'ac#pVn
-_56 c#h@p:'Vn
-_57 santa:'w@n
-_58 at#:a:'w@n
-_59 Uns'Vt#
+_53 t'Ire:pVn
+_54 c'O:wVn
+_55 p'VcpVn
+_56 c#'Vp:Vn
+_57 sVt'a:w@n
+_58 at.#:'a:w@n
+_59 'UnsVt.#
_60 s'a:t.#
-_61 'Iks@t.#
-_62 b'a:s@t.#
-_63 t'Irs@t.#
-_64 cO:'s@t.#
-_65 paI's@t.#
-_66 c#'Ija:s@t.#
-_67 s'Vrs@t.#
-_68 ars@t.#
-_69 Un@h,at:'Vr:
-
-_70 sat:'Vr:
-_71 Ik#at:'Vr:
-_72 b@hat:'Vr:
-_73 tIhat:'Vr:
-_74 cO:hat:'Vr:
-_75 pac#,at:'Vr:
-_76 c#Ihat:'Vr:
-_77 s@t@hat:'Vr:
-_78 at#hat:'Vr:
-_79 ,Un^Ia:s'i:
-
-_80 ,Vss'i:
-_81 Ikja:s'i
-_82 baIa:s'i
-_83 tIra:s'i
-_84 cO:ra:s'i
-_85 pI'ca:s'i
-_86 c#Ija:s'i
-_87 sVt:a:s'i
-_88 at#:a:s'i
-_89 nVwa:s'i
-
-_90 nVb:'e:
-_91 Ikj'a:n@we:
-_92 b'a:n@we:
-_93 tIr'a:n@we:
-_94 cO:r'a:m@we:
-_95 p@c'a:n@we:
-_96 c#Ij'a:n@we:
-_97 s@t:'a:n@we:
-_98 at#:'a:n@we:
-_99 nIn^j'a:n@we:
+_61 'IksVt.#
+_62 b'a:sVt.#
+_63 t'Ire:sVt.#
+_64 c'O~sVt.#
+_65 p'E~sVt.#
+_66 c#Ij'a:sVt.#
+_67 s'Vr.sVt.#
+_68 Vr.sVt.#
+_69 'UnVht:Vr
+
+_70 s'Vt:Vr
+_71 'IkHVt:Vr
+_72 'bVhVt:Vr
+_73 t'IhVt:Vr
+_74 cO:H'Vt:Vr
+_75 pVcH'Vt:Vr
+_76 c#IH'Vt:Vr
+_77 sVtH'Vt:Vr
+_78 VtH'Vt:Vr
+_79 Un'a:si
+
+_80 'Vssi:
+_81 Ikj'a:si
+_82 bVj'a:si
+_83 tIr'a:si
+_84 cO:r'a:si
+_85 pVc'a:si
+_86 c#Ij'a:si
+_87 sVt:'a:si
+_88 at#:'a:si
+_89 nVw'a:si
+
+_90 n'Vb:e:
+_91 Ik:j'a:n@be:
+_92 b'a:n@be:
+_93 tIr'a:n@be:
+_94 cO:r'a:m@be:
+_95 pVnc'a:n@be:
+_96 c#Ij'a:n@be:
+_97 sVt:'a:n@be:
+_98 Vt#:'a:n@be:
+_99 nIn^j'a:n@be:
_0C s'O:
-_0M1 h@J,a:r
+_0M1 h'VJa:r
_0M2 l'a:k#
-_0M3 k@ro:r.V
-_0M4 'Vr@b
-_0M5 k#'Vr@b
-_dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
+_0M3 k@r'o:r.V
+_0M4 'VrVb
+_0M5 k#'VrVb
+_dpt _d@s@ml'o:_
// Single consonants
क k@
.group ै
ै E: // ?? [aI] [E:] [&:]
+ ैं E~
ै (ँ E~
ैं (_ E~
ैँ (_ E~
क़ qV
क़ (B q
+ क्क k:V // kk -> k:
+ क्क (B k:
क्ष kSV
क्ष (B kS
ट t.V
ट (B t.
ट (्य t.:
+ ट्ट t.:V // t.t. -> t.:
+ ट्ट (B t.:
+ ट्ठ t.#:V // t.t.# -> t.#:
+ ट्ठ (B t.#:
.group ठ
ठ t.#V
ठ (B t.#
-
+
+ ठ्ठ t.#:V // t.#t.# -> t.#:
+ ठ्ठ (B t.#:
+
.group ड
ड d.V
ड (B d.
त (B t
त (्य t:
+ त्त t:V // tt -> t:
+ त्त (B t:
+
.group थ
थ t#V
थ (B t#
प pV
प (B p
प (्य p:
+
+ प्प p:V // pp -> p:
+ प्प (B p:
.group फ
फ p#V
// This file is UTF8 encoded
// Spelling-to-phoneme words for Armenian
+// ?1 West Armenian
+
// names of letters
_ա aIb
բ ben
կ ken
հ ho
ձ dza
-ղ r"ad
+ղ r"at
ճ ce
մ men
յ hi
չ tSa
պ pe
ջ dZe
-ռ **a
+ռ R2a
ս se
վ vev
տ tyn
ր re
-ց tso
+ց ts#o
ւ hyn
փ p#yr
ք k#e
+և jev
_օ o
ֆ fe
e e
f ef
+// symbols
+$ dolar
+% տոկոս $text
+* աստղանիշ $text
++ գումարած $text
+= հավասար $text
+
+
+_՝ b'ut#
+_՞ harts#ak'an
+_՛ S'eSt
+_։ verdZak'et // U+0589
+_: verdZak'et
+_, storak'et
+_. midZak'et
+_֊ jent#amn'a // hyphen
+_՜ bats#akantSut#j'un
+_՟ pat'iw
// numbers
// function words
+ես $u+ // pronouns
+դու $u+
+եք $u+
+Դուք $u+
+նա $u+
+այն $u+
+մենք $u+
+նրանք $u+
+
+դուք $u+
+ենք $u+
+են $u+
+
+այդ $u+
+այս $u+
+դա $u+
+որ $u+
+էր $u+
+
+մի $u+
+է $u+
+
+հետ $u+ // prepositions
+
+եվ $u+ // and
+իսկ $u+ $brk // and, but
+կամ $u+ // or
+որը $u+ // which
+
+կարող $u+ // can
+
+
+
+// exceptions
+ով ov
+ովքեր ovk#er
// (consonants are changed for Armenian-West in the voice file "hy-west")
// This file is UTF-8 encoded
+// ?1 West Armenian
+
.L01 բ գ թ կ պ տ ք
-.L02 ու այ իւ իյ ոյ // other vowel sounds
+.L02 ու այ իւ իյ ոյ ա ե ը ի ո օ // vowel sounds
// ligature
.replace
.group ա
ա a
- այ aI
+ այ (K aI
այ (_ a
.group բ
.group է
է e
էօ W
- էյ eI
+ էյ (K eI
.group ը
ը @
ի i
իւ y
իւ (_ iv
- իյ i@
+ իյ (K i@
.group լ
լ l
L02) մ (_ m
.group յ
- յ h // ?? [j]
+ _) յ h // ?? [j]
_) յ (C h@
+ յ j
.group ն
ն n
_) ջ (C dZ@
.group ռ
- ռ **
- _) ռ (C **@
+ ռ R2
+ _) ռ (C R2@
.group ս
ս s
.group ր
ր r
+ L02) ր (L02 *
_) ր (C r@
C) ր (_ @r
L02) ր (_ r
ֆ f
_) ֆ (C f@
-.group
- $ dol@
-// Nepali Language.\r
+\r
+// Nepali Language.\r
// This ne_rules file is prepared by Him Prasad Gautam < himjee@yahoo.com >.\r
// This file is UTF-8 encoded.\r
\r
.group आ\r
आ a:\r
आँ a~''\r
- आइ a:I\r
- आउ a:U\r
- आऊ a:U'\r
\r
.group इ\r
\r
.group ा\r
ा a:,k'a::r@ // If not followed to a Consonant.\r
C) ा a:\r
- ाव aU\r
C) ाँ a~'\r
\r
.group ि\r
\r
// The Latin letter a-z are automatically translated into English.\r
\r
-\r
_t te:
_cap h'o:fdlEt@r
+_sub s'8pskrIpt||
+_sup s'yp@rskrIpt||
_?A l'Et@r
_?? s'imbo:l
_7X z'e:v@nt@x
_8X t'Axt@x
_9X n'e:g@nt@x
-_0C h'OndErt
+_0C h'Ond@rt
_0M1 d'WyzEnt
_0M2 m'iljun
_0M3 m'iljArt
loochen $alt
oefen $alt
open $alt
+reden $alt
regen $alt
reken $alt
schepen $alt
gispel $alt
gniffel $alt
goochel $alt
+googel $alt
gorgel $alt
grabbel $alt
grendel $alt
accessoire aksEsw'ar@
accessoires aksEsw'ar@s
actiepunt Aksip8nt
+actieve Akt'iv@
adhesie Ath'e:zi
agenda $2
aldus Ald'8s
desillusie dEsIlyzi
dieet $2
diesel diz@l
+diner din'e:
//discussie $2
divers div'Ers
diftongering dIft,ON'e:rIN
elfstedentocht ,Elf'ste:d@ntoQt
embouchuur A~buS'yr // embouchure
enorm $2
+enquête A~k'Et@ $alt2
erosie e:r'o:zi
eucharistie $4
explosie $2
januari $3
kadaster $2
leesregel le:sre:Q@l
+lunch l8nS
+lunches l8nS@s
mangat $alt3
materie ma:t'e:ri
maatregel ma:tre:Q@l $alt2
partijvoorzitters $2
periferie pI:rifI:r'i
pistache pist'AS
+privilege privil'e:Z@ $alt2
proces $2
projectielen $3
renaissance rEne:s'A~s@
sms'jes EsEm'Es_j@s
spektakel $2
tegennatuur $4
+tralie $1
travestie $3
verderop $3
vergezicht vErQ@zIxt
verste vErst@
verte vErt@
volledig $2
+voordeel $1
vrouwengek $alt3
waarschijnlijk $2
wanen v#a:n@n
@@C) a (_ =a:
_) aan (@P3 'a:n
- @) aar (_S3 a:r
- @) aard (_S4 a:rt
+ &) aar (_S3 a:r
+ &) aard (_S4 a:rt
aa (rd_ 'a:
aa (C_ 'a:
z) aa (m_ a:
t) a (bleau a:
@) abel (_ 'a:b@l
@) abele (_ 'a:b@l@
+ @) ace (_ e:s // ?? interface
m) ach (in %a:S
_) actie (@P5 'Aksi
_) af (C@P2 'Af
_) be (zem be:
_) be (zig be:
_) beu bY:
+ _) bezoekers (@P9 b@z'uk@rs
.group c
@) ci (ë S
ci (o S
ck k
+
+ ces (_ s'Es
coach ko:tS
-
_) computer (@P8 kOmpj'ut@r
_) congres kOnQr'Es
+ _) concentratie (@P12 kOnsEntr'a:tsi
co (ncert k%O
&) end (_ @nd
&) ende (_S1 @
&) enden (_S2 @n
- eden e:d@n
+ eden (_ e:d@n // ??
@) ent (_ 'Ent
@) ent (e_ 'Ent
@) ent (en_ 'Ent
@z) es (_S1 s
@) es (_S2qd 'Es // double the previous vowel
@) es (_$w_alt2S1 s // just remove 's'
+ @) e (s_$p_alt2+S1 s
KAC) es (_S2e @s
mb) es (_S1 s
nd) es (_S1 s
@) eur (_ 'Y:r
&) e (nB@ E2
+ &) e (ntig @
_p) e (nibel e:
id) e (nt E
pres) e (nt E
er (ij_ @r
tol) er (abel @r
mis) er (abel @r
+ hond) er (d_ @r
_) erger ErQ@r // ergeren
&) era (_ @ra:
@) er (aar_ @r
&) er (C@ E2r
+.group ê
+ ê E
.group f
f f
@) gi (eus Z
@) gi (euz Z
reli) gi (eu Qij
+ _) goog (el gu:g
.group ge
_) ge (@P2 Q@
ge (bied Q@
+ _) gebruikers (@P10 Q@br'Wyk@rs
_) gee Qe:
_) gei QEI
gener (aal Q,e:n@r
&) ika (_ =ika:
&) iko (_ =iko:
_) in (C@P2 'In
-// _) in (gP2 'In
_) in (do In
ine (_ 'in@
ines (_ 'in@s
+ _) inn (@P2 'I // ?? inneren
+ _) inter Int@r
io (nage iO
io (de_ i'o:
iodes (_ i'o:d@s
@) isme (_ 'Ism@
@) ist (_ 'Ist
@) isten (_ 'Ist@n
-_) inn (@P2 'I // ?? inneren
.group j
j j
+
+ _) jaar (@P4 j'a:r
+ jaar (lijk ja:r
jou (rna Zu
&) lijker (_S6 l@k@r
&) lijkere (_S7 l@k@r@
&) lijkheid (_S8 l@khEIt
+ &) lijkheden (_S9 l@khe:d@n
+// &) lijks@ (_ l@ks@
&) lijkst (_S6 l@kst
&) lijkste (_S7 l@kst@
management ma:nIdZm@nt
_) mee (@P3 m'e:
+ _) mee (rC mI:
menu (_ m@ny
_) mi (cro mi
_) mi (s@ m%I
_) mis (loP3 m'Is
_) mis (tA m'Is
_) misver (@ m'Isf@r
+ _) muziek (@P6 myz'ik
.group n
n n
_) na (C@N n'a:
_) na (C% nA
_) na (cht nA
+ _) najaars (@P7 n'a:ja:rs
_) narci (s n%ArsI
_) na (rc n%A
_) na (der na:
na (vig n%a:
_) na (vr na:
_) na (volg@ n%a:
- _) noord (@P5 no:rd
_) nieuws (@P6 n'iws
@@) nis (_S3 nIs
@@) nisen (_S5 nIs@n
+ _) noord (@P5 no:rd
+ _) notitie (@P7 no:t'itsi
.group o
tr) ou (vail u
ouve (rtu uvE
_) over (@P4 ,o:v@r
+ _) overigen o:v@r@Q@n
_) overheid 'o:v@rhEIt
t) ou (r u:
C) r (A r
rr *r
- recherch r@SErS
- revanch r@vA~nS
route rut@ // route(s)
.group re
_) re (geren r@
_) re (geer r@
+ _) regel re:Q@l
_) re (cent r@
_) re (cept r@
_) re (ceptief re:
+ _) re (ces r@
_) re (clam r@
+ _) register r@Q'Ist@r
+ reme (die r@m'e:
_) re (serve_ r@
_) re (cord re'
- _) regering r@Q'I:rIN
+ _) regering r@Q'I:rIN
repre (saill re:pre:
+ recherch r@SErS
+ revanch r@vA~nS
.group s
CAr) sie (_ =zi
_) stads (@P5 st'Ats
+ _) stage (@P5 st'a:Z@
_) standaard (@P9 st'Anda:rt
_) start (@P5 st'Art
@) straat (_S6 stra:t
_) verkeers (@P8 v@rk'I:rs
// _) verge (@P5 vErg@
// _) verge (le v@rQ'e:
+ _) voorjaars (@P9 v'O:rja:rs
_) voort (@P5 v'O:rt
+ _) vrijwilligers (@P13 vrEIv#'Il@Q@rs
.group w
_) weg (@P3 v#'EQ
_) weg (en v#e:Q
_) weg (e_ v#e:Q // bewegelijk
+ _) werk (@P4 v#'Erk
_) west (@P4 v#Est
- _) wr vr
+ _) woon (@P4 v#'o:n
+ _) wr (@ vr
.group x
ੱ) ਯ (_ j:
.group ਰ
- ਰ RV
- ਰ (B R
- @) ਰ (_ R
- ੱ) ਰ R:V
- ੱ) ਰ (B R:
- ੱ) ਰ (_ R:
+ ਰ rV
+ ਰ (B r
+ @) ਰ (_ r
+ ੱ) ਰ r:V
+ ੱ) ਰ (B r:
+ ੱ) ਰ (_ r:
.group ਲ
ਲ lV
x Sis#
_cap maI'uskulU
+_sub ||subskR'itU
+_sup ||sob*eskR'itU
_?A l'etR&_
_?? s'imbolU_
_#32 esp'asU
+ maIs# $max3
% pors'eINtU $max3
& _'e_
-@ &x'ob&
+@ ax'ob&
¤ 'eU*U
€ 'eU*U
+£ l'ibR&
§ p&*'agRafU
_¿ ,iNtex,ogas,&U~,iNvertS'id&
_" 'abRi;'asp&||d'upl&s#
-?1 _º O*@-din'almaskul'i~nU
-?2 _º o*@-dZin'almaskul'i~nU
-?1 _ª O*@-din'alfemin'i~nU
-?2 _ª o*@-dZin'alfemin'i~nU
+?1 º O*@-din'almaskul'i~nU
+?2 º o*@-dZin'aUmaskul'i~nU
+?1 ª O*@-din'alfemin'i~nU
+?2 ª o*@-dZin'aUfemin'i~nU
° gR'aU
?2 _9X nov'eINt&
_1C0 s'eIN
?1_0C s'eINtus#
-?2_0C s'eINtUs#
+?2_0C s'eINtUz
_1C s'eINtu
?1_2C duz'eINtus#
?2_2C duz'eINtUz
usb $abbrev
-dr $dot
-dra $dot
-mr $dot
-mrs $dot
+dr dowtor $dot
+dra dowt'o*& $dot
+mr m'ister $dot
+mrs m'irsys $dot
prof pR'Of $dot
profº pR,ofes'or
profª pR,ofes'o*&
// articles
o $u+ $nounf
a $u+ $nounf
-os Us $u+ $nounf
+os $u+ $nounf
as $u+ $nounf
?1 a & $u+ $nounf
para $u // for,to
pro pRU $u $nounf
pra $u $nounf
-pros pRUs $u $nounf
+pros $u $nounf
pras $u $nounf
prò $u $nounf
prà $u $nounf
// conjunctions
?1 e i $u // and
?2 e i $u // and
-se $u+ $verbf // if
+se $u+ // if
?2 mas $u // but
pudemos $u+
puderam $u+
-poderei $u3+
-poderá $u3+
-poderemos $u+
-poderão $u+
+poderei p%ode*eI $u+
+poderá p%ode*a $u+
+poderemos p%ode*'emUs $u+
+podeão p%ode*&U~ $u+
// ir - to go (used to make future tense)
abacaxi abakaSy
abordo $alt
aborto $alt $verb
+absorta $alt2
acerto $alt2 $noun
acertos $alt2
acocho $alt2 $noun
aeroportos $alt
alcateia $alt
alcova $alt2
+alegro $alt2 $noun
alferes $alt
almoço $alt $verb
ameba $alt
amores $alt2
amorno $alt
+amuleto $alt2
+ampere $alt
ampola $alt2
ampulheta $alt2
andorra $alt2
arroto $alt2 $noun
arroz $alt2
assembleia $alt
+assopro $alt2 $noun
ateia $alt
aterro $alt2
aterro $alt $verb
azedo $alt $verb
bairro b'aIxU
baqueta $alt2
+banqueta $alt2
+banquete $alt2
+bastonete $alt2
beco $alt2
besta $alt2
bilhete $alt2
+bissulfeto $alt2
boca $alt2
boceta $alt2
-bochecha $alt2
+bofe $alt
bojo $alt2
boleia $alt
bolero $alt
camelha $alt
camelo $alt2
camiseta $alt2
+canaleta $alt2
canhoto $alt2
cantora $alt2
capacete $alt2
chupeta $alt2
clamores $alt2
clero $alt
+cloreto $alt2
coche $alt2
coco $alt2
cofre $alt
conforto $alt $verb
console $alt2 $noun
consolo $alt2 $noun
+constroem $alt
controle $alt2 $noun
controles $alt2
controles $alt $verb
corto $alt
corveta $alt2
corvos $alt
+costeleta $alt2
coto $alt2
cotovelo $alt2
cratera $alt
credo $alt
crepe $alt
decore $alt
-decoro $alt2 $noun
+decoro $alt2 $noun
degelo $alt2
desapego $alt2 $noun
descordo $alt
desespero $alt $verb
desfecho $alt2
desmantelo $alt2 $noun
+despojo $alt2 $noun
+despojos $alt
desporto $alt2
desportos $alt
desprezo $alt2 $noun
diarreia $alt
diego $alt2
discordo $alt
+dissabores $alt2
dispneia dZIspyn'EI&
dobro $alt2
dobro $alt $verb
doce $alt2
doutora $alt2
doze $alt2
-droga $alt
dueto $alt2
elixir eliSir
emprego $alt2 $noun
enredo $alt $verb
enrosco $alt $verb
enterro $alt2 $noun
-entorto $alt
-entroso $alt
+entorto $alt
+entroso $alt
envelope $alt
-envolto $alt2
enxaqueca $alt2
enxerto $alt2 $noun
epopeia $alt
estrela $alt2
estrofe $alt
estrogonofe $alt
-eta $alt2
+eta $alt2
etiqueta $alt2
europa $alt
europeia $alt
exagero $alt $verb
explore $alt
faceta $alt2
-falangeta $alt2
+falangeta $alt2
farofa $alt
farolete $alt2
febre $alt
fezes $alt
filete $alt2
?1 fixe fiSy
+flerte $alt2 $noun
foda $alt2 $verb
-fodo $alt2
+fodo $alt2
fogos $alt
foguete $alt2
foice $alt2
fora $alt
fora $alt2 $verb
forca $alt2
-força $alt2 $noun
-forças $alt2
+força $alt2
+força $alt $verb
forço $alt
formos $alt2
forro $alt $verb
gelo $alt $verb
genebra $alt
gesso $alt2
-gloso $alt
+gloso $alt
gonorreia $alt
-gol gow
+gol gow
golpe $alt
gorda $alt2
gorjeta $alt2
gosto $alt $verb
gota $alt2
-governo $alt2
+governo $alt2
governo $alt $verb
gozo $alt2 $noun
graveto $alt2
horrores $alt2
humores $alt2
ideia $alt
-imberbe $alt
interesse $alt2
interesse $alt $verb
iodo $alt2
ioga $alt
+jereba $alt
jogo $alt2
jogo $alt $verb
jogos $alt
leste $alt2 $verb
?2 lhe l^y
lingueta $alt2
+lisboeta $alt2
lodo $alt2
-logro $alt
+logro $alt
lopes $alt
macete $alt2
maior $alt
maleta $alt2
maniçoba $alt
-marieta $alt2
+marieta $alt2
marreta $alt2
megera $alt
melhor $alt
moeda $alt
moem $alt
mofo $alt $verb
-moleta $alt2
molho $alt2 $noun
monera $alt
morcego $alt2
mortos $alt
motora $alt2
mui mwi
+muleta $alt2
mureta $alt2
mutreta $alt2
namoro $alt2 $noun
paexa paeSa
paella pa'el^&
palacete $alt2
+paleta $alt2
palheta $alt2
panfleto $alt2
pangeia $alt
pantera $alt
+papoco $alt2 $noun
parede $alt2
pastora $alt2
+peba $alt
pedra $alt
pela $alt $verb
pelo $alt2
pelo $alt $verb
+pereba $alt
peroba $alt
+peseta $alt2
peso $alt $verb
piloto $alt2 $noun
pintora $alt2
pior $alt
+pipoco $alt2 $noun
pirueta $alt2
plaqueta $alt2
plateia $alt
polca $alt
pompeia $alt
porcos $alt
-porque $alt2
+porque $alt2
porra $alt2
+porreta $alt2
porrete $alt2
porto $alt2
portos $alt
poxa p'oS&
primavera $alt
primores $alt2
-proso $alt
+proso $alt
prosopopeia $alt
+proveta $alt2
quarteto $alt2
queda $alt
quede $alt2
+quitinete $alt
quinteto $alt2
-ramalhete $alt2
+ramalhete $alt2
raposa $alt2
recomeço $alt $verb
+reconstroem $alt
recordo $alt
recorto $alt
rede $alt2
rego $alt2 $noun
reitora $alt2
relevo $alt2 $noun
-remoem $alt
+remoem $alt
remorso $alt
renovo $alt $verb
retorno $alt $verb
reuva x'EUv&
rigores $alt2
+risoto $alt2
rock $alt
roem $alt
rola $alt2 $noun
+roleta $alt2
+rolete $alt2
rolo $alt2 $noun
rota $alt2
rota $alt $noun
-rubores $alt2
+rubores $alt2
rumores $alt2
-sabonete $alt2
-sabores $alt2
+sabonete $alt2
+sabores $alt2
saibro s'aIbRU
saleta $alt2
sarjeta $alt2
suborno $alt $verb
sufoco $alt2 $noun
sufocos $alt2
+sulfeto $alt2
+sulfureto $alt2
super s'Uper
suporto $alt
suor swOr
-sutiã sutSi'&~N
+sutiã sutSi'&~N
tapete $alt2
temores $alt2
tempero $alt2 $noun
terrores $alt2
teta $alt2
toga $alt
-topo $alt $verb
+topo $alt2 $noun
torno $alt $verb
tornozelo $alt2
torre $alt2 $noun
torres $alt2
torro $alt
tortos $alt
-toso $alt
-transtorno $alt $verb
+toso $alt
+transtorno $alt $verb
traqueia $alt
travesso $alt2
tremores $alt2
+treta $alt2
trevo $alt2
troco $alt2 $noun
tropa $alt
tumores $alt2
valeta $alt2
vanessa $alt2
+vareta $alt2
vera $alt
verbete $alt2
violeta $alt2
laptop lEptOp
?1 line l'ain
layout l'eI,aUt
-?2 logo l'OgU
+ ?2 login logiN
?1 lock l'Ok
mail m'eIl
mails m'eIls
?1 readme r'i:dmi:
?1 sapi s,ap'i
?1 scanner sk'En&r
+sky sk'ay
shake S'eIk
?1 shift S'ift
?1 scroll sk:r'ol
?4 símbolo s'iNbolU
?2 software s'Oftwe@-
?1 space sp'eIsy
+?2 space sp'eIs
?1 sporting sp'Ort,ing
tab t'aby
tablet t'ablet
?1 telemóvel t,El,Em'OvEl
?1 telemóveis t,El,Em'OveIs#
?1 up &p
-?1 upload &pl'oud
+update &pd'eIt
+upgrade &pgR'eId
+upload &pl'oud
?2 web w'Eb
?1 yahoo 'i,ah'u
?2 yahoo iah'u
// common person names
-alan 'al@n
+alan 'al@N
louis _^_FR
// foreign product names
?1 access 'aks,Es
?1 adobe &d'Oby
- android &ndR'Oid
+ android &NdR'Oid
apple 'Epow
chrome kR'owmi
debian d'Ebj&~N
?1 cleverson kl'Evyrs&N
?2 cleverson kl'EversoN
?1 elton 'Elt&N
-?2 elton 'EUton
emerson 'emE*@-soN
?1 halison &l'is&N
klein kl'aIn // Very common on southern Brazil.
óCC) a (CA_ &
óC) a (CCA_ &
úC) a (CA_ &
+?2 ation (_ 'eIS&~N
+?2 action (_ 'EkS&~N
.group â
?2 d (i dZ
?2 d (í dZ
?2 d (e_ dZ
+?2 A) de (o_ dZj
.group e
i) e (r_ E
@s) e (r_ E
- u) e (r_ E
+ qu) e (r_ E
ib) e (rL04_ E
d) e (rL04_ E
@s) e (rL04_ E
sp) e (rL04_ E
-
f) e (rL02_ E
e (quL02_ E
-
+ e (rbL04_ E
e (rgL04_ E
e (rsL04_ E
e (sL02_ E
e (ssL04_ E
-
+ e (ss_ E // stress and english words
+?2 ection (_ 'EkS&~N
+?2 ee (n_ i
e (stL04_ E
e (strL04_ E
?1 l) e (ta 'E // eg: bicicleta, atleta.
sf) e (ra_ E // esfera, biosfera
+ ef) e (tuL02_ e
t) e (tra E
âC) e (CA_ e
óC) e (Ca_ e
óCC) e (CA_ e
úC) e (CA_ e
+ úC) el (_ eU
//sort
_d) e (L05_ E
_corro) e (L07_ e
_interromp) e (L07_ e
_troux) e (L07_ E
+ _ens) e (bL03_ E
+_amanc) e (bL03_ E
qu) e (brL04_ E
_cel) e (brL04_ E
+ _boch) e (chL04_ e
_ex) e (crL04_ E
_enr) e (dL01_ E
- _n) eu (trL03_ 'eU
_v) e (dL03_ E
_arr) e (dL03_ E
_depr) e (dL03_ E
_hosp) e (dL03_ E
+_enver) e (dL03_ E
_gr) e (gL03_ e
_gal) e (gL03_ e
_pel) e (gL03_ e
_n) e (grL03_ e
- _ch) e (guL02_ e
estr) ei (L04_ EI
_r) e (jL03_ E
_inv) e (jL04_ E
+?2 el (ton_ 'EU
tr) e (pL04_ E // es-
_dec) e (pL04_ E
_in) e (ptL03_ E
ad) e (quL04_ E
- _imp) e (rL03_ E
_sev) e (rL03_ E
_reit) e (rL03_ E
_sinc) e (rL03_ E
_g) e (rL04_ E
_z) e (rL04_ E
qu) e (rL04_ E // re-
+ _on) e (rL04_ E
_op) e (rL04_ E
gen) e (rL04_ E // de- re-
_alt) e (rL04_ E
_enc) e (rL04_ E
+ _imp) e (rL04_ E
_min) e (rL04_ E
_sug) e (rL04_ E
_sup) e (rL04_ E
_persev) e (rL04_ E
_recup) e (rL04_ E
_refrig) e (rL04_ E
- _v) e (rbL03_ E
_ex) e (rcL02_ E
_alic) e (rcL02_ E
_p) e (rdL02_ E
_l) e (rdL03_ E
_h) e (rdL04_ E
+ _des) e (rdL04_ E
+s_colh) e (res_ E
_) e (rgL03_ e
_re) e (rgL03_ e
+ _so) e (rgL03_ e
_bez) e (rrL03_ e
v) e (rtL03_ e // con- re- in-
_f) e (rvL03_ e
_obsol) e (tL03_ e
_sol) e (trL03_ E
_pen) e (trL04_ E
+ _n) eu (trL03_ 'eU
_d) e (vL03_ e
scr) e (vL03_ e // e- in- pre- ree- de-
_atr) e (vL03_ e
?1 _) i (ntern 'i //inter
?1 @) ing (_ _^_EN
?1 @) ings (_ _^_EN
- ilton 'iUtoN
+?2 il (ton_ 'iU
+?2 i (rton_ 'i
.group í
o (s_ =U
_) o (_C U
_) o (_A u
-
+?2 _) os (_ Us
+?2 _) os (_A Uz
+?2 _) os (_G Uz
ou ow
oi oI
oi ($w_alt OI
o (quL02_ O
A_l) o (_ U
- p) o (dL04_ O
o (g_ O
o (gs_ O
?1 interr) o (g u // eg: interrogação
?1 f) o (rmulá u // eg: formulário, formulários.
?1 v) o (lt O
-
- o (Cuem_ o
- o (CCuem_ o
+ o (luem_ o
+ o (ssuem_ o
êC) o (CA_ o
êCC) o (CA_ o
ôC) o (CA_ o
óCC) o (CA_ o
úC) o (CA_ o
úCC) o (CA_ o
+?2 otion (_ 'owS&~N
//sort
_f) o (L05_ o
_m) o (fL01_ O
_m) o (fL02_ O
_s) o (frL02_ O
+ l) o (gL04_ O // dialoga, etc.
r) o (gL04_ O // inter-
+ v) o (gL04_ O // advoga, etc.
_j) o (gL04_ O
af) o (gL04_ O // des-
- _adv) o (gL04_ O
_ref) o (gL04_ O
_ap) oi (L01_ OI
_ap) oi (L02_ OI
_emp) o (lgL04_ O
_) o (lhL04_ O
m) o (lhL04_ O
+ _env) o (ltL03_ o
ent) o (pL02_ O
_c) o (pL03_ O
+ _t) o (pL04_ O
_ens) o (pL04_ O
_gal) o (pL04_ O
_s) o (prL04_ O
+ _al) o (prL04_ O
+ _ass) o (prL04_ O
_) o (ptL04_ O
p) o (rL02_ o
_dev) o (rL02_ O
_inod) o (rL03_ O
_inson) o (rL03_ O
_comem) o (rL04 O
+ _enam) o (rL04_ O
_aprim) o (rL04_ O
_remem) o (rL04_ O
f) o (rmL03_ O
c) o (rrL01_ o // incorra, corra, etc.
_m) o (rrL01_ o
p) o (rtL03_ O // im- trans- de- re- com- a- ex-
- t) o (rçL01_ O // con-
+ t) o (rçL03_ o // con-
_r) o (snL04_ O
_c) o (spL02_ O
_enr) o (squL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_gar) o (tL03_ o
- _mar) o (tL03_ O
+ _mar) o (tL03_ o
_escr) o (tL03_ o
_ch) o (vL01_ o
pr) o (vL03_ O
_r) o (çL03_ O
tr) o (çL03_ O // des-
_ad) o (çL03_ O
+ _emp) o (çL03_ O
_end) o (çL03_ O
//endsort
?2 t (e_ tS
?1 th _^_EN
?1 tion (_ _^_EN
+?2 A) te (o_ tSj
.group u
u (a u
g) u (a+ w
q) u (a+ w
+ u (eC u
+ u (ei u
r) u (_A u
u (L04_ 'u
ui (_ 'uI
u (iu w
u (iCK u
+ u (éC u
+ u (íC u
uy uI
ul (K uw
u (lh+ u
g) u (Y
_m) ui (tA_ 'wiN
+?2 ution (_ 'uS&~N
.group ú
// character names
_cap vel^ke:
+_sub d,olni:||'indeks||
+_sup h,oRni:||'indeks||
_?? simbol
_#9 t'ab
_#32 'medzeRa
* hviezda $max3
+ plus $max3
-= Rovna:sa $max3
+= Rovna:||sa $max3
@ zavina:tS
& ampeRsand
# kRi:Zik $max3
_! vi:kRitSn^i:k
-_" u:vodzovki
+_" u:vodzowki
_$ dola:R
_' apostRof
_( za:tvoRka
_) zatvoRit;
_, tSiaRka
-_- poml-tSka
-__ podtSiaRknutie
+_- spojovn^i:k
+__ podtSiaRkovn^i:k
_. bodka
-_/ lomeno
+_/ lomka
_: dvojbodka
_; bodkotSiaRka
_< menSi:
-_> vetSSi:
+_> v&tSSi:
_? ota:zn^ik
-_[ hRanata:||za:tvoRka
-_\ opatSne:||lomeno
-_] hRanata:||zatvoRit;
-_^ stRieZka
+_[ hRanata:||z'a:tvoRka
+_\ opatSna:||l'omka
+_] hRanata:||z'atvoRit;
+_^ voka:n^
_` aktsent
-_{ zloZena:||za:tvoRka
-_| zvisla:||tSiaRa
-_} zloZena:||zatvoRit;
+_{ zloZena:||z'a:tvoRka
+_| zvisla:||tS'iaRa
+_} zloZena:||z'atvoRit;
_~ vl-novka
-_ tvr-da:m'edzeRa // U+00A0 no-break-space
-_¡ obra:t;eni:v'i:kRitSn^i:k
-_¦ pReRuSena:'tSiaRa
-_ª hoRni:indeks'a:
-_« dvojita:lomena:||za:tvoRka
-_ mekka:poml-tSka
-_² nadRuhu:
-_³ natRetju
-_´ dl:Zen^
-_· bodka'vpRostRjedku
-_¸ tsedila
-_¹ napRvu:
-_» dvojita:lomena:||zatvoRit;
-_¿ obRa:t;eni:'ota:zn^ik
-_â\80\93 dl-ha:'poml-tSka
-_â\80\98 l^ava:'u:vodzovka
-_â\80\99 prava:'u:vodzovka
-_â\80\9c horne:'u:vodzovki
-_â\80\9d dolne:'u:vodzovki
-_â\80¡ dvojiti:kRi:Z
-_â\80¢ odRa:Zka
-_â\80£ tRojuholni:kova:'odRa:Zka
+_ tvr-da:||m'edzeRa // U+00A0 no-break-space
+_¡ obra:t;eni:||v'i:kRitSn^i:k
+_¦ pReRuSena:||tS'iaRa
+_¨ pRehla:ska
+_« dvojita:||l'omena:||z'a:tvoRka
+_ Rozd;el^ovn^i:k
+_´ dl:Zen^
+_· bodka||'v||pRostRjedku
+_¸ tsedila
+_» dvojita:||l'omena:||z'atvoRit;
+_¿ obRa:t;eni:||'ota:zn^ik
+_– poml-tSka
+_‘ hoRne:||j'ednoduche:||'u:vodzowki
+_’ odsuvn^i:k
+_â\80\9c hoRne:||'u:vodzowki
+_â\80\9d dvojita:||h'oRna:||'opatSna:||'u:vodzowka
+_â\80\9e dolne:||'u:vodzowki
+_â\80\9a dolne:||j'ednoduche:||'u:vodzowki
+_â\80¡ dvojkRi:Z
+_â\80¢ odRa:Zka
+_â\80£ odRa:Zka||t'Rojuholn^i:k
+_â\81\83 odRa:Zka||'v||tvaRe||p'oml-tSki
‰ pRomile
€ euRo
§ paRagRaf
÷ d;eleno
× kRa:t
° stupn^ou
-¢ tsentou
-£ libjeR
-¤ znatSkameni
+¢ tsent
+£ libRa
+¤ mena
+© kopiRajt
+® Registrovane:
+¥ jen
− mi:nus
-± plus'mi:nus
-µ mu:
-¼ Stvr-tina
+± plus||m'i:nus
+µ mi:
+¼ Stvr-t;ina
½ polovitsa
-¾ tri_Stvr-tini
-¬ logitske:not
-æ a'e:
-þ poml-tSkanad
+¾ t'@-*i||S'tvr-t;ini
+¬ logitski:||z'a:poR
+æ otvoRene:||'e:
+þ soRn
+¯ pRuh||n'at
+ð ed
+ƒ floRe:n
+_† kRi:Z
+_≈ pRibliZn^e||sa||R'ovna:
+_≠ n^eRovna:||s'a
+_≤ menSi:||'alebo||sa||R'ovna:
+_≥ v&tSSi:||'alebo||sa||R'ovna:
+_√ dRuha:||'odmotsn^ina
+_∛ tRet;ia||'odmotsn^ina
+_∞ n^ekon^etSno
+_■ tSieRni||S'tvoRets
+_□ bieli||S'tvoRets
+_◆ tSieRni||d'iamant
+_○ bieli||kR'uh
+_● tSieRni||kR'uh
+_◦ odRa:Zka||'v||tvaRe||b'ielej||b'odki
+_✓ zaSkr-tnut;ie
+_✔ tutSne:||z'aSkr-tnut;ie
+_➔ Si:pka||'vpRavo
+_➢ odRa:Zka||'v||tvaRe||S'i:pki
// Numbers
w dv#'ojniv,@
x iks
y 'ipsilon
-ć m'ehkitS,@
+ć m'ehki||tS,@
đ dZ@
ä $accent
_1 'Ena
_2 dv#'a
_3 tR'i
-_4 St'iRi
+_4 St'i*i
_5 p'et
-_6 S'est
-_7 s'edem
-_8 'osem
-_9 d'evet
-_10 d'eset
+_6 S'Est
+_7 s'edEm
+_8 'Os@m
+_9 d@v'Et
+_10 d@s'Et
_11 'e'najst
_12 dv#'anajst
_13 tR'inajst
_15 p'etnajst
_16 S'estnajst
_17 s'edemnajst
-_18 'osemnajst
-_19 d'evetnajst
-_2X dv#'ajset
-_3X tR'ideset
-_4X St'iRideset
-_5X p'etdeset
-_6X S'estdeset
-_7X s'edemdeset
-_8X 'osemdeset
-_9X d'evetdeset
+_18 'Osemnajst
+_19 d'evEtnajst
+_2X dv#'ajsEt
+_3X tR'id@sEt
+_4X St'i*id@sEt
+_5X p'etd@sEt
+_6X S'estd@sEt
+_7X s'edemd@sEt
+_8X 'Os@md@sEt
+_9X d'evEtd@sEt
_2C dv'esto
_0C sto
_0M1 t'isotS
.group č
č tS
+.group ć
+ ć tS;
+
.group d
d d
dz dz
.group r
r R
rr R
+ A) r (A *
K) r (K @R
v (-A+ v // preposition 'v' before a vowel
A) v (K w
K) v (K %u
+ K) v (r v
L01) v (A v#
//_lig
_acu vURg'UimI
_ac2 tS'IftvURg'UimI
-_brv k@s'altmaimI
+_brv k@s'aLtmaimI
_ced h'aRf
_cir Sapk'a
-_dia Umla'Ut
+_dia UmLa'Ut
_dot YstnOkt'a
_grv 'aksanimI
_hac t'ERsSapk'a
_mcn uz'atmaimI
_ogo ogon'Ek
-_rng halk'a
+_rng haLk'a
//_stk
_tld tIld'E
// symbols
_. nOkt'a
_, vIRJ'Yl
-_; nOktal'@vIRJ'Yl
+_; nOktaL'@vIRJ'Yl
_: ik'InOkt'a
_… 'YtSnOkt'a
_? soR'UiSa*et,I
_^ IndZ'EltmEiSa*et'I
& _!v'E
_& v'EiSa*et'I
-_@ kUjRUkl'U'a
+_@ kUjRUkL'U'a
_\ t'ERs||ej,IktSIzg'I
_( atSpa*ant'Ez
_) kapapa*ant'Ez
§ tSEnJ'El
° de*edZ'E
_# dij'Ez
-_~ jaklaS'@k
-__ ,alttSIzg'I
-* j'@ld@z $max3
+_~ jakLaS'@k
+__ ,aLttSIzg'I
+* j'@Ld@z $max3
= ESIt $max3
% jYzdE $max3
+ aRt@ $max3
_3 'ytS
_4 d'WRt
_5 b'ES
-_6 alt'@
+_6 aLt'@
_7 jed'i
_8 sec'Iz
_9 d'okuz
_3X ot'uz
_4X k'@Rk
_5X ell'i
-_6X altm'@S
+_6X aLtm'@S
_7X jetm'iS
_8X seks'En
_9X doks'an
Edirne $2
Hakkari $1
Hatay $1
-Iğdır $1
-İngiltere $3
-İskenderun $2
+ığdır $1
+ingiltere $3
+iskenderun $2
Isparta $2
-İstanbul $2
-İsveç $1
-İzmir $1
+istanbul $2
+isveç $1
+izmir $1
Kastamonu $1
Kayseri $1
Kilis $1
// ?1 mbrola voices
-// unvoiced consonants
-.L01 ç f h k p q s ş t
+.L01 ç f h k p q s ş t // unvoiced consonants
+
+.L02 ı a o u // back vowels
+.L03 i e ö ü î â ô û // not-back vowels
.replace
` '
@) acak (_S4 adZak
@) acakmış (_S7 adZakm%@S
@) ayım (_S4 aj@m
- @) alım (_S4 al@m
+ @) alım (_S4 aL@m
@) asın (_S4 as@n
@) avru (pa avr'u
.group c
c dZ
+ ce (_S2 dZ%E
.group ç
ç tS
+ çe (_S2 tS%E
.group d
d d
dın (_S3 d@n
dınız (_S5 d@n@z
dı (_S2 d@
- dılar (_S5 d@laR
+ dılar (_S5 d@LaR
dum (_S3 dum
duk (_S3 duk
dun (_S3 dun
dunuz (_S5 dunuz
du (_S2 du
- dular (_S5 dular
+ dular (_S5 duLar
düm (_S3 dym
dük (_S3 dyk
dün (_S3 dyn
.group g
g g
- g (i J
- g (e J
- g (ü J
- g (ö J
+ g (L03 J
+ L03) g (K J
+
.group ğ
ğ Q
- A) ğ :||
-?1 A) ğ G // mbrola
+ A) ğ :
+?1 A) ğ (+ G // mbrola
+
+ a) ğa :
+ o) ğo :
+ u) ğu :
+ ö) ğö :
+ ü) ğü :
i) ğ j
e) ğ j
+
.group h
h h
@) ıyor (_S4 @j%oR
@) ın (_S2 @n
+.group î
+ î @
+
.group j
j Z
.group k
k k
- k (i c
- k (e c
- k (ü c
- k (ö c
+ k (L03 c
+ L03) k (K c
ken (_S3 %cen
.group l
l l
+ l (L02 L
+ L02) l (K L
- la (_S2 %la
+ la (_S2 %La
le (_S2 %le
- lar (_S3 laR
+ lar (_S3 LaR
ler (_S3 leR
li (_S2 li
- lı (_S2 l@
- lu (_S2 lu
+ lı (_S2 L@
+ lu (_S2 Lu
lü (_S2 ly
lik (_S3 lik
- lık (_S3 l@k
- luk (_S3 luk
+ lık (_S3 L@k
+ luk (_S3 Luk
lük (_S3 lyk
.group r
r R
A) r (A *
+ ğ) r (A *
ra (_S2 %Ra
re (_S2 %Re
yunuz (_S5 %junuz
yünüz (_S5 %jynyz
- yla (_S3 %jla
+ yla (_S3 %jLa
yle (_S3 %jle
yacak (_S5 jadZak
yecekmiş (_S8 jedZekm%iS
yayım (_S5 jaj@m
- yalım (_S5 jal@m
+ yalım (_S5 jaL@m
yasın (_S5 jas@n
yeyim (_S5 jejim
yelim (_S5 jelim
//================================\r
.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve ge\r
.L02 n\r
-\r
+.L03 t ch nh\r
\r
.group b\r
b b\r
_) b _b\r
//b($w_alt2 _^_EN\r
-\r
+ \r
+
.group c\r
c g //k\r
c (_ kh\r
- ch c // try [tS;] [tS] [c]\r
+ _) ch tS; // try [tS;] [tS] [c] c \r
+?2 _) ch c\r
+?1 _) ch c \r
+ ch (_ c \r
ce (_ _^_EN\r
_) cl _^_EN\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group d\r
d J^ // try [z] [J] [dZ] [dZ;] [J^]\r
d (_ _^_EN\r
-\r
- \r
- \r
+ \r
+ \r
+ \r
+
.group đ\r
đ d\r
_) đ _d\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group f\r
//f f\r
_) f _^_EN\r
f (_ _^_EN\r
- \r
- \r
+ \r
+ \r
+
.group g\r
g Q // try [g] [Q]\r
gh Q // or [g] [Q]\r
giệc J^'iE6kh\r
_) gol _^_EN\r
_) gat _^_EN \r
- ght (_ _^_EN \r
- \r
-\r
+ ght (_ _^_EN \r
+ \r
+ \r
+
.group h\r
h h\r
- \r
- \r
+ \r
+ \r
+
.group j\r
j Z\r
-\r
-\r
+ \r
+ \r
+
.group k\r
k k\r
//k (_ kh\r
kh x\r
k (_ _^_EN\r
- \r
- \r
+ \r
+ \r
+
.group l\r
l l\r
l (_ _^_EN\r
le (_ _^_EN\r
-\r
- \r
+ \r
+ \r
+
.group m\r
m m\r
- \r
-\r
+ \r
+ \r
+
.group n\r
n n\r
?1 n (_ N //n\r
+?2 n (_ N\r
ng N\r
ngh N\r
nh n^\r
nd (_ _^_EN\r
-\r
- \r
+ \r
+ \r
+
.group ñ\r
ñ n^\r
- \r
- \r
+ \r
+ \r
+
.group p\r
p p\r
ph f\r
- \r
- \r
+ \r
+ \r
+
.group q\r
q k\r
q (_ kh\r
qu w //kw\r
- \r
-\r
+ \r
+ \r
+
.group r\r
- r z. // try [z] [z.] [r] [z;]\r
+ r z // try [z] [z.] [r] [z;]\r
+?2 r Q \r
+?1 r z. \r
r (_ _^_EN\r
rm (_ _^_EN\r
-\r
- \r
+ \r
+ \r
+
.group s\r
s s. // try [s.] [s] [S]\r
_) sh _^_EN\r
s (_ _^_EN\r
st (_ _^_EN\r
se (_ _^_EN\r
-\r
- \r
+ \r
+ \r
+
.group t\r
t t[\r
-?1 t (_ g\r
+?1 t (_ kh\r
+?2 t (_ kh \r
th t\r
- tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]\r
+ tr tS //cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]\r
+?1 tr cr \r
+?2 tr c \r
ts (_ _^_EN\r
te (_ _^_EN\r
th (_ _^_EN\r
tt (_ _^_EN\r
-\r
- \r
+ \r
+ \r
+
.group v\r
v v\r
+?2 v J^ \r
ve (_ _^_EN \r
- \r
- \r
+ \r
+ \r
+
.group w\r
w w\r
_) w _^_EN\r
w (_ _^_EN\r
- \r
- \r
+ \r
+ \r
+
.group x\r
x s\r
x (_ _^_EN\r
-\r
-\r
+ \r
+ \r
+
.group z\r
z z\r
z (_ _^_EN\r
-\r
- \r
+ \r
+ \r
//================================\r
// Vowels\r
//================================\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group a\r
a a:\r
ai a:I\r
aĩ a:I5\r
aị a:I6\r
ay aI\r
+?2 ay a:I \r
+ \r
aỳ aI2\r
aý aI3\r
aỷ aI4\r
aõ a:U5\r
aọ a:U6\r
au aU\r
+?2 au a:U\r
aù aU2\r
aú aU3\r
aủ aU4\r
aụ aU6\r
a (L01 _^_EN\r
ai (L02 _^_EN\r
-\r
- \r
+ \r
+ \r
+
.group à\r
à a:2\r
ài a:I2\r
ày aI2\r
+?2 ày a:I2\r
+ \r
+ \r
+ \r
+ \r
ào a:U2\r
àu aU2\r
- \r
- \r
+?2 àu a:U2\r
+ \r
+
.group á\r
á a:3\r
ái a:I3\r
áy aI3\r
áo a:U3\r
áu aU3\r
- \r
- \r
+?2 áu a:U3 \r
+?2 áy a:I3\r
+
.group ả\r
ả a:4\r
ải a:I4\r
ảy aI4\r
ảo a:U4\r
ảu aU4\r
- \r
- \r
+?2 ảu a:U4 \r
+?2 ảy a:I4 \r
+
.group ã\r
ã a:5\r
ãi a:I5\r
ãy aI5\r
ão a:U5\r
ãu aU5\r
- \r
- \r
+?2 ãu a:U5 \r
+?2 ãy a:I5\r
+
.group ạ\r
ạ a:6\r
ại a:I6\r
ạy aI6\r
ạo a:U6\r
ạu aU6\r
- \r
- \r
+?2 ạu a:U6 \r
+?2 ạy a:I6 \r
+ \r
//================================\r
.group ă\r
ă a\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ằ\r
ằ a2\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ắ\r
ắ a3\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ẳ\r
ẳ a4\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ẵ\r
ẵ a5\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ặ\r
ặ a6\r
- \r
- \r
+ \r
+ \r
//=================================\r
.group â\r
â @\r
ây @I\r
âu @U1 \r
- \r
- \r
-\r
+?2 â (L03 a \r
+?1 â (L03 a \r
+ \r
+ \r
+
.group ầ\r
ầ @2\r
ầy @I2\r
ầu @U2\r
- \r
- \r
-\r
+?2 ầ (L03 a2 \r
+?1 ầ (L03 a2 \r
+ \r
+ \r
+
.group ấ\r
ấ @3\r
ấy @I3\r
ấu @U3\r
- \r
- \r
-\r
+?2 ấ (L03 a3 \r
+?1 ấ (L03 a3 \r
+ \r
+ \r
+
.group ẩ\r
ẩ @4\r
ẩy @I4\r
ẩu @U4\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ẫ\r
ẫ @5\r
ẫy @I5\r
ẫu @U5\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ậ\r
ậ @6\r
ậy @I6\r
ậu @U6\r
- \r
- \r
+?2 ậ (L03 a6 \r
+?1 ậ (L03 a6 \r
+ \r
//===========================\r
.group e\r
e E\r
eọ EU6\r
e (L01 _^_EN\r
ey (_ _^_EN\r
-\r
- \r
+ \r
+ \r
+
.group è\r
è E2\r
èo EU2\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group é\r
é E3\r
éo EU3\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ẻ\r
ẻ E4\r
ẻo EU4\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ẽ\r
ẽ E5\r
ẽo EU5\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ẹ\r
ẹ E6\r
ẹo EU6\r
- \r
- \r
+ \r
+ \r
//============================\r
-\r
+ \r
+
.group ê\r
ê e\r
êu eU1\r
- \r
- \r
-\r
+?2 ê (L03 @: \r
+?2 ê (L02 @: \r
+ \r
+
.group ề\r
ề e2\r
ều eU2\r
- \r
- \r
-\r
+?2 ề (L03 @:2 \r
+?2 ề (L02 @:2\r
+ \r
+
.group ế\r
ế e3\r
ếu eU3\r
- \r
- \r
-\r
+ \r
+?2 ế (L03 @:3\r
+?2 ế (L02 @:3\r
+
.group ể\r
ể e4\r
ểu eU4\r
- \r
- \r
-\r
+?2 ể (L03 @:4 \r
+?2 ể (L02 @:4 \r
+ \r
+
.group ễ\r
ễ e5\r
ễu eU5\r
- \r
- \r
-\r
+?2 ễ (L03 @:5 \r
+?2 ễ (L02 @:5\r
+ \r
+
.group ệ\r
ệ e6\r
ệu eU6\r
-\r
- \r
+?2 ệ (L03 @:6\r
+?2 ệ (L02 @:6\r
+ \r
//============================\r
-\r
+ \r
+
.group i\r
i i\r
//i (A j\r
iễu iU5\r
iệu iU6\r
i (L01 _^_EN\r
-\r
- \r
+?2 i (L03 @ \r
+?1 i (L03 @\r
+?2 i (L02 @ \r
+
.group ì\r
ì i2\r
ì (A j2\r
ìa i@2\r
ìu iU2\r
- \r
- \r
+?2 ì (L03 @2 \r
+?1 ì (L03 @2 \r
+?2 ì (L02 @2\r
+
.group í\r
í i3\r
í (A j3\r
ía i@3\r
íu iU3\r
- \r
- \r
+?2 í (L03 @3 \r
+?1 í (L03 @3\r
+?2 í (L02 @3\r
+
.group ỉ\r
ỉ i4\r
ỉ (A j4\r
ỉa i@4\r
ỉu iU4\r
- \r
- \r
+?2 ỉ (L03 @4 \r
+?1 ỉ (L03 @4\r
+?2 ỉ (L02 @4 \r
+ \r
+
.group ĩ\r
ĩ i5\r
ĩ (A j5\r
ĩa i@5\r
ĩu iU5\r
- \r
- \r
+?2 ĩ (L03 @5 \r
+?1 ĩ (L03 @5\r
+?2 ĩ (L02 @5 \r
+ \r
+
.group ị\r
ị i6\r
ị (A j6\r
ịa i@6\r
ịu iU6\r
- \r
- \r
+?2 ị (L03 @6 \r
+?1 ị (L03 @6\r
+?2 ị (L02 @6\r
+ \r
//=========================\r
-\r
+ \r
+
.group o\r
o O\r
oa o@ // modify oa sound example: hoa,khoa // o (A w\r
ong O#\r
oe o& // Adding oe sound example: lóe sáng,toét mắt\r
o (L01 _^_EN\r
- \r
- \r
+ oai Oi // oai sound\r
+ oại Oi6\r
+ oài Oi2\r
+ oái Oi3\r
+ oải Oi4\r
+ oãi Oi5\r
+ \r
+
.group ò\r
ò O2\r
òi OI2\r
òa o@2 //ò (A w2\r
òng O#2\r
òe o&2\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ó\r
ó O3\r
ói OI3\r
óa o@3 //ó (A w3\r
óng O#3\r
óe o&3\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ỏ\r
ỏ O4\r
ỏi OI4\r
ỏa o@4 //ỏ (A w4\r
ỏng O#4\r
ỏe o&4\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group õ\r
õ O5\r
õi OI5\r
õa o@5 //õ (A w5\r
õng O#5\r
õe o&5\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ọ\r
ọ O6\r
ọi OI6\r
ọa o@6 //ọ (A w6\r
ọng O#6\r
ọe o&6\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
//=============================\r
-\r
+ \r
+
.group ô\r
ô o\r
ôi oI\r
ông o# // ông sound\r
- \r
- \r
+?2 ôi O- //south dialect \r
+ \r
+
.group ồ\r
ồ o2\r
ồi oI2\r
ồng o#2\r
- \r
- \r
-\r
+?2 ồi O-2 \r
+ \r
+ \r
+
.group ố\r
ố o3\r
ối oI3\r
ống o#3\r
- \r
- \r
-\r
+?2 ối O-3 \r
+ \r
+ \r
+
.group ổ\r
ổ o4\r
ổi oI4\r
ổng o#4\r
- \r
- \r
-\r
+?2 ổi O-4 \r
+ \r
+ \r
+
.group ỗ\r
ỗ o5\r
ỗi oI5\r
ỗng o#5\r
- \r
- \r
-\r
+ \r
+?2 ỗi O-5\r
+ \r
+
.group ộ\r
ộ o6\r
ội oI6\r
ộng o#6\r
- \r
- \r
- \r
+?2 ội O-6 \r
+ \r
+ \r
//=============================\r
-\r
+ \r
+
.group ơ\r
ơ @:\r
ơi @:I\r
ơu @:U\r
- \r
- \r
-\r
+?2 ơi @- //south dialect \r
+ \r
+ \r
+
.group ờ\r
ờ @:2\r
ời @:I2\r
ờu @:U2\r
- \r
- \r
-\r
+?2 ời @-2 \r
+ \r
+ \r
+
.group ớ\r
ớ @:3\r
ới @:I3\r
ớu @:U3\r
- \r
- \r
-\r
+?2 ới @-3 \r
+ \r
+ \r
+
.group ở\r
ở @:4\r
ởi @:I4\r
ởu @:U4\r
- \r
- \r
-\r
+?2 ởi @-4 \r
+ \r
+ \r
+
.group ỡ\r
ỡ @:5\r
ỡi @:I5\r
ỡu @:U5\r
- \r
- \r
-\r
+?2 ỡi @-5 \r
+ \r
+ \r
+
.group ợ\r
ợ @:6\r
ợi @:I6\r
ợu @:U6\r
- \r
- \r
-\r
+?2 ợi @-6 \r
+ \r
+ \r
//=============================\r
-\r
+ \r
+
.group u\r
u u\r
u (A w\r
u (L01 _^_EN\r
ui (L01 _^_EN\r
ua (L01 _^_EN\r
- \r
- \r
+?2 u u- \r
+ \r
+
.group ù\r
ù u2\r
ù (A w2\r
ùi uI2\r
ùa u@2\r
//ùng u#2\r
- \r
- \r
-\r
+ \r
+?2 ù u-2 \r
+ \r
+
.group ú\r
ú u3\r
ú (A w3\r
úi uI3\r
úa u@3\r
//úng u#3\r
- \r
- \r
-\r
+?2 ú u-3 \r
+ \r
+ \r
+
.group ủ\r
ủ u4\r
ủ (A w4\r
ủi uI4\r
ủa u@4\r
//ủng u#4\r
- \r
- \r
-\r
+ \r
+?2 ủ u-4 \r
+ \r
+
.group ũ\r
ũ u5\r
ũ (A w5\r
ũi uI5\r
ũa u@5\r
//ũng u#5\r
- \r
- \r
-\r
+?2 ũ u-5 \r
+ \r
+ \r
+
.group ụ\r
ụ u6\r
ụ (A w6\r
ụi uI6\r
ụa u@6\r
//ụng u#6\r
- \r
- \r
+?2 ụ u-6 \r
+ \r
//=============================\r
-\r
+ \r
+
.group ư\r
ư y\r
ưi yI\r
ưởu y@w4\r
ưỡu y@w5\r
ượu y@w6\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ừ\r
ừ y2\r
ừi yI2\r
ừa y@2\r
ừu yw2\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ứ\r
ứ y3\r
ứi yI3\r
ứa y@3\r
ứu yw3\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ử\r
ử y4\r
ửi yI4\r
ửa y@4\r
ửu yw4\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ữ\r
ữ y5\r
ữi yI5\r
ữa y@5\r
ữu yw5\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ự\r
ự y6\r
ựi yI6\r
ựa y@6\r
ựu yw6\r
- \r
- \r
+ \r
+ \r
//=============================\r
-\r
+ \r
+
.group y\r
y i\r
// y (A j\r
yễ i@5\r
yệ i@6\r
// yêu i@U\r
- \r
+ \r
y (L01 _^_EN\r
-\r
+ \r
+
.group ỳ\r
ỳ i2\r
ỳ (A j2\r
ỳa i@2\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ý\r
ý i3\r
ý (A j3\r
ýa i@3\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ỷ\r
ỷ i4\r
ỷ (A j4\r
ỷa i@4\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ỹ\r
ỹ i5\r
ỹ (A j5\r
ỹa i@5\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group ỵ\r
ỵ i6\r
ỵ (A j6\r
ỵa i@6\r
- \r
- \r
+ \r
+ \r
//=============================\r
-\r
+ \r
+
.group 0xce // Greek letters\r
// 0xce is the first byte of the utf-8 code for these characters\r
- \r
- \r
+ \r
+ \r
α a:1n_|f'a:1\r
ά a:1n_|f'a:1\r
β b'e1_|t['a:1\r
ν nw'i1\r
ξ s'i7\r
ο o1_|m'i1_|kz.'O7n\r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+
.group 0xcf // Greek letters\r
- \r
- \r
+ \r
+ \r
π p'i1\r
ρ z.'o1\r
σ s'i3c_|m'a:1\r
ω o1_|m'e1_|Q'a:7\r
ώ o1_|m'e1_|Q'a:7\r
ό o1_|m'i1_|kz.'O7n\r
- \r
- \r
- \r
- \r
-\r
+ \r
+ \r
+ \r
+ \r
+ \r
+
.group\r
% f'@2n||cr'am\r
! _:c'@3m_|t'a:7n_:\r
!= x'o#_|_b'a2N_\r
>= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N\r
<= n^'O4_|h'@:1n_|hw,a6kh_b'a2N\r
- \r
- \r
+ \r
+ \r
__) - (_D cr'y2\r
A_) - (_D _\r
C_) - (_D _\r
- \r
+ \r
. c'@3m_\r
. (. _:\r
\.) . \r
- \r
- \r
+ \r
+ \r
S 0x0c268 d/tap1
S 0x0c32c d/tap3
S 0x0c430 d/dr
-S 0x0c4b4 r3/@tap_rfx
-S 0x0c5f8 b/xb
-S 0x0c6bc klatt/b
-W 0x0c780 x/b_
-W 0x0cb98 x/b
-S 0x0ccfc b/b_
-S 0x0cdc0 b/b@2
-S 0x0cec4 b/b@
-S 0x0cfc8 b/ba
-S 0x0d0cc b/be
-S 0x0d1d0 b/bi
-S 0x0d2d4 b/bo
-S 0x0d3d8 b/bu
-S 0x0d4dc b/b
-S 0x0d5e0 d/xd
-S 0x0d6a4 d/d_
-W 0x0d768 x/d_
-S 0x0db90 d/d
-W 0x0dc54 x/d
-W 0x0de70 x/d_dnt
-S 0x0e154 dzh/xdzh
-S 0x0e218 dzh/dzh_
-W 0x0e2dc x/dzh_
-S 0x0ed14 dzh/dzh
-W 0x0edd8 x/dzh
-W 0x0f1e4 x/dz_pzd
-S 0x0f644 dzh/xdz_pzd
-S 0x0f708 klatt/dz_pzd_
-S 0x0f7cc klatt/dz_pzd
-S 0x0f890 dzh/dz_pzd_
-S 0x0f954 dzh/dz_pzd
-S 0x0fa18 g/xg
-S 0x0fadc g/g_
-W 0x0fba0 x/g_
-S 0x0ff60 g/g
-W 0x10024 x/g2
-S 0x102ac klatt/v_
-W 0x10370 vocw/v
-S 0x10c70 klatt/bh
-S 0x10d34 voc/v_
-S 0x10df8 voc/bh
-S 0x10ebc klatt/v
-S 0x10f80 voc/v
-S 0x11084 voc/v#_
-S 0x11148 voc/v#
-S 0x1124c voc/dh_
-W 0x11310 vocw/dh
-S 0x11c18 voc/dh
-S 0x11cdc voc/z_
-W 0x11da0 ufric/s_
-S 0x12854 voc/z
-S 0x12918 klatt/zh_
-W 0x129dc vocw/zh
-S 0x13344 klatt/zh
-S 0x13408 voc/zh_
-S 0x134cc voc/zh
-W 0x13590 vocw/zh_rfx
-S 0x13e20 voc/z_pzd_
-W 0x13ee4 ufric/s_pzd_
-S 0x149e8 voc/z_pzd
-W 0x14aac ufric/s_pzd
-W 0x153e4 ufric/sh_pzd_
-W 0x15eac ufric/sh_pzd
-S 0x167e0 voc/j
-W 0x168e4 ufric/ch
-S 0x16ffc klatt/qqh_
-W 0x170c0 vocw/Q_
-S 0x178cc klatt/qqh
-W 0x17990 vocw/Q
-S 0x1819c voc/Q_
-S 0x18260 voc/Q
-S 0x18324 voc/Q_ulv
-W 0x18428 ufric/xx
-W 0x18f24 ustop/p_
-W 0x19734 ustop/pr
-W 0x19b7c ustop/p_unasp
-W 0x19ea8 ustop/pl
-W 0x1a2a0 ustop/p
-W 0x1a610 ustop/t_
-W 0x1aad0 ustop/tr
-W 0x1b230 ustop/t_dnt
-W 0x1b640 ustop/t
-W 0x1ba74 ustop/t_hi
-W 0x1be10 ustop/tsh_
-W 0x1c750 ustop/tsh
-W 0x1cd90 ustop/ts_pzd
-W 0x1d494 ustop/t_pzd
-W 0x1d8e0 ustop/c
-W 0x1db90 ustop/k_
-W 0x1e04c ustop/kr
-W 0x1e68c ustop/ki
-W 0x1ec54 ustop/kl
-W 0x1f284 ustop/k_unasp
-W 0x1f758 ustop/k
-W 0x1fc2c ustop/q
-W 0x1fd98 ustop/q_u
-W 0x1feb8 ufric/f_
-W 0x20988 ufric/f
-W 0x21178 ufric/th_
-W 0x219f8 ufric/th
-W 0x22290 ufric/s!
-W 0x22b40 ufric/s
-W 0x232e0 ufric/sh_
-W 0x23d90 ufric/sh
-W 0x24740 ufric/sh_rfx
-W 0x250dc ufric/l#
-W 0x25b20 ufric/ch_
-W 0x26448 ufric/x
-W 0x26dac ufric/x_hr
-W 0x276c0 h/h@
-W 0x27c14 h/ha
-W 0x28290 h/he
-W 0x28924 h/hi
-W 0x28ebc h/ho
-W 0x29578 h/hu
-W 0x29c9c h/h_
-W 0x2a348 ustop/ts_
-W 0x2aca8 ustop/ts
-S 0x2b704 d/xdz
-W 0x2b7c8 ustop/p_unasp_
-W 0x2b904 ustop/p_asp
-W 0x2be08 ustop/t_short
-W 0x2c04c ustop/ts_pzd_
-W 0x2c510 ustop/ts_pzd2
-W 0x2c844 ustop/k_asp
-W 0x2cf48 ustop/k_asp_e
-W 0x2d6b0 ustop/k_asp_a
-W 0x2df34 ufric/s_continue
-S 0x2e6e4 vowel/a#
-S 0x2e7e8 vowel/a_2
-S 0x2e8ec vowel/ee_1
-S 0x2ea30 vowel/o
-S 0x2eb74 vowel/oo_4
-S 0x2ec78 vowel/u_bck
-S 0x2ed7c vowel/uu_2
-S 0x2ee80 vowel/y
-S 0x2efc4 vowel/y#
-S 0x2f0c8 vdiph/au_4
-S 0x2f24c vdiph/eu
-S 0x2f390 vdiph2/iu
-S 0x2f514 vdiph/ai
-S 0x2f658 vdiph/ei
-S 0x2f79c vdiph/eei
-S 0x2f920 vdiph/oi
-S 0x2fae4 vdiph/ui
-S 0x2fc28 w/w2
-W 0x2fcec ustop/t_dnt2
-S 0x2ff44 klatt/x_tap
-S 0x30008 klatt/tap2
-S 0x300cc d/x_tap
-S 0x30190 d/tap2
-W 0x30254 x/g2_
-S 0x30614 r2/r2@
-S 0x306d8 r2/r2a
-S 0x3079c r2/r2e
-S 0x308a0 r2/r2i
-S 0x30964 r2/r2o
-S 0x30a28 r2/r2u
-S 0x30aec vowel/@_6
-S 0x30bf0 vwl_en/@L
-S 0x30cb4 vowel/a_8
-S 0x30db8 vowel/a#_3
-S 0x30ebc vowel/ee_5
-S 0x30fc0 vowel/ii_2
-S 0x310c4 vowel/ii_4
-S 0x311c8 vowel/ii_7
-S 0x312cc vowel/0
-S 0x313d0 vowel/V_2
-S 0x314d4 vowel/uu
-S 0x315d8 vowel/aa_2
-S 0x3175c vowel/3_en
-S 0x318a0 w/wi2
-S 0x319a4 vowel/i_en
-S 0x31ae8 vowel/oo_en
-S 0x31c2c vwl_en/u_L
-S 0x31d70 vdiph2/uw_2
-S 0x31eb4 vdiph/au
-S 0x32038 vdiph/@u_en
-S 0x321bc vdiph/ai_2
-S 0x32380 vdiph/ooi
-S 0x32544 vdiph2/ii@
-S 0x326c8 vdiph2/8@
-S 0x3280c vdiph2/uu@
-S 0x32990 vwl_en/aI@
-S 0x32b54 vwl_en/aU@
-S 0x32cd8 vowelr/V_r
-S 0x32e1c vowelr/V3_r
-S 0x32f60 vnasal/aa_n2
-S 0x330a4 vnasal/oo_n2
-S 0x331e8 vowel/@_3
-S 0x332ac vowel/@_fr
-S 0x33370 vowel/ee
-S 0x33474 vowel/ii
-S 0x33578 vowel/e_2
-S 0x3367c vowel/0_2
-S 0x33780 vowel/o-_2
-S 0x33884 vowel/aa_5
-S 0x339c8 vowel/3_2
-S 0x33b0c vowel/oo_1
-S 0x33c50 vwl_en_n/O@
-S 0x33d54 vdiph2/uw_4
-S 0x33e98 vdiph/eeu_3
-S 0x33fdc vdiph/ae_2
-S 0x34160 vdiph2/ee@
-S 0x342a4 vdiph2/i@
-S 0x34468 vwl_en_us/3_us
-S 0x3456c vowel/@_4
-S 0x34630 vowel/@_low2
-S 0x346f4 vnasal/ee_n2
-S 0x34838 vwl_en_us/a
-S 0x3493c vwl_en_us/ee
-S 0x34a40 vowel/ii#_3
-S 0x34b44 vowel/ii#
-S 0x34c48 vowel/ii_final
-S 0x34d4c vowel/aa_8
-S 0x34e50 vowel/V_6
-S 0x34f54 vowel/8_2
-S 0x35058 vwl_en_us/ar
-S 0x351dc vwl_en_us/3_us2
-S 0x35320 vwl_en_us/oor
-S 0x354a4 vowel/0_3
-S 0x355a8 vwl_en_us/or
-S 0x356ec vowel/aa#
-S 0x357f0 vdiph2/uw_6
-S 0x35934 vdiph/aoo
-S 0x35a78 vdiph/8u
-S 0x35bbc vdiph/aae
-S 0x35d40 vdiph2/ei_4
-S 0x35e84 vdiph/ooi_3
-S 0x36008 vwl_en_us/er
-S 0x3618c vwl_en_us/ir
-S 0x36310 vwl_en_us/ur
-S 0x36454 vwl_en_us/ai@
-S 0x365d8 vwl_en_us/ai3
-S 0x3679c vwl_en_us/aU@
-S 0x36960 vowel/V
-S 0x36a64 vowel/a_3
-S 0x36b68 vowel/e_e
-S 0x36c6c vowel/e#
-S 0x36d70 vowel/e_5
-S 0x36e74 vowel/oo_2
-S 0x36f78 vowel/V_4
-S 0x3707c vowel/u#_4
-S 0x37180 vowelr/aa_r
-S 0x37344 vowelr/e_r
-S 0x374c8 vowel/i_5
-S 0x375cc vowelr/oo_r
-S 0x376d0 vowel/u#
-S 0x377d4 vdiph/au#
-S 0x37918 vowel/o_3
-S 0x37a5c vwl_en/aI@_2
-S 0x37be0 vdiph/ai_7
-S 0x37d64 vdiph/0i_2
-S 0x37ee8 vdiph2/e@
-S 0x3802c vowelr/i_r
-S 0x38170 vdiph2/u#@
-S 0x382b4 vwl_en/@L_2
-S 0x383b8 vowel/@_low
-S 0x3847c vowel/&
-S 0x38580 vowel/e_mid
-S 0x38684 vowel/V_3
-S 0x38788 vowel/o-_3
-S 0x3888c vwl_en_rp/aa
-S 0x389d0 vowel/3_3
-S 0x38b14 vowel/uu#_2
-S 0x38c18 vdiph/au_3
-S 0x38d9c vdiph/@u_2
-S 0x38ee0 vdiph/ai_6
-S 0x390a4 vdiph2/ei_2
-S 0x391e8 vdiph2/ee@_2
-S 0x3932c vwl_en_rp/i@
-S 0x394b0 vowel/o_mid
-S 0x395b4 vwl_en_rp/aU@
-S 0x39738 vowel/ii_6
-S 0x397fc vdiph2/ei_3
-S 0x39940 vdiph/@u
-S 0x39a84 vdiph/Vu_2
-S 0x39c08 vdiph/@i_3
-S 0x39d4c vdiph2/i@_2
-S 0x39ed0 vwl_en/ooi@
-S 0x3a094 vowel/@_fnt
-S 0x3a198 vowel/uu_bck
-S 0x3a29c vowel/i_fnt
-S 0x3a3a0 vdiph2/o_oo
-S 0x3a4e4 vdiph/aau_2
-S 0x3a628 vdiph2/ie
-S 0x3a76c vwl_af/r@
-S 0x3a830 vwl_af/@
-S 0x3a8f4 vowel/e_mid2
-S 0x3a9f8 vwl_af/I
-S 0x3aabc vowel/oo_3
-S 0x3ab80 vowel/oe
-S 0x3ac84 vowel/uu_3
-S 0x3ad48 l/L_eL_af
-S 0x3ae0c vowel/ee_3
-S 0x3aed0 vowel/aa_3
-S 0x3afd4 vdiph/i@_2
-S 0x3b158 vowel/i_3
-S 0x3b25c vdiph2/o@
-S 0x3b3e0 vowel/y_3
-S 0x3b4e4 vdiph2/iu_3
-S 0x3b6a8 vdiph/Vu
-S 0x3b82c vdiph/ai_4
-S 0x3b9b0 vdiph/aai_2
-S 0x3bb74 vdiph/@i_2
-S 0x3bcb8 vdiph/ooi_2
-S 0x3be7c vdiph/oi_2
-S 0x3c040 vdiph/ui_2
-S 0x3c1c4 vdiph/y#y_2
-S 0x3c348 vdiph2/y#@
-S 0x3c48c vnasal/aa_n3
-S 0x3c5d0 vnasal/e_n
-S 0x3c6d4 vnasal/o_n2
-W 0x3c818 ufric/x2
-S 0x3d170 vowel/ee_2
-S 0x3d274 vowel/ii_3
-S 0x3d378 vowel/i#
-S 0x3d47c vowel/o_2
-S 0x3d5c0 vdiph2/iu_4
-S 0x3d704 vdiph/ui_3
-S 0x3d888 vowel/a_4
-S 0x3d98c vdiph/@u_3
-S 0x3db10 vdiph2/u@
-S 0x3dc94 vowel/aa_6
-S 0x3ddd8 vowel/i_2
-S 0x3dedc vdiph/aau_6
-S 0x3e060 vdiph/ai_5
-S 0x3e1a4 vowel/e_8
-S 0x3e2a8 vowel/yy_4
-S 0x3e3ac l/l_3
-S 0x3e430 j/_j_short
-S 0x3e4b4 vdiph2/i@_3
-S 0x3e638 vwl_de/uu_@
-S 0x3e77c vnasal/aa_n4
-Q 0x3e8c0 de
-S 0x3e8d0 vdiph/eei_2
-S 0x3ea14 vowel/i_4
-S 0x3eb18 vowel/aa_9
-S 0x3ec1c vowel/u_2
-S 0x3ed20 vowel/uu_4
-S 0x3ee24 vdiph/aai_3
-S 0x3efa8 vdiph/&i
-S 0x3f0ec vdiph/y#i
-S 0x3f230 vdiph/ui_4
-S 0x3f374 vdiph/yi
-S 0x3f4b8 vdiph/aau
-S 0x3f63c vdiph/ou
-S 0x3f780 vdiph/eu_2
-S 0x3f8c4 vdiph2/iu_2
-S 0x3fa48 vdiph/&y
-S 0x3fb8c vdiph/eey
-S 0x3fcd0 vdiph/y#y
-S 0x3fe14 vdiph2/iy
-S 0x3ff58 vdiph2/uo
-S 0x4009c vdiph2/y-y#
-S 0x401e0 r3/r_trill_short
-W 0x402e4 h/hu_fi
-S 0x40bd4 vowel/aa
-S 0x40cd8 vowel/e_7
-S 0x40ddc vowel/ee#_2
-S 0x40ee0 vowel/i_8
-S 0x40fe4 vowel/i_7
-S 0x410e8 vowel/i#_7
-S 0x411ec vowel/u_bck2
-S 0x412f0 vowel/u_bck3
-S 0x413f4 vowel/u_5
-S 0x414f8 vowel/8_7
-S 0x415fc vowel/8_4
-S 0x41700 vdiph/@i
-W 0x41844 ufric/s_pal
-S 0x420f8 d/xd_pzd
-W 0x421bc x/d_pzd
-S 0x425d0 vwl_fr/y2r
-S 0x42654 vwl_fr/e_2r
-S 0x426d8 vwl_fr/aa2r
-S 0x4275c vwl_fr/ee2r
-S 0x42820 vwl_fr/oo2r
-S 0x428e4 vwl_fr/@2r
-S 0x42968 vwl_fr/a2r
-S 0x429ec vwl_fr/e2r
-S 0x42a70 vwl_fr/i2r
-S 0x42af4 vwl_fr/o2r
-S 0x42b78 vwl_fr/u2r
-S 0x42bfc vwl_fr/re2
-S 0x42c80 vwl_fr/r@2
-S 0x42d04 vwl_fr/raa
-S 0x42d88 vwl_fr/ree
-S 0x42e0c vwl_fr/ry
-S 0x42e90 vwl_fr/rw
-S 0x42f14 vwl_fr/roo
-S 0x42f98 vwl_fr/rj
-S 0x4301c vwl_fr/r@
-S 0x430a0 vwl_fr/ra
-S 0x43124 vwl_fr/re
-S 0x431a8 vwl_fr/ri
-S 0x4322c vwl_fr/ro
-S 0x432b0 vwl_fr/ru
-S 0x43334 vwl_fr/r
-S 0x433b8 vwl_fr/trr
-S 0x4347c vwl_fr/rr
-S 0x43500 vwl_fr/r_@
-S 0x43584 vwl_fr/r_a
-S 0x43608 vwl_fr/r_e
-S 0x4368c vwl_fr/r_i
-S 0x43710 vwl_fr/r_o
-S 0x43794 vwl_fr/r_u
-S 0x43818 vwl_fr/r_y
-S 0x4389c vwl_fr/r_n
-S 0x43960 vwl_fr/r_
-S 0x439e4 vwl_fr/tr
-S 0x43ae8 vwl_fr/br
-S 0x43bec vwl_fr/lo
-S 0x43c70 l/l_y
-S 0x43cf4 vowel/@_hgh
-S 0x43db8 vowel/a_7
-S 0x43ebc vwl_fr/j
-S 0x43fc0 vowel/o_8
-S 0x44104 vowel/o_mid2
-S 0x44208 vwl_fr/wa
-S 0x442cc vnasal/W_n
-S 0x44410 vnasal/o_n4
-S 0x44554 b/xbr
-S 0x44618 b/br
-S 0x4469c d/xdr
-S 0x44760 g/xgr
-S 0x44824 g/gr
-W 0x448e8 x/g
-S 0x44ba8 n/n_long_
-W 0x44c6c ustop/t_short_
-Q 0x44ef8 fr
-S 0x44fac vnasal/ee_n
-S 0x450f0 vowel/yy
-S 0x451f4 vdiph/ae
-S 0x45338 vwl_fr/@R2
-S 0x4543c vowel/o_6
-S 0x45540 vowel/a#_2
-S 0x45644 vowel/a#_4
-S 0x45748 vdiph/y#y_3
-S 0x4584c vdiph/ou_4
-S 0x45990 vdiph2/yu
-S 0x45b14 voc/Q_less
-W 0x45bd8 vocw/Q2
-S 0x464a4 vowel/@_bck
-S 0x465a8 vowel/i_6
-S 0x466ac vdiph/ee-e
-S 0x467f0 vowel/a_5
-S 0x468f4 vnasal/i_n2
-S 0x469f8 vnasal/ii_n
-S 0x46afc vnasal/&_n
-S 0x46c00 vnasal/V_n
-S 0x46d04 vnasal/o_n
-S 0x46e48 vnasal/u_n
-S 0x46f4c vdiph/aau_3
-S 0x470d0 d/xd3
-S 0x47194 g2/xg
-W 0x47258 ustop/percus02
-S 0x47588 vowel/&_2
-S 0x4768c vowel/oo_5
-S 0x47790 vdiph/aai
-S 0x47914 vdiph/Vi
-E 0x47a98 envelope/p_512
-S 0x47b18 vowel/ii_5
-S 0x47c1c vowel/u_6
-S 0x47d20 vowel/u#_3
-S 0x47e24 vdiph/ai_8
-S 0x47fa8 voc/murmur1
-S 0x480ec vowel/y#_2
-S 0x481f0 vowel/e_3
-S 0x482f4 vwl_ru/ee
-S 0x48438 vdiph2/ea
-S 0x4857c vdiph2/uaa
-S 0x48700 vdiph2/ie_2
-S 0x48844 vdiph/ou_2
-S 0x48988 vdiph/eei_3
-W 0x48acc ustop/ts2
-S 0x48f9c vowel/ee#
-S 0x490a0 vowel/ii#_2
-S 0x491a4 vnasal/ee_u_n
-S 0x49328 vnasal/oo_n3
-S 0x494ac vowel/ee_6
-W 0x49570 r3/rz_cs
-S 0x4a01c voc/zh_2
-S 0x4a0e0 vdiph/oou
-W 0x4a224 ufric/sh3
-W 0x4abb8 ustop/tsh2
-W 0x4b2c4 ustop/ts_pzd3
-S 0x4b944 dzh/dzh2
-W 0x4ba08 ustop/t_sr
-S 0x4bd40 d/d_dnt
-W 0x4be04 ufric/ch_sr
-W 0x4c9e4 ufric/x_sr
-W 0x4d264 ufric/sh_pzd2
-W 0x4ddb4 ustop/ts_sr
-W 0x4e570 ustop/tsh_sr
-W 0x4ee88 x/g3
-S 0x4f070 vwl_ro/mi
-S 0x4f1b4 vwl_ru/ii-
-S 0x4f278 vwl_ru/ii
-S 0x4f37c vwl_ru/ii#
-S 0x4f440 vwl_ru/i#
-S 0x4f544 vwl_ru/e
-S 0x4f648 vwl_ru/E#
-S 0x4f74c vwl_ru/E@
-S 0x4f850 vwl_ru/o
-S 0x4f954 vwl_ru/oo
-S 0x4fa18 vwl_ru/u
-S 0x4fb1c vwl_ru/u#
-S 0x4fc60 vwl_ru/u#u
-S 0x4fda4 vwl_ru/8
-S 0x4fe68 vwl_ru/ju
-S 0x4ff6c vwl_ru/ja
-S 0x500f0 vwl_ru/a
-S 0x501f4 vwl_ru/aa
-S 0x502f8 r3/r_ru2
-W 0x503fc r3/r_ru
-S 0x50700 vowel/y_2
-S 0x50844 vdiph/eeu_2
-S 0x50988 voc/v2
-S 0x50a4c vowel/a_6
-S 0x50b50 vnasal/i_n
-S 0x50c54 vnasal/a#_n2
-S 0x50d58 vnasal/a#_n
-S 0x50e5c vnasal/a#u_n
-S 0x50fa0 vnasal/oi_n
-S 0x51164 vdiph/0i
-S 0x51328 vdiph/eeu
-S 0x5146c vowel/i#_5
-S 0x51570 vwl_fr/@R
-S 0x51674 vwl_ro/li
-S 0x51778 vwl_ro/ni
-S 0x5187c vwl_ro/ii-
-S 0x51940 vowel/o-_4
-S 0x51a44 vdiph/ii
-S 0x51c08 vdiph/i#i
-S 0x51d4c vdiph2/uw_3
-S 0x51e90 vdiph2/eo
-S 0x52014 vdiph2/e_u
-S 0x52158 vdiph2/oa
-S 0x5229c d/tap_i
-S 0x52360 d/tap
-W 0x52424 ustop/t_unasp2
-S 0x52530 vowel/y_5
-S 0x52674 vowel/yy_3
-S 0x52778 vowel/u#_2
-S 0x5287c vowel/oe_4
-S 0x52940 vowel/aa_4
-W 0x52a44 ufric/sx_sv
-S 0x5328c vowel/y_4
-S 0x53390 vowel/oe_2
-S 0x53494 vwl_no/y#
-S 0x53598 vwl_no/&
-S 0x5369c vwl_no/u#
-S 0x537a0 vwl_no/u#2
-S 0x538e4 vdiph/ai_3
-S 0x53a28 vwl_no/y#y
-S 0x53b6c vwl_no/au-
-S 0x53d30 vowel/y##
-S 0x53e34 vowel/y#_3
-S 0x53f38 vdiph/ou_3
-S 0x5403c vdiph/y#i_2
-S 0x54180 m/m#_
-S 0x54284 n/n#_
-S 0x54388 n^/n^#_
-S 0x5448c nn/nn#_
-W 0x54590 ufric/tl#
-S 0x54ef8 r3/r#_
-E 0x54f7c envelope/p_level
-E 0x54ffc envelope/p_fall
-E 0x5507c envelope/p_rise
-E 0x550fc envelope/p_fallrise
-E 0x5517c envelope/p_214
-E 0x551fc envelope/vi_5amp
-E 0x5527c envelope/vi_6amp
-S 0x552fc vietnam/a
-S 0x55440 vowel/u#_5
-S 0x55544 vowel/@_2
-S 0x55648 vdiph/u-i
-S 0x5578c vdiph/aau_4
-S 0x55910 vdiph2/ii@_3
-S 0x55a94 vnasal/&u_n
-S 0x55bd8 vietnam/oe
-S 0x55d1c vietnam/ie_2
-W 0x55e60 vietnam/_c
-S 0x5602c l/l_vi
-W 0x56130 vietnam/th
-W 0x56720 vietnam/tr
-W 0x56a10 vietnam/dd
-W 0x56fb4 vietnam/ch
-S 0x57510 vwl_zh/ang
-S 0x57714 vwl_zh/aang
-S 0x57958 vdiph/au_2
-S 0x57adc vwl_zh/eng
-S 0x57ce0 vwl_zh/ing
-S 0x57f24 vwl_zh/ng
-S 0x58068 vwl_zh/oeng
-S 0x5822c vwl_zh/ong
-S 0x583b0 vwl_zh/ung
-S 0x58534 vowel/8_3
-E 0x58638 envelope/i_risefall
-S 0x586b8 nn/nn2_
-W 0x5877c ustop/k_unasp_
-W 0x58a38 ustop/tsh_pzd_unasp
-W 0x59288 ustop/tsh_pzd
-W 0x59dc8 ustop/ts_unasp
-W 0x5a640 ustop/ts_rfx_unasp
-W 0x5b22c ustop/ts_rfx
-S 0x5bf0c vwl_zh/a_n
-S 0x5c010 vwl_zh/aau
-S 0x5c154 vowel/i#_6
-S 0x5c258 vwl_zh/iaa
-S 0x5c39c vwl_zh/iaau
-S 0x5c520 vwl_zh/ie
-S 0x5c664 vdiph2/iioo
-S 0x5c7a8 vwl_zh/iou
-S 0x5c92c vowel/8
-S 0x5ca30 vwl_zh/uaa
-S 0x5cb74 vwl_zh/uai
-S 0x5ccf8 vwl_zh/uei
-S 0x5ce7c vwl_zh/uo
-S 0x5d000 vwl_zh/y&
-S 0x5d144 vwl_zh/yee
-S 0x5d288 vdiph2/y@
-S 0x5d3cc vowel/u#_7
-S 0x5d4d0 vowel/8_5
-S 0x5d5d4 vowel/o_7
-S 0x5d6d8 vowel/uu#
-S 0x5d7dc vowel/8_6
-S 0x5d8e0 vowel/ee_4
-S 0x5d9e4 vdiph/ooi_4
-S 0x5db28 vdiph2/ye
-S 0x5dc6c l/l_front_
-S 0x5ddb0 l/l_front
-S 0x5deb4 l/l_4
-S 0x5df78 r/a_
-S 0x5e03c vowel/o_5
-S 0x5e140 r/aa
-W 0x5e244 ustop/k_asp_u
-E 0x5ea74 envelope/i_risefall2
-W 0x5eaf4 ufric/tlh
-S 0x60010 vowel/e_6
-W 0x60114 ustop/tsh_unasp
-W 0x605d4 ustop/k_ejc
-S 0x60d84 vwl_tn/r@
-S 0x60e48 vwl_tn/@
-S 0x60f0c vwl_tn/I
-S 0x60fd0 vdiph2/ii@_2
-S 0x61154 vowel/ii_8
-S 0x61258 vowel/y#_4
-W 0x6135c ustop/t_unasp
+S 0x0c4b4 r3/@tap_rfx_
+S 0x0c5f8 r3/@tap_rfx
+S 0x0c73c b/xb
+S 0x0c800 klatt/b
+W 0x0c8c4 x/b_
+W 0x0ccdc x/b
+S 0x0ce40 b/b_
+S 0x0cf04 b/b@2
+S 0x0d008 b/b@
+S 0x0d10c b/ba
+S 0x0d210 b/be
+S 0x0d314 b/bi
+S 0x0d418 b/bo
+S 0x0d51c b/bu
+S 0x0d620 b/b
+S 0x0d724 d/xd
+S 0x0d7e8 d/d_
+W 0x0d8ac x/d_
+S 0x0dcd4 d/d
+W 0x0dd98 x/d
+W 0x0dfb4 x/d_dnt
+S 0x0e298 dzh/xdzh
+S 0x0e35c dzh/dzh_
+W 0x0e420 x/dzh_
+S 0x0ee58 dzh/dzh
+W 0x0ef1c x/dzh
+W 0x0f328 x/dz_pzd
+S 0x0f788 dzh/xdz_pzd
+S 0x0f84c klatt/dz_pzd_
+S 0x0f910 klatt/dz_pzd
+S 0x0f9d4 dzh/dz_pzd_
+S 0x0fa98 dzh/dz_pzd
+S 0x0fb5c g/xg
+S 0x0fc20 g/g_
+W 0x0fce4 x/g_
+S 0x100a4 g/g
+W 0x10168 x/g2
+S 0x103f0 klatt/v_
+W 0x104b4 vocw/v
+S 0x10db4 klatt/bh
+S 0x10e78 voc/v_
+S 0x10f3c voc/bh
+S 0x11000 klatt/v
+S 0x110c4 voc/v
+S 0x111c8 voc/v#_
+S 0x1128c voc/v#
+S 0x11390 voc/dh_
+W 0x11454 vocw/dh
+S 0x11d5c voc/dh
+S 0x11e20 voc/z_
+W 0x11ee4 ufric/s_
+S 0x12998 voc/z
+S 0x12a5c klatt/zh_
+W 0x12b20 vocw/zh
+S 0x13488 klatt/zh
+S 0x1354c voc/zh_
+S 0x13610 voc/zh
+W 0x136d4 vocw/zh_rfx
+S 0x13f64 voc/z_pzd_
+W 0x14028 ufric/s_pzd_
+S 0x14b2c voc/z_pzd
+W 0x14bf0 ufric/s_pzd
+W 0x15528 ufric/sh_pzd_
+W 0x15ff0 ufric/sh_pzd
+S 0x16924 voc/j
+W 0x16a28 ufric/ch
+S 0x17140 klatt/qqh_
+W 0x17204 vocw/Q_
+S 0x17a10 klatt/qqh
+W 0x17ad4 vocw/Q
+S 0x182e0 voc/Q_
+S 0x183a4 voc/Q
+S 0x18468 voc/Q_ulv
+W 0x1856c ufric/xx
+W 0x19068 ustop/p_
+W 0x19878 ustop/pr
+W 0x19cc0 ustop/p_unasp
+W 0x19fec ustop/pl
+W 0x1a3e4 ustop/p
+W 0x1a754 ustop/t_
+W 0x1ac14 ustop/tr
+W 0x1b374 ustop/t_dnt
+W 0x1b784 ustop/t
+W 0x1bbb8 ustop/t_hi
+W 0x1be84 ustop/tsh_
+W 0x1c7c4 ustop/tsh
+W 0x1ce04 ustop/ts_pzd
+W 0x1d508 ustop/t_pzd
+W 0x1d954 ustop/c
+W 0x1dc04 ustop/k_
+W 0x1e0c0 ustop/kr
+W 0x1e700 ustop/ki
+W 0x1ecc8 ustop/kl
+W 0x1f2f8 ustop/k_unasp
+W 0x1f7cc ustop/k
+W 0x1fca0 ustop/q
+W 0x1fe0c ustop/q_u
+W 0x1ff2c ufric/f_
+W 0x209fc ufric/f
+W 0x211ec ufric/th_
+W 0x21a6c ufric/th
+W 0x22304 ufric/s!
+W 0x22bb4 ufric/s
+W 0x23354 ufric/sh_
+W 0x23e04 ufric/sh
+W 0x247b4 ufric/sh_rfx
+W 0x25150 ufric/l#
+W 0x25b94 ufric/ch_
+W 0x264bc ufric/x_
+W 0x27018 ufric/x_hr
+W 0x2792c h/h@
+W 0x27e80 h/ha
+W 0x284fc h/he
+W 0x28b90 h/hi
+W 0x29128 h/ho
+W 0x297e4 h/hu
+W 0x29f08 h/h_
+W 0x2a5b4 ustop/ts_
+W 0x2af14 ustop/ts
+S 0x2b970 d/xdz
+W 0x2ba34 ustop/p_unasp_
+W 0x2bb70 ustop/p_asp
+W 0x2c074 ustop/t_short
+W 0x2c2b8 ustop/ts_pzd_
+W 0x2c77c ustop/ts_pzd2
+W 0x2cab0 ustop/k_asp
+W 0x2d1b4 ustop/k_asp_e
+W 0x2d91c ustop/k_asp_a
+W 0x2e1a0 ufric/s_continue
+S 0x2e950 vowel/a#
+S 0x2ea54 vowel/a_2
+S 0x2eb58 vowel/ee_1
+S 0x2ec9c vowel/o
+S 0x2ede0 vowel/oo_4
+S 0x2eee4 vowel/u_bck
+S 0x2efe8 vowel/uu_2
+S 0x2f0ec vowel/y
+S 0x2f230 vowel/y#
+S 0x2f334 vdiph/au_4
+S 0x2f4b8 vdiph/eu
+S 0x2f5fc vdiph2/iu
+S 0x2f780 vdiph/ai
+S 0x2f8c4 vdiph/ei
+S 0x2fa08 vdiph/eei
+S 0x2fb8c vdiph/oi
+S 0x2fd50 vdiph/ui
+S 0x2fe94 w/w2
+W 0x2ff58 ustop/t_dnt2
+S 0x301b0 klatt/x_tap
+S 0x30274 klatt/tap2
+S 0x30338 d/x_tap
+S 0x303fc d/tap2
+W 0x304c0 x/g2_
+S 0x30880 r2/r2@
+S 0x30944 r2/r2a
+S 0x30a08 r2/r2e
+S 0x30b0c r2/r2i
+S 0x30bd0 r2/r2o
+S 0x30c94 r2/r2u
+S 0x30d58 vowel/@_6
+S 0x30e5c vwl_en/@L
+S 0x30f20 vowel/a_8
+S 0x31024 vowel/a#_3
+S 0x31128 vowel/ee_5
+S 0x3122c vowel/ii_2
+S 0x31330 vowel/ii_4
+S 0x31434 vowel/ii_7
+S 0x31538 vowel/0
+S 0x3163c vowel/V_2
+S 0x31740 vowel/uu
+S 0x31844 vowel/aa_2
+S 0x319c8 vowel/3_en
+S 0x31b0c w/wi2
+S 0x31c10 vowel/i_en
+S 0x31d54 vowel/oo_en
+S 0x31e98 vwl_en/u_L
+S 0x31fdc vdiph2/uw_2
+S 0x32120 vdiph/au
+S 0x322a4 vdiph/@u_en
+S 0x32428 vdiph/ai_2
+S 0x325ec vdiph/ooi
+S 0x327b0 vdiph2/ii@
+S 0x32934 vdiph2/8@
+S 0x32a78 vdiph2/uu@
+S 0x32bfc vwl_en/aI@
+S 0x32dc0 vwl_en/aU@
+S 0x32f44 vowelr/V_r
+S 0x33088 vowelr/V3_r
+S 0x331cc vnasal/aa_n2
+S 0x33310 vnasal/oo_n2
+S 0x33454 vowel/@_3
+S 0x33518 vowel/@_fr
+S 0x335dc vowel/ee
+S 0x336e0 vowel/ii
+S 0x337e4 vowel/e_2
+S 0x338e8 vowel/0_2
+S 0x339ec vowel/o-_2
+S 0x33af0 vowel/aa_5
+S 0x33c34 vowel/3_2
+S 0x33d78 vowel/oo_1
+S 0x33ebc vwl_en_n/O@
+S 0x33fc0 vdiph2/uw_4
+S 0x34104 vdiph/eeu_3
+S 0x34248 vdiph/ae_2
+S 0x343cc vdiph2/ee@
+S 0x34510 vdiph2/i@
+S 0x346d4 vwl_en_us/3_us
+S 0x347d8 vowel/@_4
+S 0x3489c vowel/@_low2
+S 0x34960 vnasal/ee_n2
+S 0x34aa4 vwl_en_us/a
+S 0x34ba8 vwl_en_us/ee
+S 0x34cac vowel/ii#_3
+S 0x34db0 vowel/ii#
+S 0x34eb4 vowel/ii_final
+S 0x34fb8 vowel/aa_8
+S 0x350bc vowel/V_6
+S 0x351c0 vowel/8_2
+S 0x352c4 vwl_en_us/ar
+S 0x35448 vwl_en_us/3_us2
+S 0x3558c vwl_en_us/oor
+S 0x35710 vowel/0_3
+S 0x35814 vwl_en_us/or
+S 0x35958 vowel/aa#
+S 0x35a5c vdiph2/uw_6
+S 0x35ba0 vdiph/aoo
+S 0x35ce4 vdiph/8u
+S 0x35e28 vdiph/aae
+S 0x35fac vdiph2/ei_4
+S 0x360f0 vdiph/ooi_3
+S 0x36274 vwl_en_us/er
+S 0x363f8 vwl_en_us/ir
+S 0x3657c vwl_en_us/ur
+S 0x366c0 vwl_en_us/ai@
+S 0x36844 vwl_en_us/ai3
+S 0x36a08 vwl_en_us/aU@
+S 0x36bcc vowel/V
+S 0x36cd0 vowel/a_3
+S 0x36dd4 vowel/e_e
+S 0x36ed8 vowel/e#
+S 0x36fdc vowel/e_5
+S 0x370e0 vowel/oo_2
+S 0x371e4 vowel/V_4
+S 0x372e8 vowel/u#_4
+S 0x373ec vowelr/aa_r
+S 0x375b0 vowelr/e_r
+S 0x37734 vowel/i_5
+S 0x37838 vowelr/oo_r
+S 0x3793c vowel/u#
+S 0x37a40 vdiph/au#
+S 0x37b84 vowel/o_3
+S 0x37cc8 vwl_en/aI@_2
+S 0x37e4c vdiph/ai_7
+S 0x37fd0 vdiph/0i_2
+S 0x38154 vdiph2/e@
+S 0x38298 vowelr/i_r
+S 0x383dc vdiph2/u#@
+S 0x38520 vwl_en/@L_2
+S 0x38624 vowel/@_low
+S 0x386e8 vowel/&
+S 0x387ec vowel/e_mid
+S 0x388f0 vowel/V_3
+S 0x389f4 vowel/o-_3
+S 0x38af8 vwl_en_rp/aa
+S 0x38c3c vowel/3_3
+S 0x38d80 vowel/uu#_2
+S 0x38e84 vdiph/au_3
+S 0x39008 vdiph/@u_2
+S 0x3914c vdiph/ai_6
+S 0x39310 vdiph2/ei_2
+S 0x39454 vdiph2/ee@_2
+S 0x39598 vwl_en_rp/i@
+S 0x3971c vowel/o_mid
+S 0x39820 vwl_en_rp/aU@
+S 0x399a4 vowel/ii_6
+S 0x39a68 vdiph2/ei_3
+S 0x39bac vdiph/@u
+S 0x39cf0 vdiph/Vu_2
+S 0x39e74 vdiph/@i_3
+S 0x39fb8 vdiph2/i@_2
+S 0x3a13c vwl_en/ooi@
+S 0x3a300 vowel/@_fnt
+S 0x3a404 vowel/uu_bck
+S 0x3a508 vowel/i_fnt
+S 0x3a60c vdiph2/o_oo
+S 0x3a750 vdiph/aau_2
+S 0x3a894 vdiph2/ie
+S 0x3a9d8 vwl_af/r@
+S 0x3aa9c vwl_af/@
+S 0x3ab60 vowel/e_mid2
+S 0x3ac64 vwl_af/I
+S 0x3ad28 vowel/oo_3
+S 0x3adec vowel/oe
+S 0x3aef0 vowel/uu_3
+S 0x3afb4 l/L_eL_af
+S 0x3b078 vowel/ee_3
+S 0x3b13c vowel/aa_3
+S 0x3b240 vdiph/i@_2
+S 0x3b3c4 vowel/i_3
+S 0x3b4c8 vdiph2/o@
+S 0x3b64c vowel/y_3
+S 0x3b750 vdiph2/iu_3
+S 0x3b914 vdiph/Vu
+S 0x3ba98 vdiph/ai_4
+S 0x3bc1c vdiph/aai_2
+S 0x3bde0 vdiph/@i_2
+S 0x3bf24 vdiph/ooi_2
+S 0x3c0e8 vdiph/oi_2
+S 0x3c2ac vdiph/ui_2
+S 0x3c430 vdiph/y#y_2
+S 0x3c5b4 vdiph2/y#@
+S 0x3c6f8 vnasal/aa_n3
+S 0x3c83c vnasal/e_n
+S 0x3c940 vnasal/o_n2
+W 0x3ca84 ufric/x2
+S 0x3d3dc vowel/ee_2
+S 0x3d4e0 vowel/ii_3
+S 0x3d5e4 vowel/i#
+S 0x3d6e8 vowel/o_2
+S 0x3d82c vdiph2/iu_4
+S 0x3d970 vdiph/ui_3
+S 0x3daf4 vowel/a_4
+S 0x3dbf8 vdiph/@u_3
+S 0x3dd7c vdiph2/u@
+S 0x3df00 vowel/aa_6
+S 0x3e044 vowel/i_2
+S 0x3e148 vdiph/aau_6
+S 0x3e2cc vdiph/ai_5
+S 0x3e410 vowel/e_8
+S 0x3e514 vowel/yy_4
+S 0x3e618 l/l_3
+S 0x3e69c j/_j_short
+S 0x3e720 vdiph2/i@_3
+S 0x3e8a4 vwl_de/uu_@
+S 0x3e9e8 vnasal/aa_n4
+Q 0x3eb2c de
+S 0x3eb3c vdiph/eei_2
+S 0x3ec80 vowel/i_4
+S 0x3ed84 vowel/aa_9
+S 0x3ee88 vowel/u_2
+S 0x3ef8c vowel/uu_4
+S 0x3f090 vdiph/aai_3
+S 0x3f214 vdiph/&i
+S 0x3f358 vdiph/y#i
+S 0x3f49c vdiph/ui_4
+S 0x3f5e0 vdiph/yi
+S 0x3f724 vdiph/aau
+S 0x3f8a8 vdiph/ou
+S 0x3f9ec vdiph/eu_2
+S 0x3fb30 vdiph2/iu_2
+S 0x3fcb4 vdiph/&y
+S 0x3fdf8 vdiph/eey
+S 0x3ff3c vdiph/y#y
+S 0x40080 vdiph2/iy
+S 0x401c4 vdiph2/uo
+S 0x40308 vdiph2/y-y#
+S 0x4044c r3/r_trill_short
+W 0x40550 h/hu_fi
+S 0x40e40 vowel/aa
+S 0x40f44 vowel/e_7
+S 0x41048 vowel/ee#_2
+S 0x4114c vowel/i_8
+S 0x41250 vowel/i_7
+S 0x41354 vowel/i#_7
+S 0x41458 vowel/u_bck2
+S 0x4155c vowel/u_bck3
+S 0x41660 vowel/u_5
+S 0x41764 vowel/8_7
+S 0x41868 vowel/8_4
+S 0x4196c vdiph/@i
+W 0x41ab0 ufric/s_pal
+S 0x42364 d/xd_pzd
+W 0x42428 x/d_pzd
+S 0x4283c vwl_fr/y2r
+S 0x428c0 vwl_fr/e_2r
+S 0x42944 vwl_fr/aa2r
+S 0x429c8 vwl_fr/ee2r
+S 0x42a8c vwl_fr/oo2r
+S 0x42b50 vwl_fr/@2r
+S 0x42bd4 vwl_fr/a2r
+S 0x42c58 vwl_fr/e2r
+S 0x42cdc vwl_fr/i2r
+S 0x42d60 vwl_fr/o2r
+S 0x42de4 vwl_fr/u2r
+S 0x42e68 vwl_fr/re2
+S 0x42eec vwl_fr/r@2
+S 0x42f70 vwl_fr/raa
+S 0x42ff4 vwl_fr/ree
+S 0x43078 vwl_fr/ry
+S 0x430fc vwl_fr/rw
+S 0x43180 vwl_fr/roo
+S 0x43204 vwl_fr/rj
+S 0x43288 vwl_fr/r@
+S 0x4330c vwl_fr/ra
+S 0x43390 vwl_fr/re
+S 0x43414 vwl_fr/ri
+S 0x43498 vwl_fr/ro
+S 0x4351c vwl_fr/ru
+S 0x435a0 vwl_fr/r
+S 0x43624 vwl_fr/trr
+S 0x436e8 vwl_fr/rr
+S 0x4376c vwl_fr/r_@
+S 0x437f0 vwl_fr/r_a
+S 0x43874 vwl_fr/r_e
+S 0x438f8 vwl_fr/r_i
+S 0x4397c vwl_fr/r_o
+S 0x43a00 vwl_fr/r_u
+S 0x43a84 vwl_fr/r_y
+S 0x43b08 vwl_fr/r_n
+S 0x43bcc vwl_fr/r_
+S 0x43c50 vwl_fr/tr
+S 0x43d54 vwl_fr/br
+S 0x43e58 vwl_fr/lo
+S 0x43edc l/l_y
+S 0x43f60 vowel/@_hgh
+S 0x44024 vowel/a_7
+S 0x44128 vwl_fr/j
+S 0x4422c vowel/o_8
+S 0x44370 vowel/o_mid2
+S 0x44474 vwl_fr/wa
+S 0x44538 vnasal/W_n
+S 0x4467c vnasal/o_n4
+S 0x447c0 b/xbr
+S 0x44884 b/br
+S 0x44908 d/xdr
+S 0x449cc g/xgr
+S 0x44a90 g/gr
+W 0x44b54 x/g
+S 0x44e14 n/n_long_
+W 0x44ed8 ustop/t_short_
+Q 0x45164 fr
+S 0x45218 vnasal/ee_n
+S 0x4535c vowel/yy
+S 0x45460 vdiph/ae
+S 0x455a4 vwl_fr/@R2
+S 0x456a8 vowel/o_6
+S 0x457ac vowel/a#_2
+S 0x458b0 vowel/a#_4
+S 0x459b4 vdiph/y#y_3
+S 0x45ab8 vdiph/ou_4
+S 0x45bfc vdiph2/yu
+S 0x45d80 voc/Q_less
+W 0x45e44 vocw/Q2
+S 0x46710 vowel/@_bck
+S 0x46814 vdiph/ee-e
+S 0x46958 vowel/a_5
+S 0x46a5c vnasal/i_n2
+S 0x46b60 vnasal/ii_n
+S 0x46c64 vnasal/&_n
+S 0x46d68 vnasal/V_n
+S 0x46e6c vnasal/o_n
+S 0x46fb0 vnasal/u_n
+S 0x470b4 vdiph/aau_3
+S 0x47238 d/xd3
+W 0x472fc ustop/th_rfx
+W 0x47a90 ustop/tsh_unasp
+S 0x47f50 g2/xg
+W 0x48014 ustop/percus02
+S 0x48344 vowel/i_6
+S 0x48448 vowel/&_2
+S 0x4854c vowel/oo_5
+W 0x48650 ustop/tsh_asp
+S 0x492b8 vdiph/aai
+S 0x4943c vdiph/Vi
+E 0x495c0 envelope/p_512
+S 0x49640 vowel/ii_5
+S 0x49744 vowel/u_6
+S 0x49848 vowel/u#_3
+S 0x4994c vdiph/ai_8
+S 0x49ad0 voc/murmur1
+S 0x49c14 vowel/y#_2
+S 0x49d18 vowel/e_3
+S 0x49e1c vwl_ru/ee
+S 0x49f60 vdiph2/ea
+S 0x4a0a4 vdiph2/uaa
+S 0x4a228 vdiph2/ie_2
+S 0x4a36c vdiph/ou_2
+S 0x4a4b0 vdiph/eei_3
+W 0x4a5f4 ustop/ts2
+S 0x4aac4 vowel/ee#
+S 0x4abc8 vowel/ii#_2
+S 0x4accc vnasal/ee_u_n
+S 0x4ae50 vnasal/oo_n3
+S 0x4afd4 vowel/ee_6
+W 0x4b098 r3/rz_cs
+S 0x4bb44 voc/zh_2
+S 0x4bc08 vdiph/oou
+W 0x4bd4c ufric/sh3
+W 0x4c6e0 ustop/tsh2
+W 0x4cdec ustop/ts_pzd3
+S 0x4d46c dzh/dzh2
+W 0x4d530 ustop/t_sr
+S 0x4d868 d/d_dnt
+W 0x4d92c ufric/ch_sr
+W 0x4e50c ufric/x_sr
+W 0x4ed8c ufric/sh_pzd2
+W 0x4f8dc ustop/ts_sr
+W 0x50098 ustop/tsh_sr
+W 0x509b0 x/g3
+S 0x50b98 vwl_ro/mi
+S 0x50cdc vwl_ru/ii-
+S 0x50da0 vwl_ru/ii
+S 0x50ea4 vwl_ru/ii#
+S 0x50f68 vwl_ru/i#
+S 0x5106c vwl_ru/e
+S 0x51170 vwl_ru/E#
+S 0x51274 vwl_ru/E@
+S 0x51378 vwl_ru/o
+S 0x5147c vwl_ru/oo
+S 0x51540 vwl_ru/u
+S 0x51644 vwl_ru/u#
+S 0x51788 vwl_ru/u#u
+S 0x518cc vwl_ru/8
+S 0x51990 vwl_ru/ju
+S 0x51a94 vwl_ru/ja
+S 0x51c18 vwl_ru/a
+S 0x51d1c vwl_ru/aa
+S 0x51e20 r3/r_ru2
+W 0x51f24 r3/r_ru
+S 0x52228 vowel/y_2
+S 0x5236c vdiph/eeu_2
+S 0x524b0 voc/v2
+S 0x52574 vowel/a_6
+S 0x52678 vnasal/i_n
+S 0x5277c vnasal/a#_n2
+S 0x52880 vnasal/a#_n
+S 0x52984 vnasal/a#u_n
+S 0x52ac8 vnasal/oi_n
+S 0x52c8c vdiph/0i
+S 0x52e50 vdiph/eeu
+S 0x52f94 vowel/i#_5
+S 0x53098 vwl_fr/@R
+S 0x5319c vwl_ro/li
+S 0x532a0 vwl_ro/ni
+S 0x533a4 vwl_ro/ii-
+S 0x53468 vowel/o-_4
+S 0x5356c vdiph/ii
+S 0x53730 vdiph/i#i
+S 0x53874 vdiph2/uw_3
+S 0x539b8 vdiph2/eo
+S 0x53b3c vdiph2/e_u
+S 0x53c80 vdiph2/oa
+S 0x53dc4 d/tap_i
+S 0x53e88 d/tap
+W 0x53f4c ustop/t_unasp2
+S 0x54058 vowel/y_5
+S 0x5419c vowel/yy_3
+S 0x542a0 vowel/u#_2
+S 0x543a4 vowel/oe_4
+S 0x54468 vowel/aa_4
+W 0x5456c ufric/sx_sv
+S 0x54db4 vowel/y_4
+S 0x54eb8 vowel/oe_2
+S 0x54fbc vwl_no/y#
+S 0x550c0 vwl_no/&
+S 0x551c4 vwl_no/u#
+S 0x552c8 vwl_no/u#2
+S 0x5540c vdiph/ai_3
+S 0x55550 vwl_no/y#y
+S 0x55694 vwl_no/au-
+S 0x55858 vowel/y##
+S 0x5595c vowel/y#_3
+S 0x55a60 vdiph/ou_3
+S 0x55b64 vdiph/y#i_2
+S 0x55ca8 m/m#_
+S 0x55dac n/n#_
+S 0x55eb0 n^/n^#_
+S 0x55fb4 nn/nn#_
+W 0x560b8 ufric/tl#
+S 0x56a20 r3/r#_
+E 0x56aa4 envelope/p_level
+E 0x56b24 envelope/p_fall
+E 0x56ba4 envelope/p_rise
+E 0x56c24 envelope/p_fallrise
+E 0x56ca4 envelope/p_214
+E 0x56d24 envelope/vi_5amp
+E 0x56da4 envelope/vi_6amp
+S 0x56e24 vowel/u#_5
+S 0x56f28 vowel/@_2
+S 0x5702c vdiph/&i_2
+S 0x57170 vdiph/u-i
+S 0x572b4 vdiph/aau_4
+S 0x57438 vdiph2/ii@_3
+S 0x575bc vnasal/&u_n
+S 0x57700 vietnam/oe
+S 0x57844 vietnam/ie_2
+S 0x57988 vowel/u_3
+W 0x57a8c vietnam/_c
+S 0x57c58 l/l_vi
+W 0x57d5c vietnam/th
+W 0x5834c vietnam/tr
+W 0x5863c vietnam/dd
+W 0x58be0 vietnam/ch
+S 0x5913c vietnam/a
+S 0x59280 vowel/o_5
+S 0x59384 vwl_zh/ang
+S 0x59588 vwl_zh/aang
+S 0x597cc vdiph/au_2
+S 0x59950 vwl_zh/eng
+S 0x59b54 vwl_zh/ing
+S 0x59d98 vwl_zh/ng
+S 0x59edc vwl_zh/oeng
+S 0x5a0a0 vwl_zh/ong
+S 0x5a224 vwl_zh/ung
+S 0x5a3a8 vowel/8_3
+E 0x5a4ac envelope/i_risefall
+S 0x5a52c nn/nn2_
+W 0x5a5f0 ustop/k_unasp_
+W 0x5a8ac ustop/tsh_pzd_unasp
+W 0x5b0fc ustop/tsh_pzd
+W 0x5bc3c ustop/ts_unasp
+W 0x5c4b4 ustop/ts_rfx_unasp
+W 0x5d0a0 ustop/ts_rfx
+S 0x5dd80 vwl_zh/a_n
+S 0x5de84 vwl_zh/aau
+S 0x5dfc8 vowel/i#_6
+S 0x5e0cc vwl_zh/iaa
+S 0x5e210 vwl_zh/iaau
+S 0x5e394 vwl_zh/ie
+S 0x5e4d8 vdiph2/iioo
+S 0x5e61c vwl_zh/iou
+S 0x5e7a0 vowel/8
+S 0x5e8a4 vwl_zh/uaa
+S 0x5e9e8 vwl_zh/uai
+S 0x5eb6c vwl_zh/uei
+S 0x5ecf0 vwl_zh/uo
+S 0x5ee74 vwl_zh/y&
+S 0x5efb8 vwl_zh/yee
+S 0x5f0fc vdiph2/y@
+S 0x5f240 vowel/u#_7
+S 0x5f344 vowel/8_5
+S 0x5f448 vowel/o_7
+S 0x5f54c vowel/uu#
+S 0x5f650 vowel/8_6
+S 0x5f754 vowel/ee_4
+S 0x5f858 vdiph/ooi_4
+S 0x5f99c vdiph2/ye
+S 0x5fae0 l/l_front_
+S 0x5fc24 l/l_front
+S 0x5fd28 l/l_4
+S 0x5fdec r/a_
+S 0x5feb0 r/aa
+W 0x5ffb4 ustop/k_asp_u
+E 0x607e4 envelope/i_risefall2
+W 0x60864 ufric/tlh
+S 0x61d80 vowel/e_6
+S 0x61e84 vowel/&_3
+W 0x61f88 ustop/k_ejc
+S 0x62738 vwl_tn/r@
+S 0x627fc vwl_tn/@
+S 0x628c0 vwl_tn/I
+S 0x62984 vdiph2/ii@_2
+S 0x62b08 vowel/ii_8
+S 0x62c0c vowel/y#_4
+W 0x62d10 ustop/t_unasp
language hy 8
gender male
+dictrules 1
+
// change consonants for West Armenian pronunciation
replace 00 b p#
replace 00 d t#
replace 00 c dZ
replace 00 k g
-replace 00 ** R // ??
-replace 00 r R
+replace 00 R2 R // ??
+
--- /dev/null
+name vietnam_sgn
+language vi-sgn
+phonemes vi-sgn
+dictrules 2
+gender male
+
+words 1
+pitch 82 118 //80 118
+//breath 75 75 60 40 15 10
+ //breathw 150 150 200 200 400 400
+ voicing 90 //18
+ flutter 20
-name Irish Gaeilge
+name irish-gaeilge
language ga
dictrules 1 // fix for eclipsis
gender male
dictrules 2
+stressLength 200 115 230 230 0 0 250 270
--- /dev/null
+name azerbaijani-test
+language az
+
Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics.
Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names.
+Revision 8 26.Apr.2013
+ Added function espeak_TextToPhonemes().
+
*/
/********************/
/* Initialization */
char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes.
} id;
} espeak_EVENT;
-/*
+/*
When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called.
In PLAYBACK mode, the callback function is called as soon as an event happens.
- For example suppose that the following message is supplied to espeak_Synth:
+ For example suppose that the following message is supplied to espeak_Synth:
"hello, hello."
* Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function :
** Block 1:
- <audio data> +
+ <audio data> +
List of events: SENTENCE + WORD + LIST_TERMINATED
-
+
** Block 2:
<audio data> +
List of events: WORD + END + LIST_TERMINATED
typedef enum {
/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/
- AUDIO_OUTPUT_PLAYBACK,
+ AUDIO_OUTPUT_PLAYBACK,
/* RETRIEVAL mode: supplies audio data and events to the calling program */
AUDIO_OUTPUT_RETRIEVAL,
-
+
/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */
AUDIO_OUTPUT_SYNCHRONOUS,
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
/* Must be called before any synthesis functions are called.
This specifies a function in the calling program which is called when a buffer of
- speech sound data has been produced.
+ speech sound data has been produced.
The callback function is of the form:
start of the text.
position_type: Determines whether "position" is a number of characters, words, or sentences.
- Values:
+ Values:
end_position: If set, this gives a character position at which speaking will stop. A value
of zero indicates no end position.
espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language.
espeakCHARS_AUTO 8 bit or UTF8 (this is the default)
espeakCHARS_WCHAR Wide characters (wchar_t)
+ espeakCHARS_16BIT 16 bit characters.
espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored.
espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then
this pause is suppressed.
- unique_identifier: message identifier; helpful for identifying later
+ unique_identifier: message identifier; helpful for identifying later
data supplied to the callback.
user_data: pointer which will be passed to the callback function.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
For the other parameters, see espeak_Synth()
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
If key_name is a single character, it speaks the name of the character.
Otherwise, it speaks key_name as a text string.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character);
-/* Speak the name of the given character
+/* Speak the name of the given character
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal
espeakPUNCTUATION: which punctuation characters to announce:
- value in espeak_PUNCT_TYPE (none, all, some),
+ value in espeak_PUNCT_TYPE (none, all, some),
see espeak_GetParameter() to specify which characters are announced.
espeakCAPITALS: announce capital letters by:
espeakWORDGAP: pause between words, units of 10mS (at the default speed)
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
punctlist: A list of character codes, terminated by a zero character.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
#ifdef __cplusplus
extern "C"
#endif
+ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode);
+/* Translates text into phonemes. Call espeak_SetVoiceByName() first, to select a language.
+ text: The text to translate, terminated by a zero character.
+
+ buffer: Output buffer for the phoneme translation.
+
+ size: Size of the output buffer in bytes.
+
+ textmode: Type of character codes, one of:
+ espeakCHARS_UTF8 UTF8 encoding
+ espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language.
+ espeakCHARS_AUTO 8 bit or UTF8 (this is the default)
+ espeakCHARS_WCHAR Wide characters (wchar_t)
+ espeakCHARS_16BIT 16 bit characters.
+
+ phonememode: bits0-3:
+ 0= just phonemes.
+ 1= include ties (U+361) for phoneme names of more than one letter.
+ 2= include zero-width-joiner for phoneme names of more than one letter.
+ 3= separate phonemes with underscore characters.
+
+ bits 4-7:
+ 0= eSpeak's ascii phoneme names.
+ 1= International Phonetic Alphabet (as UTF-8 characters).
+*/
+
+#ifdef __cplusplus
+extern "C"
+#endif
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags);
/* Compile pronunciation dictionary for a language which corresponds to the currently
selected voice. The required voice should be selected before calling this function.
unsigned char gender; // 0=none 1=male, 2=female,
unsigned char age; // 0=not specified, or age in years
unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties
- unsigned char xx1; // for internal use
+ unsigned char xx1; // for internal use
int score; // for internal use
void *spare; // for internal use
} espeak_VOICE;
/* Searches for a voice with a matching "name" field. Language is not considered.
"name" is a UTF8 string.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
function returns, the audio output is fully stopped and the synthesizer is ready to
synthesize a new message.
- Return: EE_OK: operation achieved
+ Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
*/
#endif
ESPEAK_API espeak_ERROR espeak_Synchronize(void);
/* This function returns when all data have been spoken.
- Return: EE_OK: operation achieved
+ Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
*/
#endif
ESPEAK_API espeak_ERROR espeak_Terminate(void);
/* last function to be called.
- Return: EE_OK: operation achieved
+ Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
*/
\r
[Setup]\r
AppName=eSpeak\r
-AppVerName=eSpeak version 1.47.06\r
+AppVerName=eSpeak version 1.47.09\r
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).\r
WindowVisible=yes\r
\r
ne.v2=अथवा यसमा निर्धारण गरिएको आवाजलाई नै चयन गर्ने हो भने ईन्टर कुञ्जीलाई दबाउनु होस् । \r
ne.v3=आवाजको नाम प्रविष्टी गर्नु होस् , जस्तै: नेपालीका लागि ne, अथवा स्वरको पनि चयन गर्ने हो भने ne+f3\r
\r
+hi.v1=स्थापना करने के लिए पसन्दिदा आवाजों को चयन करें ।\r
+hi.v2=अगर आप कि चयन इसमें निर्दारित आवाज हि हो तो केवल ईन्टर कुञ्जी दबाए । \r
+hi.v3=आवाज कि नाम प्रविष्टी करें, जैसा कि हिन्दी के लिए hi, और किसि स्वर भि चयन करना चाहते हो तो hi+f3\r
+\r
[Code]\r
var\r
UILanguage: Integer;\r
\r
[Setup]\r
AppName=eSpeakEdit\r
-AppVerName=eSpeakEdit version 1.47.06\r
+AppVerName=eSpeakEdit version 1.47.09\r
DefaultDirName={pf}\eSpeak\r
DefaultGroupName=eSpeak\r
OutputBaseFilename=setup_espeakedit\r
{"$stem", 0x30}, // must have a suffix
{"$atend", 0x31}, // use this pronunciation if at end of clause
{"$atstart", 0x32}, // use this pronunciation at start of clause
+ {"$native", 0x33}, // not if we've switched translators
// doesn't set dictionary_flags
{"$?", 100}, // conditional rule, followed by byte giving the condition number
ix = utf8_in(&c2,p);
if(c2 == 0)
break;
- if(iswupper(c2))
+ if(iswupper2(c2))
{
- utf8_out(towlower(c2),p);
+ utf8_out(towlower2(c2),p);
}
else
{
unsigned short ipa1[96] = {
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f,
0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294,
- 0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254,
+ 0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254,
0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
-{//=========================================================================
- /* Can be called after a clause has been translated into phonemes, in order
+void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode)
+{//===============================================================================
+ /* Called after a clause has been translated into phonemes, in order
to display the clause in phoneme mnemonic form.
+
+ phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
+ bit 4: 0=eSpeak phoneme names, 1=IPA
*/
int ix;
char *buf;
int count;
int flags;
+ int use_ipa;
+ int use_tie;
int separate_phonemes = 0;
char phon_buf[30];
char phon_buf2[30];
static const char *stress_chars = "==,,''";
static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner
- if(use_ipa >= 4)
+ use_ipa = phoneme_mode & 0x10;
+ use_tie = phoneme_mode & 0x0f;
+
+ if(use_tie >= 3)
{
// separate individual phonemes with underscores
separate_phonemes = '_';
- if(use_ipa == 5)
- use_ipa = 0;
- else
- use_ipa = 1;
+ use_tie = 0;
}
+
if(phon_out != NULL)
{
for(ix=1; ix<(n_phoneme_list-2); ix++)
buf = phon_buf;
plist = &phoneme_list[ix];
+
+ WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags);
if(plist->newword)
*buf++ = ' ';
else
{
if((separate_phonemes != 0) && (ix > 1))
{
- *buf++ = separate_phonemes;
+ utf8_in(&c, phon_buf2);
+ if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter
+ {
+ *buf++ = separate_phonemes;
+ }
}
}
}
flags = 0;
- WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags);
count = 0;
for(p=phon_buf2; *p != 0;)
{
p += utf8_in(&c, p);
- if(use_ipa > 1)
+ if(use_tie > 0)
{
// look for non-inital alphabetic character, but not diacritic, superscript etc.
- if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c))
+ if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c))
{
- buf += utf8_out(char_tie[use_ipa-2], buf);
+ buf += utf8_out(char_tie[use_tie-1], buf);
}
}
buf += utf8_out(c, buf);
if(count==0)
c1 = c;
- count++;
+
+ if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3))
+ {
+ // don't count apostrophe
+ }
+ else
+ count++;
if(IsVowel(tr, c))
{
break;
}
- if((c != '\'') && !iswalpha(c))
+ if((c != '\'') && !iswalpha2(c))
return(0);
}
break;
case RULE_NONALPHA:
- if(!iswalpha(letter_w))
+ if(!iswalpha2(letter_w))
{
add_points = (21-distance_right);
post_ptr += letter_xbytes;
break;
case RULE_NONALPHA:
- if(!iswalpha(letter_w))
+ if(!iswalpha2(letter_w))
{
add_points = (21-distance_right);
pre_ptr -= letter_xbytes;
if(tr->letter_bits_offset > 0)
{
// not a Latin alphabet, switch to the default Latin alphabet language
- if((letter <= 0x241) && iswalpha(letter))
+ if((letter <= 0x241) && iswalpha2(letter))
{
sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language);
return(0);
*p2++ = (acc << (8-bits));
}
*p2 = 0;
- strcpy(text, buf);
- return((p2 - buf) | 0x40); // bit 6 indicates compressed characters
+ ix = p2 - buf;
+ memcpy(text, buf, ix);
+ return(ix | 0x40); // bit 6 indicates compressed characters
}
else
{
continue;
}
}
+ if(dictionary_flags2 & FLAG_NATIVE)
+ {
+ if(tr != translator)
+ continue; // don't use if we've switched translators
+ }
if(dictionary_flags & FLAG_ALT2_TRANS)
{
// language specific
return(-1);
}
+#define L_SUB 0x4000 // subscript
+#define L_SUP 0x8000 // superscript
+
+static const char *modifiers[] = {NULL, "_sub", "_sup", NULL};
+
+// this list must be in ascending order
+static unsigned short derived_letters[] = {
+ 0x00aa, 'a'+L_SUP,
+ 0x00b2, '2'+L_SUP,
+ 0x00b3, '3'+L_SUP,
+ 0x00b9, '1'+L_SUP,
+ 0x00ba, 'o'+L_SUP,
+ 0x02b0, 'h'+L_SUP,
+ 0x02b1, 0x266+L_SUP,
+ 0x02b2, 'j'+L_SUP,
+ 0x02b3, 'r'+L_SUP,
+ 0x02b4, 0x279+L_SUP,
+ 0x02b5, 0x27b+L_SUP,
+ 0x02b6, 0x281+L_SUP,
+ 0x02b7, 'w'+L_SUP,
+ 0x02b8, 'y'+L_SUP,
+ 0x02c0, 0x294+L_SUP,
+ 0x02c1, 0x295+L_SUP,
+ 0x02e0, 0x263+L_SUP,
+ 0x02e1, 'l'+L_SUP,
+ 0x02e2, 's'+L_SUP,
+ 0x02e3, 'x'+L_SUP,
+ 0x2070, '0'+L_SUP,
+ 0x2071, 'i'+L_SUP,
+ 0x2074, '4'+L_SUP,
+ 0x2075, '5'+L_SUP,
+ 0x2076, '6'+L_SUP,
+ 0x2077, '7'+L_SUP,
+ 0x2078, '8'+L_SUP,
+ 0x2079, '9'+L_SUP,
+ 0x207a, '+'+L_SUP,
+ 0x207b, '-'+L_SUP,
+ 0x207c, '='+L_SUP,
+ 0x207d, '('+L_SUP,
+ 0x207e, ')'+L_SUP,
+ 0x207f, 'n'+L_SUP,
+ 0x2080, '0'+L_SUB,
+ 0x2081, '1'+L_SUB,
+ 0x2082, '2'+L_SUB,
+ 0x2083, '3'+L_SUB,
+ 0x2084, '4'+L_SUB,
+ 0x2085, '5'+L_SUB,
+ 0x2086, '6'+L_SUB,
+ 0x2087, '7'+L_SUB,
+ 0x2088, '8'+L_SUB,
+ 0x2089, '9'+L_SUB,
+ 0x208a, '+'+L_SUB,
+ 0x208b, '-'+L_SUB,
+ 0x208c, '='+L_SUB,
+ 0x208d, '('+L_SUB,
+ 0x208e, ')'+L_SUB,
+ 0x2090, 'a'+L_SUB,
+ 0x2091, 'e'+L_SUB,
+ 0x2092, 'o'+L_SUB,
+ 0x2093, 'x'+L_SUB,
+ 0x2094, 0x259+L_SUB,
+ 0x2095, 'h'+L_SUB,
+ 0x2096, 'k'+L_SUB,
+ 0x2097, 'l'+L_SUB,
+ 0x2098, 'm'+L_SUB,
+ 0x2099, 'n'+L_SUB,
+ 0x209a, 'p'+L_SUB,
+ 0x209b, 's'+L_SUB,
+ 0x209c, 't'+L_SUB,
+ 0,0};
+
static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"}; // names, using phonemes available to all languages
int letter;
int len;
int ix;
+ int c;
char *p2;
char *pbuf;
+ const char *modifier;
ALPHABET *alphabet;
int al_offset;
int al_flags;
int number;
int phontab_1;
int speak_letter_number;
- char capital[20];
+ char capital[30];
char ph_buf[80];
char ph_buf2[80];
char ph_alphabet[80];
if(control & 2)
{
// include CAPITAL information
- if(iswupper(letter))
+ if(iswupper2(letter))
{
Lookup(tr, "_cap", capital);
}
}
letter = towlower2(letter);
-
LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1);
+ if(ph_buf[0] == 0)
+ {
+ // is this a subscript or superscript letter ?
+ for(ix=0; (c = derived_letters[ix]) != 0; ix+=2)
+ {
+ if(c > letter)
+ break;
+ if(c == letter)
+ {
+ c = derived_letters[ix+1];
+ letter = c & 0x3fff;
+ if((modifier = modifiers[c >> 14]) != NULL)
+ {
+ Lookup(tr, modifier, capital);
+ if(capital[0] == 0)
+ {
+ capital[2] = SetTranslator2("en"); // overwrites previous contents of translator2
+ Lookup(translator2, modifier, &capital[3]);
+ if(capital[3] != 0)
+ {
+ capital[0] = phonPAUSE;
+ capital[1] = phonSWITCH;
+ len = strlen(&capital[3]);
+ capital[len+3] = phonSWITCH;
+ capital[len+4] = phontab_1;
+ capital[len+5] = 0;
+ }
+ }
+ }
+ }
+ }
+ LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1);
+ }
+
if(ph_buf[0] == phonSWITCH)
{
strcpy(phonemes,ph_buf);
return(0);
}
+
if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0))
{
// convert a non-ascii number to 0-9
speak_letter_number = 1;
if(!(al_flags & AL_NO_SYMBOL))
{
- if(iswalpha(letter))
+ if(iswalpha2(letter))
Lookup(translator, "_?A", ph_buf);
if((ph_buf[0]==0) && !iswspace(letter))
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
utf8_in(&next_char,p);
- if(!iswalpha(next_char) && (thousands_exact==0))
-// if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
+ if(!iswalpha2(next_char) && (thousands_exact==0))
+// if(!iswalpha2(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
}
0x061f, // Arabic ?
0x06d4, // Arabic .
+ 0x0df4, // Singhalese Kunddaliya
0x0f0d, // Tibet Shad
0x0f0e,
CLAUSE_QUESTION, // Arabic question mark
CLAUSE_PERIOD, // Arabic full stop
+ CLAUSE_PERIOD+0x8000, // Singhalese period
CLAUSE_PERIOD+0x8000, // Tibet period
CLAUSE_PARAGRAPH,
0, // voice type
};
-#ifdef NEED_WCHAR_FUNCTIONS
-// additional Latin characters beyond the Latin1 character set
-#define MAX_WALPHA 0x233
-// indexed by character - 0x100
-// 0=not alphabetic, 0xff=lower case, 0xfe=special case
+// additional Latin characters beyond the ascii character set
+#define MAX_WALPHA 0x24f
+// indexed by character - 0x80
+// 0=not alphabetic, 0xff=lower case, 0xfe=no case, 0xfd=use wchar_tolower
// other=value to add to upper case to convert to lower case
-static unsigned char walpha_tab[MAX_WALPHA-0xff] = {
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120
- 0xfe,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130
- 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160
- 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170
- 0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180
- 203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190
- 1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0
- 0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0
- 0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0
- 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0
- 0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210
- 0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220
- 1,0xff, 1,0xff }; // 230
+static unsigned char walpha_tab[MAX_WALPHA-0x7f] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 080
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 090
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0a0
+ 0, 0, 0, 0, 0, 0xff, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0b0
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // 0c0
+ 32, 32, 32, 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 0xff, // 0d0
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0e0
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0f0
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 100
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 110
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 120
+ 0xfd, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, // 130
+ 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, // 140
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 150
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 160
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, // 170
+ 0xff, 210, 1, 0xff, 1, 0xff, 206, 1, 0xff, 205, 205, 1, 0xff, 0xfe, 79, 202, // 180
+ 203, 1, 0xff, 205, 207, 0xff, 211, 209, 1, 0xff, 0xff, 0xfe, 211, 213, 0xff, 214, // 190
+ 1, 0xff, 1, 0xff, 1, 0xff, 218, 1, 0xff, 218, 0xfe, 0xfe, 1, 0xff, 218, 1, // 1a0
+ 0xff, 217, 217, 1, 0xff, 1, 0xff, 219, 1, 0xff, 0xfe, 0xfe, 1, 0xff, 0xfe, 0xff, // 1b0
+ 0xfe, 0xfe, 0xfe, 0xfe, 2, 0xff, 0xff, 2, 0xff, 0xff, 2, 0xff, 0xff, 1, 0xff, 1, // 1c0
+ 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, 1, 0xff, // 1d0
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1e0
+ 0xfe, 2, 0xff, 0xff, 1, 0xff, 0xfd, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1f0
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 200
+ 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 210
+ 0xfd, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 220
+ 1, 0xff, 1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 1, 0xff, 0xfd, 0xfd, 0xfe, // 230
+ 0xfe, 1, 0xff, 0xfd, 69, 71, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff}; // 240
+
+static const short wchar_tolower[] = {
+ 0x130, 0x069,
+ 0x178, 0x0ff,
+ 0x1f6, 0x195,
+ 0x1f7, 0x1bf,
+ 0x220, 0x19e,
+ 0x23a, 0x2c65,
+ 0x23d, 0x19a,
+ 0x23e, 0x2c66,
+ 0x243, 0x180,
+ 0,0 };
+
+static const short wchar_toupper[] = {
+ 0x0b5, 0x39c,
+ 0x0df, 0x0df,
+ 0x0ff, 0x178,
+ 0x131, 0x049,
+ 0x17f, 0x053,
+ 0x180, 0x243,
+ 0x195, 0x1f6,
+ 0x19a, 0x23d,
+ 0x19e, 0x220,
+ 0x1bf, 0x1f7,
+ 0x1c6, 0x1c4,
+ 0x1c9, 0x1c7,
+ 0x1cc, 0x1ca,
+ 0x1dd, 0x18e,
+ 0x1f3, 0x1f1,
+ 0,0 };
+
+
+#ifdef NEED_WCHAR_FUNCTIONS
// use ctype.h functions for Latin1 (character < 0x100)
int iswalpha(int c)
{
- if(c < 0x100)
+ if(c < 0x80)
return(isalpha(c));
if((c > 0x3040) && (c <= 0xa700))
return(1); // japanese, chinese characters
if(c > MAX_WALPHA)
return(0);
- return(walpha_tab[c-0x100]);
+ return(walpha_tab[c-0x80]);
}
int iswdigit(int c)
{
- if(c < 0x100)
+ if(c < 0x80)
return(isdigit(c));
return(0);
}
int towlower(int c)
{
int x;
- if(c < 0x100)
+ int ix;
+
+ if(c < 0x80)
return(tolower(c));
- if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff))
- return(c); // already lower case
- if(x == 0xfe)
+
+ if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe))
+ return(c);
+
+ if(x == 0xfd)
{
- // special cases
- if(c == 0x130) // uppercase i-dot
- return('i');
+ // special cases, lookup translation table
+ for(ix=0; wchar_tolower[ix] != 0; ix+=2)
+ {
+ if(wchar_tolower[ix] == c)
+ return(wchar_tolower[ix+1]);
+ }
}
return(c + x); // convert to lower case
}
int towupper(int c)
{
- // check whether the previous character code is the upper-case equivalent of this character
- if(tolower(c-1) == c)
- return(c-1); // yes, use it
+ int ix;
+ // check whether a previous character code is the upper-case equivalent of this character
+ if(towlower(c-32) == c)
+ return(c-32); // yes, use it
+ if(towlower(c-1) == c)
+ return(c-1);
+ for(ix=0; wchar_toupper[ix] != 0; ix+=2)
+ {
+ if(wchar_toupper[ix] == c)
+ return(wchar_toupper[ix+1]);
+ }
return(c); // no
}
int iswupper(int c)
{
int x;
- if(c < 0x100)
+ if(c < 0x80)
return(isupper(c));
- if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff))
+ if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x80])==0) || (x == 0xff))
return(0);
return(1);
}
int iswlower(int c)
{
- if(c < 0x100)
+ if(c < 0x80)
return(islower(c));
- if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff))
+ if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff))
return(0);
return(1);
}
int iswspace(int c)
{
- if(c < 0x100)
+ if(c < 0x80)
return(isspace(c));
+ if(c == 0xa0)
+ return(1);
return(0);
}
}
#endif
+
+// use internal data for iswalpha up to U+024F
+// iswalpha() on Windows is unreliable (U+AA, U+BA).
+int iswalpha2(int c)
+{
+ if(c < 0x80)
+ return(isalpha(c));
+ if((c > 0x3040) && (c <= 0xa700))
+ return(1); // japanese, chinese characters
+ if(c > MAX_WALPHA)
+ return(iswalpha(c));
+ return(walpha_tab[c-0x80]);
+}
+
+int iswlower2(int c)
+{
+ if(c < 0x80)
+ return(islower(c));
+ if(c > MAX_WALPHA)
+ return(iswlower(c));
+ if(walpha_tab[c-0x80] == 0xff)
+ return(1);
+ return(0);
+}
+
+int iswupper2(int c)
+{
+ int x;
+ if(c < 0x80)
+ return(isupper(c));
+ if(c > MAX_WALPHA)
+ return(iswupper(c));
+ if(((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe))
+ return(1);
+ return(0);
+}
+
int towlower2(unsigned int c)
{
+ int x;
+ int ix;
+
// check for non-standard upper to lower case conversions
if(c == 'I')
{
- if(translator->translator_name == L('t','r'))
+ if(translator->langopts.dotless_i)
{
c = 0x131; // I -> ı
}
}
-#ifdef __WIN32__
- if(c == 0x130) // uppercase i-dot
- return('i');
-#endif
- return(towlower(c));
+
+ if(c < 0x80)
+ return(tolower(c));
+
+ if(c > MAX_WALPHA)
+ return(towlower(c));
+
+ if((x = walpha_tab[c-0x80]) >= 0xfe)
+ return(c); // this is not an upper case letter
+
+ if(x == 0xfd)
+ {
+ // special cases, lookup translation table
+ for(ix=0; wchar_tolower[ix] != 0; ix+=2)
+ {
+ if(wchar_tolower[ix] == (int)c)
+ return(wchar_tolower[ix+1]);
+ }
+ }
+ return(c + x); // convert to lower case
}
+int towupper2(unsigned int c)
+{
+ int ix;
+ if(c > MAX_WALPHA)
+ return(towupper(c));
+
+ // check whether a previous character code is the upper-case equivalent of this character
+ if(towlower2(c-32) == (int)c)
+ return(c-32); // yes, use it
+ if(towlower2(c-1) == (int)c)
+ return(c-1);
+ for(ix=0; wchar_toupper[ix] != 0; ix+=2)
+ {
+ if(wchar_toupper[ix] == (int)c)
+ return(wchar_toupper[ix+1]);
+ }
+ return(c); // no
+}
static int IsRomanU(unsigned int c)
{//================================
c2 = ' ';
}
else
- if((c2 == '/') || iswalpha(c2))
+ if((c2 == '/') || iswalpha2(c2))
{
// check for space in the output buffer for embedded commands produced by the SSML tag
if(ix > (n_buf - 20))
}
}
- if(iswupper(c1))
+ if(iswupper2(c1))
{
tr->clause_upper_count++;
- if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev))
+ if((option_capitals == 2) && (sayas_mode == 0) && !iswupper2(cprev))
{
char text_buf[40];
char text_buf2[30];
}
}
else
- if(iswalpha(c1))
+ if(iswalpha2(c1))
tr->clause_lower_count++;
if(option_phoneme_input)
if(!iswspace(c1))
{
- if(!IsAlpha(c1) || !iswlower(c1))
-// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1)))
+ if(!IsAlpha(c1) || !iswlower2(c1))
+// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower2(c1)))
{
UngetC(c2);
ungot_char2 = c1;
if(nl_count==0)
{
- if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next))))
+ if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower2(c_next))))
{
// lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number
c1 = CHAR_COMMA_BREAK;
}
else
{
- if (iswlower(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal)
+ if (iswlower2(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal)
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag)
}
}
{
is_end_clause = 0; // eg. u.s.a.'s
}
- if(iswlower(c_next))
+ if(iswlower2(c_next))
{
// next word has no capital letter, this dot is probably from an abbreviation
// c1 = ' ';
} // end of espeak_SetPhonemes
+ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode)
+{//==============================================================================================================
+ /* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
+ bits 4-7: 0=eSpeak phoneme names, 1=IPA
+ */
+ option_multibyte = textmode & 7;
+ TranslateClause(translator, NULL, text, NULL, NULL);
+ GetTranslatedPhonemeString(buffer, size, phonememode);
+}
+
+
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags)
{//=============================================================================
ENTER("espeak_CompileDictionary");
Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics.
Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names.
+Revision 8 26.Apr.2013
+ Added function espeak_TextToPhonemes().
+
*/
/********************/
/* Initialization */
char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes.
} id;
} espeak_EVENT;
-/*
+/*
When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called.
In PLAYBACK mode, the callback function is called as soon as an event happens.
- For example suppose that the following message is supplied to espeak_Synth:
+ For example suppose that the following message is supplied to espeak_Synth:
"hello, hello."
* Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function :
** Block 1:
- <audio data> +
+ <audio data> +
List of events: SENTENCE + WORD + LIST_TERMINATED
-
+
** Block 2:
<audio data> +
List of events: WORD + END + LIST_TERMINATED
typedef enum {
/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/
- AUDIO_OUTPUT_PLAYBACK,
+ AUDIO_OUTPUT_PLAYBACK,
/* RETRIEVAL mode: supplies audio data and events to the calling program */
AUDIO_OUTPUT_RETRIEVAL,
-
+
/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */
AUDIO_OUTPUT_SYNCHRONOUS,
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
/* Must be called before any synthesis functions are called.
This specifies a function in the calling program which is called when a buffer of
- speech sound data has been produced.
+ speech sound data has been produced.
The callback function is of the form:
start of the text.
position_type: Determines whether "position" is a number of characters, words, or sentences.
- Values:
+ Values:
end_position: If set, this gives a character position at which speaking will stop. A value
of zero indicates no end position.
espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language.
espeakCHARS_AUTO 8 bit or UTF8 (this is the default)
espeakCHARS_WCHAR Wide characters (wchar_t)
+ espeakCHARS_16BIT 16 bit characters.
espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored.
espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then
this pause is suppressed.
- unique_identifier: message identifier; helpful for identifying later
+ unique_identifier: message identifier; helpful for identifying later
data supplied to the callback.
user_data: pointer which will be passed to the callback function.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
For the other parameters, see espeak_Synth()
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
If key_name is a single character, it speaks the name of the character.
Otherwise, it speaks key_name as a text string.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character);
-/* Speak the name of the given character
+/* Speak the name of the given character
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal
espeakPUNCTUATION: which punctuation characters to announce:
- value in espeak_PUNCT_TYPE (none, all, some),
+ value in espeak_PUNCT_TYPE (none, all, some),
see espeak_GetParameter() to specify which characters are announced.
espeakCAPITALS: announce capital letters by:
espeakWORDGAP: pause between words, units of 10mS (at the default speed)
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
punctlist: A list of character codes, terminated by a zero character.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
#ifdef __cplusplus
extern "C"
#endif
+ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode);
+/* Translates text into phonemes. Call espeak_SetVoiceByName() first, to select a language.
+ text: The text to translate, terminated by a zero character.
+
+ buffer: Output buffer for the phoneme translation.
+
+ size: Size of the output buffer in bytes.
+
+ textmode: Type of character codes, one of:
+ espeakCHARS_UTF8 UTF8 encoding
+ espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language.
+ espeakCHARS_AUTO 8 bit or UTF8 (this is the default)
+ espeakCHARS_WCHAR Wide characters (wchar_t)
+ espeakCHARS_16BIT 16 bit characters.
+
+ phonememode: bits0-3:
+ 0= just phonemes.
+ 1= include ties (U+361) for phoneme names of more than one letter.
+ 2= include zero-width-joiner for phoneme names of more than one letter.
+ 3= separate phonemes with underscore characters.
+
+ bits 4-7:
+ 0= eSpeak's ascii phoneme names.
+ 1= International Phonetic Alphabet (as UTF-8 characters).
+*/
+
+#ifdef __cplusplus
+extern "C"
+#endif
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags);
/* Compile pronunciation dictionary for a language which corresponds to the currently
selected voice. The required voice should be selected before calling this function.
unsigned char gender; // 0=none 1=male, 2=female,
unsigned char age; // 0=not specified, or age in years
unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties
- unsigned char xx1; // for internal use
+ unsigned char xx1; // for internal use
int score; // for internal use
void *spare; // for internal use
} espeak_VOICE;
/* Searches for a voice with a matching "name" field. Language is not considered.
"name" is a UTF8 string.
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
+ Return: EE_OK: operation achieved
+ EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/
function returns, the audio output is fully stopped and the synthesizer is ready to
synthesize a new message.
- Return: EE_OK: operation achieved
+ Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
*/
#endif
ESPEAK_API espeak_ERROR espeak_Synchronize(void);
/* This function returns when all data have been spoken.
- Return: EE_OK: operation achieved
+ Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
*/
#endif
ESPEAK_API espeak_ERROR espeak_Terminate(void);
/* last function to be called.
- Return: EE_OK: operation achieved
+ Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
*/
#include "translate.h"
#include "wave.h"
-const char *version_string = "1.47.06 15.Apr.13";
-const int version_phdata = 0x014701;
+const char *version_string = "1.47.09 29.Apr.13";
+const int version_phdata = 0x014709;
int option_device_number = -1;
FILE *f_logespeak = NULL;
if((option_phonemes > 0) || (phoneme_callback != NULL))
{
- int use_ipa = 0;
+ int phoneme_mode = 0;
if(option_phonemes >= 3)
- use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ, 4=ipa with separators
+ phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators
- GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
+ GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), phoneme_mode);
if(option_phonemes > 0)
{
fprintf(f_trans,"%s\n",translator->phon_out);
-
- if(!iswalpha(0x010d))
- {
- // check that c-caron is recognized as an alphabetic character
- fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n");
- }
}
if(phoneme_callback != NULL)
{
{"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0},
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
- {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), 0},
+ {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), AL_WORDS},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
{"_te", OFFSET_TELUGU, 0xc00, 0xc7f, L('t','e'), 0},
{"_kn", OFFSET_KANNADA, 0xc80, 0xcff, L('k','n'), AL_WORDS},
{"_ml", OFFSET_MALAYALAM,0xd00, 0xd7f, L('m','l'), AL_WORDS},
- {"_si", OFFSET_SINHALA, 0xd80, 0xdff, 0, 0},
+ {"_si", OFFSET_SINHALA, 0xd80, 0xdff, L('s','i'), AL_WORDS},
{"_th", OFFSET_THAI, 0xe00, 0xe7f, 0, 0},
{"_lo", OFFSET_LAO, 0xe80, 0xeff, 0, 0},
{"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0},
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = 1;
tr->langopts.accents = 2; // 'capital' after letter name
+ tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3; // don't count apostrophe
}
break;
SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels);
SetLetterBits(tr,LETTERGP_C,hy_consonants);
tr->langopts.max_initial_consonants = 6;
- tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
+ tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED;
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
}
break;
ResetLetterBits(tr,0x2);
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y
tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2
+ tr->langopts.accents = 2; // 'capital' after letter name
}
break;
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress
+ tr->langopts.dotless_i = 1;
tr->langopts.param[LOPT_SUFFIX] = 1;
if(name2 == L('a','z'))
0
};
- if(iswalpha(c))
+ if(iswalpha2(c))
return(1);
+ if(c < 0x300)
+ return(0);
+
if((c >= 0x901) && (c <= 0xdf7))
{
// Indic scripts: Devanagari, Tamil, etc
while((*word != 0) && !isspace2(*word))
{
word += utf8_in(&c, word);
- if(!iswupper(c))
+ if(!iswupper2(c))
return(0);
}
return(1);
}
}
- if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char))
+ if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha2(first_char))
{
if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV))
{
tr->expect_past--;
}
- if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i'))
+ if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha2(first_char) && (first_char != 'i'))
{
// English Specific !!!!
// any single letter before a dot is an abbreviation, except 'I'
while(*p2 != ' ') p2++;
utf8_in(&c_word2, p2+1); // first character of the next word;
- if(!iswalpha(c_word2))
+ if(!iswalpha2(c_word2))
{
ok =0;
}
// there is a list of character codes to be substituted with alternative codes
- if(iswupper(c_lower = c))
+ if(iswupper2(c_lower = c))
{
- c_lower = towlower(c);
+ c_lower = towlower2(c);
upper_case = 1;
}
new_c = replace_chars[ix+1];
break;
}
- if((word >> 16) == (unsigned int)towlower(next_in))
+ if((word >> 16) == (unsigned int)towlower2(next_in))
{
new_c = replace_chars[ix+1];
ignore_next = 1;
// there is a second character to be inserted
// don't convert the case of the second character unless the next letter is also upper case
c2 = new_c >> 16;
- if(upper_case && iswupper(next_in))
- c2 = towupper(c2);
+ if(upper_case && iswupper2(next_in))
+ c2 = towupper2(c2);
*insert = c2;
new_c &= 0xffff;
}
if(upper_case)
- new_c = towupper(new_c);
+ new_c = towupper2(new_c);
*wordflags |= FLAG_CHAR_REPLACED;
return(new_c);
// look for 'n and replace by a special character (unicode: schwa)
- if(!iswalpha(prev_in))
+ if(!iswalpha2(prev_in))
{
utf8_in(&next2, &ptr[1]);
}
else
{
- if(iswupper(c))
+ if(iswupper2(c))
word_flags |= FLAG_FIRST_UPPER;
if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in))
}
}
- if(iswupper(c))
+ if(iswupper2(c))
{
c = towlower2(c);
}
else
{
- if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case
+ if(iswlower2(prev_in))
{
// lower case followed by upper case in a word
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1)
{
// convert to lower case and continue
- c = towlower(c);
+ c = towlower2(c);
}
else
{
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set
}
}
- else if((c != ' ') && iswupper(prev_in) && iswlower(next_in))
+ else if((c != ' ') && iswupper2(prev_in) && iswlower2(next_in))
{
int next2_in;
utf8_in(&next2_in,&source[source_index + next_in_nbytes]);
#define FLAG_ONLY 0x4000
#define FLAG_ONLY_S 0x8000
#define FLAG_STEM 0x10000 // must have a suffix
-#define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */
+#define FLAG_ATEND 0x20000 // use this pronunciation if at end of clause
#define FLAG_ATSTART 0x40000 // use this pronunciation if at start of clause
+#define FLAG_NATIVE 0x80000 // not if we've switched translators
#define FLAG_LOOKUP_SYMBOL 0x40000000 // to indicate called from Lookup()
#define BITNUM_FLAG_ALLCAPS 0x2a
char tone_numbers;
char ideographs; // treat as separate words
char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled)
+ char dotless_i; // uses letter U+0131
int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2"
int listx; // compile *_listx after *list
const unsigned int *replace_chars; // characters to be substitutes
int IsDigit09(unsigned int c);
int IsAlpha(unsigned int c);
int IsVowel(Translator *tr, int c);
+int iswalpha2(int c);
int isspace2(unsigned int c);
+int iswlower2(int c);
+int iswupper2(int c);
int towlower2(unsigned int c);
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa);
+int towupper2(unsigned int c);
+void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode);
const char *WordToString2(unsigned int word);
ALPHABET *AlphabetFromChar(int c);
ALPHABET *AlphabetFromName(const char *name);
// which directory to look for a named voice. List of voice names, must end in a space.
static const char *voices_asia =
- "bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue ";
+ "az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue ";
static const char *voices_europe =
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";