mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-04 14:33:31 +00:00
[1.43.31]
*_list files: added attribute $sentence. *_rules files: added attributes $w_alt, $p_alt. phoneme definitions: added attribute no_pause. -X command-line option: Show the matching of multiple-word entries in *_list files. espeakedit: Add menu option to compile the intonation data file (the data is not yet used). Start language: Bulgarian. lang=bg (Bulgarian): Add feature in espeakedit to make bg_listx from a lexicon of words which have stress position mark-up. espeakedit: Change the frame-length field from Spin Control to Text Control to allow better access from screen-readers. Language options: add an option to the Regressive Voicing option to de-voice the final consonant of words. Don't speak "dot" if an ellipsis is followed by a dot. Intonation: change the internal pitch unit to give finer control, and align with the values displayed in the espeakedit Prosody window. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@243 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+2
-1
@@ -92,6 +92,7 @@
|
||||
gü) i (K i
|
||||
qü) i (K i
|
||||
i (A j
|
||||
i (a_ i
|
||||
i (u i
|
||||
A) ig (_ tS;
|
||||
A) ix S;
|
||||
@@ -185,7 +186,7 @@
|
||||
tj (_ tS;
|
||||
tx tS;
|
||||
tz dz
|
||||
tm mm Geminació
|
||||
tm mm // Geminació
|
||||
|
||||
|
||||
.group u
|
||||
|
||||
+7758
-1873
File diff suppressed because it is too large
Load Diff
+3150
-2223
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -140,7 +140,7 @@ _0Co 'hUnd3tst@
|
||||
|
||||
// Abbreviations
|
||||
//==============
|
||||
a.a.o A:||A:||_o:
|
||||
(a . a . o .) A:||A:||_o:
|
||||
allg 'alg@maIn
|
||||
abb 'abb,IldUN
|
||||
anm 'anm,E*kUN
|
||||
@@ -163,7 +163,7 @@ st 'Este:
|
||||
usf %Untzo:f'O*t
|
||||
usw %Untzo:v'aIt3 $pause
|
||||
vgl fE*gl'aIC@
|
||||
z.b tsUmb'aISpi:l
|
||||
(z . b .) tsUmb'aISpi:l
|
||||
|
||||
|
||||
// definite article
|
||||
|
||||
+34
-12
@@ -62,7 +62,7 @@ W# y Y
|
||||
* - : ? b d D dZ
|
||||
f g h j k l L l/2
|
||||
l/3 m n N p r R s
|
||||
S t T tS v w z
|
||||
S t T tS v w
|
||||
|
||||
|
||||
Dictionary hu_dict
|
||||
@@ -152,9 +152,9 @@ s2 t v w Z
|
||||
|
||||
Dictionary fr_dict
|
||||
|
||||
@ @- @2 a A A~ e E
|
||||
E2 E: E~ i i- i: o o2
|
||||
o3 O~ u u: w w^i W~ y
|
||||
@ @- a A~ e E E2 E:
|
||||
E~ i i: o O o2 o3 O~
|
||||
u u: w W w^a w^i W~ y
|
||||
Y
|
||||
|
||||
: b d dZ f g h j
|
||||
@@ -204,8 +204,8 @@ th. v w x z
|
||||
Dictionary ta_dict
|
||||
|
||||
a a: aI aU e E e: i
|
||||
I i: o o: U u u: V
|
||||
V#
|
||||
I i: o o: U u u: U:
|
||||
V V#
|
||||
|
||||
: ; b C d d. dZ f
|
||||
g h H j k l l. m
|
||||
@@ -238,15 +238,16 @@ w x z
|
||||
|
||||
Dictionary is_dict
|
||||
|
||||
& @- a aI aU e E eI
|
||||
i I o O oU oU2 u W
|
||||
y y# Yy
|
||||
@- a a: aI aI: aU aU: E
|
||||
E: eI eI: i I i: I: O
|
||||
O: OI oU oU: u u: W W:
|
||||
y y: yI Yy Yy:
|
||||
|
||||
* ** : ; b c C d
|
||||
D f g h j J k l
|
||||
l# m m# n N n# N# n^
|
||||
n^# p Q r R r# R2 s
|
||||
s2 t T tl# v x z
|
||||
S s2 t T tl# v x z
|
||||
|
||||
|
||||
Dictionary it_dict
|
||||
@@ -463,6 +464,17 @@ p Q R s S t T tS
|
||||
v w x z
|
||||
|
||||
|
||||
Dictionary sl_dict
|
||||
|
||||
& @ a E e i O o
|
||||
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 w x z Z
|
||||
|
||||
|
||||
Dictionary tr_dict
|
||||
|
||||
a e E i I o O u
|
||||
@@ -483,8 +495,8 @@ u@ uI y y@ yI
|
||||
|
||||
b c d D f g h j
|
||||
J k kh l m n N n^
|
||||
p Q r s s. s; t t[
|
||||
tS; v w x z Z z.
|
||||
p Q r s s. t t[ tS;
|
||||
v w x z Z z.
|
||||
|
||||
|
||||
Dictionary zh_dict
|
||||
@@ -593,3 +605,13 @@ J Jh k kh l m n N
|
||||
p ph Q q R r. s S
|
||||
s. t T t. th th. v x
|
||||
z Z z.
|
||||
|
||||
|
||||
Dictionary bg_dict
|
||||
|
||||
@ a e i o u
|
||||
|
||||
; b C d d; dZ dz f
|
||||
g j k l L l^ m n
|
||||
n^ p r s S s; t t;
|
||||
tS ts v x z Z z;
|
||||
|
||||
+7
-3
@@ -9,7 +9,6 @@
|
||||
//stress symbols ' primary , secondary % unstressed
|
||||
|
||||
// Conditional rules
|
||||
// ?2 Use long 'a' in 'bath'
|
||||
// ?3 General American
|
||||
// ?!3 Not General American
|
||||
// ?5 split [3:] er [3:], ir [IR], ur [VR]
|
||||
@@ -385,6 +384,7 @@ VI $abbrev
|
||||
wwii dVb@Lju:dVb@Lju:t'u:
|
||||
xxx $abbrev // not roman 30
|
||||
xy $abbrev
|
||||
yd jA@d
|
||||
|
||||
|
||||
nd $only
|
||||
@@ -601,7 +601,7 @@ argue A@gju:
|
||||
aries e@ri:z
|
||||
arithmetic a2rITm@tIk
|
||||
arise a2raIz
|
||||
arisen a2rIz@n
|
||||
arisen @rIz@n
|
||||
armslength ,A@mzl'ENT
|
||||
arouse a2raUz
|
||||
asbestos asb'Est@s
|
||||
@@ -1020,6 +1020,7 @@ el ,El
|
||||
electricity I2lEktr'IsI2tI
|
||||
electrode I2lEktroUd
|
||||
electron I2lEktr0n
|
||||
electrocute $2
|
||||
elicit I2lIsI2t
|
||||
eligible ElI2dZ@b@L
|
||||
élite Il'i:t
|
||||
@@ -2666,6 +2667,7 @@ Leanne li:'an
|
||||
Lenore lEn'o@
|
||||
Leroy li:rOI
|
||||
Liam li:@m
|
||||
Llewellyn L@w'ElIn
|
||||
Lois loUIs
|
||||
Louis lu:I
|
||||
Louise lu:w'i:z
|
||||
@@ -2898,6 +2900,8 @@ are %A@ $pastf $only
|
||||
was %w0z $pastf $only
|
||||
?3 was %wVz $pastf $only
|
||||
?3 wasn't wVznt $pastf $only
|
||||
(was a) w%0za2
|
||||
(was the) w%0zD@2
|
||||
wast %w0st $only $pastf $only
|
||||
were %w3: $pastf $only
|
||||
isn't ,Iz@nt $pastf $strend2
|
||||
@@ -3119,7 +3123,7 @@ soon $verbf
|
||||
still $verbf
|
||||
already O:lrEdI $u2 $verbf $strend2
|
||||
|
||||
not ,n0t $verbextend $only $strend
|
||||
not ,n0t $verbextend $onlys $strend
|
||||
(not have) n0ta2v $pastf $u1
|
||||
(not have) n0thav $pastf $atend
|
||||
(not have to) ,n0thavt@5 $pastf $strend
|
||||
|
||||
+15
-8
@@ -21,7 +21,6 @@
|
||||
// This file is UTF-8 encoded
|
||||
|
||||
// Conditional rules
|
||||
// ?2 Use long 'a' in 'bath'
|
||||
// ?3 General American
|
||||
// ?!3 Not General American
|
||||
// ?5 split [3:] er [3:], ir [IR], ur [VR]
|
||||
@@ -661,14 +660,14 @@
|
||||
|
||||
.group an
|
||||
@) ana (_ 'A:n@
|
||||
?2 C) an (c aan
|
||||
C) an (c aan
|
||||
c) an (c an
|
||||
f) an (c an
|
||||
n) an (c an
|
||||
p) an (c an
|
||||
?2 @m) an (d aan
|
||||
?2 sl) an (d aan
|
||||
?2 C) an (t aan
|
||||
@m) an (d aan
|
||||
sl) an (d aan
|
||||
C) an (t aan
|
||||
an (ath a2n
|
||||
ann (eal a2n
|
||||
ann (ih a2n
|
||||
@@ -704,8 +703,8 @@
|
||||
&) an (ce_ @n
|
||||
?8 &) an (ce_ a2n
|
||||
fin) an (c 'an
|
||||
?2 h) an (ce_ aan
|
||||
?2 z) an (ce_ aan
|
||||
h) an (ce_ aan
|
||||
z) an (ce_ aan
|
||||
&) an (cy @n
|
||||
adv) an (c an
|
||||
_) an (cie eIn
|
||||
@@ -1416,7 +1415,7 @@
|
||||
_) confi (den k0nfI
|
||||
_) co (nfis k0
|
||||
_) co (nflu k0
|
||||
_) co (ngress k0
|
||||
_) co (ngre k0
|
||||
congru k0ngru:
|
||||
_) co (ni k0
|
||||
_) co (njug k0
|
||||
@@ -1944,6 +1943,7 @@
|
||||
.group el
|
||||
_) el (A %Il
|
||||
_) ele (ctro %Il,E
|
||||
_) ele (ctrol %IlE
|
||||
_) ele (ctron ElE
|
||||
_) ele (g ElI
|
||||
_) elem ElIm
|
||||
@@ -2579,6 +2579,8 @@
|
||||
ent) i (ce aI
|
||||
@) i (ce_ I2
|
||||
@) i (ced_ I2
|
||||
off) ice I2s
|
||||
serv) ice I2s
|
||||
@) i (cence I
|
||||
_) ich Ik
|
||||
&) i (ciCe_ =I
|
||||
@@ -3035,6 +3037,7 @@
|
||||
?7 io (_ =i:oU
|
||||
b) io aIoU
|
||||
b) io (logy aI0
|
||||
card) io I2oU
|
||||
v) io aI0
|
||||
io (li_ I2'oU
|
||||
&) ion (_ =i@n
|
||||
@@ -3894,6 +3897,7 @@
|
||||
w) orce (st U
|
||||
&f) or (d_ 3
|
||||
ore o@
|
||||
or (esis O@
|
||||
oresc @r'Es
|
||||
ora (cl 0r@
|
||||
or (eB_ 0r
|
||||
@@ -4301,6 +4305,7 @@
|
||||
_) pre (mi prE
|
||||
_) pre (miu pri:
|
||||
_) pre (mol pr%i:
|
||||
_) pre (nK prE
|
||||
_) pre (p_ prE
|
||||
_) pre (posi prE
|
||||
_) pre (qu pri:
|
||||
@@ -4607,6 +4612,7 @@
|
||||
pri) s (o z
|
||||
@) some (_S4 sVm
|
||||
o) some (_S4 soUm
|
||||
cro) ss (h s
|
||||
ssion S@n
|
||||
ssion (_ =S@n
|
||||
?8 ssion (_ =SVn
|
||||
@@ -5249,6 +5255,7 @@
|
||||
E (BCe_ @
|
||||
E (Cia 'i:
|
||||
Ea (_ =i@
|
||||
Ea (n_ 'i@
|
||||
@@) Ed (_S2vei d
|
||||
&C) Ed (_S2vei d
|
||||
&c) Ed (_S2vei t
|
||||
|
||||
+75
-59
@@ -1,6 +1,6 @@
|
||||
/
|
||||
// ***************************************************************************
|
||||
// * Copyright (C) 2005 to 2007 by Jonathan Duddington *
|
||||
// * Copyright (C) 2005 to 2010 by Jonathan Duddington *
|
||||
// * email: jonsd@users.sourceforge.net *
|
||||
// * *
|
||||
// * This program is free software; you can redistribute it and/or modify *
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
|
||||
//
|
||||
// Updated 2010-04-01 Michel Such <michel.such@free.fr>
|
||||
// Updated 2010-05-18 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
// * Numbers, a few abbreviations and exceptions.
|
||||
//
|
||||
@@ -119,9 +119,9 @@ _. _|pw%E~
|
||||
_/ bar||oblik
|
||||
_: d'Y||pw'E~
|
||||
_; pwE~||virg'yl
|
||||
_< E~feri-Yr
|
||||
_< E~feriWr
|
||||
_= egal
|
||||
_> syperi-Yr
|
||||
_> syperiWr
|
||||
_? pwE~||dE~tE2rogasj'O~
|
||||
_! pwE~||dEksklamasj'O~
|
||||
_[ uvr@-_kroSE2
|
||||
@@ -145,11 +145,11 @@ _§ sEksj'O~
|
||||
@ _::arobaz
|
||||
% pursA~ $max3
|
||||
& e $u $brk
|
||||
_& _e_komErsi-'al
|
||||
_& _e_komErsi'al
|
||||
* asterisk: $max3
|
||||
+ plys $max3
|
||||
~ tilde
|
||||
€ @ro
|
||||
€ @r'o
|
||||
¢ sEnt
|
||||
¥ iEn
|
||||
£ livr
|
||||
@@ -158,17 +158,17 @@ _& _e_komErsi-'al
|
||||
÷ diviz'e_p'ar
|
||||
¼ W~_k'ar
|
||||
½ W~_d@m'i
|
||||
¾ trwa_k'ar
|
||||
¾ trw^a_k'ar
|
||||
© _^_EN
|
||||
® mark||depoz'e
|
||||
|
||||
|
||||
// numeric
|
||||
|
||||
_0 zero $u+
|
||||
_0 zero2 $u+
|
||||
_1 W~
|
||||
_2 dYz2
|
||||
_3 trwaz2
|
||||
_2 d@z2
|
||||
_3 trw^az2
|
||||
_4 katr
|
||||
_5 sE~k
|
||||
_6 siz3
|
||||
@@ -182,13 +182,13 @@ _13 trEz
|
||||
_14 katorz
|
||||
_15 kE~z
|
||||
_16 sEz
|
||||
_17 dis:Et
|
||||
_17 disEt
|
||||
_18 dizw^it3
|
||||
_19 diznYf
|
||||
_20 vE~
|
||||
_20 vE~t2
|
||||
_21 vE~te:W~
|
||||
_22 vE~tdYz2
|
||||
_23 vE~t:trwaz2
|
||||
_23 vE~t:trw^az2
|
||||
_24 vE~tkatr
|
||||
_25 vE~tsE~k
|
||||
_26 vE~tsiz3
|
||||
@@ -201,9 +201,9 @@ _4X karA~t
|
||||
_41 karA~te:W~
|
||||
_5X sE~kA~t
|
||||
_51 sE~kA~te:W~
|
||||
_6X swasA~t:
|
||||
_61 swasA~te:W~
|
||||
_71 swasA~te:O~z
|
||||
_6X sw^asA~t
|
||||
_61 sw^asA~te:W~
|
||||
_71 sw^asA~te:O~z
|
||||
_8X katr@vE~:
|
||||
_80 katr@vE~z2
|
||||
_0C sA~
|
||||
@@ -221,12 +221,12 @@ _dpt virgyl
|
||||
?2 _9X nonA~t
|
||||
?2 _91 nonA~te:W~
|
||||
|
||||
(21 ème) vE~te:yni-Em
|
||||
(31 ème) trA~te:yni-Em
|
||||
(41 ème) karA~te:yni-Em
|
||||
(51 ème) sE~kA~te:yni-Em
|
||||
(61 ème) swasA~te:yni-Em
|
||||
(81 ème) katr@vE~:yni-Em
|
||||
(21 ème) vE~te:yniEm
|
||||
(31 ème) trA~te:yniEm
|
||||
(41 ème) karA~te:yniEm
|
||||
(51 ème) sE~kA~te:yniEm
|
||||
(61 ème) sw^asA~te:yniEm
|
||||
(81 ème) katr@vE~:yniEm
|
||||
|
||||
// ABBREVIATIONS
|
||||
//**************
|
||||
@@ -240,6 +240,7 @@ alt _::alt
|
||||
amd aEmde
|
||||
aol aoEl
|
||||
api apei
|
||||
ascii aski
|
||||
avg $abbrev
|
||||
avh aveaS
|
||||
bay _^_en
|
||||
@@ -256,6 +257,7 @@ dept depart@mA~
|
||||
divx diviks
|
||||
ebay _^_en
|
||||
(e bay) ebay $text
|
||||
ebcdic @besedik
|
||||
edf @deEf
|
||||
eml @EmEl
|
||||
etc E2tsetera
|
||||
@@ -287,7 +289,7 @@ mm millimètre $text
|
||||
mme madame $text
|
||||
mn minyt
|
||||
mns minytz2
|
||||
(mp 3) _|Empetrwa
|
||||
(mp 3) _|Empetrw^a
|
||||
mr m@siY
|
||||
nsi $abbrev
|
||||
nsis $abbrev
|
||||
@@ -309,6 +311,7 @@ riaa $abbrev
|
||||
riscos riskoEs
|
||||
sap $abbrev
|
||||
scsi $abbrev
|
||||
solaris solaris
|
||||
sos $abbrev
|
||||
s.t.p silt@:pl'E2
|
||||
s.v.p silvu:pl'E2
|
||||
@@ -341,7 +344,8 @@ pr professeur $text *dot $capital
|
||||
// articles
|
||||
le $nounf $u+
|
||||
le $verb $verbextend $u
|
||||
el $u
|
||||
el $u+
|
||||
los los $u+
|
||||
la $nounf $u+
|
||||
la $verb $verbextend $u
|
||||
les lez2 $nounf $u+
|
||||
@@ -355,7 +359,7 @@ mais $u+
|
||||
ou u $u $brk
|
||||
eh $u $brk
|
||||
en $u
|
||||
et e $u $brk
|
||||
et _|e $u
|
||||
ni $u
|
||||
car $u
|
||||
car $noun
|
||||
@@ -369,7 +373,9 @@ ainsi $u+
|
||||
alors alor $u+
|
||||
aussi $u+
|
||||
encore $u+
|
||||
enfin $u+
|
||||
depuis $u+
|
||||
lors $u+
|
||||
|
||||
|
||||
certes $u+
|
||||
@@ -471,7 +477,7 @@ vers vEr $u+
|
||||
vers $noun
|
||||
en $u+
|
||||
en $u+ $verb $verbextend
|
||||
(en suspens) A~||sysp'A~
|
||||
suspense syspEns
|
||||
(en tous) A~||tuz2 $u+
|
||||
par $u+
|
||||
parmi $u+
|
||||
@@ -483,6 +489,7 @@ entre $u+
|
||||
entre $verb
|
||||
contre $u+
|
||||
chaque $u+
|
||||
chez $u+
|
||||
plusieurs $u+
|
||||
durant $u+
|
||||
avec $u+ $brk
|
||||
@@ -504,6 +511,7 @@ point $noun
|
||||
plus $u+
|
||||
guère $u+
|
||||
jamais $u+
|
||||
toujours $u+
|
||||
non nO~ $u+
|
||||
oui _|wi $u+
|
||||
|
||||
@@ -574,8 +582,11 @@ quelques kElk=@z2 $u+
|
||||
tel $u+
|
||||
telle $u+
|
||||
telles $u+
|
||||
tout t'ut2
|
||||
rien ri-'E~n2
|
||||
tout t'ut2 $u+
|
||||
tous $u+
|
||||
toute t'ut $u+
|
||||
toutes t'utz2 $u+
|
||||
rien ri'E~n2 $u+
|
||||
|
||||
// Letters which can be words
|
||||
//===========================
|
||||
@@ -614,8 +625,6 @@ tunis tynis
|
||||
(1 èrement) pr@mjErmA~
|
||||
|
||||
|
||||
monsieur m@sjY
|
||||
messieurs mesjYz2
|
||||
(n'est ce pas) n'Es||p'az2
|
||||
(qu'est ce que) kEsk@ $u
|
||||
absent absA~
|
||||
@@ -634,7 +643,7 @@ any Eni $u
|
||||
armageddon armagedO~
|
||||
auvent ovA~
|
||||
beta beta
|
||||
bien bi-E~n2
|
||||
bien biE~n2
|
||||
bis bis
|
||||
bissus bisys
|
||||
blues _^_en
|
||||
@@ -657,24 +666,27 @@ dernier dErnjer2
|
||||
doppler doplEr
|
||||
éloquent elokA~t2
|
||||
enfer A~fEr
|
||||
fahrenheit far@najt
|
||||
faut fot2 $u+
|
||||
fier fjer $verb
|
||||
for $u+
|
||||
francis frA~sis
|
||||
fred frEd
|
||||
free fri:
|
||||
fuel fjul
|
||||
gangster gA~gstEr
|
||||
gars ga
|
||||
genesis Zenezis
|
||||
georges ZorZ
|
||||
gilles Zil
|
||||
gin dZin
|
||||
granit granitt $text
|
||||
gulf gYlf
|
||||
gus gys
|
||||
gym Zim
|
||||
hélas elas $u+
|
||||
jacques Zak
|
||||
karaoke karaoke
|
||||
kevin kevin
|
||||
laser lazEr
|
||||
listbox listboks
|
||||
louis lwi
|
||||
@@ -686,30 +698,34 @@ mars mars
|
||||
mas mas
|
||||
mat mat
|
||||
merguez mErgEz
|
||||
mieux mi-Y $u+
|
||||
messieurs mesjYz2
|
||||
mieux miY $u+
|
||||
monsieur m@sjY
|
||||
mrs _^_en
|
||||
oasis oazis
|
||||
ours urs
|
||||
pataquès patakEs
|
||||
peter pi:tYr
|
||||
patchwork patSwWrk
|
||||
peter pi:tWr
|
||||
phallus falys
|
||||
polder poldEr
|
||||
premier pr@mjer2
|
||||
program _^_en
|
||||
(program files) program||fajlz
|
||||
(program files) programfajlz
|
||||
query kueri
|
||||
queries kueri
|
||||
quid kwid $u+
|
||||
quit _^_en
|
||||
recorder rikordYr
|
||||
quit kwit
|
||||
recorder rikOrdWr
|
||||
requiem rekw^ijEm
|
||||
revolver revolvEr
|
||||
revolver revOlvEr
|
||||
sas sas
|
||||
scan skan
|
||||
scanner skaner2 $verb
|
||||
scanner skanYr $noun
|
||||
scanners skanYr
|
||||
scanner skanWr $noun
|
||||
scanners skanWr
|
||||
shampoing SA~pwE~
|
||||
sir _^_EN
|
||||
sir sWr
|
||||
souris suri
|
||||
stocker stoker2
|
||||
sus sys
|
||||
@@ -719,7 +735,8 @@ tuttiquanti tutikw'anti
|
||||
vaut $u+
|
||||
vaux $u+
|
||||
vénus venys
|
||||
vot vot
|
||||
vot vOt
|
||||
writer raitWr
|
||||
yves iv
|
||||
|
||||
|
||||
@@ -766,9 +783,9 @@ stewart sti:wart
|
||||
|
||||
// urt (t is said)
|
||||
kurt kurt
|
||||
yaourt _|i-aurt
|
||||
yoghourt _|i-ogurt
|
||||
yogourt _|i-ogurt
|
||||
yaourt _|iaurt
|
||||
yoghourt _|iogurt
|
||||
yogourt _|iogurt
|
||||
|
||||
// ort (t said)
|
||||
short Sort
|
||||
@@ -793,7 +810,7 @@ smart smart
|
||||
about _^_en
|
||||
acer asEr
|
||||
and _^_en
|
||||
amazon amaz'on
|
||||
amazon amaz'On
|
||||
apple _^_en
|
||||
at at $u+
|
||||
(audible manager) od,ibl||manadZ'Yr
|
||||
@@ -807,24 +824,23 @@ edit _^_en
|
||||
emacs E2maks
|
||||
emacspeak E2makspi:k
|
||||
end _^_en
|
||||
epson E2pson
|
||||
espeak @spi:k
|
||||
ethernet etErnEt
|
||||
exit egzit
|
||||
(file zilla) f,ajl||zij'a
|
||||
from from $u
|
||||
from frOm $u
|
||||
get _^_en
|
||||
google gug=Yl
|
||||
gnome gnom
|
||||
google gug=Wl
|
||||
gnome gnOm
|
||||
gnu $abbrev
|
||||
hamburger _|A~b@rgYr
|
||||
hamburger _|A~b@rgWr
|
||||
help _^_en
|
||||
hot _^_en
|
||||
in in $u+
|
||||
inside _^_en
|
||||
internet E~tErn'Et
|
||||
(internet explorer) E~tErn'Et||E2ksplor'Yr
|
||||
klaxon klakson
|
||||
(internet explorer) E~tErn'Et||E2ksplor'Wr
|
||||
klaxon klaksOn
|
||||
let _^_en
|
||||
lite _^_en
|
||||
login _^_en
|
||||
@@ -832,14 +848,14 @@ logon _^_en
|
||||
(mac os x) makoEsiks
|
||||
made _^_en
|
||||
media medja
|
||||
messenger mE2sEnZYr
|
||||
messenger mE2sEnZWr
|
||||
my maj $u+
|
||||
nat nat
|
||||
not _^_en
|
||||
null _^_en
|
||||
ok oke $u+
|
||||
open op'Yn
|
||||
(open source) op,Yn||s'urs
|
||||
open op'Wn
|
||||
(open source) op,Wn||s'urs
|
||||
outlook autlu:k
|
||||
paint _^_en
|
||||
paper _^_en
|
||||
@@ -847,7 +863,6 @@ people _^_en
|
||||
redhat rEdat
|
||||
same _^_en
|
||||
sametime _^_en
|
||||
schubert SubEr
|
||||
sun _^_en
|
||||
(text aloud) tEkst||@la=wd
|
||||
ubuntu ubuntu
|
||||
@@ -861,7 +876,7 @@ constations kO~statjO~z2
|
||||
contentions kO~tA~tjO~z2
|
||||
dations datjO~z2
|
||||
désertions dezErtjO~z2 $verb
|
||||
exploitions EksplwatjO~z2
|
||||
exploitions Eksplw^atjO~z2
|
||||
heurtions hYrtjO~z2
|
||||
partions partjO~z2
|
||||
rations ratjO~z2 $verb
|
||||
@@ -898,6 +913,7 @@ kenya kenja
|
||||
laos laos
|
||||
lesotho lezoto
|
||||
liechtenstein liStYnStajn
|
||||
angeles A~nZelEs
|
||||
malawi malawi
|
||||
mayotte majot
|
||||
montréal mO~real
|
||||
@@ -915,7 +931,7 @@ texas tE2ks'as
|
||||
tuvalu tuvalu
|
||||
vanuatu vanuatu
|
||||
venezuela venezyela
|
||||
(viêt nam) vi-Etnam
|
||||
(viêt nam) viEtnam
|
||||
wallis walis
|
||||
futuna futuna
|
||||
zimbabwe zimbabwe
|
||||
|
||||
+83
-90
@@ -1,7 +1,7 @@
|
||||
// French translation rules for Espeak
|
||||
|
||||
// ***************************************************************************
|
||||
// * Copyright (C) 2005 to 2007 by Jonathan Duddington *
|
||||
// * Copyright (C) 2005 to 2010 by Jonathan Duddington *
|
||||
// * email: jonsd@users.sourceforge.net *
|
||||
// * *
|
||||
// * This program is free software; you can redistribute it and/or modify *
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
|
||||
//
|
||||
// Updated: 2010-04-01 Michel Such <michel.such@free.fr>
|
||||
// Updated: 2010-05-18 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
|
||||
// Letter classes:
|
||||
@@ -48,8 +48,8 @@
|
||||
.group a
|
||||
ae (_ e // reggae vitae
|
||||
aen A~ // caen (diff Cicero: aA~)
|
||||
ae ae // maestro
|
||||
aim (K W~ // faim
|
||||
ae aE // maestro
|
||||
aim (K E~ // faim
|
||||
ain (K E~ // pain
|
||||
Ct) ain (_ E~n2 // certain ami
|
||||
ch) ain (_ E~n2 // prochain arret
|
||||
@@ -61,9 +61,7 @@
|
||||
ait (_ E2t2 // dirait ferait...
|
||||
aient (_ E2t2 // diraient feraient...
|
||||
f) ai (sA @ // faisons faisan
|
||||
a (ill a
|
||||
a (ils_ a
|
||||
a (il_ a
|
||||
a (ilK a
|
||||
aie (me E2 // paiement
|
||||
ai E // aile
|
||||
ai (L06 E // aile
|
||||
@@ -86,12 +84,13 @@
|
||||
|
||||
a (nnA a // manne
|
||||
an (K A~ // ancien, 矇lan
|
||||
an (h an
|
||||
@@m) an (_ an // tennisman
|
||||
zm) an (_ an // jazzman
|
||||
L02m) an (_ an
|
||||
lism) an (_ A~ // talisman
|
||||
ulm) an (_ A~ // musulman
|
||||
ïm) an (_ A~ // caïman
|
||||
_ca簿m) an (_ A~ // ca簿man
|
||||
_C) aon (_ A~ // faon, paon, taon
|
||||
s) aoul (_ u // saoul
|
||||
s) aou (le u // saoule
|
||||
@@ -104,12 +103,12 @@
|
||||
au (re_ o // dinosaure
|
||||
_) audio (@P5 o2dio
|
||||
_) auto (@P4 o2to
|
||||
_) autom (n o2to
|
||||
_) autom (n otO
|
||||
bb) aye (X ei // abbaye
|
||||
ay (C E // aym矇
|
||||
ay Ej // paye
|
||||
ay (_ E2 // display
|
||||
Xl) ayer (X E2jYr // player, layer
|
||||
Xl) ayer (X E2jWr // player, layer
|
||||
w) an (_ an
|
||||
a a // bateau
|
||||
|
||||
@@ -144,6 +143,7 @@
|
||||
a) ch (_ k // almanach
|
||||
ar) c (ti // arctique
|
||||
e) ch (_ k // varech
|
||||
ni) ch (_ k
|
||||
_A) ch (o_ k // 矇cho
|
||||
mani) ch (矇 k // manich矇isme
|
||||
wi) ch tS // sandwich
|
||||
@@ -155,7 +155,6 @@
|
||||
_) ch (orA k // chorale
|
||||
_) ch (oriz S
|
||||
_) ch (oro S
|
||||
te) ch (_ k
|
||||
ch (r k // chr矇tien
|
||||
_) chrono (@P6 krono
|
||||
ch (l k
|
||||
@@ -166,7 +165,7 @@
|
||||
ck k // nickel
|
||||
cqu k // grecque
|
||||
cq k // pecq
|
||||
s) c (Y //
|
||||
s) c (Y
|
||||
x) c (Y
|
||||
c (Y s // c癡de
|
||||
_) cyber (P5 sibEr
|
||||
@@ -181,8 +180,8 @@
|
||||
c k // recoin donc
|
||||
|
||||
cient (_ sit2 // ils appr嚙箠ent, remercient.
|
||||
effi) cien (t sjA~ // coefficient
|
||||
défi) cien (t sjA~ // déficient
|
||||
effi) cient sjA~ // coefficient
|
||||
d矇fi) cient sjA~ // d矇ficient
|
||||
cast (_S4 kast // podcast
|
||||
casts (_S5 kast // podcasts
|
||||
_) clown klun
|
||||
@@ -202,6 +201,7 @@ _) ç' (P2v s
|
||||
.group d
|
||||
dd d // addition
|
||||
_) d' (P2 d
|
||||
_ban) d (_ d
|
||||
_lan) d (_ d // land
|
||||
_stan) d (_ d // stand
|
||||
an) d (_
|
||||
@@ -210,6 +210,7 @@ _) ç' (P2v s
|
||||
_gran) d (_ t2 // grand ami, grand marchand
|
||||
Cen) d (_ t2
|
||||
Con) d (_
|
||||
con) d (_ t2
|
||||
quen) d (_ t2
|
||||
r) d (_
|
||||
_har) d (_ d
|
||||
@@ -237,7 +238,7 @@ _) ç' (P2v s
|
||||
|
||||
// Define use of the final 'e' in french
|
||||
e (_
|
||||
_C) e (_ @2 // je te
|
||||
_C) e (_ @ // je te
|
||||
-c) e (_
|
||||
-j) e (_
|
||||
C) e (-
|
||||
@@ -259,7 +260,7 @@ _) ç' (P2v s
|
||||
pl) ein (_ E~n2 // plein emploi
|
||||
e (il E // vieille
|
||||
ei E // neige
|
||||
eoi wa // asseoir
|
||||
eoi w^a // asseoir
|
||||
ell El // selle
|
||||
el (K El // celsius, caramel
|
||||
_f) em (me a // femme
|
||||
@@ -551,6 +552,7 @@ L06ch) e (CA @
|
||||
@ch) e (CrA
|
||||
@L06ch) e (CrA @
|
||||
@L06C) e (CrA @
|
||||
@L06C) e (rrA E
|
||||
@CL06) e (CrA @
|
||||
%C) e (CrA++
|
||||
e (rr+++ E
|
||||
@@ -559,9 +561,9 @@ L06ch) e (CA @
|
||||
_) e (CA e
|
||||
_) e (xC++ E2
|
||||
Cr) eam i:m
|
||||
Cr) eamer i:mYr
|
||||
Cl) eaner i:nYr
|
||||
vert) e (rX Y
|
||||
Cr) eamer i:mWr
|
||||
Cl) eaner i:nWr
|
||||
vert) e (rX W
|
||||
e簿n (_ 'Ein
|
||||
_y) en (_ En
|
||||
iew) er (X er2
|
||||
@@ -594,7 +596,7 @@ _m) e (ga e
|
||||
|
||||
.group 癡
|
||||
|
||||
Z) ème i-Em
|
||||
Z) 癡me iEm
|
||||
癡 E
|
||||
癡s (_ E
|
||||
Ar) 癡s (_ Es
|
||||
@@ -629,9 +631,14 @@ p) ès (_ Es
|
||||
su) gg (Y gZ // sugg矇rer suggestif
|
||||
gg g // agglom矇rer
|
||||
ai) gni n^ // craignions ch璽taignier
|
||||
gn n^ // agneau
|
||||
gn nj // agneau
|
||||
gni n^i // signifier
|
||||
gn (e_ n^
|
||||
gn (_ n^
|
||||
gn (eCA nj@-
|
||||
gn (ie n // compagnie
|
||||
dia) g (no g
|
||||
_a) g (no g
|
||||
_quatrevin) gts (_ z2
|
||||
|
||||
vin) gt (_A t // liaison: vingt ans
|
||||
@@ -671,7 +678,6 @@ An) gt (A t // vingtaine doigté
|
||||
|
||||
.group h
|
||||
_) h _|
|
||||
Ca) h (_ h
|
||||
_) h (abi // habit, habilleur
|
||||
_) h (allo // hallog癡ne
|
||||
_) h (ame // hame癟on
|
||||
@@ -711,6 +717,8 @@ _) h (umb // humble
|
||||
_) h (umi // humide
|
||||
_) h (umo // humour
|
||||
_) hy (A j
|
||||
haus (_ o2s //blockhaus
|
||||
heim (_ ajm
|
||||
_) h (y // hypermarch矇
|
||||
_) hyper (@P5 ipEr
|
||||
_) hyper (_ ipEr
|
||||
@@ -725,30 +733,18 @@ _) half _^_en
|
||||
.group i
|
||||
i i // cri
|
||||
|
||||
C) i (A i-
|
||||
C) i (onK j
|
||||
r) i (onK i-
|
||||
C) i (erA i
|
||||
l) i (A i
|
||||
_) i (A i-
|
||||
C) i (e_ i
|
||||
C) i (es_ i
|
||||
Cr) i (a i:
|
||||
_Cr) i (A i:
|
||||
Cr) i (é i:
|
||||
Cr) i (er_ i:
|
||||
rr) i (er_ i-
|
||||
C) ien (t_ i
|
||||
dév) ien (t_ i-
|
||||
t) ien (K_ i-E~ // tient
|
||||
v) ien (K_ i-E~ // vient
|
||||
at) ien (t_ i-A~ // patient
|
||||
cip) ien (C i-A~ // récipient
|
||||
d矇v) ien (t_ i
|
||||
t) ien (K_ iE~ // tient
|
||||
v) ien (K_ iE~ // vient
|
||||
at) ien (t_ jA~ // patient
|
||||
cip) ien (C jA~ // r矇cipient
|
||||
cl) ien (C i:A~ // client
|
||||
mol) ien (C i-A~ // émolient
|
||||
vén) ien (C i-A~ // inconvénient
|
||||
or) ien (t iA~ // orient, orienter
|
||||
ot) ien (t_ i-A~ // quotient
|
||||
mol) ien (C jA~ // 矇molient
|
||||
v矇n) ien (C jA~ // inconv矇nient
|
||||
or) ien (t jA~ // orient, orienter
|
||||
ot) ien (t_ jA~ // quotient
|
||||
|
||||
i (e_ i
|
||||
_) ill il // ill矇gal
|
||||
@@ -779,8 +775,10 @@ C) i (es_ i
|
||||
in (kX iN // link
|
||||
in (n i // innombrable
|
||||
in (C E~ // vingt
|
||||
in (_ W~ // vin
|
||||
in (_ E~ // vin
|
||||
ing (_ iN
|
||||
ing (s iN
|
||||
ing (to iN
|
||||
_) infra (sP5 E~fra
|
||||
_) inter (@@P5 E~tEr
|
||||
_) interr (A E~tEr
|
||||
@@ -793,7 +791,7 @@ C) i (es_ i
|
||||
bor) is (_ is
|
||||
dor) is (_ is
|
||||
tor) is (_ is
|
||||
fl) irt Yrt
|
||||
fl) irt Wrt
|
||||
otl) i (neX aj
|
||||
onl) i (ne_ aj
|
||||
offl) i (ne_ aj
|
||||
@@ -814,19 +812,6 @@ C) i (es_ i
|
||||
ram_f) i (le _^_en
|
||||
|
||||
|
||||
.group ï
|
||||
ïn (C E~ // coïncider
|
||||
ïn (_ E~
|
||||
ïs (K is // maïs, archaïsme
|
||||
ï (q i // archaïque
|
||||
ï (c i // laïc
|
||||
a) ï (A j // aïeul
|
||||
a) ï (C i // naïf
|
||||
tha) ï (K j // thaï
|
||||
_ha) ï (K i // haïr
|
||||
ï i // ambiguïté
|
||||
|
||||
|
||||
.group j
|
||||
j Z // adjoint joujoux
|
||||
_) j' (P2v Z
|
||||
@@ -853,6 +838,7 @@ C) i (es_ i
|
||||
au) lt // h矇rault
|
||||
uCi) l (_ // outil, fusil
|
||||
nti) l (_ // gentil
|
||||
nti) lh j // gentilhomme
|
||||
ui) ll j // juillet
|
||||
_) lorsqu' (P7 lorsk
|
||||
|
||||
@@ -900,7 +886,7 @@ C) i (es_ i
|
||||
x_) os (_ o
|
||||
o (t_ o
|
||||
|
||||
oe (ll wa // moelleux
|
||||
oe (ll w^a // moelleux
|
||||
oe (i Y // oeil
|
||||
_) oe (C Y // oesophage
|
||||
_ph) oe (C e // phoetus
|
||||
@@ -913,8 +899,8 @@ C) i (es_ i
|
||||
_) oi (gnon o // oignons
|
||||
oin (C wE~
|
||||
oin (_ wE~ // coin
|
||||
oi wa // poil
|
||||
oê (l wa // poêle
|
||||
oi w^a // poil
|
||||
o礙 (l w^a // po礙le
|
||||
om (C O~ // bombe
|
||||
om (m o // nommer
|
||||
om (ni om // omnibus
|
||||
@@ -931,6 +917,9 @@ C) i (es_ i
|
||||
_) on (z _|O~ // onze, onzi嚙練e
|
||||
|
||||
_c) on (_ O~ // no comment
|
||||
gt) on (_ On // Washington
|
||||
Cst) on (_ On
|
||||
ps) on (_ On
|
||||
_C) on (_ O~n2 // mon appui, mon histoire, mon havre
|
||||
|
||||
alc) oo (l o // alcool
|
||||
@@ -946,18 +935,15 @@ C) i (es_ i
|
||||
|
||||
|
||||
ou u // hibou brouillard
|
||||
ou (A w
|
||||
r) ou (A u
|
||||
ou (iA u
|
||||
ou (il u
|
||||
oue (mA u // d�ouement
|
||||
_) ou (at _|u // ouate
|
||||
o羅 u // o羅
|
||||
o羶 u // co羶ter
|
||||
oy (A waj // noyer voyelles
|
||||
_b) oy (co oi- // boycott
|
||||
oy (A w^aj // noyer voyelles
|
||||
_b) oy (co oj // boycott
|
||||
_c) oy (o oi // coyote
|
||||
_y) o (y o
|
||||
oy wa
|
||||
oy w^a
|
||||
o (_ o // zorro all矇gro
|
||||
o (z_ o // berlioz
|
||||
o o
|
||||
@@ -966,12 +952,15 @@ _c) oy (o oi // coyote
|
||||
|
||||
// group o: English section
|
||||
oa (X _^_en // approach, load
|
||||
oa (_ oa
|
||||
oa (s_ oa
|
||||
oa (CerX _^_en
|
||||
oach _^_en
|
||||
old (er_ _^_en // folder, older
|
||||
C) oing (_ _^_en // going
|
||||
oo (Ce _^_en // boomer
|
||||
oo (k _^_en // book, cook
|
||||
oo (st _^_en // booster
|
||||
oo (X _^_en // pool
|
||||
C) oot _^_en // bootable football
|
||||
_) one _^_en
|
||||
@@ -1030,20 +1019,20 @@ C) oing (_ _^_en // going
|
||||
.group q
|
||||
q k // coq
|
||||
_) qu' (AP3 k
|
||||
_) qua (d kwA // quadrature
|
||||
_) qua (tA kwA // quaternaire
|
||||
_) qua (d kwa // quadrature
|
||||
_) qua (tA kwa // quaternaire
|
||||
_) quan (tA kwA~ // quantique
|
||||
_) qua (drill ka // quadriller
|
||||
_a) qua kwA // aquarium
|
||||
_a) qua kwa // aquarium
|
||||
_a) qu (if ku // aquif癡re
|
||||
_A) qui (dist kw^i // 矇quidistant
|
||||
_A) qui (lat kw^i // 矇quilat矇ral
|
||||
_C) qua kwA // squale square
|
||||
_A) qua kwA // équateur
|
||||
dé) qua kwA // adequate
|
||||
_) qua (rtz kwA // quartz
|
||||
_C) qua kwa // squale square
|
||||
_A) qua kwa // 矇quateur
|
||||
d矇) qua kwa // adequate
|
||||
_) qua (rtz kwa // quartz
|
||||
qu k // quatre
|
||||
_) que (_ k@2 // que
|
||||
_) que (_ k@ // que
|
||||
n) q (_ k // cinq cent
|
||||
|
||||
// group q: English section
|
||||
@@ -1081,6 +1070,7 @@ cou) rr (o r // courroie
|
||||
sch (iz sk // schizophr癡ne
|
||||
sch (ol sk
|
||||
sch (oo sk
|
||||
schu Su
|
||||
|
||||
sch S // sch矇ma
|
||||
d矇) sh (A z // d矇shabiller
|
||||
@@ -1104,7 +1094,7 @@ cou) rr (o r // courroie
|
||||
_) supra (@P5 sypra
|
||||
batro) s (_ s
|
||||
oc矇ro) s (_ s
|
||||
scien (t si-A~ // conscient scientifique
|
||||
scien (t siA~ // conscient scientifique
|
||||
sql (_S3 EskyEl
|
||||
|
||||
_u) s (_ s
|
||||
@@ -1186,8 +1176,10 @@ VCi) t (_ t2
|
||||
r) t (_
|
||||
|
||||
aul) t (_ // Renault
|
||||
grani) t (_ t
|
||||
|
||||
_) t矇l矇 (@P4 tele
|
||||
_) tele tele
|
||||
_) thermo (@P6 tErmo
|
||||
|
||||
tt t // attitude
|
||||
@@ -1298,13 +1290,14 @@ VCi) t (_ t2
|
||||
_) ultra (P5 yltra
|
||||
g) u (ay u
|
||||
g) ueill Yj // orgueilleux
|
||||
g) ueil (_ Yj // orgueil
|
||||
ha簿k) u (X u
|
||||
|
||||
C) u (bX Y // hub, club
|
||||
C) u (gX Y // bug, mug
|
||||
_n) u (rse Y // nurse
|
||||
r) u (nX Y // run, autorun
|
||||
um (_ om // album
|
||||
r) u (nX W // run, autorun
|
||||
pr) unt (_ W~ // emprunt
|
||||
um (_ Om // album
|
||||
f) um (_ W~ // parfum
|
||||
um (b W~ // humble
|
||||
um (p W~
|
||||
@@ -1371,6 +1364,7 @@ _) w (A _|w
|
||||
_) wir _^_en // wire
|
||||
winn _^_en // winner
|
||||
wise _^_en
|
||||
with _^_en
|
||||
wor _^_en
|
||||
|
||||
|
||||
@@ -1407,14 +1401,12 @@ _) w (A _|w
|
||||
|
||||
.group y
|
||||
y i // cryog矇nique myope
|
||||
_) y (A j // yak, yacht
|
||||
_) y (A _|j // yak
|
||||
_) y (eu j // yeux
|
||||
_) yacht _^_en // yacht, yachtman
|
||||
_) y (eu i- // yeux
|
||||
|
||||
_) yahoo (P5 i-a'u
|
||||
ym (b E~ // symbolique
|
||||
ym (p E~ // tympan
|
||||
ym (_ E~ // thym
|
||||
_) yahoo (P5 ja'u
|
||||
ym (K E~ // tympan
|
||||
y (nn i
|
||||
y (nA i
|
||||
X) ys (_ is
|
||||
@@ -1427,7 +1419,7 @@ _) w (A _|w
|
||||
z z
|
||||
t) z s // tzigane
|
||||
t) zer (_ zEr
|
||||
C) zer (_ zYr
|
||||
C) zer (_ zWr
|
||||
|
||||
|
||||
.group
|
||||
@@ -1437,10 +1429,11 @@ _) w (A _|w
|
||||
|
||||
矇 e // 矇t矇
|
||||
礙 E // f礙te
|
||||
ñ Ni // niño
|
||||
簿 i // na簿f
|
||||
簿n (K E~ // co簿ncidence
|
||||
簿s (_ is // ma簿s
|
||||
|
||||
繹 o // angstr繹m
|
||||
œ Y
|
||||
œu Y: // sœur
|
||||
羶 y: // f羶tes
|
||||
羹 y // b羹lcher
|
||||
|
||||
|
||||
+28
-8
@@ -145,7 +145,8 @@ _#-ének e:nEk
|
||||
_#-ának a:nAk
|
||||
_#-vel e:vEl $alt2
|
||||
_#-val a:vAl $alt2
|
||||
|
||||
_#-ánál a:na:l $alt2
|
||||
_#-énél e:ne:l $alt2
|
||||
(1-e) elseje $text $alt2
|
||||
(1-én) elsején $text $alt2
|
||||
(1-jén) elsején $text $alt2
|
||||
@@ -169,6 +170,8 @@ _#-val a:vAl $alt2
|
||||
(1-jéig) elsejéig $text $alt2
|
||||
(1-ének) elsejének $text $alt2
|
||||
(1-vel) elsejével $text $alt2
|
||||
(1-jénél) elsejénél $text $alt2
|
||||
(1-énél) elsejénél $text $alt2
|
||||
(2-i) másodikai $text $alt2
|
||||
(2-ig) másodikáig $text $alt2
|
||||
(3-i) hAR2_mAdikAi $alt2
|
||||
@@ -210,6 +213,9 @@ _#-val a:vAl $alt2
|
||||
(0-an) nul:a:n
|
||||
(0-ában) nul:a:bAn
|
||||
(0-ába) nul:a:bA
|
||||
(0-áson) nul:a:Son
|
||||
(0-tól) nul:a:to:l
|
||||
(00-tól) nul:Anul:a:to:l
|
||||
(1-gyet) EJ:Et
|
||||
(1-gyes) EJ:ES
|
||||
(2-őt) kEt:Y:t
|
||||
@@ -224,6 +230,7 @@ _#-val a:vAl $alt2
|
||||
(3-adikat) hAR2mAdikAt //special exception
|
||||
(3-adikon) hAR2mAdikon //special exception
|
||||
(3-adikkal) hAR2mAdik:Al //special exception
|
||||
(3-t) ha:R2mAt
|
||||
//4 number suffixes
|
||||
(4-el) ne:J:El //Nneed J: phoneme, not J phoneme contains one suffix)
|
||||
(4-gyel) ne:J:El //Need J: phoneme, not J phoneme
|
||||
@@ -246,9 +253,12 @@ _#-val a:vAl $alt2
|
||||
(7-től) hEtEdike:tY:l $alt2
|
||||
(7-tel) he:t:El
|
||||
(7-el) he:t:El
|
||||
(7-sekre) hEtESEkR2E
|
||||
(7-sel) hEtES:El
|
||||
(8-cal) n^olts:Al
|
||||
(8-al) n^olts:Al
|
||||
(9-el) kilEnts:El
|
||||
(9-cel) kilEnts:El
|
||||
_10e tiz
|
||||
_20e hus
|
||||
(10-szer) ti:s:ER2
|
||||
@@ -256,7 +266,6 @@ _20e hus
|
||||
|
||||
|
||||
|
||||
|
||||
//special number exceptions
|
||||
(10-el) ti:zzEl
|
||||
(20-al) hu:s:Al
|
||||
@@ -376,7 +385,7 @@ LST ElESte: $allcaps
|
||||
BAR bAR2 $allcaps
|
||||
//SS EsEs $allcaps
|
||||
|
||||
a.m An^n^i||m'int $dot
|
||||
(a . m .) An^n^i||m'int
|
||||
ún u:JnEvEzEt: $hasdot
|
||||
dr doktoR2 $dot
|
||||
mr mistER2 $hasdot //in hungarian we not use, but lot of books contains this word.
|
||||
@@ -397,7 +406,7 @@ stb SAtYb:i $hasdot
|
||||
u.n u:JnEvEzEt: $hasdot
|
||||
ú.n u:JnEvEzEt: $hasdot
|
||||
vö v'EZd||_'Yss2E
|
||||
|
||||
(u . i .) u:i:
|
||||
|
||||
|
||||
|
||||
@@ -824,7 +833,7 @@ látszik $unstressend
|
||||
látszott $unstressend
|
||||
látszanak $unstressend
|
||||
látszotok $unstressend
|
||||
körül $unstressend
|
||||
körül $unstressend $alt3
|
||||
dőlt $unstressend
|
||||
vér $unstressend
|
||||
sót $unstressend
|
||||
@@ -962,7 +971,12 @@ lép $unstressend
|
||||
pénzt $unstressend
|
||||
pénz $unstressend
|
||||
nép $unstressend
|
||||
|
||||
lennék $unstressend
|
||||
lennél $unstressend
|
||||
lennénk $unstressend
|
||||
lennétek $unstressend
|
||||
hitt $unstressend
|
||||
fő $unstressend
|
||||
|
||||
// word pairs
|
||||
|
||||
@@ -1150,6 +1164,7 @@ _″ duplA|ApostR2o:f
|
||||
_ˇ lEfEle:n^i:l
|
||||
_¡ AlSo:indEks
|
||||
|
||||
|
||||
// Main Exceptions List
|
||||
//=====================
|
||||
|
||||
@@ -1174,6 +1189,8 @@ egyezség eggyesség
|
||||
(cd-n) cédén
|
||||
(cd-d) cédéd
|
||||
(CD-d) cédéd
|
||||
CD-m) cédém
|
||||
(cd-m) cédém
|
||||
(db-os) darabos
|
||||
(db-ot) darabot
|
||||
(LST-k) elesték
|
||||
@@ -1187,6 +1204,8 @@ egyezség eggyesség
|
||||
//after word and don't disturb Orca working.
|
||||
(PC-n) pécén
|
||||
(USB-n) úesbén
|
||||
(usb-n) úesbén
|
||||
(usb-t) úesbét
|
||||
(USA-ból) usából
|
||||
(USA-nak) usának
|
||||
(DVD-k) dévédék
|
||||
@@ -1195,10 +1214,11 @@ egyezség eggyesség
|
||||
(dvd-n) dévédén
|
||||
(dvd-d) dévédéd
|
||||
(DVD-d) dévédéd
|
||||
(DVD-m) dévédét
|
||||
(dvd-m) dévédém
|
||||
(USA-éval) usáéval
|
||||
(ubuntu-n) ubuntun
|
||||
(hu-n) hun
|
||||
(USA-ban) usában
|
||||
|
||||
|
||||
(USA-ba) usába
|
||||
|
||||
|
||||
+100
-16
@@ -17,11 +17,14 @@
|
||||
_) alattvaló AlAtvAlo:
|
||||
ahhoz Ahoz
|
||||
|
||||
|
||||
.group á
|
||||
á a:
|
||||
@) ában (_S4q a:bAn
|
||||
@) ának (_S4q a:nAk
|
||||
@) ától (_S4q a:to:l
|
||||
@) áig (_S3q a:ig
|
||||
@) ára (_S3q a:R2A
|
||||
|
||||
.group b
|
||||
b b
|
||||
@@ -36,8 +39,12 @@
|
||||
tö) bb (ség b
|
||||
tö) bb (nyire b
|
||||
tö) bb (nek b
|
||||
tová) bb (ra b
|
||||
tová) bbr (a bR2
|
||||
tö) bb (soro b
|
||||
tö) bb (ny b
|
||||
tö) bb (féle b
|
||||
jo) bbr (a bR2
|
||||
tö) bbr (e bR2
|
||||
|
||||
.group c
|
||||
c ts
|
||||
@@ -72,7 +79,9 @@
|
||||
har) c (cselek ts
|
||||
külön) c (sé ts
|
||||
mala) c (sül ts
|
||||
|
||||
gyümöl) cs (zs tS
|
||||
fil) c (csiz ts
|
||||
szo) c (segély ts
|
||||
|
||||
.group ch
|
||||
anar) ch (i h
|
||||
@@ -97,7 +106,8 @@ hierar) ch (i h
|
||||
ar) ch (ív h
|
||||
ar) ch (ivál h
|
||||
ma) ch (iná h
|
||||
|
||||
oligar) ch h
|
||||
legpe) ch (es h:
|
||||
|
||||
.group d
|
||||
d d
|
||||
@@ -174,7 +184,21 @@ menetren) dsz (erű d|s
|
||||
föl) d (szerzé d
|
||||
twee) dz (ak d|z
|
||||
twee) dsz (ok d|s
|
||||
|
||||
dtt t: //this letters need spokening longer t phoneme
|
||||
_) kar) d (su d
|
||||
zöl) d (sapk d
|
||||
hí) d (szer d
|
||||
szaba) d (szoft d
|
||||
rövi) d (zár d
|
||||
ren) d (zavar d
|
||||
ügyvé) d (jel d
|
||||
kez) dt t
|
||||
tiné) dzs (e dZ
|
||||
mene) dzs (me dZ
|
||||
ná) d (szék d
|
||||
rövi) d (soroz d
|
||||
pa) d (szerű d
|
||||
ná) d (suhog d
|
||||
|
||||
.group dz
|
||||
fogó) dz (kod ts
|
||||
@@ -209,7 +233,8 @@ követelő) dz z
|
||||
rángató) dz z
|
||||
titkoló) dz z
|
||||
ringató) dz z
|
||||
|
||||
mére) dz (k ts
|
||||
pilóta) dzs (ek dZ
|
||||
|
||||
.group e
|
||||
e E
|
||||
@@ -226,6 +251,8 @@ ringató) dz z
|
||||
@) ében (_S4q e:bEn
|
||||
@) ének (_S4q e:nEk
|
||||
@) étől (_S4q e:tY:l
|
||||
@) ére (_S3q e:R2E
|
||||
@) éig (_S3q e:ig
|
||||
éhség e:Se:g
|
||||
éhségg e:Se:g:
|
||||
|
||||
@@ -235,6 +262,9 @@ ringató) dz z
|
||||
.group f
|
||||
f f
|
||||
//führer fy:R2ER2
|
||||
e) ff (ajt f
|
||||
e) ff (él f
|
||||
a) ff (él f
|
||||
|
||||
|
||||
.group g
|
||||
@@ -343,6 +373,12 @@ tizene) gy (edik J:
|
||||
e) gy (enként J:
|
||||
félmege) gy (ez J:
|
||||
_e) gy (el J:
|
||||
tizene) gy (et J:
|
||||
tizene) gy (en J:
|
||||
e) gy (esület J:
|
||||
a) gy (sej J
|
||||
e) gy (úttal J:
|
||||
épülete) gy (ütt J:
|
||||
|
||||
.group h
|
||||
h h
|
||||
@@ -352,7 +388,7 @@ félmege) gy (ez J:
|
||||
.group i
|
||||
i i
|
||||
@) i (_S1 i
|
||||
|
||||
@) ig (_S2 ig
|
||||
_) itthon ithon
|
||||
|
||||
.group í
|
||||
@@ -367,16 +403,27 @@ félmege) gy (ez J:
|
||||
v) í (zére i
|
||||
sz) í (ve i
|
||||
t) í (zes i
|
||||
|
||||
sz) í (vel i:
|
||||
|
||||
.group j
|
||||
j j
|
||||
@) jában (_S5q ja:bAn
|
||||
@) jának (_S5q ja:nAk
|
||||
@) jától (_S5q ja:to:l
|
||||
@) jáig (_S4q ja:ig
|
||||
@) jára (_S4q ja:R2A
|
||||
@) jával (_S5q ja:vAl
|
||||
@) jének (_S5 je:nEk
|
||||
@) jére (_S4 je:R2E
|
||||
@) jétől (_S5 je:tY:l
|
||||
@) jéig (_S4 je:ig
|
||||
@) jével (_S5 je:vEl
|
||||
_) javíts jAvi:tS:
|
||||
_) javítsd jAvi:tSd
|
||||
|
||||
|
||||
|
||||
|
||||
.group k
|
||||
k k
|
||||
kk k:
|
||||
@@ -393,6 +440,9 @@ félmege) gy (ez J:
|
||||
készségg ke:SSe:g:
|
||||
_a) kk (reditál k
|
||||
_) közt kYst
|
||||
bara) kk (b k
|
||||
bara) kk (f k
|
||||
bara) kk (j k
|
||||
|
||||
.group l
|
||||
l l
|
||||
@@ -507,6 +557,8 @@ tulajdo) n (jog n
|
||||
irá) ny (jel n^
|
||||
ö) n (jelöl n
|
||||
teljesítmé) ny (javu n^
|
||||
törvé) ny (java n^
|
||||
ajá) nl l:
|
||||
|
||||
.group o
|
||||
o o
|
||||
@@ -526,7 +578,7 @@ teljesítmé) ny (javu n^
|
||||
.group p
|
||||
p p
|
||||
pp p:
|
||||
pp (C pp
|
||||
pp (C p:
|
||||
p (v p_
|
||||
|
||||
_) potsdam potsda:m
|
||||
@@ -539,9 +591,12 @@ teljesítmé) ny (javu n^
|
||||
qu kv
|
||||
|
||||
.group r
|
||||
@) ra (_S2 R2A
|
||||
@) re (_S2 RE
|
||||
r R2
|
||||
rr RR
|
||||
rm R2_m
|
||||
r) r R2
|
||||
r (r R
|
||||
r (cc R
|
||||
|
||||
_) richa (rd R2iCa:
|
||||
@@ -550,7 +605,6 @@ teljesítmé) ny (javu n^
|
||||
i) rr (itá R2
|
||||
ko) rr (epetá R2
|
||||
|
||||
|
||||
.group s
|
||||
s S
|
||||
föld) s (ánc S
|
||||
@@ -578,7 +632,8 @@ juventu) s s //a radio station name
|
||||
hallá) s (zavar S
|
||||
gyalogo) s (zászló S
|
||||
ki) s (zsidó S
|
||||
|
||||
szennye) s (zsá S
|
||||
alvá) s (zavar S
|
||||
|
||||
.group ss
|
||||
ssz ss2
|
||||
@@ -747,6 +802,10 @@ gyalogo) ssz Ss
|
||||
jelzé) ssz (erű Ss
|
||||
kitöré) ssz (erű Ss
|
||||
hatá) ssz (üne Ss
|
||||
fri) ss (zöl S:
|
||||
nyúva) ssz s:
|
||||
hirdeté) ssz (erve Ss
|
||||
páncélo) ssz Ss
|
||||
|
||||
.group sz
|
||||
sz s
|
||||
@@ -776,8 +835,7 @@ kenyere) szs (ák SZ
|
||||
tava) sz (ára s
|
||||
rongyo) szs (ák SZ
|
||||
para) sztsz (ek st|s
|
||||
rava) sz (ára s
|
||||
|
||||
rava) sz (ár s
|
||||
|
||||
.group t
|
||||
|
||||
@@ -788,9 +846,12 @@ rongyo) szs (ák SZ
|
||||
tt t:
|
||||
ttk t:k
|
||||
tth t:h
|
||||
ttg t:g
|
||||
ttgy t:J
|
||||
ttp t:p
|
||||
@) tól (_S3q to:l
|
||||
@) től (_S3q tY:l
|
||||
tt (C tt
|
||||
tt (C t:
|
||||
ttn t:n
|
||||
ttm t:m
|
||||
ttl t:l
|
||||
@@ -956,7 +1017,16 @@ hangula) t (jel t
|
||||
vizsgála) t (soroza t
|
||||
á) tjátsz tja:ts:
|
||||
á) tjátssz tja:ts:
|
||||
|
||||
kobal) t (sugár t
|
||||
többle) t (szol t
|
||||
á) t (söprő t
|
||||
ú) t (javí t
|
||||
billentyűze) t (jel t
|
||||
á) t (címké t
|
||||
sej) t (szö t
|
||||
szöve) t (sapk t
|
||||
mene) t (szél t
|
||||
tesz) t (cikk t
|
||||
|
||||
.group ts
|
||||
ts (_S2 tS //general rule with word end of ts letters
|
||||
@@ -1037,6 +1107,10 @@ indula) tsz (ó t|s
|
||||
segi) ts (é tS:
|
||||
kür) tsz (ó t|s
|
||||
hi) tsz (ó t|s
|
||||
á) tsz (ok t|s
|
||||
halla) tsz (a ts:
|
||||
fejle) ts (ég tS:
|
||||
sie) tsz ts:
|
||||
|
||||
.group u
|
||||
u u
|
||||
@@ -1103,7 +1177,7 @@ lefeje) z (te s
|
||||
lefeje) z (ték s
|
||||
pén) z (tár s
|
||||
ré) z (serpenyő z
|
||||
tartó) z s
|
||||
tartó) z (t s
|
||||
|
||||
gá) z (cső z
|
||||
|
||||
@@ -1199,6 +1273,16 @@ hiányo) z (t s
|
||||
foglalko) z (t s
|
||||
tanulmányo) z (t s
|
||||
magyará) z (t s
|
||||
kötö) z (t s
|
||||
vitatko) z (t s
|
||||
tartó) z (k s
|
||||
ajándéko) z (t s
|
||||
tarto) z (k s
|
||||
tarto) z (t s
|
||||
rejtő) z (kö s
|
||||
rejtő) z (t s
|
||||
hango) z (t s
|
||||
|
||||
|
||||
.group
|
||||
|
||||
|
||||
+37
-37
@@ -19,9 +19,9 @@ _2f tv'W:
|
||||
_3f Tr#j'u:
|
||||
_4f fj'W:Qyrr#
|
||||
_5 f'Im
|
||||
_6 s'e:xs
|
||||
_6 s'E:xs
|
||||
_7 sj'W:
|
||||
_8 'aUhd&
|
||||
_8 'aUhda
|
||||
_9 n'i:;y
|
||||
_10 t'i:;y
|
||||
_11 'EdlEv,y
|
||||
@@ -39,10 +39,10 @@ _4X fj'W:*Ryt,i;y
|
||||
_5X f'Imti;,y
|
||||
_6X s'Exsdi;,y
|
||||
_7X sj'W:ti;,y
|
||||
_8X 'aUhd&t,i;y
|
||||
_8X 'aUhdat,i;y
|
||||
_9X n'i:;yt,i;y
|
||||
_0C h'ynd@-*yD
|
||||
_1C 'eIhd||h'ynd@-R&D
|
||||
_1C 'eIhd||h'ynd@-RaD
|
||||
_2C tv'W:||h'ynd@-RyD
|
||||
_3C Tr#j'u:||h'ynd@-RyD
|
||||
_4C fj'W:Qyrr#||h'ynd@-RyD
|
||||
@@ -51,38 +51,38 @@ _0M2 m'IdljoUn
|
||||
_1M2 eI:n||m'IdljoUn
|
||||
_2M2 tv'aI:rr#||m'IdljoUn
|
||||
_3M2 Tr#j'aU:rr#||m'IdljoUn
|
||||
_4M2 fj'oU:*&rr#||m'IdljoUn
|
||||
_dpt _k,Omm&_
|
||||
_0and o:Q
|
||||
_4M2 fj'oU:*arr#||m'IdljoUn
|
||||
_dpt _k,Omma_
|
||||
_0and O:Q
|
||||
|
||||
_cap sd'oUrr#d
|
||||
_?? t'aUghn#
|
||||
|
||||
// Characters
|
||||
_! 'yhbr#oUpyn&Rm,Err#kI
|
||||
_" JaI:s&lWhb
|
||||
# mIll&
|
||||
_$ d'Odl&rr#
|
||||
_& o:QmErr#kI
|
||||
_! 'yhbr#oUpynaRm,Err#kI
|
||||
_" JaI:salWhb
|
||||
# mIlla
|
||||
_$ d'Odlarr#
|
||||
_& O:QmErr#kI
|
||||
/ skaUsdr#Ig
|
||||
_( svI:jI
|
||||
_) sv'I:jIl'o:k&sd
|
||||
_) sv'I:jIl'O:kasd
|
||||
_{ slYy:vysvIjI
|
||||
_} sl'Yy:vysv,IjIl'o:k&sd
|
||||
_} sl'Yy:vysv,IjIl'O:kasd
|
||||
_[ hOrdn#glOvI
|
||||
_] h'Ordn#glOvIl'o:k&sd
|
||||
= s'a:m&sEmm,Err#kI
|
||||
_] h'Ordn#glOvIl'O:kasd
|
||||
= s'a:masEmm,Err#kI
|
||||
_\ 'W:vyxdsk,aUsdr#Ig
|
||||
_- b&ndsdrr#Ig
|
||||
_- bandsdrr#Ig
|
||||
__ yndIRsdrr#Ig
|
||||
_? sb'yrdn#iNg,&mErr#kI
|
||||
_? sb'yrdn#iNg,amErr#kI
|
||||
+ bl'u:s
|
||||
_< OdglOvI
|
||||
_> 'OdglOvIl,o:k&sd
|
||||
_. p'uN#hgdy#rr#
|
||||
_, k'Omm&
|
||||
_; s'e:mik,Omm&
|
||||
_: dv'i:puN#hgdy#rr#
|
||||
_> 'OdglOvIl,O:kasd
|
||||
_. p'uN#hgdyrr#
|
||||
_, k'Omma
|
||||
_; s'E:mik,Omma
|
||||
_: dv'i:puN#hgdyrr#
|
||||
|
||||
// abbreviations
|
||||
|
||||
@@ -379,39 +379,39 @@ fram $u+ // forward
|
||||
//****************
|
||||
_á aU:
|
||||
á aU: $atend
|
||||
b bje:
|
||||
c sje:
|
||||
d dje:
|
||||
ð e:D
|
||||
b bjE:
|
||||
c sjE:
|
||||
d djE:
|
||||
ð E:D
|
||||
f Ef
|
||||
g gje:
|
||||
g gjE:
|
||||
h haU:
|
||||
_í i:
|
||||
í i: $atend
|
||||
j j'o:D
|
||||
j j'O:D
|
||||
k k'aU:
|
||||
l Etl#
|
||||
m Em
|
||||
n En
|
||||
p pje:
|
||||
p pjE:
|
||||
q ku:
|
||||
r Err#
|
||||
s Es
|
||||
t tje:
|
||||
t tjE:
|
||||
v vaf
|
||||
w tv'W:v&ldv,af
|
||||
x e:xs
|
||||
w tv'W:valdv,af
|
||||
x E:xs
|
||||
_y 'yfsilOn||,I:
|
||||
_ý 'yfsilOn||,i:
|
||||
y 'yfsilOn||,I: $atend
|
||||
ý 'yfsilOn||,i: $atend
|
||||
z se:t&
|
||||
z sE:ta
|
||||
þ T'Ordn#
|
||||
|
||||
|
||||
// MAIN WORD DICTIONARY
|
||||
//*********************
|
||||
|
||||
bolla bOll&
|
||||
halló h&lloU
|
||||
mylla mIll&
|
||||
bolla bOlla
|
||||
halló halloU
|
||||
mylla mIlla
|
||||
|
||||
+41
-34
@@ -5,6 +5,10 @@
|
||||
// letter group F p,t,k,s
|
||||
// letter group H j,r,v,
|
||||
|
||||
.L01 e i í y ý æ j // front vowels
|
||||
.L02 c f h k p t x þ s // voiceless consonants
|
||||
.L03 p t k
|
||||
|
||||
.replace
|
||||
x xz // so that it behaves as 2 letters
|
||||
|
||||
@@ -12,7 +16,7 @@
|
||||
.group a
|
||||
a a:
|
||||
a (FH a:
|
||||
a (CC &
|
||||
a (CC a
|
||||
a (ng aU
|
||||
a (nk aU
|
||||
|
||||
@@ -21,7 +25,7 @@
|
||||
au (CC Yy
|
||||
|
||||
_) al (@P2N ,a:l
|
||||
_) a (ll+ &
|
||||
_) a (ll+ a
|
||||
|
||||
.group á
|
||||
á aU:
|
||||
@@ -47,12 +51,12 @@
|
||||
.group ð
|
||||
ð D
|
||||
ð (B T
|
||||
ð (__ T // before pause
|
||||
ð (__ T
|
||||
|
||||
|
||||
.group e
|
||||
e e:
|
||||
e (FH e:
|
||||
e E:
|
||||
e (FH E:
|
||||
e (CC E
|
||||
e (ng eI
|
||||
e (nk eI
|
||||
@@ -93,13 +97,13 @@
|
||||
_) g (i J
|
||||
_) g (í J
|
||||
_) g (æ J
|
||||
_) g (j J
|
||||
_) gj J
|
||||
A) g (a Q
|
||||
A) g (u Q
|
||||
A) g (ð Q
|
||||
A) g (r Q
|
||||
g (_ Q
|
||||
gn (_ g
|
||||
g (_ x
|
||||
gn (_ gn#
|
||||
gt xd
|
||||
g (s x
|
||||
gj J
|
||||
@@ -118,6 +122,7 @@
|
||||
h h
|
||||
hj C
|
||||
hl l#
|
||||
hr hr#
|
||||
hn hn#
|
||||
hv kv
|
||||
|
||||
@@ -141,21 +146,20 @@
|
||||
|
||||
|
||||
.group k
|
||||
k k
|
||||
_) k (e c
|
||||
_) k (i c
|
||||
_) k (í c
|
||||
_) k (y c
|
||||
_) k (ý c
|
||||
_) k (æ c
|
||||
_) k k
|
||||
k g
|
||||
_) k (L01 c
|
||||
k (L01 J
|
||||
kj c
|
||||
k (K g
|
||||
k (k h // [hk]
|
||||
k (s x
|
||||
k (t t
|
||||
|
||||
|
||||
.group l
|
||||
l l
|
||||
l (_ l#
|
||||
l (_ l# // ??
|
||||
l (BX l#
|
||||
ll dl
|
||||
ll (BX tl#
|
||||
@@ -166,13 +170,14 @@
|
||||
m m
|
||||
mm (K m
|
||||
B) m hm#
|
||||
m (B m#
|
||||
m (L03 m#
|
||||
|
||||
|
||||
.group n
|
||||
n n
|
||||
nn n:
|
||||
B) n hn#
|
||||
n (B n#
|
||||
n (L03 n#
|
||||
n (g N
|
||||
ng (_ Ng
|
||||
ngt (K N#d
|
||||
@@ -195,9 +200,11 @@
|
||||
|
||||
|
||||
.group o
|
||||
o o:
|
||||
o (FH o:
|
||||
o O:
|
||||
o (FH O:
|
||||
o (CC O
|
||||
o (gi OI
|
||||
o (gj OI
|
||||
o (ng oU
|
||||
o (nk oU
|
||||
|
||||
@@ -206,15 +213,11 @@
|
||||
ó oU:
|
||||
ó (FH oU:
|
||||
ó (CC oU
|
||||
óf (A oU2
|
||||
|
||||
|
||||
.group p
|
||||
p b
|
||||
_) p p
|
||||
p p
|
||||
B) p b
|
||||
s) p b
|
||||
p (K b
|
||||
p (s f
|
||||
p (k f
|
||||
p (t f
|
||||
@@ -230,37 +233,41 @@
|
||||
C) r @-R
|
||||
l) r **R
|
||||
A) r (A *R
|
||||
B) r r#
|
||||
r (B rr#
|
||||
r (L02 rr#
|
||||
r (_ _|R
|
||||
r _|R2
|
||||
rr R*R
|
||||
rl dl
|
||||
rl (K rtl#
|
||||
rn rdn#
|
||||
rl (B Rtl#
|
||||
rn Rdn#
|
||||
|
||||
|
||||
.group s
|
||||
s s
|
||||
ss ss2
|
||||
_) sh S // English
|
||||
sh (_ S // English
|
||||
|
||||
|
||||
.group t
|
||||
_) t t
|
||||
t t
|
||||
B) t d
|
||||
s) t d
|
||||
t (K d
|
||||
t d
|
||||
tt hd
|
||||
t (l ht //?? ætla
|
||||
t (l hd //?? ætla
|
||||
t (n hd
|
||||
th (_ T // English
|
||||
_) th T // English
|
||||
|
||||
|
||||
.group u
|
||||
u y:
|
||||
u (FH y:
|
||||
u (CC y
|
||||
u (gi yI
|
||||
u (gj yI
|
||||
K) u (ng u
|
||||
K) u (nk u
|
||||
@) u (num_ O
|
||||
|
||||
|
||||
.group ú
|
||||
|
||||
+2
-2
@@ -124,9 +124,9 @@ m'n m@n
|
||||
jouw $u
|
||||
uw $u
|
||||
zijn $u
|
||||
z'n $u
|
||||
z'n z@n
|
||||
haar $u
|
||||
d'r $u
|
||||
d'r d@r
|
||||
ons $u
|
||||
onze $u
|
||||
jullie $u
|
||||
|
||||
+3
-1
@@ -10,6 +10,8 @@
|
||||
au VU
|
||||
ay a:j
|
||||
|
||||
_) aan (@P3 'a:n
|
||||
|
||||
|
||||
.group b
|
||||
_) b (_ be:
|
||||
@@ -137,7 +139,7 @@
|
||||
_) n (_ En
|
||||
n n
|
||||
nn n
|
||||
ng (_ N
|
||||
ng N
|
||||
nj n^
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -685,7 +685,7 @@
|
||||
A) r (_A *
|
||||
rr x
|
||||
XC) r (A R
|
||||
C) r (A r
|
||||
C) r (A *
|
||||
//?1 C) r (A r
|
||||
_) r x
|
||||
l) r x
|
||||
|
||||
+14
-3
@@ -196,7 +196,6 @@ tamil தமிழ் $text
|
||||
பாகவதம் $alt
|
||||
பகவத் $alt
|
||||
பங்கம் $alt
|
||||
பீதி $alt
|
||||
பேகம் $alt
|
||||
பார்லி $alt
|
||||
பிக்கினி $alt
|
||||
@@ -230,6 +229,9 @@ tamil தமிழ் $text
|
||||
பாக்கித் $alt
|
||||
பாக்கிச் $alt
|
||||
பர்மிய $alt
|
||||
பலே $alt
|
||||
பூம் $alt
|
||||
பரத $alt
|
||||
(பி . ஏ) bije:
|
||||
|
||||
|
||||
@@ -266,11 +268,16 @@ tamil தமிழ் $text
|
||||
துருவம் $alt
|
||||
தீரமுள்ள $alt
|
||||
தீரமற்ற $alt
|
||||
|
||||
தலாய் $alt
|
||||
தேசிங்கு $alt
|
||||
தேச $alt
|
||||
தேசப் $alt
|
||||
தானம் $alt
|
||||
|
||||
// initial ட
|
||||
டார்ச் t.a:rtS
|
||||
டிவி t.ivi
|
||||
டி t.i
|
||||
|
||||
// initial ச as [tS]
|
||||
சீ $alt
|
||||
@@ -279,6 +286,7 @@ tamil தமிழ் $text
|
||||
சீச்சீ $alt
|
||||
சிட்டாய் $alt
|
||||
சேச்சே $alt
|
||||
சிரம் sirVm
|
||||
|
||||
|
||||
கக $alt // initial க as [g]
|
||||
@@ -296,7 +304,6 @@ tamil தமிழ் $text
|
||||
கோபி $alt
|
||||
கச்சாமி $alt
|
||||
குரு $alt
|
||||
கோர $alt
|
||||
கும் $alt
|
||||
கும்மென்று $alt
|
||||
கும்முனு $alt
|
||||
@@ -309,6 +316,8 @@ tamil தமிழ் $text
|
||||
கம்னு $alt
|
||||
கம்மென்று $alt
|
||||
குதி $alt
|
||||
கம் $alt
|
||||
காந்தம் $alt
|
||||
|
||||
|
||||
// p as [f]
|
||||
@@ -336,3 +345,5 @@ tamil தமிழ் $text
|
||||
டிபன் t.ifVn
|
||||
ஆகா a:Ha:
|
||||
ஓகோ o:Ho:
|
||||
கப் kVp
|
||||
|
||||
|
||||
+182
-23
@@ -42,8 +42,8 @@
|
||||
_) க (B k
|
||||
_) க (T gV // if word has $alt attribute in ta_list
|
||||
_) க (BT+ g // $alt
|
||||
க்க kkV
|
||||
க்க (B kk
|
||||
க் (க k
|
||||
க்) க kV#
|
||||
ற்) க _kV
|
||||
ற்) க (B _k
|
||||
L01) க kV
|
||||
@@ -58,6 +58,7 @@
|
||||
//sort
|
||||
_) க (ங்கா gV
|
||||
_) க (ங்கை gV
|
||||
_) க (டகட gV
|
||||
_) க (டப்பாரை gV
|
||||
_) க (டிகார gV
|
||||
_) க (டோத்கஜ gV
|
||||
@@ -65,7 +66,9 @@
|
||||
_) க (ணீர gV
|
||||
_) க (ணே gV
|
||||
_) க (ண்டங் gV
|
||||
_) க (தாயுத gV
|
||||
_) க (திகலங் gV
|
||||
_) க (திக் gV
|
||||
_) க (திதா gV
|
||||
_) க (திய gV
|
||||
_) க (தியில் gV
|
||||
@@ -84,11 +87,14 @@
|
||||
_) க (லீர gV
|
||||
_) க (வண gV
|
||||
_) க (வன gV
|
||||
_) க (வர்னர gV
|
||||
_) க (வாஸ்கர gV
|
||||
_) க (ாண்டாமிருக g
|
||||
_) க (ாண்டீப g
|
||||
_) காண்டேக (ர ga:n.d.e:kV
|
||||
_) க (ாந்த g
|
||||
_) க (ாந்தங் g
|
||||
_) க (ாந்தத் g
|
||||
_) க (ாந்தி g
|
||||
_) க (ானங் g
|
||||
_) க (ானத்த g
|
||||
_) க (ானம g
|
||||
@@ -98,6 +104,7 @@
|
||||
_) க (ிரிஜா g
|
||||
_) க (ிரிதர g
|
||||
_) க (ீதல k
|
||||
_) க (ீத்த k
|
||||
_) க (ுகன g
|
||||
_) க (ுகை g
|
||||
_) க (ுஜராத g
|
||||
@@ -115,6 +122,7 @@
|
||||
_) குண்டாந்த (டி gun.d.a:ntV
|
||||
_) க (ுண்டாய g
|
||||
_) க (ுண்டு g
|
||||
_) க (ுதிக் g
|
||||
_) க (ுதிச் g
|
||||
_) க (ுதித் g
|
||||
_) க (ுதிப் g
|
||||
@@ -122,6 +130,7 @@
|
||||
_) க (ுபுகுபு g
|
||||
_) க (ுபுக் g
|
||||
_) க (ுப்பென்ற g
|
||||
_) க (ுமாஸ்தா g
|
||||
_) க (ுமுகுமு g
|
||||
_) க (ும்பல g
|
||||
_) க (ும்மிடிப்பூண் g
|
||||
@@ -129,6 +138,7 @@
|
||||
_) க (ுருக்கள g
|
||||
_) க (ுருதேவ g
|
||||
_) க (ுருநா g
|
||||
_) க (ுருமார g
|
||||
_) க (ுருரா g
|
||||
_) க (ுருவா g
|
||||
_) க (ுருவாய g
|
||||
@@ -138,7 +148,9 @@
|
||||
_) க (ுருவுடை g
|
||||
_) க (ுருவோட g
|
||||
_) க (ூடலூர g
|
||||
_) க (ூர்க்கா g
|
||||
_) க (ெட்டி g
|
||||
_) க (ெட்டிரு k
|
||||
_) க (ேலி g
|
||||
_) க (ோகுல g
|
||||
_) க (ோதாவரி g
|
||||
@@ -147,11 +159,15 @@
|
||||
_) க (ோந்து g
|
||||
_) க (ோபப் k
|
||||
கோப (ால go:p
|
||||
_) க (ோபிகை g
|
||||
_) க (ோபிசெட் g
|
||||
_) கோப (ித்து ko:b
|
||||
_) க (ோபிநா g
|
||||
_) க (ோபிய g
|
||||
_) க (ோபுர g
|
||||
_) க (ோர_ g
|
||||
_) க (ோர_முடிய k
|
||||
_) க (ோர_வேண்ட k
|
||||
_) க (ோரக g
|
||||
_) க (ோரத g
|
||||
_) க (ோரப g
|
||||
@@ -169,6 +185,7 @@
|
||||
|
||||
//sort
|
||||
_கல்) க (ண்ட kV
|
||||
_நற்) க (தி gV
|
||||
_கல்) க (த்தா kV
|
||||
கொல்) க (த்தா kV
|
||||
மோ) க (ன HV
|
||||
@@ -180,7 +197,13 @@
|
||||
சுதா) க (ரின kV
|
||||
சுதா) க (ர்_ kV
|
||||
கல) க (ல kV
|
||||
க (வி kV
|
||||
வீண்) க (வலை kV
|
||||
மகா) க (வி kV
|
||||
மஹா) க (வி kV
|
||||
விகட) க (வி kV
|
||||
க (விஞ kV
|
||||
க (விராய kV
|
||||
வீண்) க (ஷ்ட kV
|
||||
ம) க (ா H
|
||||
தொல்) க (ாப்பி k
|
||||
கோயில்) க (ாளை k
|
||||
@@ -191,24 +214,37 @@
|
||||
கி (ரண g
|
||||
_) கி (ரஹ g
|
||||
_) கி (ராக்கி g
|
||||
_) கி (ராதக k
|
||||
_) கி (ராம g
|
||||
_) கி (ரீட k
|
||||
ங்) க (ிரு g
|
||||
கிரு (ஷ் kri
|
||||
_) கி (ரைண்டர g
|
||||
கி (லேச k
|
||||
_வட) க (ிழ k
|
||||
தென்) க (ிழ k
|
||||
நற்) க (ுண g
|
||||
_சற்) க (ுண g
|
||||
க (ுமார k
|
||||
_) கு (ரோத k
|
||||
க (ுல k
|
||||
_அங்) க (ுல g
|
||||
_) குல்க (ந்த gulkV
|
||||
குண்டல) க (ேசி k
|
||||
ம) க (ேசுவர H // need to restrict to _ம) and _வீரம) ??
|
||||
ம) க (ேந்திர H
|
||||
ம) க (ேஷ்வ H
|
||||
ம) க (ேஸ்வர H
|
||||
வீண்) க (ோப k
|
||||
துர்) க்க ggV#
|
||||
மார்) க்க ggV#
|
||||
மூர்) க்க ggV#
|
||||
_வர்) க்க ggV#
|
||||
_சொர்) க்க ggV#
|
||||
நிர்) க்க (தி ggV
|
||||
அ) க்க (ினி gg
|
||||
வி) க்ட (ோரியா kt. // victoria
|
||||
வி) க (்ரம k
|
||||
//endsort
|
||||
|
||||
|
||||
@@ -263,12 +299,12 @@
|
||||
_) சி (நே s
|
||||
_) சி (னே s
|
||||
_) ச (ின் tS
|
||||
_) சிரத்த (ை srVdd
|
||||
சி (ரம s
|
||||
_) சிரு (ஷ்டி sri
|
||||
_) ச (ீன tS
|
||||
_) ச (ீனிவா s
|
||||
சீ (னிவாச sri:
|
||||
_) ச (ீன்_ s
|
||||
_ஈ) சு s
|
||||
கே) சு (வ s
|
||||
மே) சு (வ s
|
||||
@@ -324,6 +360,7 @@
|
||||
_) ட (ிவிய t.
|
||||
_) ட (வல t.V
|
||||
_) ட (வர t.V
|
||||
_) ட (ேப t.
|
||||
|
||||
.group ண
|
||||
ண n.V
|
||||
@@ -357,12 +394,14 @@
|
||||
_) த (சரதர dV
|
||||
_) த (சரா dV
|
||||
_) த (சை dV
|
||||
_) த (டதட dV
|
||||
_) த (டபுடல dV
|
||||
_) த (டவை dV
|
||||
_) த (டால dV
|
||||
_) த (டிJ_பயல dV
|
||||
_) த (டிJ_புத்தக dV
|
||||
_) த (டிJ_மாட dV
|
||||
_) த (டிக்க dV
|
||||
_) த (டித்த dV
|
||||
_) த (டியன dV
|
||||
_) த (டியர dV
|
||||
@@ -374,7 +413,11 @@
|
||||
_) த (ண்டபாணி dV
|
||||
_) த (ண்டம dV
|
||||
_) த (ண்டாயுதபாணி dV
|
||||
_) த (ண்டிக்க dV
|
||||
_) த (ண்டித் dV
|
||||
_) த (ண்டிப்ப dV
|
||||
_) த (ண்டிப்பா dV
|
||||
_) த (ண்டியுங்கள dV
|
||||
_) த (னகோடி dV
|
||||
_) த (னசேகரன dV
|
||||
_) த (னன்ஜெயன dV
|
||||
@@ -404,10 +447,14 @@
|
||||
_) த (வம dV
|
||||
_) த (ாக்கா d
|
||||
_) த (ாக்காம t
|
||||
_) த (ாக்காவிட்டா t
|
||||
_) த (ாச d
|
||||
_) த (ாடி d
|
||||
_) த (ாட்சண்ய d
|
||||
_) த (ாட்சாய d
|
||||
_) த (ாதா d
|
||||
_) த (ானங் d
|
||||
_) த (ானத் d
|
||||
_) த (ானிய d
|
||||
_) த (ானுவ d
|
||||
_) த (ாம்_தூம d
|
||||
@@ -423,8 +470,10 @@
|
||||
_) த (ிக்கு d
|
||||
_) த (ிக்கு_முக்க t
|
||||
_) த (ிக்கு_வாய t
|
||||
_) த (ிக்குமுக்கா t
|
||||
_) த (ிக்கே d
|
||||
_) த (ிக்கை d
|
||||
_) த (ிக்விஜய d
|
||||
_) த (ிசை d
|
||||
_) த (ிடப d
|
||||
_) த (ிடம d
|
||||
@@ -449,18 +498,18 @@
|
||||
_) த (ிவாகர d
|
||||
_) த (ிவான d
|
||||
_) த (ிவ்ய d
|
||||
_) த (ீட்சை d
|
||||
_) த (ீப d
|
||||
_) த (ீப்ப t
|
||||
_) த (ீரச் d
|
||||
_) த (ீரத்துட d
|
||||
_) த (ீரன d
|
||||
_) த (ீரமில்ல d
|
||||
_) த (ீரரை d
|
||||
_) த (ீரர் d
|
||||
_) த (ீர்க d
|
||||
_) த (ீர்க்கலா t
|
||||
_) த (ீர்க்கா t
|
||||
_) த (ீர்க்க t
|
||||
_) த (ுக்க d
|
||||
_) த (ுக்கடா t
|
||||
_) த (ுக்கிரி t
|
||||
_) த (ுச்சம d
|
||||
_) த (ுச்சாதனன d
|
||||
_) த (ுட்ட d
|
||||
@@ -471,17 +520,22 @@
|
||||
_) த (ுரோண d
|
||||
_) த (ுர் d
|
||||
_) து (வந்த_ d
|
||||
_) து (வார d
|
||||
_) த (ுஷ் d
|
||||
_) த (ூசி d
|
||||
_) த (ூப d
|
||||
_) த (ூம d
|
||||
_) த (ூர d
|
||||
_) த (ூஷணை d
|
||||
_) த (ெய்வ d
|
||||
_) த (ேக d
|
||||
_) த (ேக்க t
|
||||
_) த (ேசத்தார d
|
||||
_) த (ேவகான d
|
||||
_) த (ேவகி d
|
||||
_) த (ேவதை d
|
||||
_) த (ேவன d
|
||||
_) த (ேவருலக d
|
||||
_) த (ேவர்க d
|
||||
_) த (ேவலோக d
|
||||
_) த (ேவாதி d
|
||||
@@ -492,6 +546,7 @@
|
||||
_) த (ேவி d
|
||||
_) த (ேவேந் d
|
||||
_) த (ைரிய d
|
||||
_) த (ொனி d
|
||||
_) த (ொபுக் d
|
||||
_) த (ொம் d
|
||||
_) த (ோசை d
|
||||
@@ -499,9 +554,11 @@
|
||||
//endsort
|
||||
|
||||
//sort
|
||||
|
||||
_வசந்) த tV#
|
||||
த (ன tV
|
||||
_கீ) த (ா t
|
||||
_சீ) த (ா t
|
||||
_ல) த (ா t
|
||||
அனி) த (ா t
|
||||
சுஜா) த (ா t
|
||||
@@ -528,9 +585,11 @@ _பார்வ) த (ி t
|
||||
_) து (ரோண t
|
||||
_) து (வேச d
|
||||
_) து (வேஷ d
|
||||
_) துவைத dvaItV#
|
||||
வீண்) த (ேவை t
|
||||
வீண்) த (ொல்லை t
|
||||
யு) த்த ddV#
|
||||
பு) த்த (ன ddV
|
||||
சி) த்த (ர ddV
|
||||
பு) த்த (ர ddV
|
||||
பு) த்த (ி dd
|
||||
சா) த்த (ிய dd
|
||||
@@ -540,8 +599,10 @@ _பார்வ) த (ி t
|
||||
பு) த்த (ியி dd
|
||||
உ) த்த (ியோக dd
|
||||
சமு) த்த (ிர dd
|
||||
அ) த்த (ெய்வ dd
|
||||
ச) த (்ய t
|
||||
நி) த (்ய t
|
||||
ச) த்ரபதி trVpVti
|
||||
சி) த (்ரா t
|
||||
பவி) த (்ரா t
|
||||
ச) த (்ரு t
|
||||
@@ -569,13 +630,11 @@ _பார்வ) த (ி t
|
||||
_) ப (T+ bV // if word has $alt attribute in ta_list
|
||||
_) ப (BT+ b // if word has $alt
|
||||
ப் (ப p
|
||||
ப pV
|
||||
ப (B p
|
||||
ப்) ப pV
|
||||
ப்) ப (B p
|
||||
L02) ப pV
|
||||
L02) ப (B p
|
||||
குஷ்) ப (ு b
|
||||
று) ப _pV
|
||||
று) ப(B _p
|
||||
|
||||
ம) ப pV
|
||||
ம) ப (ா p
|
||||
@@ -584,8 +643,6 @@ _பார்வ) த (ி t
|
||||
த) ப (ா p
|
||||
த) ப (B b
|
||||
|
||||
@) பத (ி pVt
|
||||
ன்) பத (ி bVd
|
||||
ப (ுர p
|
||||
ப (ால p
|
||||
ப (ாள p
|
||||
@@ -611,6 +668,7 @@ _பார்வ) த (ி t
|
||||
_) ப (ட்டன bV
|
||||
_) ப (ட்டன_ pV
|
||||
_) ப (தில bV
|
||||
_) பத்த (ிரகாளி bVdd
|
||||
_) ப (த்திரமா bV
|
||||
_) ப (ந்தங்கள bV
|
||||
_) ப (ந்தத் bV
|
||||
@@ -639,6 +697,7 @@ _பார்வ) த (ி t
|
||||
_) ப (லதேவ bV
|
||||
_) ப (லத்தை bV
|
||||
_) ப (லப்படு bV
|
||||
_) ப (லப்பரீட்சை bV
|
||||
_) ப (லம bV
|
||||
_) ப (லமுறை pV
|
||||
_) ப (லராம bV
|
||||
@@ -647,8 +706,10 @@ _பார்வ) த (ி t
|
||||
_) ப (லவீன bV
|
||||
_) ப (லஹீன bV
|
||||
_) பலாத்க (ார bVla:dk
|
||||
_) ப (லிபீட bV
|
||||
_) ப (லிய bV
|
||||
_) ப (லூன bV
|
||||
_) ப (வாணி bV
|
||||
_) ப (வ்ய bV
|
||||
_) ப (ஸ bV
|
||||
_) ப (ாகங்க b
|
||||
@@ -660,8 +721,15 @@ _பார்வ) த (ி t
|
||||
_) ப (ாடி_பில்டிங் b
|
||||
_) ப (ாணி b
|
||||
_) ப (ாதிக்க b
|
||||
_) ப (ாதிக்கு_ p
|
||||
_) ப (ாதிக்கும்_குறை p
|
||||
_) ப (ாதிக்கும்_மேற்பட்ட_ p
|
||||
_) ப (ாதிக்கும்_மேல p
|
||||
_) ப (ாதித்த b
|
||||
_) ப (ாதிப்ப b
|
||||
_) ப (ாதுஷா b
|
||||
_) பாத்த (ியதை ba:dd
|
||||
_) பாத்த (ியம்_ ba:dd
|
||||
_) ப (ாத்யதை b
|
||||
_) ப (ாத்ரூம b
|
||||
_) ப (ானு b
|
||||
@@ -675,9 +743,10 @@ _பார்வ) த (ி t
|
||||
_) ப (ாலக்காட p
|
||||
_) ப (ாலச b
|
||||
_) ப (ாலதண் b
|
||||
_) ப (ாலமு b
|
||||
_) ப (ாலமுர b
|
||||
_) ப (ாலாஜி b
|
||||
_) ப (ாலாபிஷேக p
|
||||
_) ப (ாலாம்பிக b
|
||||
_) ப (ாலாவ b
|
||||
_) ப (ாலின் p
|
||||
_) ப (ாலு b
|
||||
@@ -687,6 +756,18 @@ _பார்வ) த (ி t
|
||||
_) ப (ால் p
|
||||
_) ப (ால்_தாக்கரே b
|
||||
_) ப (ால்ய b
|
||||
_நேய_) ப (ாவ b
|
||||
_சிநேக_) ப (ாவ b
|
||||
_சினேக_) ப (ாவ b
|
||||
_முக_) ப (ாவ b
|
||||
_முகத்தின்_) ப (ாவ b
|
||||
முகங்களினுடைய_) ப (ாவ b
|
||||
முகங்களின்_) ப (ாவ b
|
||||
முகங்களிலிருந்த_) ப (ாவ b
|
||||
முகங்களிலிருந்து_) ப (ாவ b
|
||||
முகத்தினுடைய_) ப (ாவ b
|
||||
முகத்திலிருந்த_) ப (ாவ b
|
||||
முகத்திலிருந்து_) ப (ாவ b
|
||||
_) ப (ாவனா b
|
||||
_) ப (ாவனை b
|
||||
_) ப (ாவித்த b
|
||||
@@ -712,6 +793,7 @@ _பார்வ) த (ி t
|
||||
_) ப (ீம b
|
||||
_) ப (ீரங்கி b
|
||||
_) ப (ீராமணர b
|
||||
_) ப (ுக்தி b
|
||||
_) ப (ுட்டி b
|
||||
_) ப (ுதன b
|
||||
_) புத்த(K buddV
|
||||
@@ -724,8 +806,10 @@ _பார்வ) த (ி t
|
||||
_) ப (ுத்திய b
|
||||
_) ப (ுல்லாக்க b
|
||||
_) ப (ுவன b
|
||||
_) ப (ூகம்ப b
|
||||
_) ப (ூகோல b
|
||||
_) ப (ூட்ஸ b
|
||||
_) ப (ூதகணங்க b
|
||||
_) ப (ூதங் b
|
||||
_) ப (ூதத் b
|
||||
_) ப (ூதம b
|
||||
@@ -735,11 +819,11 @@ _பார்வ) த (ி t
|
||||
_) ப (ூமாதேவி b
|
||||
_) ப (ூமி b
|
||||
_) ப (ூலோக b
|
||||
_) ப (ூவுலக b
|
||||
_) ப (ெங்களூர b
|
||||
_) ப (ெட்ரூம b
|
||||
_) ப (ெர்லிங b
|
||||
_) ப (ெல் b
|
||||
_) ப (ெஸ்ட் b
|
||||
_) ப (ேஜார b
|
||||
_) ப (ேட்டரி b
|
||||
_) ப (ேதலித்த b
|
||||
@@ -749,6 +833,7 @@ _பார்வ) த (ி t
|
||||
_) ப (ைரவ b
|
||||
_) ப (ொம்மல b
|
||||
_) ப (ொம்மை b
|
||||
_) ப (ோகங்க b
|
||||
_) ப (ோஜ b
|
||||
_) ப (ோதன b
|
||||
_) ப (ோதித் b
|
||||
@@ -761,36 +846,83 @@ _பார்வ) த (ி t
|
||||
|
||||
//sort
|
||||
|
||||
|
||||
இயல்) ப bV#
|
||||
பரிதா) ப (+ bV#
|
||||
அனுதா) ப (+ bV#
|
||||
நன்) ப (கல pV
|
||||
பின்) ப (கல pV
|
||||
முன்) ப (கல pV
|
||||
நாலா) ப (க்க pV
|
||||
வட) ப (குதி pV
|
||||
தென்) ப (குதி pV
|
||||
ப (க்கK pV
|
||||
ப (டி pV
|
||||
மறு) ப (டி bV
|
||||
@) ப (ட்ச+ pV
|
||||
ப (ண pV
|
||||
_சிவ) ப (த pV
|
||||
கஜ) பதி pVti
|
||||
கண) பதி pVti
|
||||
ரகு) பதி pVti
|
||||
சீதா) பதி pVti
|
||||
சேது) பதி pVti
|
||||
தரணி) பதி pVti
|
||||
மகுட) பதி pVti
|
||||
பிரகஸ்) பதி pVti
|
||||
லக்ஷ்மி) பதி pVti
|
||||
வித்யா) பதி pVti
|
||||
அம்பிகா) பதி pVti
|
||||
வளையா) பதி pVti
|
||||
வேங்கட) பதி pVti
|
||||
மின்) ப (திப்ப+ pV
|
||||
காண்) பத (ில bVd
|
||||
பதை) ப (தை pV
|
||||
கல்) ப (னா pV
|
||||
நிரு) ப (மா pV
|
||||
அனு) ப (மா pV
|
||||
_ஊடு) ப (யிர pV
|
||||
பல) ப (ல pV
|
||||
_மூடு) ப (ல்லக் pV
|
||||
பள) ப (ள pV
|
||||
வட) ப (ழ pV
|
||||
வீண்) ப (ழி pV
|
||||
_தீ) ப (ா p
|
||||
சமன்) ப (ாட p
|
||||
முரன்) ப (ாட p
|
||||
ப (ாண்டி p
|
||||
ப (ாதை p
|
||||
ச) பாபதி ba:pVti
|
||||
எதிர்) ப (ார p
|
||||
_கா) ப (ாலி b
|
||||
அட) ப (ாவ p
|
||||
வீண்) ப (ாவ p
|
||||
அடி) ப (ாவி p
|
||||
கோ) ப (ி p
|
||||
ஆண்) ப (ிள்ளை p
|
||||
பெண்) ப (ிள்ளை p
|
||||
பூம்) ப (ுகார p
|
||||
ம்) ப (ுரா b
|
||||
நாலா) ப (ுற p
|
||||
ப (ுறK p
|
||||
மண்) ப (ுழு p
|
||||
பூம்) ப (ுஹார p
|
||||
ம்) ப (ூர b
|
||||
ராம்) ப (ூர p
|
||||
அ) ப (ூர்வ b
|
||||
இன்ஸ்) ப (ெக்டர p
|
||||
இளம்) ப (ெண் p
|
||||
ப (ெருமான p
|
||||
ப (ெற p // ?? end-of-word + suffix ??
|
||||
வீண்) ப (ேச்ச p
|
||||
ப (ோக_ p
|
||||
ப (ோகின்ற p
|
||||
ப (ோகிற p
|
||||
ப (ோதிலும்+ p
|
||||
ப (ோது+ p
|
||||
ப (ோதும்+ p
|
||||
ப (ோதும்_+ p
|
||||
ப (ோதே_+ p
|
||||
ப (ோன_ p
|
||||
ப (ோனா p
|
||||
ப (ோன்ற+ p // ?? end-of-word + suffix ??
|
||||
ப (ோய் p
|
||||
ப (ோல_ p
|
||||
@@ -800,10 +932,15 @@ _பார்வ) த (ி t
|
||||
ப (ோலப்_ p
|
||||
ப (ோலவே_ p
|
||||
ப (ோல்_+ p
|
||||
ப (ோவத p
|
||||
_டே) ப (் p
|
||||
கர்) ப்ப bbV#
|
||||
நிர்) ப்ப (ந்த bbV
|
||||
_ர) ப்ப (ர bbV
|
||||
துர்) ப்ப (ாக்கிய bb
|
||||
ஆர்) ப்ப (ாட்ட bb
|
||||
துர்) ப்ப (ோதனை bb
|
||||
கம்) ப்யூட (ர pjU:t.V
|
||||
//endsort
|
||||
|
||||
// If ப+ appearing in the middle of a word is followed by ட+
|
||||
@@ -814,6 +951,9 @@ _பார்வ) த (ி t
|
||||
ம்) ப (Bட b
|
||||
|
||||
//sort
|
||||
சித்தப்) பி(ரமை b
|
||||
_) பி(ராந்தியு b
|
||||
ஜெய) பி (ர p
|
||||
_) பி (ரகதீ b
|
||||
_) பி (ரகலாதன p
|
||||
_) பி (ரகஸ்பதி b
|
||||
@@ -822,6 +962,7 @@ _பார்வ) த (ி t
|
||||
_) பி (ரகாஷ p
|
||||
_) பி (ரக்ஞை p
|
||||
_) பி (ரசங் p
|
||||
_) பி (ரசன்ந p
|
||||
_) பி (ரசன்ன p
|
||||
_) பி (ரசவ p
|
||||
_) பி (ரசாத p
|
||||
@@ -829,6 +970,7 @@ _பார்வ) த (ி t
|
||||
_) பிரச (ார prVtS
|
||||
_) பி (ரசித்த p
|
||||
_) பி (ரசித்தி p
|
||||
_) பி (ரசுர p
|
||||
_) பி (ரச்சனை p
|
||||
_) பிரச (்னை prVtS
|
||||
_) பி (ரஜ p
|
||||
@@ -845,12 +987,14 @@ _பார்வ) த (ி t
|
||||
_) பி (ரமிப்ப b
|
||||
_) பி (ரமுகர p
|
||||
_) பி (ரமை b
|
||||
வீண்) பி (ரமை b
|
||||
_) பி (ரம்ம b
|
||||
_) பி (ரம்மன b
|
||||
_) பி (ரம்மை b
|
||||
_) பி (ரயத்தன p
|
||||
_) பி (ரயா p
|
||||
_) பி (ரயோக p
|
||||
துஷ்) பி (ரயோக p
|
||||
_) பி (ரயோசன p
|
||||
_) பி (ரயோஜன p
|
||||
_) பி (ரலய p
|
||||
@@ -859,18 +1003,29 @@ _பார்வ) த (ி t
|
||||
_) பி (ரவேச p
|
||||
_) பி (ரவேசி p
|
||||
_) பி (ரஷ்ட p
|
||||
_) பி (ரஸாத p
|
||||
_) பி (ரஸ்தா p
|
||||
_) பி (ரஹலாத p
|
||||
_) பி (ராகார p
|
||||
_) பி (ராணன p
|
||||
_) பி (ராணி p
|
||||
_) பி (ராண்ட p
|
||||
_) பி (ராதித் p
|
||||
பயப்) பி (ராந்தி b
|
||||
மனப்) பி (ராந்தி b
|
||||
_) பி (ராந்தியங் p
|
||||
_) பி (ராந்தியத் p
|
||||
_) பி (ராந்தியம்_ p
|
||||
_) பி (ராந்தியை b
|
||||
_) பி (ரான்தி_ b
|
||||
_) பி (ராப் p
|
||||
_) பி (ராமண b
|
||||
_) பி (ராமணன b
|
||||
_) பி (ராமின்_ b
|
||||
பி (ராய p
|
||||
_) பி (ரார்தன p
|
||||
_) பி (ரார்தி p
|
||||
_) பி (ரார்த்த p
|
||||
_) பி (ரிட b
|
||||
_) பி (ரித்தானி b
|
||||
_) பி (ரியன p
|
||||
@@ -976,6 +1131,7 @@ _பார்வ) த (ி t
|
||||
வ vV
|
||||
வ (B v
|
||||
_) வி (யா v
|
||||
வி (யூக v
|
||||
|
||||
|
||||
.group ஶ
|
||||
@@ -1018,13 +1174,16 @@ _பார்வ) த (ி t
|
||||
ஆ a:
|
||||
|
||||
இ i
|
||||
_) இ (ரா // silent before 'raa'
|
||||
_) இ (ராக i
|
||||
_) இ (ரான i
|
||||
_) இ (லட்சிய // silent
|
||||
_) இ (ரகசிய // silent
|
||||
_) இ (லேச // silent
|
||||
_) இ (ரத்த
|
||||
_) இ (ராம
|
||||
_) இ (ராவண
|
||||
_) இ (ராத்த
|
||||
_) இ (ராஜ
|
||||
_) இ (ராணுவ
|
||||
_) இ (லகுவாக
|
||||
|
||||
ஈ i:
|
||||
|
||||
|
||||
+70
-39
@@ -1,28 +1,29 @@
|
||||
// letters
|
||||
//vi_list
|
||||
// chữ cái - ABC
|
||||
b be
|
||||
c se
|
||||
d de
|
||||
đ d@:
|
||||
f E3p
|
||||
g g@:
|
||||
g D'e7
|
||||
h ha3t
|
||||
j gi
|
||||
k ka:
|
||||
l E
|
||||
m Em
|
||||
n En
|
||||
l El@:2
|
||||
m Em@:2
|
||||
n En@:2
|
||||
p pe
|
||||
q kwi
|
||||
r E
|
||||
s E3t
|
||||
r Ez.@:2
|
||||
s E3s
|
||||
t te
|
||||
v ve
|
||||
w v'ek,E3p
|
||||
x i3ts;
|
||||
x i3c
|
||||
z zE3t
|
||||
|
||||
// numbers
|
||||
_0 J'e1z.'o // dê-rô
|
||||
// số - numbers
|
||||
_0 x,o1N // không
|
||||
_1 m'o6t[ // một
|
||||
_2 h'a:I // hai
|
||||
_3 _b'a: // ba
|
||||
@@ -33,32 +34,32 @@ _7 _b'aI4 // bảy
|
||||
_8 t['a:3m // tám
|
||||
_9 c'i3n // chín
|
||||
_1X m'y@2j // mười
|
||||
_2X h'a:I||m'y@2j // hai mười
|
||||
_3X _b'a:||m'y@2j // ba mười
|
||||
_4X _b'o3n||m'y@2j // bốn mười
|
||||
_5X n'am||m'y@2j // năm mười
|
||||
_6X s.'aU3||m'y@2j // sáu mười
|
||||
_7X _b'aI4||m'y@2j // bảy mười
|
||||
_8X t['a:3m||m'y@2j // tám mười
|
||||
_9X c'i3n||m'y@2j // chín mười
|
||||
_2X h'a:I||m'y@7j // hai mươi
|
||||
_3X _b'a:||m'y@7j // ba mươi
|
||||
_4X _b'o3n||m'y@7j // bốn mươi
|
||||
_5X n'am||m'y@7j // năm mươi
|
||||
_6X s.'aU3||m'y@7j // sáu mươi
|
||||
_7X _b'aI4||m'y@7j // bảy mươi
|
||||
_8X t['a:3m||m'y@7j // tám mươi
|
||||
_9X c'i3n||m'y@7j // chín mươi
|
||||
|
||||
_21 h'a:I||m'y@2j||m'o3t[
|
||||
_31 _b'a:||m'y@2j||m'o3t[
|
||||
_41 _b'o3n||m'y@2j||m'o3t[
|
||||
_51 n'am||m'y@2j||m'o3t[
|
||||
_61 s.'aU3||m'y@2j||m'o3t[
|
||||
_71 _b'aI4||m'y@2j||m'o3t[
|
||||
_81 t['a:3m||m'y@2j||m'o3t[
|
||||
_91 c'i3n||m'y@2j||m'o3t[
|
||||
_21 h'a:I||m'y@7j||m'o3t[
|
||||
_31 _b'a:||m'y@7j||m'o3t[
|
||||
_41 _b'o3n||m'y@7j||m'o3t[
|
||||
_51 n'am||m'y@7j||m'o3t[
|
||||
_61 s.'aU3||m'y@7j||m'o3t[
|
||||
_71 _b'aI4||m'y@7j||m'o3t[
|
||||
_81 t['a:3m||m'y@7j||m'o3t[
|
||||
_91 c'i3n||m'y@7j||m'o3t[
|
||||
|
||||
_25 h'a:I||m'y@2j||l'a7m
|
||||
_35 _b'a:||m'y@2j||l'a7m
|
||||
_45 _b'o3n||m'y@2j||l'a7m
|
||||
_55 n'am||m'y@2j||l'a7m
|
||||
_65 s.'aU3||m'y@2j||l'a7m
|
||||
_75 _b'aI4||m'y@2j||l'a7m
|
||||
_85 t['a:3m||m'y@2j||l'a7m
|
||||
_95 c'i3n||m'y@2j||l'a7m
|
||||
_25 h'a:I||m'y@7j||l'a7m
|
||||
_35 _b'a:||m'y@7j||l'a7m
|
||||
_45 _b'o3n||m'y@7j||l'a7m
|
||||
_55 n'am||m'y@7j||l'a7m
|
||||
_65 s.'aU3||m'y@7j||l'a7m
|
||||
_75 _b'aI4||m'y@7j||l'a7m
|
||||
_85 t['a:3m||m'y@7j||l'a7m
|
||||
_95 c'i3n||m'y@7j||l'a7m
|
||||
|
||||
_0C cr'am // trăm
|
||||
_0M1 N'a:2n // ngàn
|
||||
@@ -67,8 +68,39 @@ _0M3 t['i4 // tỷ
|
||||
_0and l,in^ // linh
|
||||
_dpt _f,@I4_
|
||||
|
||||
// symbols
|
||||
_, f@I4
|
||||
// kí hiệu - symbols
|
||||
~ J'@U3N'a:5
|
||||
` J'@U3hw'i@2n
|
||||
_! J'@U3c'@3mt'a:7n
|
||||
@ a:1k'O2N
|
||||
# J'@U3t'a7N $max3
|
||||
$ J'@U3_d'o1l'a:7
|
||||
% f'@2ncr'a7m
|
||||
^ J'@U3m'u5
|
||||
& J'@U3v,a:2
|
||||
* J'@U3s.'a:U7 $max3
|
||||
_( m'@:4Nw'a6kh
|
||||
_) _d'O3NNw'a6kh
|
||||
_- Q'a:6cN'a:7N
|
||||
__ Q'a:6cJ'y@3j
|
||||
= J'@U3_b'a2N $max3
|
||||
+ J'@U3k'o6N $max3
|
||||
_{ m'@:4Nw'a6khn^'O6n
|
||||
_} _d'O3NNw'a6khn^'O6n
|
||||
_[ m'@:4Nw'a6khv'u@7N
|
||||
_] _d'O3NNw'a6khv'u@7N
|
||||
_| s'o4t'a4N
|
||||
_\ s'o4f,a:I4
|
||||
_: h'a:I1c'@3m
|
||||
_; c'@3mf'@I4
|
||||
_' Nw'a6kh_d'@:7n
|
||||
_“ Nw'a6khk'E3p
|
||||
_, f'@I4
|
||||
_. c'@3m
|
||||
_/ s'o4cr'a:I3
|
||||
_< n^'O4h'@:7n
|
||||
_> l'@:3nh'@:7n
|
||||
_? h'OI4c'@3m
|
||||
|
||||
// ?? found in festival wow_vi_ptn_phrasing.scm
|
||||
bị $u
|
||||
@@ -112,6 +144,5 @@ vẫn $u
|
||||
vì $u
|
||||
với $u
|
||||
|
||||
|
||||
internet int@:n'E3t
|
||||
|
||||
// từ gốc nước ngoài -common foreign language words
|
||||
internet int@:n'E3t
|
||||
|
||||
+416
-356
@@ -1,4 +1,3 @@
|
||||
|
||||
// replace combining (tone) accents with single characters
|
||||
.replace
|
||||
à à
|
||||
@@ -80,90 +79,95 @@ ỵ ỵ
|
||||
//================================
|
||||
|
||||
.group b
|
||||
b b
|
||||
_) b _b
|
||||
b b
|
||||
_) b _b
|
||||
|
||||
.group c
|
||||
c k
|
||||
c (_ kh
|
||||
ch c // try [tS;] [tS] [c]
|
||||
c k
|
||||
c (_ kh
|
||||
ch c // try [tS;] [tS] [c]
|
||||
|
||||
.group d
|
||||
d J // try [z] [J] [dZ] [dZ;] [J^]
|
||||
d J // try [z] [J] [dZ] [dZ;] [J^]
|
||||
|
||||
.group đ
|
||||
đ d
|
||||
_) đ _d
|
||||
đ d
|
||||
_) đ _d
|
||||
|
||||
.group f
|
||||
f f
|
||||
f f
|
||||
|
||||
|
||||
.group g
|
||||
g Q // try [g] [Q]
|
||||
gh Q // or [g] [Q]
|
||||
gi D // try [D] [z] [j] [J^] [z;] [J] [dZ]
|
||||
|
||||
g Q // try [g] [Q]
|
||||
gh Q // or [g] [Q]
|
||||
g (i D // try [D] [z] [j] [J^] [z;] [J] [dZ]
|
||||
g (ì D
|
||||
g (í D
|
||||
g (ỉ D
|
||||
g (ĩ D
|
||||
g (ị D
|
||||
gi D
|
||||
|
||||
.group h
|
||||
h h
|
||||
h h
|
||||
|
||||
|
||||
.group j
|
||||
j Z
|
||||
j Z
|
||||
|
||||
|
||||
.group k
|
||||
k k
|
||||
k (_ kh
|
||||
kh x
|
||||
k k
|
||||
k (_ kh
|
||||
kh x
|
||||
|
||||
.group l
|
||||
l l
|
||||
l l
|
||||
|
||||
.group m
|
||||
m m
|
||||
m m
|
||||
|
||||
.group n
|
||||
n n
|
||||
ng N
|
||||
ngh N
|
||||
nh n^
|
||||
n n
|
||||
ng N
|
||||
ngh N
|
||||
nh n^
|
||||
|
||||
.group ñ
|
||||
ñ n^
|
||||
ñ n^
|
||||
|
||||
.group p
|
||||
p p
|
||||
ph f
|
||||
p p
|
||||
ph f
|
||||
|
||||
.group q
|
||||
q k
|
||||
q (_ kh
|
||||
qu kw
|
||||
q k
|
||||
q (_ kh
|
||||
qu kw
|
||||
|
||||
.group r
|
||||
r z. // try [z] [z.] [r] [z;]
|
||||
r z. // try [z] [z.] [r] [z;]
|
||||
|
||||
.group s
|
||||
s s. // try [s.] [s] [S]
|
||||
s s. // try [s.] [s] [S]
|
||||
|
||||
.group t
|
||||
t t[
|
||||
th t
|
||||
tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]
|
||||
t t[
|
||||
th t
|
||||
tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]
|
||||
|
||||
.group v
|
||||
v v
|
||||
v v
|
||||
|
||||
.group w
|
||||
w w
|
||||
w w
|
||||
|
||||
.group x
|
||||
x s
|
||||
x s
|
||||
|
||||
.group z
|
||||
z z
|
||||
z z
|
||||
|
||||
|
||||
//================================
|
||||
@@ -171,488 +175,544 @@ ỵ ỵ
|
||||
//================================
|
||||
|
||||
.group a
|
||||
a a:
|
||||
ai a:I
|
||||
aì a:I2
|
||||
aí a:I3
|
||||
aỉ a:I4
|
||||
aĩ a:I5
|
||||
aị a:I6
|
||||
ay aI
|
||||
aỳ aI2
|
||||
aý aI3
|
||||
aỷ aI4
|
||||
aỹ aI5
|
||||
aỵ aI6
|
||||
ao a:U
|
||||
aò a:U2
|
||||
aó a:U3
|
||||
aỏ a:U4
|
||||
aõ a:U5
|
||||
aọ a:U6
|
||||
au aU
|
||||
aù aU2
|
||||
aú aU3
|
||||
aủ aU4
|
||||
aũ aU5
|
||||
aụ aU6
|
||||
a a:
|
||||
ai a:I
|
||||
aì a:I2
|
||||
aí a:I3
|
||||
aỉ a:I4
|
||||
aĩ a:I5
|
||||
aị a:I6
|
||||
ay aI
|
||||
aỳ aI2
|
||||
aý aI3
|
||||
aỷ aI4
|
||||
aỹ aI5
|
||||
aỵ aI6
|
||||
ao a:U
|
||||
aò a:U2
|
||||
aó a:U3
|
||||
aỏ a:U4
|
||||
aõ a:U5
|
||||
aọ a:U6
|
||||
au aU
|
||||
aù aU2
|
||||
aú aU3
|
||||
aủ aU4
|
||||
aũ aU5
|
||||
aụ aU6
|
||||
|
||||
.group à
|
||||
à a:2
|
||||
ài a:I2
|
||||
ày aI2
|
||||
ào a:U2
|
||||
àu aU2
|
||||
à a:2
|
||||
ài a:I2
|
||||
ày aI2
|
||||
ào a:U2
|
||||
àu aU2
|
||||
|
||||
.group á
|
||||
á a:3
|
||||
ái a:I3
|
||||
áy aI3
|
||||
áo a:U3
|
||||
áu aU3
|
||||
á a:3
|
||||
ái a:I3
|
||||
áy aI3
|
||||
áo a:U3
|
||||
áu aU3
|
||||
|
||||
.group ả
|
||||
ả a:4
|
||||
ải a:I4
|
||||
ảy aI4
|
||||
ảo a:U4
|
||||
ảu aU4
|
||||
ả a:4
|
||||
ải a:I4
|
||||
ảy aI4
|
||||
ảo a:U4
|
||||
ảu aU4
|
||||
|
||||
.group ã
|
||||
ã a:5
|
||||
ãi a:I5
|
||||
ãy aI5
|
||||
ão a:U5
|
||||
ãu aU5
|
||||
ã a:5
|
||||
ãi a:I5
|
||||
ãy aI5
|
||||
ão a:U5
|
||||
ãu aU5
|
||||
|
||||
.group ạ
|
||||
ạ a:6
|
||||
ại a:I6
|
||||
ạy aI6
|
||||
ạo a:U6
|
||||
ạu aU6
|
||||
ạ a:6
|
||||
ại a:I6
|
||||
ạy aI6
|
||||
ạo a:U6
|
||||
ạu aU6
|
||||
|
||||
//================================
|
||||
.group ă
|
||||
ă a
|
||||
ă a
|
||||
|
||||
.group ằ
|
||||
ằ a2
|
||||
ằ a2
|
||||
|
||||
.group ắ
|
||||
ắ a3
|
||||
ắ a3
|
||||
|
||||
.group ẳ
|
||||
ẳ a4
|
||||
ẳ a4
|
||||
|
||||
.group ẵ
|
||||
ẵ a5
|
||||
ẵ a5
|
||||
|
||||
.group ặ
|
||||
ặ a6
|
||||
ặ a6
|
||||
|
||||
//=================================
|
||||
.group â
|
||||
â @
|
||||
ây @I
|
||||
âu @U
|
||||
â @
|
||||
ây @I
|
||||
âu @U
|
||||
|
||||
.group ầ
|
||||
ầ @2
|
||||
ầy @I2
|
||||
ầu @U2
|
||||
ầ @2
|
||||
ầy @I2
|
||||
ầu @U2
|
||||
|
||||
.group ấ
|
||||
ấ @3
|
||||
ấy @I3
|
||||
ấu @U3
|
||||
ấ @3
|
||||
ấy @I3
|
||||
ấu @U3
|
||||
|
||||
.group ẩ
|
||||
ẩ @4
|
||||
ẩy @I4
|
||||
ẩu @U4
|
||||
ẩ @4
|
||||
ẩy @I4
|
||||
ẩu @U4
|
||||
|
||||
.group ẫ
|
||||
ẫ @5
|
||||
ẫy @I5
|
||||
ẫu @U5
|
||||
ẫ @5
|
||||
ẫy @I5
|
||||
ẫu @U5
|
||||
|
||||
.group ậ
|
||||
ậ @6
|
||||
ậy @I6
|
||||
ậu @U6
|
||||
ậ @6
|
||||
ậy @I6
|
||||
ậu @U6
|
||||
|
||||
//===========================
|
||||
.group e
|
||||
e E
|
||||
eo EU
|
||||
eò EU2
|
||||
eó EU3
|
||||
eỏ EU4
|
||||
eỗ EU5
|
||||
eọ EU6
|
||||
e E
|
||||
eo EU
|
||||
eò EU2
|
||||
eó EU3
|
||||
eỏ EU4
|
||||
eỗ EU5
|
||||
eọ EU6
|
||||
|
||||
.group è
|
||||
è E2
|
||||
èo EU2
|
||||
è E2
|
||||
èo EU2
|
||||
|
||||
.group é
|
||||
é E3
|
||||
éo EU3
|
||||
é E3
|
||||
éo EU3
|
||||
|
||||
.group ẻ
|
||||
ẻ E4
|
||||
ẻo EU4
|
||||
ẻ E4
|
||||
ẻo EU4
|
||||
|
||||
.group ẽ
|
||||
ẽ E5
|
||||
ẽo EU5
|
||||
ẽ E5
|
||||
ẽo EU5
|
||||
|
||||
.group ẹ
|
||||
ẹ E6
|
||||
ẹo EU6
|
||||
ẹ E6
|
||||
ẹo EU6
|
||||
|
||||
//============================
|
||||
|
||||
.group ê
|
||||
ê e
|
||||
êu eU
|
||||
ê e
|
||||
êu eU
|
||||
|
||||
.group ề
|
||||
ề e2
|
||||
ều eU2
|
||||
ề e2
|
||||
ều eU2
|
||||
|
||||
.group ế
|
||||
ế e3
|
||||
ếu eU3
|
||||
ế e3
|
||||
ếu eU3
|
||||
|
||||
.group ể
|
||||
ể e4
|
||||
ểu eU4
|
||||
ể e4
|
||||
ểu eU4
|
||||
|
||||
.group ễ
|
||||
ễ e5
|
||||
ễu eU5
|
||||
ễ e5
|
||||
ễu eU5
|
||||
|
||||
.group ệ
|
||||
ệ e6
|
||||
ệu eU6
|
||||
ệ e6
|
||||
ệu eU6
|
||||
|
||||
|
||||
//============================
|
||||
.group i
|
||||
i i
|
||||
i (A j
|
||||
ia i@
|
||||
ià i@2
|
||||
iá i@3
|
||||
iả i@4
|
||||
iã i@5
|
||||
iạ i@6
|
||||
iê i@
|
||||
iề i@2
|
||||
iế i@3
|
||||
iể i@4
|
||||
iễ i@5
|
||||
iệ i@6
|
||||
iu iU
|
||||
iù iU2
|
||||
iú iU3
|
||||
iủ iU4
|
||||
iũ iU5
|
||||
iụ iU6
|
||||
i i
|
||||
i (A j
|
||||
ia i@
|
||||
ià i@2
|
||||
iá i@3
|
||||
iả i@4
|
||||
iã i@5
|
||||
iạ i@6
|
||||
iê i@
|
||||
iề i@2
|
||||
iế i@3
|
||||
iể i@4
|
||||
iễ i@5
|
||||
iệ i@6
|
||||
iu iU
|
||||
iù iU2
|
||||
iú iU3
|
||||
iủ iU4
|
||||
iũ iU5
|
||||
iụ iU6
|
||||
// iêu i@U
|
||||
|
||||
.group ì
|
||||
ì i2
|
||||
ì (A j2
|
||||
ìa i@2
|
||||
ìu iU2
|
||||
ì i2
|
||||
ì (A j2
|
||||
ìa i@2
|
||||
ìu iU2
|
||||
|
||||
.group í
|
||||
í i3
|
||||
í (A j3
|
||||
ía i@3
|
||||
íu iU3
|
||||
í i3
|
||||
í (A j3
|
||||
ía i@3
|
||||
íu iU3
|
||||
|
||||
.group ỉ
|
||||
ỉ i4
|
||||
ỉ (A j4
|
||||
ỉa i@4
|
||||
ỉu iU4
|
||||
ỉ i4
|
||||
ỉ (A j4
|
||||
ỉa i@4
|
||||
ỉu iU4
|
||||
|
||||
.group ĩ
|
||||
ĩ i5
|
||||
ĩ (A j5
|
||||
ĩa i@5
|
||||
ĩu iU5
|
||||
ĩ i5
|
||||
ĩ (A j5
|
||||
ĩa i@5
|
||||
ĩu iU5
|
||||
|
||||
.group ị
|
||||
ị i6
|
||||
ị (A j6
|
||||
ịa i@6
|
||||
ịu iU6
|
||||
ị i6
|
||||
ị (A j6
|
||||
ịa i@6
|
||||
ịu iU6
|
||||
|
||||
|
||||
|
||||
//=========================
|
||||
.group o
|
||||
o O
|
||||
o (A w
|
||||
oi OI
|
||||
oì OI2
|
||||
oí OI3
|
||||
oỉ OI4
|
||||
oĩ OI5
|
||||
oị OI6
|
||||
o O
|
||||
o (A w
|
||||
oi OI
|
||||
oì OI2
|
||||
oí OI3
|
||||
oỉ OI4
|
||||
oĩ OI5
|
||||
oị OI6
|
||||
|
||||
.group ò
|
||||
ò O2
|
||||
òi OI2
|
||||
ò (A w2
|
||||
ò O2
|
||||
òi OI2
|
||||
ò (A w2
|
||||
|
||||
.group ó
|
||||
ó O3
|
||||
ói OI3
|
||||
ó (A w3
|
||||
ó O3
|
||||
ói OI3
|
||||
ó (A w3
|
||||
|
||||
.group ỏ
|
||||
ỏ O4
|
||||
ỏi OI4
|
||||
ỏ (A w4
|
||||
ỏ O4
|
||||
ỏi OI4
|
||||
ỏ (A w4
|
||||
|
||||
.group õ
|
||||
õ O5
|
||||
õi OI5
|
||||
õ (A w5
|
||||
õ O5
|
||||
õi OI5
|
||||
õ (A w5
|
||||
|
||||
.group ọ
|
||||
ọ O6
|
||||
ọi OI6
|
||||
ọ (A w6
|
||||
ọ O6
|
||||
ọi OI6
|
||||
ọ (A w6
|
||||
|
||||
|
||||
//=============================
|
||||
.group ô
|
||||
ô o
|
||||
ôi oI
|
||||
ô o
|
||||
ôi oI
|
||||
|
||||
.group ồ
|
||||
ồ o2
|
||||
ồi oI2
|
||||
ồ o2
|
||||
ồi oI2
|
||||
|
||||
.group ố
|
||||
ố o3
|
||||
ối oI3
|
||||
ố o3
|
||||
ối oI3
|
||||
|
||||
.group ổ
|
||||
ổ o4
|
||||
ổi oI4
|
||||
ổ o4
|
||||
ổi oI4
|
||||
|
||||
.group ỗ
|
||||
ỗ o5
|
||||
ỗi oI5
|
||||
ỗ o5
|
||||
ỗi oI5
|
||||
|
||||
.group ộ
|
||||
ộ o6
|
||||
ội oI6
|
||||
ộ o6
|
||||
ội oI6
|
||||
|
||||
|
||||
|
||||
//=============================
|
||||
.group ơ
|
||||
ơ @:
|
||||
ơi @:I
|
||||
ơu @:U
|
||||
ơ @:
|
||||
ơi @:I
|
||||
ơu @:U
|
||||
|
||||
.group ờ
|
||||
ờ @:2
|
||||
ời @:I2
|
||||
ờu @:U2
|
||||
ờ @:2
|
||||
ời @:I2
|
||||
ờu @:U2
|
||||
|
||||
.group ớ
|
||||
ớ @:3
|
||||
ới @:I3
|
||||
ớu @:U3
|
||||
ớ @:3
|
||||
ới @:I3
|
||||
ớu @:U3
|
||||
|
||||
.group ở
|
||||
ở @:4
|
||||
ởi @:I4
|
||||
ởu @:U4
|
||||
ở @:4
|
||||
ởi @:I4
|
||||
ởu @:U4
|
||||
|
||||
.group ỡ
|
||||
ỡ @:5
|
||||
ỡi @:I5
|
||||
ỡu @:U5
|
||||
ỡ @:5
|
||||
ỡi @:I5
|
||||
ỡu @:U5
|
||||
|
||||
.group ợ
|
||||
ợ @:6
|
||||
ợi @:I6
|
||||
ợu @:U6
|
||||
ợ @:6
|
||||
ợi @:I6
|
||||
ợu @:U6
|
||||
|
||||
|
||||
|
||||
//=============================
|
||||
.group u
|
||||
u u
|
||||
u (A w
|
||||
A) u w
|
||||
ui uI
|
||||
uì uI2
|
||||
uí uI3
|
||||
uỉ uI4
|
||||
uĩ uI5
|
||||
uị uI6
|
||||
ua u@
|
||||
uà u@2
|
||||
uá u@3
|
||||
uả u@4
|
||||
uã u@5
|
||||
uạ u@6
|
||||
uô u@
|
||||
uồ u@2
|
||||
uố u@3
|
||||
uổ u@4
|
||||
uỗ u@5
|
||||
uộ u@6
|
||||
uôi u@j
|
||||
uồi u@j2
|
||||
uối u@j3
|
||||
uổi u@j4
|
||||
uỗi u@j5
|
||||
uội u@j6
|
||||
u u
|
||||
u (A w
|
||||
A) u w
|
||||
ui uI
|
||||
uì uI2
|
||||
uí uI3
|
||||
uỉ uI4
|
||||
uĩ uI5
|
||||
uị uI6
|
||||
ua u@
|
||||
uà u@2
|
||||
uá u@3
|
||||
uả u@4
|
||||
uã u@5
|
||||
uạ u@6
|
||||
uô u@
|
||||
uồ u@2
|
||||
uố u@3
|
||||
uổ u@4
|
||||
uỗ u@5
|
||||
uộ u@6
|
||||
uôi u@j
|
||||
uồi u@j2
|
||||
uối u@j3
|
||||
uổi u@j4
|
||||
uỗi u@j5
|
||||
uội u@j6
|
||||
|
||||
.group ù
|
||||
ù u2
|
||||
ù (A w2
|
||||
ùi uI2
|
||||
ùa u@2
|
||||
ù u2
|
||||
ù (A w2
|
||||
ùi uI2
|
||||
ùa u@2
|
||||
|
||||
.group ú
|
||||
ú u3
|
||||
ú (A w3
|
||||
úi uI3
|
||||
úa u@3
|
||||
ú u3
|
||||
ú (A w3
|
||||
úi uI3
|
||||
úa u@3
|
||||
|
||||
.group ủ
|
||||
ủ u4
|
||||
ủ (A w4
|
||||
ủi uI4
|
||||
ủa u@4
|
||||
ủ u4
|
||||
ủ (A w4
|
||||
ủi uI4
|
||||
ủa u@4
|
||||
|
||||
.group ũ
|
||||
ũ u5
|
||||
ũ (A w5
|
||||
ũi uI5
|
||||
ũa u@5
|
||||
ũ u5
|
||||
ũ (A w5
|
||||
ũi uI5
|
||||
ũa u@5
|
||||
|
||||
.group ụ
|
||||
ụ u6
|
||||
ụ (A w6
|
||||
ụi uI6
|
||||
ụa u@6
|
||||
ụ u6
|
||||
ụ (A w6
|
||||
ụi uI6
|
||||
ụa u@6
|
||||
|
||||
//=============================
|
||||
.group ư
|
||||
ư y
|
||||
ưi yI
|
||||
ưa y@
|
||||
ươ y@
|
||||
ườ y@2
|
||||
ướ y@3
|
||||
ưở y@4
|
||||
ưỡ y@5
|
||||
ượ y@6
|
||||
ưu yw
|
||||
ươi y@j
|
||||
ười y@j2
|
||||
ưới y@j3
|
||||
ưởi y@j4
|
||||
ưỡi y@j5
|
||||
ượi y@j6
|
||||
ươu y@w
|
||||
ườu y@w2
|
||||
ướu y@w3
|
||||
ưởu y@w4
|
||||
ưỡu y@w5
|
||||
ượu y@w6
|
||||
ư y
|
||||
ưi yI
|
||||
ưa y@
|
||||
ươ y@
|
||||
ườ y@2
|
||||
ướ y@3
|
||||
ưở y@4
|
||||
ưỡ y@5
|
||||
ượ y@6
|
||||
ưu yw
|
||||
ươi y@j
|
||||
ười y@j2
|
||||
ưới y@j3
|
||||
ưởi y@j4
|
||||
ưỡi y@j5
|
||||
ượi y@j6
|
||||
ươu y@w
|
||||
ườu y@w2
|
||||
ướu y@w3
|
||||
ưởu y@w4
|
||||
ưỡu y@w5
|
||||
ượu y@w6
|
||||
|
||||
.group ừ
|
||||
ừ y2
|
||||
ừi yI2
|
||||
ừa y@2
|
||||
ừu yw2
|
||||
ừ y2
|
||||
ừi yI2
|
||||
ừa y@2
|
||||
ừu yw2
|
||||
|
||||
.group ứ
|
||||
ứ y3
|
||||
ứi yI3
|
||||
ứa y@3
|
||||
ứu yw3
|
||||
ứ y3
|
||||
ứi yI3
|
||||
ứa y@3
|
||||
ứu yw3
|
||||
|
||||
.group ử
|
||||
ử y4
|
||||
ửi yI4
|
||||
ửa y@4
|
||||
ửu yw4
|
||||
ử y4
|
||||
ửi yI4
|
||||
ửa y@4
|
||||
ửu yw4
|
||||
|
||||
.group ữ
|
||||
ữ y5
|
||||
ữi yI5
|
||||
ữa y@5
|
||||
ữu yw5
|
||||
ữ y5
|
||||
ữi yI5
|
||||
ữa y@5
|
||||
ữu yw5
|
||||
|
||||
.group ự
|
||||
ự y6
|
||||
ựi yI6
|
||||
ựa y@6
|
||||
ựu yw6
|
||||
ự y6
|
||||
ựi yI6
|
||||
ựa y@6
|
||||
ựu yw6
|
||||
|
||||
|
||||
|
||||
.group y
|
||||
y i
|
||||
y (A j
|
||||
ya i@
|
||||
yà i@2
|
||||
yá i@3
|
||||
yả i@4
|
||||
yã i@5
|
||||
yạ i@6
|
||||
yê i@
|
||||
yề i@2
|
||||
yế i@3
|
||||
yể i@4
|
||||
yễ i@5
|
||||
yệ i@6
|
||||
y i
|
||||
y (A j
|
||||
ya i@
|
||||
yà i@2
|
||||
yá i@3
|
||||
yả i@4
|
||||
yã i@5
|
||||
yạ i@6
|
||||
yê i@
|
||||
yề i@2
|
||||
yế i@3
|
||||
yể i@4
|
||||
yễ i@5
|
||||
yệ i@6
|
||||
// yêu i@U
|
||||
|
||||
.group ỳ
|
||||
ỳ i2
|
||||
ỳ (A j2
|
||||
ỳa i@2
|
||||
ỳ i2
|
||||
ỳ (A j2
|
||||
ỳa i@2
|
||||
|
||||
.group ý
|
||||
ý i3
|
||||
ý (A j3
|
||||
ýa i@3
|
||||
ý i3
|
||||
ý (A j3
|
||||
ýa i@3
|
||||
|
||||
.group ỷ
|
||||
ỷ i4
|
||||
ỷ (A j4
|
||||
ỷa i@4
|
||||
ỷ i4
|
||||
ỷ (A j4
|
||||
ỷa i@4
|
||||
|
||||
.group ỹ
|
||||
ỹ i5
|
||||
ỹ (A j5
|
||||
ỹa i@5
|
||||
ỹ i5
|
||||
ỹ (A j5
|
||||
ỹa i@5
|
||||
|
||||
.group ỵ
|
||||
ỵ i6
|
||||
ỵ (A j6
|
||||
ỵa i@6
|
||||
ỵ i6
|
||||
ỵ (A j6
|
||||
ỵa i@6
|
||||
|
||||
.group 0xce // Greek letters
|
||||
// 0xce is the first byte of the utf-8 code for these characters
|
||||
|
||||
α a:1n_|f'a:1
|
||||
ά a:1n_|f'a:1
|
||||
β b'e1_|t['a:1
|
||||
γ Q'a:1_|m'a:1
|
||||
δ J'E1n_|t['a:1
|
||||
ε E1p_|s'i1_|l'O1n
|
||||
έ E1p_|s'i1_|l'O1n
|
||||
ζ D'e1_|t['a:1
|
||||
η e1_|t['a:1
|
||||
ή e1_|t['a:1
|
||||
θ t'e1_|t['a:1
|
||||
ι i1_|'o1_|t['a:1
|
||||
ί i1_|'o1_|t['a:1
|
||||
κ k'a:1p_|p'a:1
|
||||
λ l'a1m_|_d'a:1
|
||||
μ mw'i1
|
||||
ν nw'i1
|
||||
ξ s'i7
|
||||
ο o1_|m'i1_|kz.'O7n
|
||||
|
||||
.group 0xcf // Greek letters
|
||||
|
||||
π p'i1
|
||||
ρ z.'o1
|
||||
σ s'i3c_|m'a:1
|
||||
ς s'i3c_|m'a:1
|
||||
τ t['o1
|
||||
υ u1p_|s'i1_|l'O1n
|
||||
ύ u1p_|s'i1_|l'O1n
|
||||
φ f'i1
|
||||
χ c'i1
|
||||
ψ ps'i1
|
||||
ω o1_|m'e1_|Q'a:7
|
||||
ώ o1_|m'e1_|Q'a:7
|
||||
ό o1_|m'i1_|kz.'O7n
|
||||
|
||||
|
||||
.group
|
||||
$ d'o||l'a
|
||||
% f'@2n||tS;'am
|
||||
% f'@2n||tS;'am
|
||||
! _:c'@3m_|t'a:7n_:
|
||||
! (\!
|
||||
// : koUl@n
|
||||
D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30
|
||||
$ d'o||l'a
|
||||
!= x,o1N_|_b'a2N_
|
||||
>= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N
|
||||
<= n^'O4_|h'@:1n_|hw,a6kh_b'a2N
|
||||
|
||||
|
||||
__) - (_D cr'y2
|
||||
A_) - (_D _
|
||||
C_) - (_D _
|
||||
|
||||
|
||||
. c'@3m_
|
||||
. (. _:
|
||||
\.) .
|
||||
|
||||
|
||||
+4
-4
@@ -220,11 +220,11 @@ $textmode
|
||||
护 hu4
|
||||
横 heng2
|
||||
环 huan2
|
||||
似 shi4
|
||||
似 si4
|
||||
殿 dian4
|
||||
品 pin3
|
||||
塞 sai1
|
||||
候 hou5
|
||||
候 hou4
|
||||
蛋 dan4
|
||||
絲 si1
|
||||
樓 lou2
|
||||
@@ -1361,7 +1361,7 @@ $textmode
|
||||
遥 yao2
|
||||
司 si1
|
||||
钓 diao4
|
||||
训 xun5
|
||||
训 xun4
|
||||
奶 nai3
|
||||
阿 a1
|
||||
倦 juan4
|
||||
@@ -1930,7 +1930,7 @@ $textmode
|
||||
款 kuan3
|
||||
臥 wo4
|
||||
鵲 que5
|
||||
訓 xun5
|
||||
訓 xun4
|
||||
鲜 xian1
|
||||
锭 ding4
|
||||
奴 nu2
|
||||
|
||||
+97
-56
@@ -1,4 +1,4 @@
|
||||
60 phoneme tables
|
||||
62 phoneme tables
|
||||
new total
|
||||
base 99 99
|
||||
consonants 9 107
|
||||
@@ -17,7 +17,7 @@ consonants 9 107
|
||||
jbo 2 111
|
||||
nci 3 120
|
||||
fi 40 130
|
||||
fr 55 137
|
||||
fr 56 137
|
||||
fr_ca 11 137
|
||||
hi 58 145
|
||||
ta 21 149
|
||||
@@ -42,7 +42,7 @@ consonants 9 107
|
||||
grc 12 124
|
||||
sv 23 121
|
||||
no 28 125
|
||||
is 32 125
|
||||
is 42 135
|
||||
ru 39 130
|
||||
vi 41 136
|
||||
zhy 41 133
|
||||
@@ -59,7 +59,9 @@ consonants 9 107
|
||||
ne 18 153
|
||||
pa 14 147
|
||||
prs 8 106
|
||||
sl 6 130
|
||||
gd 6 99
|
||||
bg 10 115
|
||||
|
||||
Data file Used by
|
||||
b/b [b] base
|
||||
@@ -104,7 +106,6 @@ d/dr [*] base
|
||||
[d[] base
|
||||
[d] base2
|
||||
[d] fi
|
||||
[d] fr
|
||||
[d.] hi
|
||||
[dh.] hi
|
||||
[d] hu
|
||||
@@ -199,6 +200,7 @@ envelope/p_rise [3] vi
|
||||
[35] zh
|
||||
envelope/vi_5amp [5] vi
|
||||
envelope/vi_6amp [6] vi
|
||||
g2/g [g] fr
|
||||
g2/xg [gh] hi
|
||||
g/g [g] base
|
||||
[g-] en
|
||||
@@ -251,22 +253,28 @@ j/j_ [j] base
|
||||
[j] zh
|
||||
j/j@ [j] base
|
||||
[j] de
|
||||
[j/] fr
|
||||
[j] zh
|
||||
j/ja [j] base
|
||||
[j] de
|
||||
[j/] fr
|
||||
[j] zh
|
||||
j/je [j] base
|
||||
[j] de
|
||||
[j/] fr
|
||||
[j] zh
|
||||
j/ji [j] base
|
||||
[j] de
|
||||
[j/] fr
|
||||
[j] zh
|
||||
j/jo [j] base
|
||||
[j] de
|
||||
[j/] fr
|
||||
[j] zh
|
||||
j/_j_short [j] de
|
||||
j/ju [j] base
|
||||
[j] de
|
||||
[j/] fr
|
||||
[j] zh
|
||||
j/xj [j] base
|
||||
[j] de
|
||||
@@ -322,12 +330,10 @@ l/l_ [l/] base
|
||||
[l/] fr
|
||||
l/l_@ [l/3] base
|
||||
[W] fr
|
||||
[Y] fr
|
||||
[l/] fr
|
||||
l/l@ [] base
|
||||
[L] base
|
||||
[W] fr
|
||||
[Y] fr
|
||||
[l] fr
|
||||
l/L1_aL [l/] base
|
||||
[l/] de
|
||||
@@ -353,7 +359,6 @@ l/l_3 [l/] de
|
||||
l/l_4 [ll] sq
|
||||
l/la [] base
|
||||
[L] base
|
||||
[a] fr
|
||||
[l] fr
|
||||
l/l_a [l/3] base
|
||||
[l/] fr
|
||||
@@ -373,6 +378,8 @@ l/li [] base
|
||||
l/l_i [l/3] base
|
||||
[l/] fr
|
||||
[i] sq
|
||||
ll/ll [L] bg
|
||||
ll/_ll [L] bg
|
||||
l/l_long [l] base
|
||||
[l] fr
|
||||
l/lo [] base
|
||||
@@ -380,15 +387,14 @@ l/lo [] base
|
||||
[l] fr
|
||||
l/l_o [l/3] base
|
||||
[l/] fr
|
||||
[o2] fr
|
||||
l^/l_rfx [l.] base
|
||||
l/lu [] base
|
||||
[L] base
|
||||
[l] fr
|
||||
[w^i] fr
|
||||
l/l_u [l/3] base
|
||||
[l/] fr
|
||||
l/l_vi [l] vi
|
||||
ll/xll [L] bg
|
||||
l/l_y [y] fr
|
||||
l/tl [l] base
|
||||
[l] fr
|
||||
@@ -516,6 +522,8 @@ r3/r_uvl.wav [r"] base
|
||||
r3/rx [*] base
|
||||
[r/] base
|
||||
[r/] af
|
||||
[r] fr
|
||||
[r/] fr
|
||||
[r/2] fr
|
||||
[R] fr_ca
|
||||
[x] pt_pt
|
||||
@@ -590,6 +598,7 @@ ufric/ll [L] base
|
||||
[l#] is
|
||||
ufric/s [s] base
|
||||
[s] fr
|
||||
[z2] fr
|
||||
[s] es
|
||||
[z] sq
|
||||
ufric/s_ [s] base
|
||||
@@ -597,7 +606,6 @@ ufric/s_ [s] base
|
||||
[s2] consonants
|
||||
[s] fr
|
||||
[z] fr
|
||||
[z2] fr
|
||||
[s] es
|
||||
[z;] ro
|
||||
[z] sq
|
||||
@@ -773,6 +781,7 @@ ustop/t_short [t] fr
|
||||
[t] lv
|
||||
[t] sk
|
||||
[t] el
|
||||
ustop/t_short_ [t] fr
|
||||
ustop/tsh_pzd [tS;] zh
|
||||
ustop/tsh_pzd_unasp [tS;] zh
|
||||
ustop/tsh_sr [tS] sr
|
||||
@@ -835,7 +844,7 @@ vdiph2/o@ [o@] af
|
||||
vdiph2/oa [Oa] ro
|
||||
[ua] zh
|
||||
vdiph2/o_oo [o@] en_wi
|
||||
[o] is
|
||||
[O:] is
|
||||
[o] zh
|
||||
vdiph2/u#@ [U@] en_sc
|
||||
vdiph2/uaa [uo] lv
|
||||
@@ -867,6 +876,8 @@ vdiph/aai_2 [AI] af
|
||||
vdiph/aai_3 [ai] fi
|
||||
vdiph/aau [au] fi
|
||||
[au] lv
|
||||
[aU] is
|
||||
[aU:] is
|
||||
vdiph/aau_2 [aU] en_wi
|
||||
[aU] de
|
||||
[VU] nl
|
||||
@@ -900,6 +911,7 @@ vdiph/ai_6 [aI] en_rp
|
||||
vdiph/ai_7 [aI] en_sc
|
||||
[aI2] en_sc
|
||||
[aI] is
|
||||
[aI:] is
|
||||
vdiph/ai_8 [aI] ta
|
||||
vdiph/aoo [aU] en_us
|
||||
vdiph/au [aU] en
|
||||
@@ -914,7 +926,6 @@ vdiph/au_4 [aU] base2
|
||||
[aU] eo
|
||||
[aU] sk
|
||||
[aU] it
|
||||
[aU] is
|
||||
[aU] id
|
||||
vdiph/ee-e [E:] hi
|
||||
vdiph/eei [EI] base2
|
||||
@@ -946,6 +957,7 @@ vdiph/ei [eI] base2
|
||||
[eI] la
|
||||
[eI] pt
|
||||
[eI] is
|
||||
[eI:] is
|
||||
[eI] vi
|
||||
[ei] zhy
|
||||
vdiph/eu [eU] base2
|
||||
@@ -971,11 +983,13 @@ vdiph/@i_3 [eI] en_wm
|
||||
vdiph/&i_3 [aI] vi
|
||||
vdiph/ii [iI] ro
|
||||
vdiph/i#i [yI] ro
|
||||
vdiph/oa_fr [w^a] fr
|
||||
vdiph/oi [oI] base2
|
||||
[OI] en_wm
|
||||
[OY] de
|
||||
[oI] it
|
||||
[OI] la
|
||||
[OI] is
|
||||
[oI] vi
|
||||
[oI] ne
|
||||
vdiph/oi_2 [oI] af
|
||||
@@ -1001,7 +1015,7 @@ vdiph/ou [ou] fi
|
||||
vdiph/ou_2 [oU] sk
|
||||
[oU] ro
|
||||
vdiph/ou_3 [oU] is
|
||||
[oU2] is
|
||||
[oU:] is
|
||||
vdiph/@u [u:] en_wm
|
||||
[@U] vi
|
||||
[@:U] vi
|
||||
@@ -1034,6 +1048,7 @@ vdiph/yi [yi] fi
|
||||
[yi] zh
|
||||
vdiph/y#i [Yi] fi
|
||||
vdiph/y#i_2 [Yy] is
|
||||
[Yy:] is
|
||||
vdiph/yi_fr [w^i] fr
|
||||
vdiph/y#y [Yy] fi
|
||||
vdiph/y#y_2 [Yy] af
|
||||
@@ -1119,12 +1134,12 @@ vocw/zh [Z] base
|
||||
vocw/zh_rfx [z.] base
|
||||
voc/z [z] base
|
||||
[z] fr
|
||||
[z2] fr
|
||||
[z;] ro
|
||||
[z] sq
|
||||
voc/z_ [z] base
|
||||
[dz] consonants
|
||||
[z] fr
|
||||
[z2] fr
|
||||
[z;] ro
|
||||
[z] sq
|
||||
voc/zh [Z] base
|
||||
@@ -1153,6 +1168,7 @@ vowel/@ [@] base
|
||||
[@4] hi
|
||||
[@] hy
|
||||
[@] ml
|
||||
[@] sl
|
||||
vowel/@- [@-] base
|
||||
[r*] hr
|
||||
vowel/& [a] en_rp
|
||||
@@ -1221,6 +1237,7 @@ vowel/a [a] en
|
||||
[a] it
|
||||
[a] zh
|
||||
[a] id
|
||||
[a] bg
|
||||
vowel/a# [a] base2
|
||||
[a/] base2
|
||||
[a2] en_sc
|
||||
@@ -1242,7 +1259,7 @@ vowel/a_2 [a] base2
|
||||
vowel/a#_2 [a#] pl
|
||||
[&] hr
|
||||
[a2] sv
|
||||
[&] is
|
||||
[a] is
|
||||
[a/] sw
|
||||
vowel/a_3 [a] en_sc
|
||||
[a/] en_sc
|
||||
@@ -1252,7 +1269,6 @@ vowel/a_3 [a] en_sc
|
||||
[a:] lv
|
||||
[a:] cs
|
||||
[a:] la
|
||||
[a] is
|
||||
[A] zh
|
||||
[a] sq
|
||||
[A] da
|
||||
@@ -1278,17 +1294,17 @@ vowel/a#_3 [a2] en
|
||||
[a] ml
|
||||
vowel/a_4 [a/] el
|
||||
[a] vi
|
||||
vowel/a_5 [a] fr
|
||||
[a:] ta
|
||||
vowel/a#_4 [a] bg
|
||||
vowel/a_5 [a:] ta
|
||||
[a/] it
|
||||
[a] la
|
||||
[a] sv
|
||||
[a] sw
|
||||
[a] tr
|
||||
[a:] ml
|
||||
vowel/a_6 [a] fr
|
||||
[a] ca
|
||||
vowel/a_6 [a] ca
|
||||
[a:] vi
|
||||
vowel/a_7 [a] fr
|
||||
vowel/aa [A] fr_ca
|
||||
[A] no
|
||||
[A:] no
|
||||
@@ -1316,6 +1332,7 @@ vowel/aa_6 [A] de
|
||||
vowel/aa_7 [A] nl
|
||||
vowel/aa_8 [0] en_us
|
||||
[A:] en_us
|
||||
[a:] is
|
||||
vowel/aa_9 [a] fi
|
||||
[a:] hi
|
||||
[a] ne
|
||||
@@ -1326,6 +1343,7 @@ vowel/@_bck [@] hi
|
||||
[V] ne
|
||||
[@/] ne
|
||||
[@] pa
|
||||
[@] bg
|
||||
vowel/e [e] base2
|
||||
[e:] en
|
||||
[eI] en_n
|
||||
@@ -1353,6 +1371,7 @@ vowel/e [e] base2
|
||||
[e] ml
|
||||
[e:] ml
|
||||
[e] ne
|
||||
[e] sl
|
||||
vowel/e# [I] en_sc
|
||||
vowel/e_2 [eI] en_sc
|
||||
[e:] de
|
||||
@@ -1371,7 +1390,7 @@ vowel/e_9 [E2] fr
|
||||
vowel/ee [E] en_n
|
||||
[E] sv
|
||||
vowel/e_e [E] en_sc
|
||||
[e] is
|
||||
[E:] is
|
||||
vowel/ee# [E#] pl
|
||||
vowel/ee_1 [E] base2
|
||||
[e@] en
|
||||
@@ -1381,6 +1400,7 @@ vowel/ee_1 [E] base2
|
||||
[E:] sv
|
||||
[E:] no
|
||||
[e] zhy
|
||||
[E] sl
|
||||
vowel/ee_2 [E] cy
|
||||
[E2] nl
|
||||
[E] zh
|
||||
@@ -1422,6 +1442,7 @@ vowel/e_mid [E] en_rp
|
||||
[E2] id
|
||||
[e] hy
|
||||
[E] prs
|
||||
[e] bg
|
||||
vowel/e_mid2 [E] af
|
||||
[E] de
|
||||
[E2] de
|
||||
@@ -1438,11 +1459,11 @@ vowel/e_mid2 [E] af
|
||||
[e] tr
|
||||
[e] sq
|
||||
[E] da
|
||||
[e] bg
|
||||
vowel/@_fnt [@] en_wi
|
||||
[@2] en_wi
|
||||
[@2] hr
|
||||
vowel/@_fr [3] en_n
|
||||
[@2] fr
|
||||
vowel/@_hgh [@] fr
|
||||
[@] hr
|
||||
vowel/i [i] base2
|
||||
@@ -1471,8 +1492,6 @@ vowel/i [i] base2
|
||||
vowel/i# [y:] cy
|
||||
vowel/i_2 [i2] de
|
||||
[i:] de
|
||||
[i] fr
|
||||
[i-] fr
|
||||
[i] nl
|
||||
[i:] la
|
||||
[i:] sv
|
||||
@@ -1482,7 +1501,7 @@ vowel/i_3 [i] af
|
||||
vowel/i_4 [i] fi
|
||||
[i] hu
|
||||
[I] it
|
||||
[i] is
|
||||
[i:] is
|
||||
[i] vi
|
||||
[i] da
|
||||
vowel/i_5 [i:] en_sc
|
||||
@@ -1498,10 +1517,12 @@ vowel/i_6 [i] hi
|
||||
[i] ku
|
||||
[i] id
|
||||
[i] ml
|
||||
[i] bg
|
||||
vowel/i#_6 [i.] zh
|
||||
vowel/i_7 [i] pl
|
||||
[i] sq
|
||||
vowel/i#_7 [i[] zh
|
||||
vowel/i_8 [i] fr
|
||||
vowel/i_en [i:] en
|
||||
[i:] en_us
|
||||
vowel/i_fnt [i:] en_wi
|
||||
@@ -1517,6 +1538,7 @@ vowel/ii [I] en_n
|
||||
[I] fr_ca
|
||||
[I] nl
|
||||
[I] is
|
||||
[I:] is
|
||||
[i] zhy
|
||||
[I] ku
|
||||
[I#] sq
|
||||
@@ -1542,6 +1564,7 @@ vowel/ii_4 [I2] en
|
||||
[I] en_us
|
||||
vowel/ii_5 [I] la
|
||||
[i] zh
|
||||
[i] bg
|
||||
vowel/ii_6 [I] en_wm
|
||||
[I] en_wi
|
||||
[I2] en_wi
|
||||
@@ -1549,6 +1572,7 @@ vowel/ii_6 [I] en_wm
|
||||
[I] pt
|
||||
[y] pt
|
||||
[i/] pt
|
||||
[i] is
|
||||
[I] sq
|
||||
vowel/ii_en [i] en
|
||||
[i] sq
|
||||
@@ -1594,6 +1618,7 @@ vowel/o [o] base2
|
||||
[o] ml
|
||||
[o:] ml
|
||||
[o:] pa
|
||||
[o] sl
|
||||
vowel/o_2 [o:] cy
|
||||
[o:] hi
|
||||
[o:] hu
|
||||
@@ -1623,6 +1648,7 @@ vowel/o_mid [U@] en_rp
|
||||
[o] hu
|
||||
[o] tr
|
||||
[o] ne
|
||||
[o] bg
|
||||
vowel/o_mid2 [O] fr
|
||||
vowel/oo [O:] en_sc
|
||||
[O] en_wi
|
||||
@@ -1639,6 +1665,7 @@ vowel/oo [O:] en_sc
|
||||
[O] tr
|
||||
[O] id
|
||||
[o] prs
|
||||
[o] bg
|
||||
vowel/oo_1 [O:] en_n
|
||||
[O:] en_rp
|
||||
[O@] en_rp
|
||||
@@ -1668,6 +1695,7 @@ vowel/oo_4 [O] base2
|
||||
vowel/oo_5 [O] pl
|
||||
[O] is
|
||||
[O] sq
|
||||
[O] sl
|
||||
vowel/oo_en [O] en
|
||||
[O:] en
|
||||
[O@] en
|
||||
@@ -1705,7 +1733,9 @@ vowel/u_2 [u1] fi
|
||||
[u] sk
|
||||
[U] hr
|
||||
[u] ro
|
||||
[u] is
|
||||
[u] tr
|
||||
[u] bg
|
||||
vowel/u#_2 [u-] ta
|
||||
[u-] sv
|
||||
vowel/u#_3 [U] ta
|
||||
@@ -1737,7 +1767,7 @@ vowel/u_bck [u] base2
|
||||
[u] pt
|
||||
[u:] sv
|
||||
[u:] no
|
||||
[u] is
|
||||
[u:] is
|
||||
[u] zhy
|
||||
[u] zh
|
||||
[u] sq
|
||||
@@ -1747,6 +1777,7 @@ vowel/u_bck [u] base2
|
||||
[u#] rw
|
||||
[u] ne
|
||||
[u] pa
|
||||
[u] bg
|
||||
vowel/u_bck2 [u] fr
|
||||
[u:] fr
|
||||
[u:] la
|
||||
@@ -1773,6 +1804,7 @@ vowel/uu_bck [U] en_wi
|
||||
[U] pa
|
||||
vowel/V [3] en_sc
|
||||
[W#] da
|
||||
[@] bg
|
||||
vowel/V_2 [V] en
|
||||
[a] af
|
||||
[V] ru
|
||||
@@ -1782,6 +1814,7 @@ vowel/V_3 [V] en_rp
|
||||
[V] hi
|
||||
[V] ta
|
||||
[V] pa
|
||||
[a] bg
|
||||
vowel/V_4 [V] en_sc
|
||||
[V] da
|
||||
vowel/V_6 [V] en_us
|
||||
@@ -1789,6 +1822,7 @@ vowel/V_6 [V] en_us
|
||||
vowel/y [y] base2
|
||||
[y:] de
|
||||
[y] fi
|
||||
[y] fr
|
||||
[y:] hu
|
||||
[y] nl
|
||||
[y] la
|
||||
@@ -1804,14 +1838,14 @@ vowel/y# [Y] base2
|
||||
[8] nl
|
||||
[Y] ro
|
||||
[oe] zhy
|
||||
vowel/y## [y#] is
|
||||
vowel/y_2 [y] fr
|
||||
[y:] la
|
||||
vowel/y## [y] is
|
||||
vowel/y_2 [y:] la
|
||||
[y] zh
|
||||
vowel/y#_2 [Y] hu
|
||||
[Y:] sv
|
||||
vowel/y_3 [y] af
|
||||
vowel/y#_3 [W] is
|
||||
[W:] is
|
||||
vowel/y_4 [y:] no
|
||||
vowel/y_5 [y:] sv
|
||||
[y] tr
|
||||
@@ -1823,7 +1857,8 @@ vowel/yy_3 [y] sv
|
||||
vowel/yy_4 [y] de
|
||||
[y] hu
|
||||
[y] grc
|
||||
[y] is
|
||||
[y:] is
|
||||
[yI] is
|
||||
[y] hy
|
||||
vwl_af/@ [@] af
|
||||
vwl_af/I [I] af
|
||||
@@ -1867,36 +1902,42 @@ vwl_en_us/oor [0] en_us
|
||||
vwl_en_us/or [o@] en_us
|
||||
[O:] en_sc
|
||||
vwl_en_us/ur [U@] en_us
|
||||
vwl_fr/@2r [é”] fr
|
||||
vwl_fr/a2r [é”] fr
|
||||
vwl_fr/aa2r [é”] fr
|
||||
vwl_fr/e2r [é”] fr
|
||||
vwl_fr/ee2r [é”] fr
|
||||
vwl_fr/i2r [é”] fr
|
||||
vwl_fr/o2r [é”] fr
|
||||
vwl_fr/oo2r [é”] fr
|
||||
vwl_fr/r [r] fr
|
||||
[r2] fr
|
||||
vwl_fr/_r [r] fr
|
||||
vwl_fr/r_ [r/2] fr
|
||||
vwl_fr/r_@ [r/2] fr
|
||||
vwl_fr/r@ [ j] fr
|
||||
vwl_fr/r_ [r/] fr
|
||||
vwl_fr/r_@ [r/] fr
|
||||
vwl_fr/r@ [é”] fr
|
||||
vwl_fr/@R [x] pt_pt
|
||||
vwl_fr/r_2 [r/2] fr
|
||||
vwl_fr/@R2 [R] fr_ca
|
||||
vwl_fr/ra [ j] fr
|
||||
vwl_fr/r_a [r/2] fr
|
||||
vwl_fr/raa [A~] fr
|
||||
vwl_fr/r_an [A~] fr
|
||||
vwl_fr/re [ j] fr
|
||||
vwl_fr/r_e [r/2] fr
|
||||
vwl_fr/r_e2 [E] fr
|
||||
vwl_fr/ri [ j] fr
|
||||
vwl_fr/r_i [r/2] fr
|
||||
vwl_fr/ro [ j] fr
|
||||
vwl_fr/r_o [r/2] fr
|
||||
vwl_fr/ro2 [O] fr
|
||||
vwl_fr/r_o2 [O] fr
|
||||
vwl_fr/ru [ j] fr
|
||||
vwl_fr/r_u [r/2] fr
|
||||
vwl_fr/ry [y] fr
|
||||
[w^i] fr
|
||||
vwl_fr/r_y [y] fr
|
||||
vwl_fr/tr [r] fr
|
||||
vwl_fr/trr [r/2] fr
|
||||
vwl_fr/xr [ j] fr
|
||||
vwl_fr/ra [é”] fr
|
||||
vwl_fr/r_a [r/] fr
|
||||
vwl_fr/raa [é”] fr
|
||||
vwl_fr/re [é”] fr
|
||||
vwl_fr/r_e [r/] fr
|
||||
vwl_fr/ree [é”] fr
|
||||
vwl_fr/ri [é”] fr
|
||||
vwl_fr/r_i [r/] fr
|
||||
vwl_fr/rj [é”] fr
|
||||
vwl_fr/r_n [r/] fr
|
||||
vwl_fr/ro [é”] fr
|
||||
vwl_fr/r_o [r/] fr
|
||||
vwl_fr/roo [é”] fr
|
||||
vwl_fr/rr [r/] fr
|
||||
vwl_fr/ru [é”] fr
|
||||
vwl_fr/r_u [r/] fr
|
||||
vwl_fr/ry [é”] fr
|
||||
vwl_fr/tr [r/2] fr
|
||||
vwl_fr/trr [r/] fr
|
||||
vwl_fr/u2r [é”] fr
|
||||
vwl_fr/y2r [é”] fr
|
||||
vwl_hi/l-voc [l-] base
|
||||
[l-] sk
|
||||
[l:] sk
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+7
-3
@@ -29,7 +29,11 @@ phoneme l // use dark [l/2] before not-vowel
|
||||
lengthmod 7
|
||||
|
||||
IF nextPh(isNotVowel) THEN
|
||||
ChangePhoneme(l/2)
|
||||
IF prevPh(isNotVowel) THEN
|
||||
ChangePhoneme(l/)
|
||||
ELSE
|
||||
ChangePhoneme(l/2)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
CALL base/l
|
||||
@@ -130,7 +134,7 @@ endphoneme
|
||||
|
||||
phoneme a
|
||||
vowel starttype #a endtype #a
|
||||
length 150
|
||||
length 160
|
||||
ChangeIfDiminished(a2)
|
||||
FMT(vowel/a)
|
||||
endphoneme
|
||||
@@ -146,7 +150,7 @@ endphoneme
|
||||
|
||||
phoneme aa // 'bath' etc.
|
||||
vowel starttype #a endtype #a
|
||||
length 150
|
||||
length 190
|
||||
IfNextVowelAppend(r-)
|
||||
FMT(vowel/a)
|
||||
endphoneme
|
||||
|
||||
+188
-168
@@ -1,14 +1,14 @@
|
||||
//====================================================
|
||||
// French
|
||||
//====================================================
|
||||
// Updated 2010-04-01 Michel Such <michel.such@free.fr>
|
||||
// Updated 2010-05-19 Michel Such <michel.such@free.fr>
|
||||
|
||||
phoneme #l virtual
|
||||
// Used for l and l/
|
||||
endphoneme
|
||||
|
||||
phoneme #r virtual
|
||||
// Used for r and r/2
|
||||
// Used for r, r2 and r/
|
||||
endphoneme
|
||||
|
||||
phoneme : // Lengthen previous vowel by "length"
|
||||
@@ -18,20 +18,36 @@ endphoneme
|
||||
|
||||
|
||||
procedure pre_post_r
|
||||
IF prevPh(isVowel) THEN
|
||||
VowelEnding(vwl_fr/xr)
|
||||
IF prevPh(y) THEN
|
||||
VowelEnding(vwl_fr/y2r)
|
||||
ELIF prevPh(A~) THEN
|
||||
VowelEnding(vwl_fr/aa2r)
|
||||
ELIF prevPh(E~) OR prevPh(W~) THEN
|
||||
VowelEnding(vwl_fr/ee2r)
|
||||
ELIF prevPh(O~) OR prevPh(W~) THEN
|
||||
VowelEnding(vwl_fr/oo2r)
|
||||
ELIF prevPh(isVowel) THEN
|
||||
PrevVowelEndings
|
||||
VowelEnding(vwl_fr/@2r)
|
||||
VowelEnding(vwl_fr/a2r)
|
||||
VowelEnding(vwl_fr/e2r)
|
||||
VowelEnding(vwl_fr/i2r)
|
||||
VowelEnding(vwl_fr/o2r)
|
||||
VowelEnding(vwl_fr/u2r)
|
||||
EndSwitch
|
||||
ENDIF
|
||||
|
||||
IF nextPhW(isFinalVowel) OR next2Ph(isFinalVowel) THEN
|
||||
NextVowelStarts
|
||||
VowelStart(vwl_fr/r@, -10)
|
||||
VowelStart(vwl_fr/ra, -15)
|
||||
VowelStart(vwl_fr/re, -10)
|
||||
VowelStart(vwl_fr/ri, -20)
|
||||
VowelStart(vwl_fr/ro, -10)
|
||||
VowelStart(vwl_fr/ru, -10)
|
||||
EndSwitch
|
||||
ELSE
|
||||
IF nextPh(A~) THEN
|
||||
VowelStart(vwl_fr/raa)
|
||||
ELIF nextPh(E~) OR nextPh(W~) THEN
|
||||
VowelStart(vwl_fr/ree)
|
||||
ELIF nextPh(y) THEN
|
||||
VowelStart(vwl_fr/ry)
|
||||
ELIF nextPh(O~) THEN
|
||||
VowelStart(vwl_fr/roo)
|
||||
ELIF nextPh(j/) THEN
|
||||
VowelStart(vwl_fr/rj)
|
||||
ELIF nextPh(isVowel) THEN
|
||||
NextVowelStarts
|
||||
VowelStart(vwl_fr/r@)
|
||||
VowelStart(vwl_fr/ra)
|
||||
@@ -45,27 +61,27 @@ endprocedure
|
||||
|
||||
|
||||
phoneme r
|
||||
liquid rhotic uvl
|
||||
liquid rhotic vel nopause
|
||||
starttype #r endtype #r
|
||||
lengthmod 7
|
||||
Vowelin f1=0 f2=1200 -500 500 f3=-200 100 len=65
|
||||
Vowelout f1=0 f2=1200 -500 500 f3=200 100 len=50
|
||||
lengthmod 2
|
||||
|
||||
IF nextPh(isNotVowel) THEN
|
||||
ChangePhoneme(r/2)
|
||||
ChangePhoneme(r/)
|
||||
ENDIF
|
||||
|
||||
CALL pre_post_r
|
||||
|
||||
IF thisPh(isWordStart) OR prevPhW(r/2) THEN
|
||||
Vowelout len=50
|
||||
FMT(vwl_fr/_r, -30)
|
||||
ELIF prevPhW(g) OR prevPhW(k) OR prevPhW(p) THEN
|
||||
FMT(vwl_fr/tr, -40)
|
||||
ELIF prevPhW(d) OR prevPhW(t) THEN
|
||||
FMT(vwl_fr/tr, -30)
|
||||
ELIF prevPhW(f) OR prevPhW(v) OR prevPhW(S) THEN
|
||||
FMT(vwl_fr/tr, -30)
|
||||
ELIF prevPhW(b) THEN
|
||||
FMT(vwl_fr/tr, -20)
|
||||
IF thisPh(isWordStart) THEN
|
||||
length 80
|
||||
FMT(vwl_fr/r) addWav(r3/rx, 25)
|
||||
ELIF prevPhW(p) OR prevPhW(k) OR prevPhW(t) OR prevPhW(S) THEN
|
||||
ChangePhoneme(r/2)
|
||||
ELIF prevPhW(b) OR prevPhW(d) OR prevPhW(g) THEN
|
||||
ChangePhoneme(r/2)
|
||||
ELIF prevPhW(f) OR prevPhW(v) THEN
|
||||
ChangePhoneme(r/2)
|
||||
ENDIF
|
||||
|
||||
FMT(vwl_fr/r)
|
||||
@@ -73,11 +89,11 @@ endphoneme
|
||||
|
||||
|
||||
phoneme r2 // silent unless followed by vowel
|
||||
liquid rhotic uvl
|
||||
liquid rhotic vel
|
||||
starttype #r endtype #r
|
||||
lengthmod 7
|
||||
Vowelin f1=0 f2=1600 -300 300 f3=-200 80
|
||||
Vowelout f1=2 f2=1600 -300 300 f3=-300 80
|
||||
Vowelin f1=0 f2=1200 -500 500 f3=-200 100 len=65
|
||||
Vowelout f1=0 f2=1200 -500 500 f3=200 100 len=50
|
||||
lengthmod 2
|
||||
|
||||
IF nextPh(isNotVowel) THEN
|
||||
ChangePhoneme(NULL)
|
||||
@@ -89,48 +105,51 @@ phoneme r2 // silent unless followed by vowel
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme r/2 // variant of [r] when not preceding a vowel
|
||||
phoneme r/ // variant of [r] when not preceding a vowel
|
||||
liquid rhotic vel
|
||||
starttype #r endtype #r
|
||||
Vowelout f1=2 f2=1600 -300 300 f3=-300 100 len=40
|
||||
Vowelout f1=0 f2=1150 -500 500 f3=200 100 len=30
|
||||
lengthmod 2
|
||||
|
||||
PrevVowelEndings
|
||||
VowelEnding(vwl_fr/r_@)
|
||||
VowelEnding(vwl_fr/r_a)
|
||||
VowelEnding(vwl_fr/r_e)
|
||||
VowelEnding(vwl_fr/r_i)
|
||||
VowelEnding(vwl_fr/r_o)
|
||||
VowelEnding(vwl_fr/r_u)
|
||||
EndSwitch
|
||||
|
||||
IF prevPh(isVowel) THEN
|
||||
IF nextPh(isPause) THEN
|
||||
FMT(vwl_fr/r_2) addWav(r3/rx, 20)
|
||||
ELSE
|
||||
FMT(vwl_fr/r_, -30) addWav(r3/rx, 20)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF thisPh(isWordEnd) THEN
|
||||
IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN
|
||||
FMT(vwl_fr/trr) addWav(r3/rx, 15)
|
||||
ELIF prevPhW(v) THEN
|
||||
FMT(vwl_fr/r_, -40)
|
||||
ELIF prevPhW(f) THEN
|
||||
FMT(vwl_fr/r_, -10) addWav(r3/rx, 15)
|
||||
ELIF prevPhW(d) THEN
|
||||
FMT(vwl_fr/r_) addWav(r3/rx, 15)
|
||||
ELIF prevPh(isNotVowel) THEN
|
||||
FMT(vwl_fr/rr) addWav(r3/rx, 15)
|
||||
ENDIF
|
||||
FMT(vwl_fr/r_) addWav(r3/rx, 15)
|
||||
ENDIF
|
||||
|
||||
FMT(vwl_fr/r_)
|
||||
IF prevPh(isVowel) THEN
|
||||
PrevVowelEndings
|
||||
VowelEnding(vwl_fr/r_@)
|
||||
VowelEnding(vwl_fr/r_a)
|
||||
VowelEnding(vwl_fr/r_e)
|
||||
VowelEnding(vwl_fr/r_i)
|
||||
VowelEnding(vwl_fr/r_o)
|
||||
VowelEnding(vwl_fr/r_u)
|
||||
EndSwitch
|
||||
ENDIF
|
||||
IF nextPhW(n) OR nextPhW(n^) THEN
|
||||
FMT(vwl_fr/r_n) addWav(r3/rx, 25)
|
||||
ENDIF
|
||||
|
||||
FMT(vwl_fr/r_) addWav(r3/rx, 30)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme r/2
|
||||
liquid rhotic
|
||||
starttype #r endtype #r
|
||||
palatal
|
||||
Vowelin f1=0 f2=1200 -500 500 f3=-200 100 len=75
|
||||
|
||||
CALL pre_post_r
|
||||
FMT(vwl_fr/tr) addWav(r3/rx, 25)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme l
|
||||
liquid
|
||||
liquid nopause
|
||||
starttype #l endtype #l
|
||||
lengthmod 7
|
||||
|
||||
@@ -154,10 +173,9 @@ phoneme l
|
||||
ENDIF
|
||||
|
||||
IF prevPh(isPause) OR thisPh(isWordStart) THEN
|
||||
VowelEnding(NULL)
|
||||
FMT(l/_l)
|
||||
ENDIF
|
||||
IF prevPh(r/2) THEN
|
||||
IF prevPh(isRhotic) THEN
|
||||
FMT(l/_l)
|
||||
ENDIF
|
||||
|
||||
@@ -208,32 +226,25 @@ phoneme @
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme @2
|
||||
vowel starttype #@ endtype #@
|
||||
length 160
|
||||
FMT(vowel/@_fr)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme a
|
||||
vowel starttype #a endtype #a
|
||||
length 170
|
||||
|
||||
IF prevPh(l) THEN
|
||||
VowelStart(l/la, -15)
|
||||
IF nextPh(isVowel) THEN
|
||||
length 220
|
||||
ELSE
|
||||
length 170
|
||||
ENDIF
|
||||
|
||||
IF prevPhW(w) OR prevPhW(w/) THEN
|
||||
FMT(vowel/a_5)
|
||||
ENDIF
|
||||
|
||||
FMT(vowel/a_6)
|
||||
FMT(vowel/a_7)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme e
|
||||
vowel starttype #e endtype #e
|
||||
length 170
|
||||
IF nextPh(isVowel) THEN
|
||||
length 220
|
||||
ELSE
|
||||
length 170
|
||||
ENDIF
|
||||
|
||||
IF nextPh(l/) THEN
|
||||
VowelEnding(l/xl, -20)
|
||||
@@ -250,10 +261,6 @@ phoneme E
|
||||
vowel starttype #e endtype #e
|
||||
length 170
|
||||
|
||||
IF nextPh(r/2) THEN
|
||||
VowelEnding(vwl_fr/r_e2)
|
||||
ENDIF
|
||||
|
||||
IF nextPhW(j) THEN
|
||||
length 190
|
||||
ENDIF
|
||||
@@ -272,19 +279,18 @@ endphoneme
|
||||
|
||||
phoneme i
|
||||
vowel starttype #i endtype #i
|
||||
length 160
|
||||
|
||||
IF prevPhW(#r) AND nextPhW(isVowel) THEN
|
||||
ChangePhoneme(j/)
|
||||
ELIF nextPhW(isVowel) THEN
|
||||
ChangePhoneme(j)
|
||||
ELSE
|
||||
length 160
|
||||
ENDIF
|
||||
|
||||
IfNextVowelAppend(;)
|
||||
|
||||
FMT(vowel/i_2)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme i- // shorter
|
||||
vowel starttype #i endtype #i
|
||||
length 110
|
||||
|
||||
FMT(vowel/i_2)
|
||||
FMT(vowel/i_8)
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -298,40 +304,70 @@ phoneme i: // longer than i
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme j/ // Short "i" between "r" and a vowel
|
||||
vowel starttype #i endtype #i
|
||||
palatal
|
||||
|
||||
IF nextPh(isVowel) THEN
|
||||
NextVowelStarts
|
||||
VowelStart(j/j@)
|
||||
VowelStart(j/ja)
|
||||
VowelStart(j/je)
|
||||
VowelStart(j/ji)
|
||||
VowelStart(j/jo)
|
||||
VowelStart(j/ju)
|
||||
EndSwitch
|
||||
ELSE
|
||||
ChangePhoneme(NULL)
|
||||
ENDIF
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme o
|
||||
vowel starttype #o endtype #o
|
||||
length 170
|
||||
IF nextPh(isVowel) THEN
|
||||
length 220
|
||||
ELSE
|
||||
length 170
|
||||
ENDIF
|
||||
|
||||
IF thisPh(isFinalVowel) THEN
|
||||
IF thisPh(isWordEnd) THEN
|
||||
FMT(vowel/o_8)
|
||||
ELIF nextPh(p2) OR nextPh(t2) OR nextPh(z2) THEN
|
||||
FMT(vowel/o_8)
|
||||
ELIF nextPh(z) THEN
|
||||
FMT(vowel/o)
|
||||
ELSE
|
||||
ChangePhoneme(O)
|
||||
ENDIF
|
||||
ELSE
|
||||
IF nextPhW(isLiquid) AND next2Ph(isNotVowel) THEN
|
||||
ChangePhoneme(O)
|
||||
ELIF nextPhW(isNasal) AND next2Ph(isNotVowel) THEN
|
||||
ELIF nextPhW(n) AND next2Ph(j) THEN
|
||||
FMT(vowel/o)
|
||||
ELIF nextPhW(isNasal) AND next2Ph(isLiquid) THEN
|
||||
ChangePhoneme(O)
|
||||
ELIF nextPhW(isNotVowel) AND next2Ph(isNasal) THEN
|
||||
ChangePhoneme(O)
|
||||
ELIF nextPhW(d) AND next2Ph(isNotVowel) THEN
|
||||
ChangePhoneme(O)
|
||||
ELIF nextPhW(t) AND next2Ph(isLiquid) AND nextVowel(isFinalVowel) THEN
|
||||
ChangePhoneme(O)
|
||||
ELSE
|
||||
FMT(vowel/o)
|
||||
ENDIF
|
||||
FMT(vowel/o)
|
||||
ENDIF
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme o2
|
||||
vowel starttype #o endtype #o
|
||||
length 170
|
||||
|
||||
IF nextPh(l/) THEN
|
||||
VowelEnding(l/l_o)
|
||||
IF nextPh(isVowel) THEN
|
||||
length 220
|
||||
ELSE
|
||||
length 170
|
||||
ENDIF
|
||||
|
||||
IF thisPh(isFinalVowel) THEN
|
||||
@@ -344,15 +380,12 @@ endphoneme
|
||||
|
||||
phoneme O
|
||||
vowel starttype #o endtype #o
|
||||
length 180
|
||||
|
||||
IF prevPhW(#r) THEN
|
||||
VowelStart(vwl_fr/ro2)
|
||||
IF nextPhW(#r) THEN
|
||||
length 200
|
||||
ELSE
|
||||
length 170
|
||||
ENDIF
|
||||
|
||||
IF nextPhW(r/2) THEN
|
||||
VowelEnding(vwl_fr/r_o2)
|
||||
ENDIF
|
||||
FMT(vowel/o_mid2)
|
||||
endphoneme
|
||||
|
||||
@@ -366,7 +399,11 @@ endphoneme
|
||||
|
||||
phoneme u
|
||||
vowel starttype #u endtype #u
|
||||
length 180
|
||||
IF nextPh(isVowel) OR nextPh(j) THEN
|
||||
length 220
|
||||
ELSE
|
||||
length 180
|
||||
ENDIF
|
||||
|
||||
FMT(vowel/u_bck2)
|
||||
endphoneme
|
||||
@@ -381,29 +418,19 @@ endphoneme
|
||||
|
||||
phoneme y
|
||||
vowel starttype #u endtype #u
|
||||
length 170
|
||||
IF nextPh(isVowel) THEN
|
||||
length 200
|
||||
ELSE
|
||||
length 170
|
||||
ENDIF
|
||||
|
||||
IF nextPh(l/) THEN
|
||||
VowelEnding(l/l_y, -30)
|
||||
VowelEnding(l/l_y)
|
||||
ELIF nextPhW(E~) THEN
|
||||
FMT(vowel/y, -30)
|
||||
ENDIF
|
||||
|
||||
IF prevPh(#r) THEN
|
||||
IF thisPh(isFinalVowel) THEN
|
||||
VowelStart(vwl_fr/ry, -10)
|
||||
ELSE
|
||||
VowelStart(vwl_fr/ry)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF nextPh(r/2) THEN
|
||||
VowelEnding(vwl_fr/r_y)
|
||||
ENDIF
|
||||
|
||||
IF nextPhW(E~) THEN
|
||||
FMT(vowel/y_2, -30)
|
||||
ENDIF
|
||||
|
||||
FMT(vowel/y_2)
|
||||
FMT(vowel/y)
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -427,14 +454,6 @@ phoneme Y
|
||||
vowel starttype #@ endtype #@
|
||||
length 170
|
||||
|
||||
IF prevPh(l) THEN
|
||||
VowelStart(l/l@, -20)
|
||||
ENDIF
|
||||
|
||||
IF nextPh(l/) THEN
|
||||
VowelEnding(l/l_@, -20)
|
||||
ENDIF
|
||||
|
||||
IF thisPh(isFinalVowel) THEN
|
||||
IF thisPh(isWordEnd) THEN
|
||||
FMT(vowel/y#)
|
||||
@@ -458,8 +477,7 @@ endphoneme
|
||||
phoneme w
|
||||
vowel starttype #u endtype #u
|
||||
|
||||
IF prevPhW(#r) OR prevPhW(#l) THEN
|
||||
|
||||
IF prevPh(#r) OR prevPhW(#l) THEN
|
||||
NextVowelStarts
|
||||
VowelStart(w/w@)
|
||||
VowelStart(w/wa, -10)
|
||||
@@ -479,16 +497,19 @@ phoneme w/
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme w^a
|
||||
vowel starttype #o endtype #a
|
||||
length 200
|
||||
|
||||
FMT(vdiph/oa_fr)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme w^i
|
||||
vowel starttype #u endtype #i
|
||||
length 240
|
||||
|
||||
IF prevPhW(l) THEN
|
||||
VowelStart(l/lu, -20)
|
||||
ENDIF
|
||||
IF prevPhW(#r) THEN
|
||||
VowelStart(vwl_fr/ry)
|
||||
ENDIF
|
||||
IfNextVowelAppend(;)
|
||||
|
||||
FMT(vdiph/yi_fr)
|
||||
endphoneme
|
||||
@@ -497,17 +518,6 @@ endphoneme
|
||||
phoneme A~
|
||||
vowel starttype #a endtype #a
|
||||
length 190
|
||||
IF nextPh(r/2) THEN
|
||||
VowelEnding(vwl_fr/r_an)
|
||||
ENDIF
|
||||
|
||||
IF prevPhW(#r) THEN
|
||||
IF thisPh(isFinalVowel) THEN
|
||||
VowelStart(vwl_fr/raa, -15)
|
||||
ELSE
|
||||
VowelStart(vwl_fr/raa, -10)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
FMT(vnasal/aa_n4)
|
||||
endphoneme
|
||||
@@ -586,8 +596,13 @@ phoneme b
|
||||
FMT(b/xb)
|
||||
ENDIF
|
||||
|
||||
IF nextPh(isPause2) OR nextPh(#l) THEN
|
||||
IF nextPh(isPause2) OR nextPh(l) THEN
|
||||
FMT(b/b_) addWav(x/b_)
|
||||
ELIF nextPh(l/) THEN
|
||||
FMT(b/b)
|
||||
ELIF nextPh(#r) THEN
|
||||
length 40
|
||||
FMT(b/b) addWav(x/b, 50)
|
||||
ENDIF
|
||||
|
||||
FMT(b/b) addWav(x/b, 70)
|
||||
@@ -605,12 +620,8 @@ phoneme d
|
||||
FMT(d/xd)
|
||||
ENDIF
|
||||
|
||||
IF nextPh(isPause2) OR nextPh(isPause) THEN
|
||||
IF nextPh(isPause2) THEN
|
||||
FMT(d/d_) addWav(x/d_, 50)
|
||||
ELIF nextPh(#r) THEN
|
||||
FMT(d/dr) addWav(x/d, 30)
|
||||
ELIF prevPh(isPause) THEN
|
||||
FMT(d/d) addWav(x/d, 50)
|
||||
ENDIF
|
||||
|
||||
FMT(d/d) addWav(x/d, 40)
|
||||
@@ -630,6 +641,8 @@ phoneme g
|
||||
|
||||
IF nextPh(isPause2) THEN
|
||||
FMT(g/g_) addWav(x/g_)
|
||||
ELIF nextPhW(#r) THEN
|
||||
FMT(g2/g) addWav(x/g, 20)
|
||||
ENDIF
|
||||
|
||||
FMT(g/g) addWav(x/g, 20)
|
||||
@@ -650,9 +663,12 @@ phoneme k
|
||||
WAV(ustop/ki, 45)
|
||||
ELIF nextPh(#l) THEN
|
||||
WAV(ustop/kl, 40)
|
||||
ELIF nextPh(#r) THEN
|
||||
length 50
|
||||
WAV(ustop/k, 50)
|
||||
ENDIF
|
||||
|
||||
WAV(ustop/k, 35)
|
||||
WAV(ustop/k, 40)
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -680,6 +696,9 @@ phoneme p
|
||||
WAV(ustop/p_unasp, 60)
|
||||
ELIF nextPh(#l) THEN
|
||||
WAV(ustop/pl, 30)
|
||||
ELIF nextPh(#r) THEN
|
||||
length 40
|
||||
WAV(ustop/p_, 60)
|
||||
ENDIF
|
||||
WAV(ustop/p_unasp_, 90)
|
||||
endphoneme
|
||||
@@ -738,13 +757,14 @@ phoneme t
|
||||
vls alv stop
|
||||
voicingswitch d
|
||||
lengthmod 2
|
||||
Vowelin f1=0 f2=1600 -300 300 f3=-100 80
|
||||
Vowelout f1=0 f2=1600 -300 250 f3=-100 80 brk
|
||||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
|
||||
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
||||
|
||||
IF nextPh(isPause2) THEN
|
||||
WAV(ustop/t_, 40)
|
||||
ELIF nextPh(r/2) THEN
|
||||
WAV(ustop/t_short, 50)
|
||||
ELIF nextPh(#r) THEN
|
||||
length 40
|
||||
WAV(ustop/t_short_, 40)
|
||||
ENDIF
|
||||
|
||||
WAV(ustop/t_short, 40)
|
||||
@@ -757,7 +777,7 @@ phoneme t2 // silent unless followed by vowel
|
||||
Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20
|
||||
lengthmod 2
|
||||
|
||||
IF nextPh(isVowel) OR nextPh(w) THEN
|
||||
IF nextPh(isVowel) OR nextPh(w) OR nextPh(j) THEN
|
||||
WAV(ustop/t_short, 30)
|
||||
ELSE
|
||||
ChangePhoneme(NULL)
|
||||
@@ -797,7 +817,7 @@ phoneme v
|
||||
ENDIF
|
||||
IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
|
||||
Length 70
|
||||
ELIF nextPhW(w) THEN
|
||||
ELIF nextPhW(w) OR nextPhW(#r) THEN
|
||||
Length 50
|
||||
ENDIF
|
||||
FMT(voc/v) addWav(vocw/v, 60)
|
||||
@@ -828,8 +848,8 @@ endphoneme
|
||||
|
||||
phoneme z2 // silent unless followed by vowel
|
||||
vcd alv frc sibilant
|
||||
IF nextPh(isVowel) OR nextPh(w/) THEN
|
||||
FMT(voc/z_, -20) addWav(ufric/s_, 40)
|
||||
IF nextPh(isVowel) OR nextPh(w/) OR nextPh(j) THEN
|
||||
FMT(voc/z, -20) addWav(ufric/s, 40)
|
||||
ELSE
|
||||
ChangePhoneme(NULL)
|
||||
ENDIF
|
||||
|
||||
+105
-26
@@ -17,10 +17,19 @@ phoneme i
|
||||
vowel starttype #i endtype #i
|
||||
length 130
|
||||
IfNextVowelAppend(;)
|
||||
FMT(vowel/ii_6)
|
||||
endphoneme
|
||||
|
||||
phoneme i:
|
||||
vowel starttype #i endtype #i
|
||||
length 230
|
||||
IfNextVowelAppend(;)
|
||||
ChangeIfNotStressed(i)
|
||||
FMT(vowel/i_4)
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme I
|
||||
vowel starttype #i endtype #i
|
||||
length 130
|
||||
@@ -28,77 +37,101 @@ phoneme I
|
||||
FMT(vowel/ii)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme e
|
||||
vowel starttype #e endtype #e
|
||||
length 130
|
||||
ChangeIfNotStressed(E)
|
||||
FMT(vowel/e_e)
|
||||
phoneme I:
|
||||
vowel starttype #i endtype #i
|
||||
length 230
|
||||
IfNextVowelAppend(;)
|
||||
ChangeIfNotStressed(I)
|
||||
FMT(vowel/ii)
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme E
|
||||
vowel starttype #e endtype #e
|
||||
length 130
|
||||
FMT(vowel/e_mid)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme a
|
||||
vowel starttype #a endtype #a
|
||||
phoneme E:
|
||||
vowel starttype #e endtype #e
|
||||
length 130
|
||||
ChangeIfNotStressed(&)
|
||||
FMT(vowel/a_3)
|
||||
FMT(vowel/e_e)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme &
|
||||
|
||||
phoneme a
|
||||
vowel starttype #@ endtype #@
|
||||
length 130
|
||||
FMT(vowel/a#_2)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme o
|
||||
vowel starttype #o endtype #o
|
||||
length 130
|
||||
ChangeIfNotStressed(O)
|
||||
FMT(vdiph2/o_oo)
|
||||
phoneme a:
|
||||
vowel starttype #a endtype #a
|
||||
length 230
|
||||
ChangeIfNotStressed(a)
|
||||
FMT(vowel/aa_8)
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme O
|
||||
vowel starttype #o endtype #o
|
||||
length 130
|
||||
FMT(vowel/oo_5)
|
||||
endphoneme
|
||||
|
||||
phoneme O:
|
||||
vowel starttype #o endtype #o
|
||||
length 230
|
||||
ChangeIfNotStressed(O)
|
||||
FMT(vdiph2/o_oo)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme u
|
||||
vowel starttype #u endtype #u
|
||||
length 130
|
||||
FMT(vowel/u_2)
|
||||
endphoneme
|
||||
|
||||
phoneme u:
|
||||
vowel starttype #u endtype #u
|
||||
length 230
|
||||
ChangeIfNotStressed(u)
|
||||
FMT(vowel/u_bck)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme y
|
||||
vowel starttype #i endtype #i
|
||||
length 130
|
||||
FMT(vowel/yy_4)
|
||||
endphoneme
|
||||
|
||||
phoneme y#
|
||||
vowel starttype #@ endtype #@
|
||||
length 130
|
||||
FMT(vowel/y##)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme y:
|
||||
vowel starttype #i endtype #i
|
||||
length 230
|
||||
ChangeIfNotStressed(y)
|
||||
FMT(vowel/yy_4)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme W
|
||||
vowel starttype #@ endtype #@
|
||||
length 130
|
||||
FMT(vowel/y#_3)
|
||||
endphoneme
|
||||
|
||||
phoneme W:
|
||||
vowel starttype #@ endtype #@
|
||||
length 130
|
||||
ChangeIfNotStressed(W)
|
||||
FMT(vowel/y#_3)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme aI
|
||||
vowel starttype #a endtype #i
|
||||
@@ -106,36 +139,82 @@ phoneme aI
|
||||
FMT(vdiph/ai_7)
|
||||
endphoneme
|
||||
|
||||
phoneme aI:
|
||||
vowel starttype #a endtype #i
|
||||
length 230
|
||||
ChangeIfNotStressed(aI)
|
||||
FMT(vdiph/ai_7)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme eI
|
||||
vowel starttype #e endtype #i
|
||||
length 170
|
||||
FMT(vdiph/ei)
|
||||
endphoneme
|
||||
|
||||
phoneme eI:
|
||||
vowel starttype #e endtype #i
|
||||
length 230
|
||||
ChangeIfNotStressed(eI)
|
||||
FMT(vdiph/ei)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme aU
|
||||
vowel starttype #a endtype #u
|
||||
length 170
|
||||
FMT(vdiph/au_4)
|
||||
FMT(vdiph/aau)
|
||||
endphoneme
|
||||
|
||||
phoneme aU:
|
||||
vowel starttype #a endtype #u
|
||||
length 230
|
||||
ChangeIfNotStressed(aU)
|
||||
FMT(vdiph/aau)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme oU
|
||||
vowel starttype #o endtype #u
|
||||
length 170
|
||||
FMT(vdiph/ou_3)
|
||||
endphoneme
|
||||
|
||||
phoneme oU2 // long version for óf
|
||||
phoneme oU: // long version for óf
|
||||
vowel starttype #o endtype #u
|
||||
length 230
|
||||
ChangeIfNotStressed(oU)
|
||||
FMT(vdiph/ou_3)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme Yy
|
||||
vowel starttype #@ endtype #i
|
||||
length 150
|
||||
FMT(vdiph/y#i_2)
|
||||
endphoneme
|
||||
|
||||
phoneme Yy:
|
||||
vowel starttype #@ endtype #i
|
||||
length 220
|
||||
ChangeIfNotStressed(Yy)
|
||||
FMT(vdiph/y#i_2)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme OI
|
||||
vowel starttype #o endtype #i
|
||||
length 210
|
||||
FMT(vdiph/oi)
|
||||
endphoneme
|
||||
|
||||
phoneme yI
|
||||
vowel starttype #i endtype #i
|
||||
length 180
|
||||
FMT(vowel/yy_4)
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
// Consonants
|
||||
|
||||
@@ -1677,5 +1677,11 @@ include ph_punjabi
|
||||
phonemetable prs base
|
||||
include ph_dari
|
||||
|
||||
phonemetable sl sk
|
||||
include ph_slovenian
|
||||
|
||||
phonemetable gd base
|
||||
include ph_s_gaelic
|
||||
|
||||
phonemetable bg pl
|
||||
include ph_bulgarian
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 71 KiB |
Executable
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -50,7 +50,7 @@ typedef struct {
|
||||
const char *mnem;
|
||||
int value;
|
||||
} MNEM_TAB;
|
||||
int LookupMnem(MNEM_TAB *table, char *string);
|
||||
int LookupMnem(MNEM_TAB *table, const char *string);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ typedef struct {
|
||||
const char *mnem;
|
||||
int value;
|
||||
} MNEM_TAB;
|
||||
int LookupMnem(MNEM_TAB *table, char *string);
|
||||
int LookupMnem(MNEM_TAB *table, const char *string);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
[Setup]
|
||||
AppName=eSpeak
|
||||
AppVerName=eSpeak version 1.42
|
||||
AppVerName=eSpeak version 1.43.24
|
||||
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
|
||||
WindowVisible=yes
|
||||
|
||||
@@ -94,6 +94,8 @@ var
|
||||
UILanguage: Integer;
|
||||
UIVoice: String;
|
||||
Page: TInputQueryWizardPage;
|
||||
voices_installed: array [0..200] of String;
|
||||
n_voices_installed: Integer;
|
||||
|
||||
const
|
||||
sEspeak = 'eSpeak-';
|
||||
@@ -329,6 +331,7 @@ end;
|
||||
|
||||
procedure SetupVoice(Voice: String; Index: Integer);
|
||||
var
|
||||
ix: Integer;
|
||||
RegVoice2: String;
|
||||
RegVoice2a: String;
|
||||
VoiceUC: String;
|
||||
@@ -348,6 +351,16 @@ begin
|
||||
VoiceUC := 'default'
|
||||
else
|
||||
VoiceUC := Uppercase(Voice);
|
||||
|
||||
// check for duplicate voice names
|
||||
for ix := 0 to n_voices_installed - 1 do begin
|
||||
if voices_installed[ix] = VoiceUC then
|
||||
Exit;
|
||||
end;
|
||||
if n_voices_installed < 200 then begin
|
||||
voices_installed[n_voices_installed] := VoiceUC;
|
||||
n_voices_installed := n_voices_installed + 1;
|
||||
end;
|
||||
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'',sEspeak+VoiceUC);
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'CLSID','{BE985C8D-BE32-4A22-AA93-55C16A6D1D91}');
|
||||
@@ -439,7 +452,7 @@ begin
|
||||
Page.Values[0] := Format('%s',[UIVoice]);
|
||||
Page.Values[1] := Format('%s',[voice2]);
|
||||
|
||||
|
||||
n_voices_installed := 0;
|
||||
end;
|
||||
|
||||
procedure ClearRegistry;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
[Setup]
|
||||
AppName=eSpeakEdit
|
||||
AppVerName=eSpeakEdit version 1.42
|
||||
AppVerName=eSpeakEdit version 1.43.24
|
||||
DefaultDirName={pf}\eSpeak
|
||||
DefaultGroupName=eSpeak
|
||||
OutputBaseFilename=setup_espeakedit
|
||||
|
||||
@@ -48,7 +48,7 @@ typedef struct {
|
||||
const char *mnem;
|
||||
int value;
|
||||
} MNEM_TAB;
|
||||
int LookupMnem(MNEM_TAB *table, char *string);
|
||||
int LookupMnem(MNEM_TAB *table, const char *string);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ typedef struct {
|
||||
const char *mnem;
|
||||
int value;
|
||||
} MNEM_TAB;
|
||||
int LookupMnem(MNEM_TAB *table, char *string);
|
||||
int LookupMnem(MNEM_TAB *table, const char *string);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ typedef struct {
|
||||
const char *mnem;
|
||||
int value;
|
||||
} MNEM_TAB;
|
||||
int LookupMnem(MNEM_TAB *table, char *string);
|
||||
int LookupMnem(MNEM_TAB *table, const char *string);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -402,9 +402,11 @@ STDMETHODIMP CTTSEngObj::SetObjectToken(ISpObjectToken * pToken)
|
||||
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,1);
|
||||
espeak_SetSynthCallback(SynthCallback);
|
||||
initialised = 1;
|
||||
g_voice_name[0] = 0;
|
||||
// g_voice_name[0] = 0;
|
||||
}
|
||||
|
||||
strcpy(g_voice_name, voice_name);
|
||||
espeak_SetVoiceByName(g_voice_name);
|
||||
|
||||
return hr;
|
||||
} /* CTTSEngObj::SetObjectToken */
|
||||
|
||||
+280
-5
@@ -177,6 +177,35 @@ enum {
|
||||
};
|
||||
|
||||
|
||||
enum {
|
||||
kTUNE = 1,
|
||||
kENDTUNE,
|
||||
kTUNE_PREHEAD,
|
||||
kTUNE_ONSET,
|
||||
kTUNE_HEAD,
|
||||
kTUNE_HEADEXTEND,
|
||||
kTUNE_HEADLAST,
|
||||
kTUNE_UNSTRESSED,
|
||||
kTUNE_NUCLEUS0,
|
||||
kTUNE_NUCLEUS1,
|
||||
kTUNE_SPLIT,
|
||||
};
|
||||
|
||||
static keywtab_t k_intonation[] = {
|
||||
{"tune", 0, kTUNE},
|
||||
{"endtune", 0, kENDTUNE},
|
||||
{"prehead", 0, kTUNE_PREHEAD},
|
||||
{"onset", 0, kTUNE_ONSET},
|
||||
{"head", 0, kTUNE_HEAD},
|
||||
{"headextend", 0, kTUNE_HEADEXTEND},
|
||||
{"headlast", 0, kTUNE_HEADLAST},
|
||||
{"unstressed",0, kTUNE_UNSTRESSED},
|
||||
{"nucleus0", 0, kTUNE_NUCLEUS0},
|
||||
{"nucleus1", 0, kTUNE_NUCLEUS1},
|
||||
{"split", 0, kTUNE_SPLIT},
|
||||
{NULL, 0, -1}
|
||||
};
|
||||
|
||||
static keywtab_t keywords[] = {
|
||||
{"vowel", tPHONEME_TYPE, phVOWEL},
|
||||
{"liquid", tPHONEME_TYPE, phLIQUID},
|
||||
@@ -271,6 +300,7 @@ static keywtab_t keywords[] = {
|
||||
{"rhotic", tPHONEME_FLAG, phRHOTIC},
|
||||
{"nonsyllabic",tPHONEME_FLAG, phNONSYLLABIC},
|
||||
{"lengthenstop",tPHONEME_FLAG, phLENGTHENSTOP},
|
||||
{"nopause", tPHONEME_FLAG, phNOPAUSE},
|
||||
|
||||
// voiced / unvoiced
|
||||
{"vcd", tPHONEME_FLAG, phVOICED},
|
||||
@@ -310,7 +340,7 @@ static keywtab_t keywords[] = {
|
||||
|
||||
|
||||
static keywtab_t *keyword_tabs[] = {
|
||||
keywords, k_conditions, k_properties };
|
||||
keywords, k_conditions, k_properties, k_intonation };
|
||||
|
||||
|
||||
static PHONEME_TAB *phoneme_out;
|
||||
@@ -621,6 +651,7 @@ enum {
|
||||
tKEYWORD,
|
||||
tCONDITION,
|
||||
tPROPERTIES,
|
||||
tINTONATION,
|
||||
};
|
||||
|
||||
int item_type;
|
||||
@@ -982,7 +1013,7 @@ static void error(const char *format, const char *string)
|
||||
|
||||
static void Error(const char *string)
|
||||
{//==================================
|
||||
error(string,NULL);
|
||||
error("%s",string);
|
||||
}
|
||||
|
||||
static FILE *fopen_log(FILE *f_log, const char *fname,const char *access)
|
||||
@@ -1149,6 +1180,15 @@ static void unget_char(unsigned int c)
|
||||
}
|
||||
|
||||
|
||||
int CheckNextChar()
|
||||
{//================
|
||||
int c;
|
||||
while(((c = get_char()) == ' ') || (c == '\t'));
|
||||
unget_char(c);
|
||||
return(c);
|
||||
} // end of CheckNextChar
|
||||
|
||||
|
||||
static int NextItem(int type)
|
||||
{//==========================
|
||||
int acc;
|
||||
@@ -1243,7 +1283,12 @@ static int NextItem(int type)
|
||||
p++;
|
||||
}
|
||||
if(!isdigit(*p))
|
||||
error("Expected a number",NULL);
|
||||
{
|
||||
if((type == tNUMBER) && (*p == '-'))
|
||||
error("Expected an unsigned number",NULL);
|
||||
else
|
||||
error("Expected a number",NULL);
|
||||
}
|
||||
while(isdigit(*p))
|
||||
{
|
||||
acc *= 10;
|
||||
@@ -1254,7 +1299,7 @@ static int NextItem(int type)
|
||||
}
|
||||
|
||||
|
||||
if((type >= tKEYWORD) && (type <= tPROPERTIES))
|
||||
if((type >= tKEYWORD) && (type <= tINTONATION))
|
||||
{
|
||||
pk = keyword_tabs[type-tKEYWORD];
|
||||
while(pk->mnem != NULL)
|
||||
@@ -3020,6 +3065,7 @@ static void CompilePhonemeFiles()
|
||||
} // end of CompilePhonemeFiles
|
||||
|
||||
|
||||
|
||||
static void CompilePhonemeData2(const char *source)
|
||||
{//================================================
|
||||
char fname[sizeof(path_source)+40];
|
||||
@@ -3110,7 +3156,7 @@ memset(markers_used,0,sizeof(markers_used));
|
||||
|
||||
if(gui_flag)
|
||||
{
|
||||
progress = new wxProgressDialog(_T("Phonemes"),_T(""),progress_max);
|
||||
progress = new wxProgressDialog(_T("Compiling"),_T(""),progress_max);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3260,6 +3306,235 @@ void CompileMbrola()
|
||||
|
||||
|
||||
|
||||
static const TUNE default_tune = {
|
||||
0, {0,0,0,0},
|
||||
{0, 40, 24, 8, 0, 0, 0, 0},
|
||||
46, 57, 255, 78, 50, 255,
|
||||
PITCHfall, 0,
|
||||
3, 5,
|
||||
7, 7, 0,
|
||||
PITCHfall, 64, 8,
|
||||
PITCHfall, 70, 18, 24, 12,
|
||||
PITCHfall, 70, 18, 24, 12,
|
||||
{0,0,0,0,0,0,0,0,0,0}
|
||||
};
|
||||
|
||||
TUNE new_tune;
|
||||
|
||||
#define N_TUNE_NAMES 100
|
||||
|
||||
static MNEM_TAB envelope_names[] = {
|
||||
{"fall", 0},
|
||||
{"rise", 1},
|
||||
{"fall_rise", 2},
|
||||
{"fall_rise2", 3},
|
||||
{"rise_fall", 4},
|
||||
{NULL, -1} };
|
||||
|
||||
|
||||
// env_fallrise3, env_fallrise3,
|
||||
// env_fallrise4, env_fallrise4,
|
||||
// env_fall2, env_fall2,
|
||||
// env_rise2, env_rise2,
|
||||
// env_risefallrise, env_risefallrise
|
||||
|
||||
int LookupEnvelope(const char *name)
|
||||
{//=================================
|
||||
return(LookupMnem(envelope_names, name));
|
||||
}
|
||||
|
||||
|
||||
void CompileIntonation()
|
||||
{//=====================
|
||||
int ix;
|
||||
char *p;
|
||||
char c;
|
||||
int keyword;
|
||||
int compiling_tune = 0;
|
||||
int n_tune_names = 0;
|
||||
int done_split;
|
||||
int n_tunes = 0;
|
||||
FILE *f_out;
|
||||
wxString report;
|
||||
|
||||
char name[5];
|
||||
unsigned int tune_names[N_TUNE_NAMES];
|
||||
char buf[sizeof(path_source)+120];
|
||||
|
||||
error_count = 0;
|
||||
|
||||
sprintf(buf,"%s%s",path_source,"error_intonation");
|
||||
if((f_errors = fopen(buf,"w")) == NULL)
|
||||
f_errors = stderr;
|
||||
|
||||
sprintf(buf,"%sintonation",path_source);
|
||||
f_in = fopen_log(f_errors, buf, "r");
|
||||
if(f_in == NULL)
|
||||
{
|
||||
fclose(f_errors);
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(buf,"%s/intonations",path_home);
|
||||
f_out = fopen_log(f_errors, buf, "w");
|
||||
if(f_out == NULL)
|
||||
{
|
||||
fclose(f_in);
|
||||
fclose(f_errors);
|
||||
return;
|
||||
}
|
||||
|
||||
// make a list of the tune names
|
||||
while(!feof(f_in))
|
||||
{
|
||||
if(fgets(buf,sizeof(buf),f_in) == NULL)
|
||||
break;
|
||||
|
||||
if((memcmp(buf,"tune",4)==0) && isspace(buf[4]))
|
||||
{
|
||||
p = &buf[5];
|
||||
while(isspace(*p)) p++;
|
||||
|
||||
ix = 0;
|
||||
while((ix < int(sizeof(name) - 1)) && !isspace(*p))
|
||||
{
|
||||
name[ix++] = *p++;
|
||||
}
|
||||
name[ix] = 0;
|
||||
tune_names[n_tune_names++] = StringToWord(name);
|
||||
|
||||
if(n_tune_names >= N_TUNE_NAMES)
|
||||
break;
|
||||
}
|
||||
}
|
||||
rewind(f_in);
|
||||
linenum = 1;
|
||||
|
||||
while(!feof(f_in))
|
||||
{
|
||||
keyword = NextItem(tINTONATION);
|
||||
|
||||
switch(keyword)
|
||||
{
|
||||
case kTUNE:
|
||||
if(compiling_tune)
|
||||
{
|
||||
}
|
||||
compiling_tune = 1;
|
||||
n_tunes++;
|
||||
done_split = 0;
|
||||
|
||||
memcpy(&new_tune, &default_tune, sizeof(TUNE));
|
||||
NextItem(tSTRING);
|
||||
new_tune.name = StringToWord(item_string);
|
||||
fprintf(f_errors,"tune %s\n",WordToString(new_tune.name));
|
||||
break;
|
||||
|
||||
case kENDTUNE:
|
||||
compiling_tune = 0;
|
||||
fwrite(&new_tune, 1, sizeof(new_tune), f_out);
|
||||
break;
|
||||
|
||||
case kTUNE_PREHEAD:
|
||||
new_tune.prehead_start = NextItem(tNUMBER);
|
||||
new_tune.prehead_end = NextItem(tNUMBER);
|
||||
break;
|
||||
|
||||
case kTUNE_HEAD:
|
||||
new_tune.head_max_steps = NextItem(tNUMBER);
|
||||
new_tune.head_start = NextItem(tNUMBER);
|
||||
new_tune.head_end = NextItem(tNUMBER);
|
||||
NextItem(tSTRING);
|
||||
if((ix = LookupEnvelope(item_string)) < 0)
|
||||
{
|
||||
error("Bad envelope name: '%s'",item_string);
|
||||
}
|
||||
break;
|
||||
|
||||
case kTUNE_HEADEXTEND:
|
||||
// up to 8 numbers
|
||||
for(ix=0; ix < int(sizeof(new_tune.headextend)); ix++)
|
||||
{
|
||||
if(!isdigit(c = CheckNextChar()) && (c != '-'))
|
||||
break;
|
||||
|
||||
new_tune.headextend[ix] = (NextItem(tSIGNEDNUMBER) * 64) / 100; // convert from percentage to 64ths
|
||||
}
|
||||
new_tune.n_headextend = ix; // number of values
|
||||
break;
|
||||
|
||||
case kTUNE_UNSTRESSED:
|
||||
new_tune.unstressed_start = NextItem(tSIGNEDNUMBER);
|
||||
new_tune.unstressed_end = NextItem(tSIGNEDNUMBER);
|
||||
break;
|
||||
|
||||
case kTUNE_NUCLEUS0:
|
||||
NextItem(tSTRING);
|
||||
if((ix = LookupEnvelope(item_string)) < 0)
|
||||
{
|
||||
error("Bad envelope name: '%s'",item_string);
|
||||
break;
|
||||
}
|
||||
new_tune.nucleus0_env = ix;
|
||||
new_tune.nucleus0_max = NextItem(tNUMBER);
|
||||
new_tune.nucleus0_min = NextItem(tNUMBER);
|
||||
break;
|
||||
|
||||
case kTUNE_NUCLEUS1:
|
||||
NextItem(tSTRING);
|
||||
if((ix = LookupEnvelope(item_string)) < 0)
|
||||
{
|
||||
error("Bad envelope name: '%s'",item_string);
|
||||
break;
|
||||
}
|
||||
new_tune.nucleus1_env = ix;
|
||||
new_tune.nucleus1_max = NextItem(tNUMBER);
|
||||
new_tune.nucleus1_min = NextItem(tNUMBER);
|
||||
new_tune.tail_start = NextItem(tNUMBER);
|
||||
new_tune.tail_end = NextItem(tNUMBER);
|
||||
|
||||
if(!done_split)
|
||||
{
|
||||
new_tune.split_nucleus_env = ix;
|
||||
new_tune.split_nucleus_max = new_tune.nucleus1_max;
|
||||
new_tune.split_nucleus_min = new_tune.nucleus1_min;
|
||||
new_tune.split_tail_start = new_tune.tail_start;
|
||||
new_tune.split_tail_end = new_tune.tail_end;
|
||||
}
|
||||
break;
|
||||
|
||||
case kTUNE_SPLIT:
|
||||
NextItem(tSTRING);
|
||||
if((ix = LookupEnvelope(item_string)) < 0)
|
||||
{
|
||||
error("Bad envelope name: '%s'",item_string);
|
||||
break;
|
||||
}
|
||||
new_tune.split_nucleus_env = ix;
|
||||
new_tune.split_nucleus_max = NextItem(tNUMBER);
|
||||
new_tune.split_nucleus_min = NextItem(tNUMBER);
|
||||
new_tune.split_tail_start = NextItem(tNUMBER);
|
||||
new_tune.split_tail_end = NextItem(tNUMBER);
|
||||
done_split = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
error("Unexpected: '%s'",item_string);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fclose(f_in);
|
||||
fclose(f_out);
|
||||
fclose(f_errors);
|
||||
|
||||
report.Printf(_T("Compiled %d intonation tunes: %d errors."),n_tunes, error_count);
|
||||
wxLogStatus(report);
|
||||
|
||||
} // end of CompileIntonation
|
||||
|
||||
|
||||
|
||||
void CompilePhonemeData()
|
||||
{
|
||||
CompilePhonemeData2("phonemes");
|
||||
|
||||
+215
-48
@@ -44,9 +44,6 @@ extern char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme
|
||||
|
||||
static int linenum;
|
||||
static int error_count;
|
||||
static int transpose_offset; // transpose character range for LookupDictList()
|
||||
static int transpose_min;
|
||||
static int transpose_max;
|
||||
static int text_mode = 0;
|
||||
static int debug_flag = 0;
|
||||
static int error_need_dictionary = 0;
|
||||
@@ -55,6 +52,15 @@ static int hash_counts[N_HASH_DICT];
|
||||
static char *hash_chains[N_HASH_DICT];
|
||||
static char letterGroupsDefined[N_LETTER_GROUPS];
|
||||
|
||||
MNEM_TAB mnem_rules[] = {
|
||||
{"w_alt2", 0x12},
|
||||
{"w_alt3", 0x13},
|
||||
{"w_alt", 0x11}, // note: put longer names before their sub-strings
|
||||
{"p_alt2", 0x22},
|
||||
{"p_alt3", 0x23},
|
||||
{"p_alt", 0x21},
|
||||
{NULL, -1} };
|
||||
|
||||
MNEM_TAB mnem_flags[] = {
|
||||
// these in the first group put a value in bits0-3 of dictionary_flags
|
||||
{"$1", 0x41}, // stress on 1st syllable
|
||||
@@ -89,9 +95,10 @@ MNEM_TAB mnem_flags[] = {
|
||||
// language specific
|
||||
{"$double", 19}, // IT double the initial consonant of next word
|
||||
{"$alt", 20}, // use alternative pronunciation
|
||||
{"$alt1", 20}, // synonym for $alt
|
||||
{"$alt2", 21},
|
||||
{"$combine", 22}, // Combine with the next word
|
||||
{"$alt3", 23},
|
||||
{"$alt3", 22},
|
||||
{"$combine", 23}, // Combine with the next word
|
||||
|
||||
{"$dot", 24}, // ignore '.' after this word (abbreviation)
|
||||
{"$hasdot", 25}, // use this pronunciation if there is a dot after the word
|
||||
@@ -112,6 +119,7 @@ MNEM_TAB mnem_flags[] = {
|
||||
{"$capital", 0x29}, /* use this pronunciation if initial letter is upper case */
|
||||
{"$allcaps", 0x2a}, /* use this pronunciation if initial letter is upper case */
|
||||
{"$accent", 0x2b}, // character name is base-character name + accent name
|
||||
{"$sentence",0x2d}, // only if this clause is a sentence (i.e. terminator is {. ? !} not {, ; :}
|
||||
|
||||
// doesn't set dictionary_flags
|
||||
{"$?", 100}, // conditional rule, followed by byte giving the condition number
|
||||
@@ -143,27 +151,6 @@ int isspace2(unsigned int c)
|
||||
}
|
||||
|
||||
|
||||
static const char *LookupMnem2(MNEM_TAB *table, int value)
|
||||
{//=======================================================
|
||||
while(table->mnem != NULL)
|
||||
{
|
||||
if(table->value == value)
|
||||
return(table->mnem);
|
||||
table++;
|
||||
}
|
||||
return("");
|
||||
}
|
||||
|
||||
|
||||
char *print_dictionary_flags(unsigned int *flags)
|
||||
{//==============================================
|
||||
static char buf[20];
|
||||
|
||||
sprintf(buf,"%s 0x%x/%x",LookupMnem2(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]);
|
||||
return(buf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static FILE *fopen_log(const char *fname,const char *access)
|
||||
{//==================================================
|
||||
@@ -179,9 +166,8 @@ static FILE *fopen_log(const char *fname,const char *access)
|
||||
}
|
||||
|
||||
|
||||
#ifdef OPT_FORMAT
|
||||
static const char *lookup_mnem(MNEM_TAB *table, int value)
|
||||
//========================================================
|
||||
const char *LookupMnemName(MNEM_TAB *table, const int value)
|
||||
//==========================================================
|
||||
/* Lookup a mnemonic string in a table, return its name */
|
||||
{
|
||||
while(table->mnem != NULL)
|
||||
@@ -190,9 +176,181 @@ static const char *lookup_mnem(MNEM_TAB *table, int value)
|
||||
return(table->mnem);
|
||||
table++;
|
||||
}
|
||||
return("??"); /* not found */
|
||||
} /* end of mnem */
|
||||
#endif
|
||||
return(""); /* not found */
|
||||
} /* end of LookupMnemValue */
|
||||
|
||||
|
||||
char *print_dictionary_flags(unsigned int *flags)
|
||||
{//==============================================
|
||||
static char buf[20];
|
||||
|
||||
sprintf(buf,"%s 0x%x/%x",LookupMnemName(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]);
|
||||
return(buf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
char *DecodeRule(const char *group_chars, int group_length, char *rule)
|
||||
{//====================================================================
|
||||
/* Convert compiled match template to ascii */
|
||||
|
||||
unsigned char rb;
|
||||
unsigned char c;
|
||||
char *p;
|
||||
int ix;
|
||||
int match_type;
|
||||
int finished=0;
|
||||
int value;
|
||||
int linenum=0;
|
||||
int flags;
|
||||
int suffix_char;
|
||||
int condition_num=0;
|
||||
const char *name;
|
||||
char buf[60];
|
||||
char buf_pre[60];
|
||||
char suffix[20];
|
||||
static char output[60];
|
||||
|
||||
static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',
|
||||
'@','&','%','+','#','S','D','Z','A','L','!',' ','?','?','J','N','K','V','?','T','X','?','W'};
|
||||
|
||||
static char symbols_lg[] = {'A','B','C','H','F','G','Y'};
|
||||
|
||||
match_type = 0;
|
||||
buf_pre[0] = 0;
|
||||
|
||||
for(ix=0; ix<group_length; ix++)
|
||||
{
|
||||
buf[ix] = group_chars[ix];
|
||||
}
|
||||
buf[ix] = 0;
|
||||
|
||||
p = &buf[strlen(buf)];
|
||||
while(!finished)
|
||||
{
|
||||
rb = *rule++;
|
||||
|
||||
if(rb <= RULE_LINENUM)
|
||||
{
|
||||
switch(rb)
|
||||
{
|
||||
case 0:
|
||||
case RULE_PHONEMES:
|
||||
finished=1;
|
||||
break;
|
||||
case RULE_PRE:
|
||||
match_type = RULE_PRE;
|
||||
*p = 0;
|
||||
p = buf_pre;
|
||||
break;
|
||||
case RULE_POST:
|
||||
match_type = RULE_POST;
|
||||
*p = 0;
|
||||
strcat(buf," (");
|
||||
p = &buf[strlen(buf)];
|
||||
break;
|
||||
case RULE_PH_COMMON:
|
||||
break;
|
||||
case RULE_CONDITION:
|
||||
/* conditional rule, next byte gives condition number */
|
||||
condition_num = *rule++;
|
||||
break;
|
||||
case RULE_LINENUM:
|
||||
value = (rule[1] & 0xff) - 1;
|
||||
linenum = (rule[0] & 0xff) - 1 + (value * 255);
|
||||
rule+=2;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if(rb == RULE_DOLLAR)
|
||||
{
|
||||
p[0] = '$';
|
||||
name = LookupMnemName(mnem_rules, *rule++);
|
||||
strcpy(&p[1],name);
|
||||
p += (strlen(name)+1);
|
||||
c = ' ';
|
||||
}
|
||||
else
|
||||
if(rb == RULE_ENDING)
|
||||
{
|
||||
static const char *flag_chars = "ei vtfq t";
|
||||
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
|
||||
suffix_char = 'S';
|
||||
if(flags & (SUFX_P >> 8))
|
||||
suffix_char = 'P';
|
||||
sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f);
|
||||
rule += 3;
|
||||
for(ix=0;ix<9;ix++)
|
||||
{
|
||||
if(flags & 1)
|
||||
sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]);
|
||||
flags = (flags >> 1);
|
||||
}
|
||||
strcpy(p,suffix);
|
||||
p += strlen(suffix);
|
||||
c = ' ';
|
||||
}
|
||||
else
|
||||
if(rb == RULE_LETTERGP)
|
||||
{
|
||||
c = symbols_lg[*rule++ - 'A'];
|
||||
}
|
||||
else
|
||||
if(rb == RULE_LETTERGP2)
|
||||
{
|
||||
value = *rule++ - 'A';
|
||||
p[0] = 'L';
|
||||
p[1] = (value / 10) + '0';
|
||||
c = (value % 10) + '0';
|
||||
|
||||
if(match_type == RULE_PRE)
|
||||
{
|
||||
p[0] = c;
|
||||
c = 'L';
|
||||
}
|
||||
p+=2;
|
||||
}
|
||||
else
|
||||
if(rb <= RULE_LAST_RULE)
|
||||
c = symbols[rb];
|
||||
else
|
||||
if(rb == RULE_SPACE)
|
||||
c = '_';
|
||||
else
|
||||
c = rb;
|
||||
*p++ = c;
|
||||
}
|
||||
*p = 0;
|
||||
|
||||
p = output;
|
||||
if(linenum > 0)
|
||||
{
|
||||
sprintf(p,"%5d:\t",linenum);
|
||||
p += 7;
|
||||
}
|
||||
if(condition_num > 0)
|
||||
{
|
||||
sprintf(p,"?%d ",condition_num);
|
||||
p = &p[strlen(p)];
|
||||
}
|
||||
if((ix = strlen(buf_pre)) > 0)
|
||||
{
|
||||
while(--ix >= 0)
|
||||
*p++ = buf_pre[ix];
|
||||
*p++ = ')';
|
||||
*p++ = ' ';
|
||||
}
|
||||
*p = 0;
|
||||
strcat(p,buf);
|
||||
ix = strlen(output);
|
||||
while(ix < 8)
|
||||
output[ix++]=' ';
|
||||
output[ix]=0;
|
||||
return(output);
|
||||
} /* end of DecodeRule */
|
||||
|
||||
|
||||
|
||||
@@ -533,9 +691,9 @@ step=1; // TEST
|
||||
|
||||
len_word = strlen(word);
|
||||
|
||||
if(transpose_offset > 0)
|
||||
if(translator->transpose_offset > 0)
|
||||
{
|
||||
len_word = TransposeAlphabet(word, transpose_offset, transpose_min, transpose_max);
|
||||
len_word = TransposeAlphabet(word, translator->transpose_offset, translator->transpose_min, translator->transpose_max);
|
||||
}
|
||||
|
||||
*hash = HashDictionary(word);
|
||||
@@ -762,6 +920,7 @@ static void copy_rule_string(char *string, int &state)
|
||||
int sxflags;
|
||||
int value;
|
||||
int literal;
|
||||
MNEM_TAB *mr;
|
||||
|
||||
if(string[0] == 0) return;
|
||||
|
||||
@@ -858,7 +1017,8 @@ static void copy_rule_string(char *string, int &state)
|
||||
c = RULE_CAPITAL;
|
||||
break;
|
||||
case 'T':
|
||||
c = RULE_ALT1;
|
||||
output[ix++] = RULE_DOLLAR;
|
||||
c = 0x11;
|
||||
break;
|
||||
case 'W':
|
||||
c = RULE_SPELLING;
|
||||
@@ -899,10 +1059,28 @@ static void copy_rule_string(char *string, int &state)
|
||||
}
|
||||
break;
|
||||
|
||||
case '$': // obsolete, replaced by S
|
||||
fprintf(f_log,"%5d: $ now not allowed, use S for suffix",linenum);
|
||||
case '$':
|
||||
output[ix++] = RULE_DOLLAR;
|
||||
c = 0;
|
||||
mr = mnem_rules;
|
||||
while(mr->mnem != NULL)
|
||||
{
|
||||
len = strlen(mr->mnem);
|
||||
if(memcmp(p, mr->mnem, len) == 0)
|
||||
{
|
||||
c = mr->value;
|
||||
p += len;
|
||||
break;
|
||||
}
|
||||
mr++;
|
||||
}
|
||||
if(c == 0)
|
||||
{
|
||||
fprintf(f_log,"%5d: $ command not recognized\n",linenum);
|
||||
error_count++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'P':
|
||||
sxflags |= SUFX_P; // Prefix, now drop through to Suffix
|
||||
case 'S':
|
||||
@@ -1703,17 +1881,6 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha
|
||||
}
|
||||
sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP);
|
||||
|
||||
transpose_offset = 0;
|
||||
|
||||
if(strcmp(dict_name,"ru") == 0)
|
||||
{
|
||||
// transpose cyrillic alphabet from unicode to iso8859-5
|
||||
// transpose_offset = 0x430-0xd0;
|
||||
transpose_offset = 0x42f; // range 0x01 to 0x22
|
||||
transpose_min = 0x430;
|
||||
transpose_max = 0x451;
|
||||
}
|
||||
|
||||
value = N_HASH_DICT;
|
||||
Write4Bytes(f_out,value);
|
||||
Write4Bytes(f_out,offset_rules);
|
||||
|
||||
+58
-182
@@ -18,8 +18,6 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#define LOG_TRANSLATE
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
@@ -40,6 +38,7 @@ int dictionary_skipwords;
|
||||
char dictionary_name[40];
|
||||
|
||||
extern char *print_dictionary_flags(unsigned int *flags);
|
||||
extern char *DecodeRule(const char *group_chars, int group_length, char *rule);
|
||||
|
||||
// accented characters which indicate (in some languages) the start of a separate syllable
|
||||
//static const unsigned short diereses_list[7] = {L'ä',L'ë',L'ï',L'ö',L'ü',L'ÿ',0};
|
||||
@@ -106,8 +105,8 @@ static int reverse_word_bytes(int word)
|
||||
}
|
||||
|
||||
|
||||
int LookupMnem(MNEM_TAB *table, char *string)
|
||||
{//==========================================
|
||||
int LookupMnem(MNEM_TAB *table, const char *string)
|
||||
{//================================================
|
||||
while(table->mnem != NULL)
|
||||
{
|
||||
if(strcmp(string,table->mnem)==0)
|
||||
@@ -118,7 +117,6 @@ int LookupMnem(MNEM_TAB *table, char *string)
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================================
|
||||
// Read pronunciation rules and pronunciation lookup dictionary
|
||||
//
|
||||
@@ -1628,159 +1626,6 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
|
||||
//=============================================================================================
|
||||
|
||||
|
||||
#ifdef LOG_TRANSLATE
|
||||
static char *DecodeRule(const char *group_chars, int group_length, char *rule)
|
||||
{//===========================================================================
|
||||
/* Convert compiled match template to ascii */
|
||||
|
||||
unsigned char rb;
|
||||
unsigned char c;
|
||||
char *p;
|
||||
int ix;
|
||||
int match_type;
|
||||
int finished=0;
|
||||
int value;
|
||||
int linenum=0;
|
||||
int flags;
|
||||
int suffix_char;
|
||||
int condition_num=0;
|
||||
char buf[60];
|
||||
char buf_pre[60];
|
||||
char suffix[20];
|
||||
static char output[60];
|
||||
|
||||
static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',
|
||||
'@','&','%','+','#','S','D','Z','A','L','!',' ','?','?','J','N','K','V','?','T','X','?','W'};
|
||||
|
||||
static char symbols_lg[] = {'A','B','C','H','F','G','Y'};
|
||||
|
||||
match_type = 0;
|
||||
buf_pre[0] = 0;
|
||||
|
||||
for(ix=0; ix<group_length; ix++)
|
||||
{
|
||||
buf[ix] = group_chars[ix];
|
||||
}
|
||||
buf[ix] = 0;
|
||||
|
||||
p = &buf[strlen(buf)];
|
||||
while(!finished)
|
||||
{
|
||||
rb = *rule++;
|
||||
|
||||
if(rb <= RULE_LINENUM)
|
||||
{
|
||||
switch(rb)
|
||||
{
|
||||
case 0:
|
||||
case RULE_PHONEMES:
|
||||
finished=1;
|
||||
break;
|
||||
case RULE_PRE:
|
||||
match_type = RULE_PRE;
|
||||
*p = 0;
|
||||
p = buf_pre;
|
||||
break;
|
||||
case RULE_POST:
|
||||
match_type = RULE_POST;
|
||||
*p = 0;
|
||||
strcat(buf," (");
|
||||
p = &buf[strlen(buf)];
|
||||
break;
|
||||
case RULE_PH_COMMON:
|
||||
break;
|
||||
case RULE_CONDITION:
|
||||
/* conditional rule, next byte gives condition number */
|
||||
condition_num = *rule++;
|
||||
break;
|
||||
case RULE_LINENUM:
|
||||
value = (rule[1] & 0xff) - 1;
|
||||
linenum = (rule[0] & 0xff) - 1 + (value * 255);
|
||||
rule+=2;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if(rb == RULE_ENDING)
|
||||
{
|
||||
static const char *flag_chars = "ei vtfq t";
|
||||
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
|
||||
suffix_char = 'S';
|
||||
if(flags & (SUFX_P >> 8))
|
||||
suffix_char = 'P';
|
||||
sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f);
|
||||
rule += 3;
|
||||
for(ix=0;ix<9;ix++)
|
||||
{
|
||||
if(flags & 1)
|
||||
sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]);
|
||||
flags = (flags >> 1);
|
||||
}
|
||||
strcpy(p,suffix);
|
||||
p += strlen(suffix);
|
||||
c = ' ';
|
||||
}
|
||||
else
|
||||
if(rb == RULE_LETTERGP)
|
||||
{
|
||||
c = symbols_lg[*rule++ - 'A'];
|
||||
}
|
||||
else
|
||||
if(rb == RULE_LETTERGP2)
|
||||
{
|
||||
value = *rule++ - 'A';
|
||||
p[0] = 'L';
|
||||
p[1] = (value / 10) + '0';
|
||||
c = (value % 10) + '0';
|
||||
|
||||
if(match_type == RULE_PRE)
|
||||
{
|
||||
p[0] = c;
|
||||
c = 'L';
|
||||
}
|
||||
p+=2;
|
||||
}
|
||||
else
|
||||
if(rb <= RULE_LAST_RULE)
|
||||
c = symbols[rb];
|
||||
else
|
||||
if(rb == RULE_SPACE)
|
||||
c = '_';
|
||||
else
|
||||
c = rb;
|
||||
*p++ = c;
|
||||
}
|
||||
*p = 0;
|
||||
|
||||
p = output;
|
||||
if(linenum > 0)
|
||||
{
|
||||
sprintf(p,"%5d:\t",linenum);
|
||||
p += 7;
|
||||
}
|
||||
if(condition_num > 0)
|
||||
{
|
||||
sprintf(p,"?%d ",condition_num);
|
||||
p = &p[strlen(p)];
|
||||
}
|
||||
if((ix = strlen(buf_pre)) > 0)
|
||||
{
|
||||
while(--ix >= 0)
|
||||
*p++ = buf_pre[ix];
|
||||
*p++ = ')';
|
||||
*p++ = ' ';
|
||||
}
|
||||
*p = 0;
|
||||
strcat(p,buf);
|
||||
ix = strlen(output);
|
||||
while(ix < 8)
|
||||
output[ix++]=' ';
|
||||
output[ix]=0;
|
||||
return(output);
|
||||
} /* end of decode_match */
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
void AppendPhonemes(Translator *tr, char *string, int size, const char *ph)
|
||||
@@ -1833,8 +1678,8 @@ void AppendPhonemes(Translator *tr, char *string, int size, const char *ph)
|
||||
|
||||
|
||||
|
||||
static void MatchRule(Translator *tr, char *word[], int group_length, char *rule, MatchRecord *match_out, int word_flags, int dict_flags)
|
||||
{//======================================================================================================================================
|
||||
static void MatchRule(Translator *tr, char *word[], char *word_start, int group_length, char *rule, MatchRecord *match_out, int word_flags, int dict_flags)
|
||||
{//========================================================================================================================================================
|
||||
/* Checks a specified word against dictionary rules.
|
||||
Returns with phoneme code string, or NULL if no match found.
|
||||
|
||||
@@ -1861,6 +1706,7 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule
|
||||
|
||||
char *rule_start; /* start of current match template */
|
||||
char *p;
|
||||
int ix;
|
||||
|
||||
int match_type; /* left, right, or consume */
|
||||
int failed;
|
||||
@@ -1874,6 +1720,7 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule
|
||||
int lg_pts;
|
||||
int n_bytes;
|
||||
int add_points;
|
||||
int command;
|
||||
|
||||
MatchRecord match;
|
||||
static MatchRecord best;
|
||||
@@ -1883,6 +1730,7 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule
|
||||
unsigned char condition_num;
|
||||
char *common_phonemes; /* common to a group of entries */
|
||||
char *group_chars;
|
||||
char word_buf[N_WORD_BYTES];
|
||||
|
||||
group_chars = *word;
|
||||
|
||||
@@ -2091,11 +1939,29 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule
|
||||
failed = 1;
|
||||
break;
|
||||
|
||||
case RULE_ALT1:
|
||||
if(dict_flags & FLAG_ALT_TRANS)
|
||||
add_points = 1;
|
||||
case RULE_DOLLAR:
|
||||
command = *rule++;
|
||||
if((command & 0xf0) == 0x10)
|
||||
{
|
||||
if(dict_flags & (1 << (BITNUM_FLAG_ALT + (command & 0xf))))
|
||||
add_points = 23;
|
||||
else
|
||||
failed = 1;
|
||||
}
|
||||
else
|
||||
failed = 1;
|
||||
if((command & 0xf0) == 0x20)
|
||||
{
|
||||
// make a copy of the word up to the post-match characters
|
||||
ix = *word - word_start + consumed + group_length + 1;
|
||||
memcpy(word_buf, word_start-1, ix);
|
||||
word_buf[ix] = ' ';
|
||||
word_buf[ix+1] = 0;
|
||||
|
||||
if(LookupFlags(tr, &word_buf[1]) & (1 << (BITNUM_FLAG_ALT + (command & 0xf))))
|
||||
add_points = 23;
|
||||
else
|
||||
failed = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case '-':
|
||||
@@ -2403,7 +2269,6 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule
|
||||
total_consumed = consumed;
|
||||
}
|
||||
|
||||
#ifdef LOG_TRANSLATE
|
||||
if((option_phonemes == 2) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0))
|
||||
{
|
||||
// show each rule that matches, and it's points score
|
||||
@@ -2417,7 +2282,6 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule
|
||||
DecodePhonemes(match.phonemes,decoded_phonemes);
|
||||
fprintf(f_trans,"%3d\t%s [%s]\n",pts,DecodeRule(group_chars, group_length, rule_start),decoded_phonemes);
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -2425,13 +2289,11 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule
|
||||
while(*rule++ != 0);
|
||||
}
|
||||
|
||||
#ifdef LOG_TRANSLATE
|
||||
if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
|
||||
{
|
||||
if(group_length <= 1)
|
||||
fprintf(f_trans,"\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
/* advance input data pointer */
|
||||
total_consumed += group_length;
|
||||
@@ -2491,7 +2353,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
word_copy[ix] = 0;
|
||||
|
||||
|
||||
#ifdef LOG_TRANSLATE
|
||||
if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
|
||||
{
|
||||
char wordbuf[120];
|
||||
@@ -2504,7 +2365,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
wordbuf[ix] = 0;
|
||||
fprintf(f_trans,"Translate '%s'\n",wordbuf);
|
||||
}
|
||||
#endif
|
||||
|
||||
p = p_start;
|
||||
tr->word_vowel_count = 0;
|
||||
@@ -2548,7 +2408,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
{
|
||||
if(tr->groups3[ix] != NULL)
|
||||
{
|
||||
MatchRule(tr, &p, wc_bytes, tr->groups3[ix], &match1, word_flags, dict_flags0);
|
||||
MatchRule(tr, &p, p_start, wc_bytes, tr->groups3[ix], &match1, word_flags, dict_flags0);
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
@@ -2568,12 +2428,12 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
found = 1;
|
||||
|
||||
p2 = p;
|
||||
MatchRule(tr, &p2, 2, tr->groups2[g], &match2, word_flags, dict_flags0);
|
||||
MatchRule(tr, &p2, p_start, 2, tr->groups2[g], &match2, word_flags, dict_flags0);
|
||||
if(match2.points > 0)
|
||||
match2.points += 35; /* to acount for 2 letters matching */
|
||||
|
||||
/* now see whether single letter chain gives a better match ? */
|
||||
MatchRule(tr, &p, 1, tr->groups1[c], &match1, word_flags, dict_flags0);
|
||||
MatchRule(tr, &p, p_start, 1, tr->groups1[c], &match1, word_flags, dict_flags0);
|
||||
|
||||
if(match2.points >= match1.points)
|
||||
{
|
||||
@@ -2589,11 +2449,11 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
{
|
||||
/* alphabetic, single letter chain */
|
||||
if(tr->groups1[c] != NULL)
|
||||
MatchRule(tr, &p, 1, tr->groups1[c], &match1, word_flags, dict_flags0);
|
||||
MatchRule(tr, &p, p_start, 1, tr->groups1[c], &match1, word_flags, dict_flags0);
|
||||
else
|
||||
{
|
||||
// no group for this letter, use default group
|
||||
MatchRule(tr, &p, 0, tr->groups1[0], &match1, word_flags, dict_flags0);
|
||||
MatchRule(tr, &p, p_start, 0, tr->groups1[0], &match1, word_flags, dict_flags0);
|
||||
|
||||
if((match1.points == 0) && ((option_sayas & 0x10) == 0))
|
||||
{
|
||||
@@ -3167,6 +3027,12 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
|
||||
continue;
|
||||
}
|
||||
|
||||
if((dictionary_flags2 & FLAG_SENTENCE) && !(tr->clause_terminator & CLAUSE_BIT_SENTENCE))
|
||||
{
|
||||
// only uis this clause is a sentence , i.e. terminator is {. ? !} not {, : :}
|
||||
continue;
|
||||
}
|
||||
|
||||
if(dictionary_flags2 & FLAG_VERB)
|
||||
{
|
||||
// this is a verb-form pronunciation
|
||||
@@ -3243,7 +3109,18 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
|
||||
if(textmode == translator->langopts.textmode)
|
||||
{
|
||||
// only show this line if the word translates to phonemes, not replacement text
|
||||
fprintf(f_trans,"Found: %s [%s] %s\n",word1,ph_decoded,print_dictionary_flags(flags));
|
||||
if(dictionary_skipwords)
|
||||
{
|
||||
// matched more than one word
|
||||
memcpy(word_buf,word2,word_end-word2);
|
||||
word_buf[word_end-word2-1] = 0;
|
||||
fprintf(f_trans,"Found: '%s %s",word1,word_buf);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(f_trans,"Found: '%s",word1);
|
||||
}
|
||||
fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags));
|
||||
}
|
||||
}
|
||||
return(word_end);
|
||||
@@ -3541,12 +3418,11 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
|
||||
if(end_flags & FLAG_SUFX_E_ADDED)
|
||||
{
|
||||
utf8_out(tr->langopts.suffix_add_e, &word_end[1]);
|
||||
#ifdef LOG_TRANSLATE
|
||||
if(option_phonemes == 2)
|
||||
{
|
||||
fprintf(f_trans,"add e\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
if(option_phonemes == 2)
|
||||
{
|
||||
fprintf(f_trans,"add e\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ extern void DictionarySort(const char *dictname);
|
||||
extern void init_z();
|
||||
extern void CompilePhonemeData(void);
|
||||
extern void CompileMbrola();
|
||||
extern void CompileIntonation();
|
||||
extern void InitSpectrumDisplay();
|
||||
extern void InitProsodyDisplay();
|
||||
extern void InitWaveDisplay();
|
||||
@@ -203,6 +204,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame)
|
||||
EVT_MENU(MENU_FORMAT_DICTIONARY, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_SORT_DICTIONARY, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_COMPILE_MBROLA, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_COMPILE_INTONATION, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_CLOSE_ALL, MyFrame::OnQuit)
|
||||
EVT_MENU(MENU_QUIT, MyFrame::OnQuit)
|
||||
EVT_MENU(MENU_SPEAK_TRANSLATE, MyFrame::OnSpeak)
|
||||
@@ -218,6 +220,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame)
|
||||
EVT_MENU(MENU_VOWELCHART2, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_VOWELCHART3, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_RU, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_BG, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_DE, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_IT, MyFrame::OnTools)
|
||||
EVT_MENU(MENU_LEXICON_IT2, MyFrame::OnTools)
|
||||
@@ -553,6 +556,7 @@ void MyFrame::OnTools(wxCommandEvent& event)
|
||||
break;
|
||||
|
||||
case MENU_LEXICON_RU:
|
||||
case MENU_LEXICON_BG:
|
||||
case MENU_LEXICON_DE:
|
||||
case MENU_LEXICON_IT:
|
||||
case MENU_LEXICON_IT2:
|
||||
@@ -566,6 +570,10 @@ void MyFrame::OnTools(wxCommandEvent& event)
|
||||
case MENU_COMPILE_MBROLA:
|
||||
CompileMbrola();
|
||||
break;
|
||||
|
||||
case MENU_COMPILE_INTONATION:
|
||||
CompileIntonation();
|
||||
break;
|
||||
|
||||
case MENU_COMPILE_DICT_DEBUG:
|
||||
debug_flag =1; // and drop through to next case
|
||||
|
||||
+202
-2
@@ -200,8 +200,6 @@ static const unsigned short KOI8_R[0x60] = {
|
||||
|
||||
|
||||
#define N_CHARS 34
|
||||
int *p_unicode;
|
||||
int unicode[80];
|
||||
#define PH(c1,c2) (c2<<8)+c1 // combine two characters into an integer for phoneme name
|
||||
|
||||
|
||||
@@ -765,6 +763,202 @@ void Lexicon_De()
|
||||
}
|
||||
|
||||
|
||||
void Lexicon_Bg()
|
||||
{//==============
|
||||
// Bulgarian: compare stress markup in a list of words with lookup using bg_rules
|
||||
|
||||
char *p;
|
||||
char *pw;
|
||||
char *pw1;
|
||||
int cc;
|
||||
int vcount;
|
||||
int lex_stress;
|
||||
int input_length;
|
||||
int n_words=0;
|
||||
int n_wrong=0;
|
||||
int n_out=0;
|
||||
int n_stress;
|
||||
int max_stress;
|
||||
int max_stress_posn;
|
||||
int stress_first;
|
||||
int done;
|
||||
PHONEME_TAB *ph;
|
||||
|
||||
FILE *f_in;
|
||||
FILE *f_out;
|
||||
FILE *f_log;
|
||||
|
||||
char word[80];
|
||||
char word_in[80];
|
||||
char phonemes[N_WORD_PHONEMES];
|
||||
char buf[200];
|
||||
char fname[sizeof(path_dsource)+20];
|
||||
|
||||
static unsigned short bg_vowels[] = {0x430, 0x435, 0x438, 0x43e, 0x443, 0x44a, 0x44d, 0x44e, 0x44f, 0x450, 0x451, 0x45d, 0};
|
||||
|
||||
if(gui_flag == 0)
|
||||
return;
|
||||
|
||||
wxString s_fname = wxFileSelector(_T("List of UTF-8 words with Combining Grave Accent U+300 to indicate stress"),path_dir1,
|
||||
_T(""),_T(""),_T("*"),wxOPEN);
|
||||
if(s_fname.IsEmpty())
|
||||
return;
|
||||
strcpy(buf,s_fname.mb_str(wxConvLocal));
|
||||
path_dir1 = wxFileName(s_fname).GetPath();
|
||||
|
||||
if((f_in = fopen(buf,"r")) == NULL)
|
||||
{
|
||||
wxLogError(_T("Can't read file: ") + wxString(buf,wxConvLocal));
|
||||
return;
|
||||
}
|
||||
input_length = GetFileLength(buf);
|
||||
|
||||
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"bg_listx_1");
|
||||
if((f_out = fopen(fname,"w")) == NULL)
|
||||
{
|
||||
wxLogError(_T("Can't write to: ")+wxString(fname,wxConvLocal));
|
||||
fclose(f_in);
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"bg_log");
|
||||
f_log = fopen(fname,"w");
|
||||
|
||||
LoadVoice("bg",0);
|
||||
progress = new wxProgressDialog(_T("Lexicon"),_T(""),input_length);
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if((n_words & 0x3ff) == 0)
|
||||
{
|
||||
progress->Update(ftell(f_in));
|
||||
}
|
||||
|
||||
if(fgets(buf,sizeof(buf),f_in) == NULL)
|
||||
break;
|
||||
|
||||
if(isspace2(buf[0]))
|
||||
continue;
|
||||
|
||||
// convert from UTF-8 to Unicode
|
||||
word[0] = 0;
|
||||
word[1] = ' ';
|
||||
pw = &word[2];
|
||||
pw1 = word_in;
|
||||
p = buf;
|
||||
while(*p == ' ') p++;
|
||||
vcount = 0;
|
||||
lex_stress = 0;
|
||||
n_stress = 0;
|
||||
stress_first = 0;
|
||||
|
||||
// find the marked stress position
|
||||
for(;;)
|
||||
{
|
||||
p += utf8_in(&cc, p);
|
||||
if(iswspace(cc))
|
||||
break;
|
||||
if(cc == 0xfeff)
|
||||
continue; // ignore UTF-8 indication
|
||||
|
||||
pw1 += utf8_out(cc, pw1); // copy UTF-8 to 'word_in'
|
||||
|
||||
if(lookupwchar(bg_vowels, cc) != 0)
|
||||
vcount++;
|
||||
|
||||
if((cc == 0x300) || (cc == 0x450) || (cc == 0x45d))
|
||||
{
|
||||
// combining grave accent, of accented vowel character
|
||||
lex_stress = vcount;
|
||||
n_stress++;
|
||||
|
||||
if(vcount == 1)
|
||||
stress_first = 1;
|
||||
|
||||
if(cc == 0x300)
|
||||
continue; // discard combining accent
|
||||
if(cc == 0x450)
|
||||
cc = 0x435; // remove accent from vowel
|
||||
if(cc == 0x45d)
|
||||
cc = 0x438;
|
||||
}
|
||||
|
||||
pw += utf8_out(cc, pw); // copy UTF-8 to 'word'
|
||||
}
|
||||
*pw++ = ' ';
|
||||
*pw = 0;
|
||||
*pw1 = 0;
|
||||
|
||||
// translate
|
||||
TranslateWord(translator, &word[2],0, NULL);
|
||||
DecodePhonemes(word_phonemes,phonemes);
|
||||
|
||||
// find the stress position in the translation
|
||||
max_stress = 0;
|
||||
max_stress_posn = -1;
|
||||
vcount = 0;
|
||||
|
||||
ph = phoneme_tab[phonPAUSE];
|
||||
for(p=word_phonemes; *p != 0; p++)
|
||||
{
|
||||
ph = phoneme_tab[(unsigned int)*p];
|
||||
if(ph == NULL)
|
||||
continue;
|
||||
|
||||
if(ph->type == phVOWEL)
|
||||
vcount++;
|
||||
if(ph->type == phSTRESS)
|
||||
{
|
||||
if(ph->std_length > max_stress)
|
||||
{
|
||||
max_stress = ph->std_length;
|
||||
max_stress_posn = vcount+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
done = 0;
|
||||
if((lex_stress != max_stress_posn) || (n_stress != 1))
|
||||
{
|
||||
if((vcount > 0) && (lex_stress > 0) && (lex_stress <= 7))
|
||||
{
|
||||
if((n_stress == 2) && (stress_first))
|
||||
{
|
||||
done = 1;
|
||||
fprintf(f_out,"%s\t$%d\n",&word[2],lex_stress);
|
||||
}
|
||||
if(n_stress == 1)
|
||||
{
|
||||
done = 1;
|
||||
fprintf(f_out,"%s\t$%d\n",&word[2],lex_stress);
|
||||
}
|
||||
}
|
||||
|
||||
if(done == 0)
|
||||
{
|
||||
n_wrong++;
|
||||
fprintf(f_out,"%s\t$text %s\n", &word[2], word_in);
|
||||
}
|
||||
|
||||
if(done)
|
||||
n_out++;
|
||||
}
|
||||
|
||||
n_words++;
|
||||
}
|
||||
|
||||
fclose(f_in);
|
||||
fclose(f_out);
|
||||
fclose(f_log);
|
||||
|
||||
|
||||
delete progress;
|
||||
sprintf(buf,"Lexicon: Input %d, Output %d, Failed %d",n_words,n_out,n_wrong);
|
||||
wxLogStatus(wxString(buf,wxConvLocal));
|
||||
} // end of Lexicon_Bg
|
||||
|
||||
|
||||
|
||||
void Lexicon_Ru()
|
||||
{//==============
|
||||
// compare stress markings in Russian RuLex file with lookup in ru_rules
|
||||
@@ -791,6 +985,9 @@ void Lexicon_Ru()
|
||||
int len;
|
||||
int check_root;
|
||||
|
||||
int *p_unicode;
|
||||
int unicode[80];
|
||||
|
||||
char word[80];
|
||||
char word2[80];
|
||||
int counts[20][20][10];
|
||||
@@ -1066,6 +1263,9 @@ void CompareLexicon(int id)
|
||||
case MENU_LEXICON_RU:
|
||||
Lexicon_Ru();
|
||||
break;
|
||||
case MENU_LEXICON_BG:
|
||||
Lexicon_Bg();
|
||||
break;
|
||||
case MENU_LEXICON_DE:
|
||||
Lexicon_De();
|
||||
break;
|
||||
|
||||
+22
-2
@@ -49,6 +49,7 @@ BEGIN_EVENT_TABLE(FormantDlg, wxPanel)
|
||||
// EVT_SPINCTRL(T_TIMEFRAME,FormantDlg::OnSpin)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
int use_spin_controls=0;
|
||||
|
||||
void FormantDlg::OnCommand(wxCommandEvent& event)
|
||||
{//=============================================
|
||||
@@ -181,7 +182,14 @@ FormantDlg::FormantDlg(wxWindow *parent) : wxPanel(parent,-1,wxDefaultPosition,w
|
||||
}
|
||||
|
||||
y=224;
|
||||
t_timeframe = new wxSpinCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,0,500,0,_T("Frame length"));
|
||||
if(use_spin_controls)
|
||||
{
|
||||
t_timeframe = new wxSpinCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,0,500,0,_T("Frame length"));
|
||||
}
|
||||
else
|
||||
{
|
||||
tt_timeframe = new wxTextCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,wxDefaultValidator,_T("Frame length"));
|
||||
}
|
||||
t_orig_frame = new wxStaticText(this,-1,_T("mS"),wxPoint(61,y+8));
|
||||
t_ampframe = new wxSpinCtrl(this,T_AMPFRAME,_T(""), wxPoint(104,y+0), wxSize(52,24), wxTE_CENTRE,0,500,0,_T("Frame amplitude"));
|
||||
t_lab[3] = new wxStaticText(this,-1,_T("% amp - Frame"),wxPoint(159,y+8));
|
||||
@@ -255,6 +263,12 @@ void FormantDlg::GetValues(SpectSeq *spectseq, int frame)
|
||||
return;
|
||||
sf = spectseq->frames[frame];
|
||||
|
||||
if(use_spin_controls == 0)
|
||||
{
|
||||
formantdlg->tt_timeframe->GetValue().ToLong(&num);
|
||||
sf->length_adjust = num - spectseq->GetFrameLength(frame,0,NULL);
|
||||
}
|
||||
|
||||
for(ix=0; ix < 8; ix++)
|
||||
{
|
||||
if(ix < 7)
|
||||
@@ -386,7 +400,13 @@ void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field)
|
||||
}
|
||||
|
||||
// find the time until the next keyframe
|
||||
SetSpinCtrl(t_timeframe,int(spectseq->GetFrameLength(frame,1,&original_mS)+0.5)); // round to nearest integer
|
||||
value.Printf(_T("%d"),int(spectseq->GetFrameLength(frame,1,&original_mS)+0.5)); // round to nearest integer
|
||||
|
||||
if(use_spin_controls)
|
||||
t_timeframe->SetValue(value);
|
||||
else
|
||||
tt_timeframe->SetValue(value);
|
||||
|
||||
value.Printf(_T("%d mS"),original_mS);
|
||||
t_orig_frame->SetLabel(value);
|
||||
value.Printf(_T("%3d"),sf->amp_adjust);
|
||||
|
||||
+98
-114
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <wctype.h>
|
||||
|
||||
#include "speak_lib.h"
|
||||
@@ -45,8 +46,8 @@ typedef struct {
|
||||
char env;
|
||||
char flags; //bit 0=pitch rising, bit1=emnphasized, bit2=end of clause
|
||||
char nextph_type;
|
||||
short pitch1;
|
||||
short pitch2;
|
||||
unsigned char pitch1;
|
||||
unsigned char pitch2;
|
||||
} SYLLABLE;
|
||||
|
||||
static SYLLABLE *syllable_tab;
|
||||
@@ -61,10 +62,10 @@ static int tone_pitch_env; /* used to return pitch envelope */
|
||||
|
||||
|
||||
#define PITCHfall 0
|
||||
#define PITCHrise 1
|
||||
#define PITCHfrise 2 // and 3 must be for the varient preceded by 'r'
|
||||
#define PITCHfrise2 4 // and 5 must be the 'r' variant
|
||||
#define PITCHrisefall 6
|
||||
#define PITCHrise 2
|
||||
#define PITCHfrise 4 // and 3 must be for the variant preceded by 'r'
|
||||
#define PITCHfrise2 6 // and 5 must be the 'r' variant
|
||||
#define PITCHrisefall 8
|
||||
|
||||
/* 0 fall */
|
||||
unsigned char env_fall[128] = {
|
||||
@@ -191,9 +192,9 @@ static unsigned char env_risefallrise[128] = {
|
||||
|
||||
|
||||
|
||||
unsigned char *envelope_data[18] = {
|
||||
env_fall,
|
||||
env_rise,
|
||||
unsigned char *envelope_data[20] = {
|
||||
env_fall, env_fall,
|
||||
env_rise, env_rise,
|
||||
env_frise, env_r_frise,
|
||||
env_frise2, env_r_frise2,
|
||||
env_risefall, env_risefall,
|
||||
@@ -206,18 +207,17 @@ unsigned char *envelope_data[18] = {
|
||||
};
|
||||
|
||||
|
||||
/* all pitches given in Hz above pitch_base */
|
||||
|
||||
/* indexed by stress */
|
||||
static int min_drop[] = {6,7,9,9,20,20,20,25};
|
||||
|
||||
// pitch change during the main part of the clause
|
||||
static int drops_0[8] = {0x400,0x400,0x700,0x700,0x700,0xa00,0x1800,0x0e00};
|
||||
//static int drops_1[8] = {0x400,0x400,0x600,0x600,0xc00,0xc00,0x0e00,0x0e00};
|
||||
//static int drops_2[8] = {0x400,0x400,0x600,0x600,-0x800,0xc00,0x0e00,0x0e00};
|
||||
static int drops_0[8] = {9,9,16,16,16,23,55,32};
|
||||
|
||||
static short oflow[] = {0, 20, 12, 4, 0};
|
||||
static short oflow_emf[] = {5, 26, 16, 10, 5};
|
||||
static short oflow_less[] = {3, 19, 12, 7, 2};
|
||||
// static short oflow_test2[] = {20, 0, 20, 0, 20};
|
||||
// static short back_emf[] = {35, 32, 0};
|
||||
// overflow table values are 64ths of the body pitch range (between body_start and body_end)
|
||||
static signed char oflow[] = {0, 40, 24, 8, 0};
|
||||
static signed char oflow_emf[] = {10, 52, 32, 20, 10};
|
||||
static signed char oflow_less[] = {6, 38, 24, 14, 4};
|
||||
|
||||
|
||||
#define N_TONE_HEAD_TABLE 13
|
||||
@@ -235,8 +235,8 @@ typedef struct {
|
||||
unsigned char body_max_steps;
|
||||
char body_lower_u;
|
||||
|
||||
char n_overflow;
|
||||
short *overflow;
|
||||
unsigned char n_overflow;
|
||||
signed char *overflow;
|
||||
} TONE_HEAD;
|
||||
|
||||
|
||||
@@ -259,38 +259,38 @@ typedef struct {
|
||||
#define T_EMPH 1
|
||||
|
||||
static TONE_HEAD tone_head_table[N_TONE_HEAD_TABLE] = {
|
||||
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 0 statement
|
||||
{20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 1 comma
|
||||
{20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 2 question
|
||||
{20, 25, 39, 22, drops_0, 3, 4, 5, oflow_emf}, // 3 exclamation
|
||||
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 4 statement, emphatic
|
||||
{20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 5 statement, less intonation
|
||||
{20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 6 comma, less intonation
|
||||
{20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 7 comma, less intonation, less rise
|
||||
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 8 pitch raises at end of sentence
|
||||
{20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 9 comma
|
||||
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 10 question
|
||||
{15, 18, 18, 14, drops_0, 3, 3, 5, oflow_less}, // 11 test
|
||||
{20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less}, // 12 test
|
||||
{46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 0 statement
|
||||
{46, 57, 78, 46, drops_0, 3, 7, 5, oflow}, // 1 comma
|
||||
{46, 57, 78, 46, drops_0, 3, 7, 5, oflow}, // 2 question
|
||||
{46, 57, 90, 50, drops_0, 3, 9, 5, oflow_emf}, // 3 exclamation
|
||||
{46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 4 statement, emphatic
|
||||
{46, 57, 74, 55, drops_0, 4, 7, 5, oflow_less}, // 5 statement, less intonation
|
||||
{46, 57, 74, 55, drops_0, 4, 7, 5, oflow_less}, // 6 comma, less intonation
|
||||
{46, 57, 74, 55, drops_0, 4, 7, 5, oflow_less}, // 7 comma, less intonation, less rise
|
||||
{46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 8 pitch raises at end of sentence
|
||||
{46, 57, 78, 46, drops_0, 3, 7, 5, oflow}, // 9 comma
|
||||
{46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 10 question
|
||||
{34, 41, 41, 32, drops_0, 3, 7, 5, oflow_less}, // 11 test
|
||||
{46, 57, 55, 50, drops_0, 3, 7, 5, oflow_less}, // 12 test
|
||||
};
|
||||
|
||||
static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = {
|
||||
{PITCHfall, 29, 4, PITCHfall, 31, 8, NULL, 11, 6, 0}, // 0 statement
|
||||
{PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma
|
||||
{PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question
|
||||
// {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation
|
||||
{PITCHfall, 41, 4, PITCHfall, 41,35, NULL, 35, 4, T_EMPH}, // 3 exclamation
|
||||
{PITCHfall, 38, 2, PITCHfall, 42,30, NULL, 15, 5, 0}, // 4 statement, emphatic
|
||||
{PITCHfall, 28, 5, PITCHfall, 28, 9, NULL, 12, 7, 0}, // 5 statement, less intonation
|
||||
{PITCHfrise, 30, 8, PITCHfrise2, 30,10, NULL, 13, 20, 0}, // 6 comma, less intonation
|
||||
{PITCHfrise2, 28, 7, PITCHfall, 29,14, NULL, 14, 8, 0}, // 7 comma, less intonation, less rise
|
||||
{PITCHrise, 30,20, PITCHfall, 19,14, NULL, 20, 26, 0}, // 8 pitch raises at end of sentence
|
||||
{PITCHfrise, 35,11, PITCHfrise2, 32,10, NULL, 19, 24, 0}, // 9 comma
|
||||
{PITCHfrise, 39,15, PITCHfall, 28,14, NULL, 20, 36, 0}, // 10 question
|
||||
{PITCHfall, 28, 6, PITCHfall, 28,10, NULL, 12, 6, 0}, // 11 test
|
||||
{PITCHfall, 35, 9, PITCHfall, 35,12, NULL, 16, 10, 0}, // 12 test
|
||||
{PITCHfall, 64, 8, PITCHfall, 70,18, NULL, 24, 12, 0}, // 0 statement
|
||||
{PITCHfrise, 80,18, PITCHfrise2, 78,22, NULL, 34, 52, 0}, // 1 comma
|
||||
{PITCHfrise, 88,22, PITCHfrise2, 82,22, NULL, 34, 64, 0}, // 2 question
|
||||
{PITCHfall, 92, 8, PITCHfall, 92,80, NULL, 76, 8, T_EMPH}, // 3 exclamation
|
||||
|
||||
{PITCHfall, 86, 4, PITCHfall, 94,66, NULL, 34, 10, 0}, // 4 statement, emphatic
|
||||
{PITCHfall, 62,10, PITCHfall, 62,20, NULL, 28, 16, 0}, // 5 statement, less intonation
|
||||
{PITCHfrise, 68,18, PITCHfrise2, 68,22, NULL, 30, 44, 0}, // 6 comma, less intonation
|
||||
{PITCHfrise2, 64,16, PITCHfall, 66,32, NULL, 32, 18, 0}, // 7 comma, less intonation, less rise
|
||||
{PITCHrise, 68,46, PITCHfall, 42,32, NULL, 46, 58, 0}, // 8 pitch raises at end of sentence
|
||||
{PITCHfrise, 78,24, PITCHfrise2, 72,22, NULL, 42, 52, 0}, // 9 comma
|
||||
{PITCHfrise, 88,34, PITCHfall, 64,32, NULL, 46, 82, 0}, // 10 question
|
||||
{PITCHfall, 56,12, PITCHfall, 56,20, NULL, 24, 12, 0}, // 11 test
|
||||
{PITCHfall, 70,18, PITCHfall, 70,24, NULL, 32, 20, 0}, // 12 test
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/* index by 0=. 1=, 2=?, 3=! 4=none, 5=emphasized */
|
||||
@@ -306,11 +306,8 @@ unsigned char punctuation_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS] = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* indexed by stress */
|
||||
static int min_drop[] = {0x300,0x300,0x400,0x400,0x900,0x900,0x900,0xb00};
|
||||
|
||||
|
||||
int n_tunes = 0;
|
||||
TUNE *tunes = NULL;
|
||||
|
||||
|
||||
#define SECONDARY 3
|
||||
@@ -419,20 +416,17 @@ static int count_increments(int ix, int end_ix, int min_stress)
|
||||
|
||||
|
||||
|
||||
|
||||
static void set_pitch(SYLLABLE *syl, int base, int drop)
|
||||
/******************************************************/
|
||||
// Set the pitch of a vowel in syllable_tab. Base & drop are Hz * 256
|
||||
// Set the pitch of a vowel in syllable_tab
|
||||
{
|
||||
int pitch1, pitch2;
|
||||
int flags = 0;
|
||||
|
||||
/* adjust experimentally */
|
||||
int pitch_range2 = 148;
|
||||
int pitch_base2 = 72;
|
||||
|
||||
if(base < 0) base = 0;
|
||||
|
||||
pitch2 = ((base * pitch_range2 ) >> 15) + pitch_base2;
|
||||
pitch2 = base;
|
||||
|
||||
if(drop < 0)
|
||||
{
|
||||
@@ -440,10 +434,12 @@ static void set_pitch(SYLLABLE *syl, int base, int drop)
|
||||
drop = -drop;
|
||||
}
|
||||
|
||||
pitch1 = pitch2 + ((drop * pitch_range2) >> 15);
|
||||
pitch1 = pitch2 + drop;
|
||||
if(pitch1 < 0)
|
||||
pitch1 = 0;
|
||||
|
||||
if(pitch1 > 511) pitch1 = 511;
|
||||
if(pitch2 > 511) pitch2 = 511;
|
||||
if(pitch1 > 254) pitch1 = 254;
|
||||
if(pitch2 > 254) pitch2 = 254;
|
||||
|
||||
syl->pitch1 = pitch1;
|
||||
syl->pitch2 = pitch2;
|
||||
@@ -466,13 +462,17 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
|
||||
int initial;
|
||||
int overflow=0;
|
||||
int n_overflow;
|
||||
int pitch_range;
|
||||
int pitch_range_abs;
|
||||
int *drops;
|
||||
short *overflow_tab;
|
||||
signed char *overflow_tab;
|
||||
SYLLABLE *syl;
|
||||
|
||||
static short continue_tab[5] = {-13, 16, 10, 4, 0};
|
||||
static signed char continue_tab[5] = {-26, 32, 20, 8, 0};
|
||||
|
||||
drops = th->body_drops;
|
||||
pitch_range = (th->body_end - th->body_start) << 8;
|
||||
pitch_range_abs = abs(pitch_range);
|
||||
|
||||
if(continuing)
|
||||
{
|
||||
@@ -480,8 +480,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
|
||||
overflow = 0;
|
||||
n_overflow = 5;
|
||||
overflow_tab = continue_tab;
|
||||
increment = (th->body_end - th->body_start) << 8;
|
||||
increment = increment / (th->body_max_steps -1);
|
||||
increment = pitch_range / (th->body_max_steps -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -513,8 +512,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
|
||||
|
||||
if(n_steps > 1)
|
||||
{
|
||||
increment = (th->body_end - th->body_start) << 8;
|
||||
increment = increment / (n_steps -1);
|
||||
increment = pitch_range / (n_steps -1);
|
||||
}
|
||||
else
|
||||
increment = 0;
|
||||
@@ -527,7 +525,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
|
||||
pitch += increment;
|
||||
else
|
||||
{
|
||||
pitch = (th->body_end << 8) - (increment * overflow_tab[overflow++])/16;
|
||||
pitch = (th->body_end << 8) + (pitch_range_abs * overflow_tab[overflow++])/64;
|
||||
if(overflow >= n_overflow)
|
||||
{
|
||||
overflow = 0;
|
||||
@@ -548,20 +546,20 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
|
||||
if(stress >= PRIMARY)
|
||||
{
|
||||
syl->stress = PRIMARY_STRESSED;
|
||||
set_pitch(syl,pitch,drops[stress]);
|
||||
set_pitch(syl,(pitch >> 8),drops[stress]);
|
||||
}
|
||||
else
|
||||
if(stress >= SECONDARY)
|
||||
{
|
||||
set_pitch(syl,pitch,drops[stress]);
|
||||
set_pitch(syl,(pitch >> 8),drops[stress]);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* unstressed, drop pitch if preceded by PRIMARY */
|
||||
if((syllable_tab[ix-1].stress & 0x3f) >= SECONDARY)
|
||||
set_pitch(syl,pitch - (th->body_lower_u << 8), drops[stress]);
|
||||
set_pitch(syl,(pitch >> 8) - th->body_lower_u, drops[stress]);
|
||||
else
|
||||
set_pitch(syl,pitch,drops[stress]);
|
||||
set_pitch(syl,(pitch >> 8),drops[stress]);
|
||||
}
|
||||
|
||||
ix++;
|
||||
@@ -571,13 +569,12 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
|
||||
|
||||
|
||||
|
||||
static void SetPitchGradient(int start_ix, int end_ix, int start_pitch, int end_pitch)
|
||||
{//====================================================================================
|
||||
// Set a linear pitch change over a number of syllables.
|
||||
// Used for pre-head, unstressed syllables in the body, and the tail
|
||||
|
||||
|
||||
static int calc_pitch_segment2(int ix, int end_ix, int start_p, int end_p, int min_stress)
|
||||
/****************************************************************************************/
|
||||
/* Linear pitch rise/fall, change pitch at min_stress or stronger
|
||||
Used for pre-head and tail */
|
||||
{
|
||||
int ix;
|
||||
int stress;
|
||||
int pitch;
|
||||
int increment;
|
||||
@@ -585,49 +582,43 @@ static int calc_pitch_segment2(int ix, int end_ix, int start_p, int end_p, int m
|
||||
int drop;
|
||||
SYLLABLE *syl;
|
||||
|
||||
if(ix >= end_ix)
|
||||
return(ix);
|
||||
|
||||
n_increments = count_increments(ix,end_ix,min_stress);
|
||||
increment = (end_p - start_p) << 8;
|
||||
increment = (end_pitch - start_pitch) << 8;
|
||||
n_increments = end_ix - start_ix;
|
||||
|
||||
if(n_increments <= 0)
|
||||
return;
|
||||
|
||||
if(n_increments > 1)
|
||||
{
|
||||
increment = increment / n_increments;
|
||||
}
|
||||
|
||||
|
||||
pitch = start_p << 8;
|
||||
while(ix < end_ix)
|
||||
pitch = start_pitch << 8;
|
||||
|
||||
for(ix=start_ix; ix < end_ix; ix++)
|
||||
{
|
||||
syl = &syllable_tab[ix];
|
||||
stress = syl->stress;
|
||||
|
||||
if(increment > 0)
|
||||
{
|
||||
set_pitch(syl,pitch,-increment);
|
||||
set_pitch(syl,(pitch >> 8),-(increment >> 8));
|
||||
pitch += increment;
|
||||
}
|
||||
else
|
||||
{
|
||||
drop = -increment;
|
||||
drop = -(increment >> 8);
|
||||
if(drop < min_drop[stress])
|
||||
drop = min_drop[stress];
|
||||
|
||||
pitch += increment;
|
||||
|
||||
if(drop > 0x900)
|
||||
drop = 0x900;
|
||||
set_pitch(syl, pitch, drop);
|
||||
if(drop > 18)
|
||||
drop = 18;
|
||||
set_pitch(syl, (pitch >> 8), drop);
|
||||
}
|
||||
|
||||
ix++;
|
||||
}
|
||||
return(ix);
|
||||
} /* end of calc_pitch_segment2 */
|
||||
|
||||
|
||||
|
||||
} // end of SetPitchGradient
|
||||
|
||||
|
||||
|
||||
@@ -651,10 +642,8 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone)
|
||||
/* vowels before the first primary stress */
|
||||
/******************************************/
|
||||
|
||||
if(number_pre > 0)
|
||||
{
|
||||
ix = calc_pitch_segment2(ix, ix+number_pre, th->pre_start, th->pre_end, 0);
|
||||
}
|
||||
SetPitchGradient(ix, ix+number_pre, th->pre_start, th->pre_end);
|
||||
ix += number_pre;
|
||||
|
||||
/* body of tonic segment */
|
||||
/*************************/
|
||||
@@ -680,13 +669,13 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone)
|
||||
{
|
||||
tone_pitch_env = tn->pitch_env0;
|
||||
drop = tn->tonic_max0 - tn->tonic_min0;
|
||||
set_pitch(&syllable_tab[ix++],tn->tonic_min0 << 8,drop << 8);
|
||||
set_pitch(&syllable_tab[ix++],tn->tonic_min0, drop);
|
||||
}
|
||||
else
|
||||
{
|
||||
tone_pitch_env = tn->pitch_env1;
|
||||
drop = tn->tonic_max1 - tn->tonic_min1;
|
||||
set_pitch(&syllable_tab[ix++],tn->tonic_min1 << 8,drop << 8);
|
||||
set_pitch(&syllable_tab[ix++],tn->tonic_min1, drop);
|
||||
}
|
||||
|
||||
syllable_tab[tone_posn].env = tone_pitch_env;
|
||||
@@ -696,7 +685,7 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone)
|
||||
/* tail, after the tonic syllable */
|
||||
/**********************************/
|
||||
|
||||
calc_pitch_segment2(ix, end, tn->tail_start, tn->tail_end, 0);
|
||||
SetPitchGradient(ix, end, tn->tail_start, tn->tail_end);
|
||||
|
||||
return(tone_pitch_env);
|
||||
} /* end of calc_pitches */
|
||||
@@ -1057,13 +1046,8 @@ void CalcPitches(Translator *tr, int clause_type)
|
||||
{
|
||||
syl = &syllable_tab[st_ix];
|
||||
|
||||
x = syl->pitch1 - 72;
|
||||
if(x < 0) x = 0;
|
||||
p->pitch1 = x;
|
||||
|
||||
x = syl->pitch2 - 72;
|
||||
if(x < 0) x = 0;
|
||||
p->pitch2 = x;
|
||||
p->pitch1 = syl->pitch1;
|
||||
p->pitch2 = syl->pitch2;
|
||||
|
||||
p->env = PITCHfall;
|
||||
if(syl->flags & SYL_RISE)
|
||||
@@ -1099,6 +1083,6 @@ if(p->tone_ph)
|
||||
}
|
||||
}
|
||||
|
||||
} // end of Translator::CalcPitches
|
||||
} // end of CalcPitches
|
||||
|
||||
|
||||
|
||||
@@ -138,6 +138,7 @@ enum {
|
||||
MENU_FORMAT_DICTIONARY,
|
||||
MENU_SORT_DICTIONARY,
|
||||
MENU_COMPILE_MBROLA,
|
||||
MENU_COMPILE_INTONATION,
|
||||
|
||||
MENU_SPEAK_TRANSLATE,
|
||||
MENU_SPEAK_RULES,
|
||||
@@ -155,6 +156,7 @@ enum {
|
||||
MENU_VOWELCHART3,
|
||||
MENU_LEXICON,
|
||||
MENU_LEXICON_RU,
|
||||
MENU_LEXICON_BG,
|
||||
MENU_LEXICON_DE,
|
||||
MENU_LEXICON_IT,
|
||||
MENU_LEXICON_IT2,
|
||||
|
||||
+3
-1
@@ -88,6 +88,7 @@ wxMenuBar *MakeMenu(int type)
|
||||
data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary"));
|
||||
data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)"));
|
||||
data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list..."));
|
||||
// data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data"));
|
||||
data_menu->AppendSeparator();
|
||||
data_menu->Append(MENU_FORMAT_DICTIONARY, _("&Layout *_rules file"));
|
||||
data_menu->Append(MENU_SORT_DICTIONARY, _("&Sort *_rules file"));
|
||||
@@ -113,6 +114,7 @@ wxMenuBar *MakeMenu(int type)
|
||||
|
||||
lexicon_menu = new wxMenu;
|
||||
lexicon_menu->Append(MENU_LEXICON_RU, _("Russian (lexicon.dict)"));
|
||||
lexicon_menu->Append(MENU_LEXICON_BG, _("Bulgarian"));
|
||||
lexicon_menu->Append(MENU_LEXICON_DE, _("German"));
|
||||
lexicon_menu->Append(MENU_LEXICON_IT, _("Italian"));
|
||||
lexicon_menu->Append(MENU_LEXICON_IT2, _("Italian, pass 2"));
|
||||
@@ -120,7 +122,7 @@ wxMenuBar *MakeMenu(int type)
|
||||
tools_menu = new wxMenu;
|
||||
tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu);
|
||||
// tools_menu->Append(MENU_LOAD_WAV, _T("Analyse WAV file"));
|
||||
tools_menu->Append(MENU_LEXICON, _("Compare &Lexicon"), lexicon_menu);
|
||||
tools_menu->Append(MENU_LEXICON, _("Process &Lexicon"), lexicon_menu);
|
||||
tools_menu->Append(MENU_TO_UTF8, _("Convert file to &UTF8..."));
|
||||
tools_menu->Append(MENU_COUNT_WORDS, _("Count word &frequencies..."));
|
||||
tools_menu->Append(MENU_TEST , _("Test (temporary)"));
|
||||
|
||||
+57
-19
@@ -769,7 +769,11 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB
|
||||
{
|
||||
if(roman || !(wtab[1].flags & FLAG_FIRST_UPPER))
|
||||
{
|
||||
utf8_in(&c2, &word_end[2]);
|
||||
if(word_end[0] == '.')
|
||||
utf8_in(&c2, &word_end[2]);
|
||||
else
|
||||
utf8_in(&c2, &word_end[1]);
|
||||
|
||||
if((word_end[1] != 0) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || IsAlpha(c2)))
|
||||
{
|
||||
// ordinal number is indicated by dot after the number
|
||||
@@ -810,6 +814,19 @@ if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG
|
||||
} // end of CheckDotOrdinal
|
||||
|
||||
|
||||
static int hu_number_e(const char *word)
|
||||
{//=====================================
|
||||
// lang-hu: variant form of numbers when followed by hyphen and a suffix starting with 'a' or 'e' (but not a, e, az, ez, azt, ezt, att. ett
|
||||
|
||||
if((word[0] == 'a') || (word[0] == 'e'))
|
||||
{
|
||||
if((word[1] == ' ') || (word[1] == 'z') || ((word[1] == 't') && (word[2] == 't')))
|
||||
return(0);
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
} // end of hu_numnber_e
|
||||
|
||||
|
||||
|
||||
int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
@@ -824,6 +841,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
int repeat = 0;
|
||||
int n_digits = 0;
|
||||
char *word_start;
|
||||
int num_control = 0;
|
||||
unsigned int flags[2];
|
||||
char ph_roman[30];
|
||||
char number_chars[N_WORD_BYTES];
|
||||
@@ -895,18 +913,34 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
|
||||
sprintf(number_chars," %d ",acc);
|
||||
|
||||
if(word[0] == '.')
|
||||
{
|
||||
// dot has not been removed. This implies that there was no space after it
|
||||
return(0);
|
||||
}
|
||||
|
||||
if(CheckDotOrdinal(tr, word_start, word, wtab, 1))
|
||||
wtab[0].flags |= FLAG_ORDINAL;
|
||||
|
||||
if(tr->langopts.numbers & NUM_ROMAN_ORDINAL)
|
||||
{
|
||||
if((n_digits <= 1) && !(wtab[0].flags & FLAG_ORDINAL))
|
||||
return(0);
|
||||
wtab[0].flags |= FLAG_ORDINAL;
|
||||
if(tr->translator_name == L('h','u'))
|
||||
{
|
||||
if(!(wtab[0].flags & FLAG_ORDINAL))
|
||||
{
|
||||
if((wtab[0].flags & FLAG_HYPHEN_AFTER) && hu_number_e(word))
|
||||
{
|
||||
// should use the 'e' form of the number
|
||||
num_control |= 1;
|
||||
}
|
||||
else
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr->prev_dict_flags = 0;
|
||||
TranslateNumber(tr, &number_chars[2], p, flags, wtab);
|
||||
TranslateNumber(tr, &number_chars[2], p, flags, wtab, num_control);
|
||||
|
||||
if(tr->langopts.numbers & NUM_ROMAN_AFTER)
|
||||
strcat(ph_out,ph_roman);
|
||||
@@ -1319,11 +1353,11 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
|
||||
tensunits = value % 100;
|
||||
buf1[0] = 0;
|
||||
|
||||
ph_thousands[0] = 0;
|
||||
ph_thousand_and[0] = 0;
|
||||
|
||||
if(hundreds > 0)
|
||||
{
|
||||
ph_thousands[0] = 0;
|
||||
ph_thousand_and[0] = 0;
|
||||
|
||||
found = 0;
|
||||
if(ordinal && (tensunits == 0))
|
||||
{
|
||||
@@ -1369,6 +1403,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
|
||||
}
|
||||
|
||||
ph_digits[0] = 0;
|
||||
|
||||
if(hundreds > 0)
|
||||
{
|
||||
if((tr->langopts.numbers & NUM_AND_HUNDRED) && ((control & 1) || (ph_thousands[0] != 0)))
|
||||
@@ -1418,9 +1453,13 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
|
||||
}
|
||||
|
||||
ph_hundred_and[0] = 0;
|
||||
if((tr->langopts.numbers & NUM_HUNDRED_AND) && (tensunits != 0))
|
||||
if(tensunits > 0)
|
||||
{
|
||||
if((value > 100) || ((control & 1) && (thousandplex==0)))
|
||||
if((tr->langopts.numbers & NUM_HUNDRED_AND) && ((value > 100) || ((control & 1) && (thousandplex==0))))
|
||||
{
|
||||
Lookup(tr, "_0and", ph_hundred_and);
|
||||
}
|
||||
if((tr->langopts.numbers & NUM_THOUSAND_AND) && (hundreds == 0) && ((control & 1) || (ph_thousands[0] != 0)))
|
||||
{
|
||||
Lookup(tr, "_0and", ph_hundred_and);
|
||||
}
|
||||
@@ -1461,8 +1500,8 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
|
||||
} // end of LookupNum3
|
||||
|
||||
|
||||
static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, WORD_TAB *wtab)
|
||||
{//========================================================================================================
|
||||
static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control)
|
||||
{//=====================================================================================================================
|
||||
// Number translation with various options
|
||||
// the "word" may be up to 4 digits
|
||||
// "words" of 3 digits may be preceded by another number "word" for thousands or millions
|
||||
@@ -1501,7 +1540,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
|
||||
n_digit_lookup = 0;
|
||||
buf_digit_lookup[0] = 0;
|
||||
digit_lookup = buf_digit_lookup;
|
||||
number_control = 0;
|
||||
number_control = control;
|
||||
|
||||
for(ix=0; isdigit(word[ix]); ix++) ;
|
||||
n_digits = ix;
|
||||
@@ -1639,9 +1678,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
|
||||
|
||||
if(tr->translator_name == L('h','u'))
|
||||
{
|
||||
// variant form of numbers when followed by hyphen and a suffix starting with 'a' or 'e' (buit not a, e, az, ez, azt, ezt
|
||||
if((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact==1)
|
||||
&& ((word[suffix_ix] == 'a') || (word[suffix_ix] == 'e')) && ((c = word[suffix_ix+1]) != ' ') && (c != 'z'))
|
||||
// variant form of numbers when followed by hyphen and a suffix starting with 'a' or 'e' (but not a, e, az, ez, azt, ezt
|
||||
if((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact==1) && hu_number_e(&word[suffix_ix]))
|
||||
{
|
||||
number_control |= 1; // use _1e variant of number
|
||||
}
|
||||
@@ -1821,13 +1859,13 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
|
||||
|
||||
|
||||
|
||||
int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab)
|
||||
{//================================================================================================
|
||||
int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control)
|
||||
{//=============================================================================================================
|
||||
if(option_sayas == SAYAS_DIGITS1)
|
||||
return(0); // speak digits individually
|
||||
|
||||
if(tr->langopts.numbers != 0)
|
||||
return(TranslateNumber_1(tr, word1, ph_out, flags, wtab));
|
||||
return(TranslateNumber_1(tr, word1, ph_out, flags, wtab, control));
|
||||
|
||||
return(0);
|
||||
} // end of TranslateNumber
|
||||
|
||||
+1
-1
@@ -192,7 +192,7 @@ void ConfigSave(int exit)
|
||||
wxFileConfig *pConfig = (wxFileConfig *)(wxConfigBase::Get());
|
||||
|
||||
#ifndef PLATFORM_WINDOWS
|
||||
pConfig->Write(_T("/samplerate"),samplerate);
|
||||
// pConfig->Write(_T("/samplerate"),samplerate);
|
||||
#endif
|
||||
pConfig->Write(_T("/spectload"),path_spectload);
|
||||
pConfig->Write(_T("/spectload2"),path_spectload2);
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
#define phLONG 0x200000
|
||||
#define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer
|
||||
#define phRHOTIC 0x800000
|
||||
#define phNOPAUSE 0x1000000
|
||||
#define phLOCAL 0x80000000 // used during compilation
|
||||
|
||||
// fixed phoneme code numbers, these can be used from the program code
|
||||
|
||||
+20
-11
@@ -193,7 +193,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
|
||||
if((type==phSTOP) || type==(phFRICATIVE))
|
||||
{
|
||||
if(voicing==0)
|
||||
if((voicing==0) && (regression & 0xf))
|
||||
{
|
||||
voicing = 1;
|
||||
}
|
||||
@@ -206,7 +206,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
else
|
||||
if((type==phVSTOP) || type==(phVFRICATIVE))
|
||||
{
|
||||
if(voicing==0)
|
||||
if((voicing==0) && (regression & 0xf))
|
||||
{
|
||||
voicing = 2;
|
||||
}
|
||||
@@ -229,10 +229,19 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
voicing = 0;
|
||||
}
|
||||
}
|
||||
if((regression & 0x4) && (plist2[j].sourceix))
|
||||
if(plist2[j].sourceix)
|
||||
{
|
||||
// stop propagation at a word boundary
|
||||
voicing = 0;
|
||||
if(regression & 0x04)
|
||||
{
|
||||
// stop propagation at a word boundary
|
||||
voicing = 0;
|
||||
}
|
||||
if(regression & 0x10)
|
||||
{
|
||||
// devoice word-final consonants, unless propagating voiced
|
||||
if(voicing == 0)
|
||||
voicing = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -312,10 +321,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
|
||||
InterpretPhoneme(tr, 0x100, plist3, &phdata);
|
||||
|
||||
if((alternative = phdata.pd_param[pd_CHANGEPHONEME]) == 1)
|
||||
continue; // NULL phoneme, discard
|
||||
|
||||
if(alternative > 1)
|
||||
if((alternative = phdata.pd_param[pd_CHANGEPHONEME]) > 0)
|
||||
{
|
||||
PHONEME_TAB *ph2;
|
||||
ph2 = ph;
|
||||
@@ -323,6 +329,9 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
plist3->phcode = alternative;
|
||||
plist3->ph = ph;
|
||||
|
||||
if(alternative == 1)
|
||||
continue; // NULL phoneme, discard
|
||||
|
||||
if(ph->type == phVOWEL)
|
||||
{
|
||||
plist3->synthflags |= SFLAG_SYLLABLE;
|
||||
@@ -553,8 +562,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
|
||||
phlist[ix].prepause = 0;
|
||||
phlist[ix].amp = 20; // default, will be changed later
|
||||
phlist[ix].pitch1 = 0x400;
|
||||
phlist[ix].pitch2 = 0x400;
|
||||
phlist[ix].pitch1 = 255;
|
||||
phlist[ix].pitch2 = 255;
|
||||
ix++;
|
||||
}
|
||||
phlist[ix].newword = 2; // end of clause
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user