Browse Source

[1.39.36]

*_list files: add attribute $max3 to limit repetitions of a symbol to 3.
-v command option, if the voice-name is not found, lookup using it as a language name.
Windows: allow longer path names for espeak-data.
-m option: Ignore text within <script> and <style> tags.
Reduce default pitch to 80-117.
WavegenCloseSound() check if there remain items to be spoken and re-open the sound channel.
Reduce voicing before voiced plosives.
Corrections to mbrola translation for lang=hi.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@205 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 16 years ago
parent
commit
f90a4e369e
67 changed files with 1238 additions and 987 deletions
  1. 71
    62
      dictsource/dict_phonemes
  2. 21
    5
      dictsource/en_list
  3. 10
    26
      dictsource/en_rules
  4. 19
    10
      dictsource/eo_list
  5. 17
    20
      dictsource/eo_rules
  6. 20
    12
      dictsource/fr_list
  7. 8
    5
      dictsource/fr_rules
  8. 5
    1
      dictsource/hi_rules
  9. 9
    1
      dictsource/it_list
  10. 21
    59
      dictsource/it_rules
  11. 187
    186
      dictsource/pl_list
  12. 110
    102
      dictsource/pl_rules
  13. 4
    4
      dictsource/sw_list
  14. 3
    3
      dictsource/sw_rules
  15. 42
    10
      dictsource/vi_list
  16. 96
    88
      dictsource/vi_rules
  17. BIN
      phsource/b/xb
  18. 161
    111
      phsource/compile_report
  19. BIN
      phsource/d/xd
  20. BIN
      phsource/dzh/dz_pzd
  21. BIN
      phsource/dzh/dzh
  22. BIN
      phsource/dzh/xdz_pzd
  23. BIN
      phsource/dzh/xdzh
  24. 5
    5
      phsource/envelope/vi_5amp
  25. 10
    3
      phsource/envelope/vi_6amp
  26. BIN
      phsource/g/xg
  27. BIN
      phsource/g2/xg
  28. 8
    4
      phsource/mbrola/in1
  29. 2
    2
      phsource/ph_english_us
  30. 83
    66
      phsource/ph_hindi
  31. 1
    1
      phsource/ph_italian
  32. 10
    0
      phsource/ph_polish
  33. 0
    9
      phsource/ph_slovak
  34. 34
    31
      phsource/ph_vi
  35. 20
    4
      phsource/phonemes
  36. BIN
      phsource/vdiph/aai
  37. BIN
      phsource/vdiph/ai_4
  38. BIN
      phsource/vdiph/vowelchart.png
  39. BIN
      phsource/voc/Q_ulv
  40. BIN
      phsource/voc/zh
  41. BIN
      phsource/voc/zh_
  42. BIN
      phsource/vowel/@_2
  43. BIN
      phsource/vowel/V_7
  44. BIN
      phsource/vowel/a
  45. BIN
      phsource/vowel/a_5
  46. BIN
      phsource/vowel/e
  47. BIN
      phsource/vowel/i_4
  48. BIN
      phsource/vowel/o_2
  49. BIN
      phsource/vowel/u#_5
  50. BIN
      phsource/vowel/uu_4
  51. BIN
      phsource/vowel/vowelchart.png
  52. 61
    60
      platforms/windows/windows_cmd/src/speech.h
  53. 2
    2
      platforms/windows/windows_sapi/src/speech.h
  54. 3
    1
      src/compiledata.cpp
  55. 1
    0
      src/compiledict.cpp
  56. 51
    1
      src/dictionary.cpp
  57. 10
    4
      src/espeak.cpp
  58. 30
    9
      src/readclause.cpp
  59. 12
    5
      src/speak.cpp
  60. 7
    4
      src/speak_lib.cpp
  61. 1
    1
      src/synthdata.cpp
  62. 31
    21
      src/tr_languages.cpp
  63. 2
    1
      src/translate.cpp
  64. 4
    1
      src/translate.h
  65. 1
    1
      src/voice.h
  66. 15
    6
      src/voices.cpp
  67. 30
    40
      src/wavegen.cpp

+ 71
- 62
dictsource/dict_phonemes View File

@@ -19,13 +19,13 @@ Dictionary bn_dict

& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
o~ O~ r- U u u: u:~ u~
O~ o~ r- U u u: u:~ u~

* b B c C ch d d.
g h j J k kh l m
n N n. n^ p ph Q r
r. s S s. t t. t.h th
tS x z
* b B bh c C ch d
d. dh g gh h j J k
kh l m n N n. n^ p
ph Q r r. s S s. t
t. t.h th tS x z


Dictionary ca_dict
@@ -152,16 +152,15 @@ S s2 t v Z

Dictionary fr_dict

@ @- @2 a A a2 A~ e
E E2 E~ i i: o O o2
O2 O~ u u: W W2 w^i wA
W~ y Y
@ @- @2 a a2 A~ e E
E2 E~ i i: o O o2 O2
O~ u u: W W2 w^i wA W~
y Y

: ; b d dZ f g h
j k l m n N n2 n^
p p2 r R r2 s S t
t2 t3 tS v w z Z z2
z3
: b d dZ f g h j
k l m n N n2 n^ p
p2 r R r2 s S t t2
t3 tS v w z Z z2 z3


Dictionary grc_dict
@@ -191,14 +190,15 @@ Dictionary hi_dict

@ @- @2 @3 a a: aI aU
e E e: E: E~ i I i:
l- o O o: O: o~ O~ r-
l- o O o: O: O~ o~ r-
U u: u~ V

- : b c ch d d. f
g h H j J k kh l
l. m n N n. n^ p ph
Q q r r. s S s. t
T t. t.h th v w x z
- : b bh c ch d d.
dh f g gh h H j J
k kh l l. m n N n.
n^ p ph Q q r r. s
S s. t T t. t.h th v
w x z


Dictionary hu_dict
@@ -274,11 +274,11 @@ a a: aI aU e E e: i
I i: o o: r- u u: V
y

: b c ch d d. dZ f
g h j J k kh l l.
m n N n. n^ p ph R
R2 s S s. S; t t. t.h
th tS v w z
: b bh c ch d d. dh
dZ f g gh h j J k
kh l l. m n N n. n^
p ph R R2 s S s. S;
t t. t.h th tS v w z


Dictionary ko_dict
@@ -344,27 +344,27 @@ a a: aI aU e E e: i
I i: o o: r- u u: V
y

: b c ch d d. dZ f
g h j J k kh l l.
m n N n. n^ p ph R
R2 s s. S; t t. t.h th
tS v w z z.
: b bh c ch d d. dh
dZ f g gh h j J k
kh l l. m n N n. n^
p ph R R2 s s. S; t
t. t.h th tS v w z z.


Dictionary ne_dict

@ @/ @2 @3 a aI aU a~
e E eI eU E~ e~ i I
i~ l- o O o: oI oU o~
O~ r- u uI u~ V VI VU
e E eI eU e~ E~ i I
i~ l- o O o: oI oU O~
o~ r- u uI u~ V VI VU
V~

- : b c ch d d. f
g h H j J k kh l
l. m n N n. n^ p ph
Q q r r. s S s. t
T t. t.h th v w x z
z.
- : b bh c ch d d.
dh f g gh h H j J
k kh l l. m n N n.
n^ p ph Q q r r. s
S s. t T t. t.h th v
w x z z.


Dictionary nl_dict
@@ -393,23 +393,23 @@ s S s; t v w x z

Dictionary om_dict

@# a a: E e I I# i:
O o: U u:
a A a# a: E e E# I
I# i: O O# o: U U# u:

** : a# b B c` d d`
** : b B c` d D d`
dZ f g h j k k` l
m n n^ p p` R s S
t t` tS v w z
s2 t t` tS v w z


Dictionary pl_dict

@- a E E# E~ i O O~
u y
a E E# E~ i O O~ u
y

* : ; b c C d d;
dZ dz; f g h j k l
m n N n^ p r s S
: ; b c C d d; dZ
dz; f g h j k l m
n N n^ p r R s S
s; S; t t; tS ts ts; tS;
v w x z Z Z;

@@ -481,13 +481,14 @@ t t; tS ts v x z Z

Dictionary sq_dict

@ a A aI e E i O
u V y yE
@ @- @/ a A aI E e
eI i I I# O OI u V
y yE

* ** b c d D dZ f
g h j J k l ll m
n n^ p r R R2 s S
t T tS ts v w z Z
** b c d D dZ f g
h j J k l ll m n
n^ p r R R2 s S t
T tS ts v w z Z


Dictionary sv_dict
@@ -508,7 +509,7 @@ o u

* : b d D f g h
j J k l m n N n^
p Q r s S t T tS
p Q R s S t T tS
v w x z


@@ -542,9 +543,9 @@ i i@ iU O o OI oI u
u@ uI y y@ yI

b c d D f g h j
k kh l m n N n^ p
Q s t t[ ts; tS; v w
x z Z z;
J k kh l m n N n^
p Q r s s. t t[ ts;
tS; v w x z Z z.


Dictionary zh_dict
@@ -555,9 +556,9 @@ o o- ou u u@ ua uai uei
uo y y& y@ yE yi yu

(u) ; C f h j k kh
l m n N p ph r s
s. S; t th ts ts. ts. tS;
tS; tsh v w x X z.
l m n N p ph q r
s s. S; t th ts ts. ts.
tS; tS; tsh v w x X z.


Dictionary zhy_dict
@@ -569,3 +570,11 @@ oi ong ou u ui yu
b c d f g h j k
l m n N p r s t
tS v w z


Dictionary ga_dict

a A: E e: I O

b c C d k l r v
w x

+ 21
- 5
dictsource/en_list View File

@@ -19,7 +19,6 @@

// letter names, as they are spoken as a single character in text
// precede by _ to distinguish from pronunciation as a language word
test h'EloU

_a eI
b bi:
@@ -138,7 +137,7 @@ _¡ Inv,3:tI2dEkskl@m'eIS@n
_¦ broUk@nb'A@
_¨ daIa2r'i:sIs
_ª fEmI2nIn'O@dI2n@L
_« lEft'ang@LkwoUts
_« lEft'gIl@mEt
_­ makr0n
_² su:p@skrIptt'u:
_³ su:p@skrIptT'ri:
@@ -147,7 +146,7 @@ _· mId@Ld0t
_¸ sEd'Il@
_¹ su:p@skrIptw'0n
_º maskjUlIn'O@dI2n@L
_» raIt'ang@LkwoUts
_» raIt'gIl@mEt
_¿ Inv,3:tI2dkw'EstS@n

_‐ haIf@n
@@ -179,6 +178,14 @@ _‴ trIp@LpraIm
_‼ Ekskla2m'eIS@nz
_₠ jU@roU

\ bakstroUk $max3
/ stroUk $max3
?3 \ bakslaS $max3
?3 / slaS $max3
* ast@rIsk $max3
% p3sEnt $max3
= _:i:kw@Lz_: $max3
?5 % pVRs'Ent $max3
¢ sEnts
£ paUnd
¥ jEn
@@ -761,6 +768,8 @@ coauthor koU'O:T3
cobol koUb0l
cocoa koUkoU
cochlea k0kli:@
cockeye k0kaI
cocksure ,k0kS'U@
coconut koUk@nVt
codify koUdI2faI
coeur k3:
@@ -1014,6 +1023,7 @@ exalt Egz'0lt
execute EksI2kju:t // not $2
exile $1
exodus Eks@d@s
expedite Eksp@daIt // expedited
expert Eksp3:t
expertise Eksp3t'i:z
exploit $1 $onlys
@@ -1024,6 +1034,7 @@ export $verb
extract $1 $onlys
extract $1 $only
extract $2 $verb
extradite Ekstr@daIt // extradited
extrem Ekstr'i:m // extremism
extremist Ekstr'i:mIst
eyrie i@rI
@@ -1257,10 +1268,12 @@ internet Int3nEt
interrupt $1 $onlys
interrupt $3 $verb
interval Int3v@L
interven Int3v'i:n // for intervening
interven Int3v'i:n // for intervening
intray IntreI
intro $1
irate aIr'eIt
iris aIrIs
iron aI@n
irony aIr@nI
isosceles aIs'0s@li:z
itinerary aIt'In@r@rI
@@ -1551,6 +1564,7 @@ papa pa2p'A:
papal peIp@L
pagan peIg@n
pageant padZ@nt
paltry pO:ltrI
panacea pana2s'i:@
panache $2
parabola p@rab@l@
@@ -2033,6 +2047,7 @@ truely tru:lI2 $verbf
truest tru:@st
tryst trIst
tudor tju:d3
turntable t3:nteIb@L
tulip tju:lIp
turnkey t3:nki:
?5 turnkey tVRnki:
@@ -2438,6 +2453,7 @@ Cassandra k@sandr@
Cassey keIsI
Catherine kaTrI2n
Cecile sEsi:l
Chloe kloUI
Chris krIs
Connor k0n3
Daphne dafnI
@@ -2564,7 +2580,7 @@ Buchanan bju:k'an@n
Campbell kamb@l
Chrysler kraIzl3
Disney dIznI
Patel p@t'El
Patel pa2tEl
Primavera pri:m@v'e@r@
Prentice prEntIs
Reuter rOIt3

+ 10
- 26
dictsource/en_rules View File

@@ -538,8 +538,8 @@
@) ally (_S2 l%I
@@ic) ally (_S4 l%I
inst) al (_ O:l
&) al (d @L
b) al (d O:l
&) al (d_ @L
b) al (d+ O:l
b) al (k O:l
f) al (k 0l
b) all (K O:l
@@ -1061,7 +1061,6 @@
au O:
g) au (s aU
?!3 s) au (s 0
l) au (t_ aU
?!3 au (str 0
au (_ aU
_) auch %O:x
@@ -1079,7 +1078,7 @@
s) au (rus_ 'O:
@) au (ri 'O:
C) aus (_ aUs
au (t_ aU
@) au (t_ aU
n) au (t_ O:
authen %O:TEn
_) auto (@P4 ,O:toU // prefix
@@ -2384,6 +2383,7 @@
ey (an eI
_) eye aI
eye eI
eyed (_S2 d
@m) eyer (_ aI3
eyor (_ 'eI3

@@ -2490,6 +2490,7 @@
b) i (_ aI
c) i (_ aI
c) is (_ Is
d) i (_ =I
@@h) i (_ =I
h) i (_ =aI
&sk) i (_ =I
@@ -2555,12 +2556,13 @@
@) i (cip 'I
i (cus_ =I
_) id (_ aIdi:
idea aId'i@
_) idea aId'i@
acc) i (d I
c) i (dal 'aI
fr) i (day aI
_) i (dle aI
br) i (dl aI
_s) i (dl aI
f) i (del I2
br) i (dA aI
br) i (dg I
@@ -3145,7 +3147,7 @@
l) iv (en aIv
r) ival aIv@L
ct) iv (al 'aIv
v) iv (al 'aIv
@v) iv (al 'aIv
ive (ness Iv
_al) iv (e aIv
n) iv (e_ aIv
@@ -3399,6 +3401,7 @@
cla) ng (er Ng
ta) ngi ndZI
i) ng (er Ng
bi) ng (er ndZ
gi) ng (er ndZ
o) ng (er Ng
you) ng (er Ng
@@ -4506,7 +4509,6 @@
&) sib s@b
ea) s (ie z
ea) s (il z
_) sid (e# saId
C) sion S@n
?3 er) sion Z@n
A) sion Z@n
@@ -4669,6 +4671,7 @@
g) th (en_ T
thai taI
th (ead th
th (eart th
theless D@l'Es
theque tEk
ther (_ D3
@@ -5320,10 +5323,6 @@
ñ n^


\\ bakstroUk
/ stroUk
?3 \\ bakslaS
?3 / slaS
'
! _:Ekskl@meIS@n_:
! (\!
@@ -5332,8 +5331,6 @@
: koUl@n
D_) : (_DD_ // omit colon in time, eg: 2:30
$ d0l3
% p3sEnt
?5 % pVRs'Ent
@ at_:
& _!%and
!= n0ti:kw@Lz
@@ -5359,16 +5356,3 @@
. (. _:
\.) .

= __i:kw@Lz_
= (==
=) = (=
==) = (_ _::

* ast@rIsk
*) * (*
**
**) * (_ _::
% (%%
%) % (%
%%) % (_ _::


+ 19
- 10
dictsource/eo_list View File

@@ -27,7 +27,7 @@ _0M1 m,il_
_0M2 mili'ono
_0M3 mili'ardo
_0M4 duili'ono
_dpt komo_
_dpt _komo_

// accent names
_acu dekst@-*akoRno
@@ -45,17 +45,30 @@ _: dupunkto
_; punktokomo
_, komo
_? demandosigno
_! _k@-*isigno_
_- dividost@-*eko
__ subst@-*eko
~ tildo
° gradoI
% p@-*otsento
@ _tSe_
& kaI
= ,,egala,
\\ deklivo
/ oblik'vo
= egala
\ deklivo
/ oblikvo
| duktosigno
* asteRisko
© k'opiraIto
© kopiRaIto
_( Rondak@-*'ampo
_) feRm'itaRondak@-*'ampo
_[ Rektak@-*'ampo
_] f'eRmaRektak@-*'ampo
_{ k'u@-*bak@-*'ampo
_} f'eRmaku@-*bak@-*'ampo
_< angulk@-*'ampo
_> f'eRmaangulk@-*'ampo
_« du'oblaangulk@-*'ampo
_» f'eRmadu,oblaangulk@-*'ampo


v vo // not Roman numbers
@@ -76,7 +89,7 @@ k.c kaItset'eRe
Kg k'ilog@-*'amoI
Km k'ilom'et-*oI
kp k,omp'aru $dot
k.s kaI,s'im'ile
k.s kaI,si'mile
n.b n'otu||b'one
nro numeRo
pĝ padZo $dot
@@ -151,10 +164,6 @@ tra $u $pause
eĉ $brk
pli pl,i
plej pl,eI
//ĝojo dZoIo
//ĉashundo tSas,hundo
//ligno lig,no
//signo sig,no

// pronouns
mi $u

+ 17
- 20
dictsource/eo_rules View File

@@ -21,7 +21,7 @@
D_-_) an (_ %an //'an' after a number
D_) a (_ %a //'a' after a number
D_) an (_ %an //'an' after a number
-) ano (_ an%o // 'ano' = member

.group b
_) b(_ bo
@@ -39,10 +39,8 @@
_) d(_ do
d d

_) d (-ro_ dokt'o
_) d (-rino_ d,okto

-) do (_ d%o
_) d (-ro dokt'o
_) d (-rino d,okto

.group e
_) e(_ e
@@ -54,8 +52,8 @@
_) f(_ fo
f f

_) f (-ino_ fR%aUl
_) f (-lo_ fRaU
_) f (-ino fR%aUl
_) f (-lo fRaU
.group g
_) g(_ go
@@ -82,9 +80,9 @@
_) k(_ ko
k k

_) k (-do_ kamaR'a
_) k (-dino_ k'amaRa
_) k (-ino_ k'amaRad
_) k (-do kamaR'a
_) k (-dino k'amaRa
_) k (-ino k'amaRad

.group l
@@ -92,8 +90,6 @@
l l
ll (_ l

-) lo (_ l%o


.group m
_) m(_ mo
@@ -104,15 +100,19 @@
n n
n (_S1 n

_) n (-ro_ num'e
_) n (-ro num'e

.group o
_) o(_ o
o o
oj oI
-) o (_ %o
-) oj (_ %oI
-) on (_ %on
-X) o (_ %o // d-ro etc
-X) oj (_ %oI
-X) on (_ %on
.group p
_) p(_ po
@@ -132,8 +132,6 @@
K) r (A @-*
rr RR

-) ro (_ R%o // d-ro, n-ro

.group s
_) s(_ so
_) sh(_ So
@@ -141,11 +139,11 @@
sh (K S // foreign words
K) sh S // foreign words

_) s (-ino_ s,injoR
_) s (-ro_ sinj'o
_) s (-ino s,injoR
_) s (-ro sinj'o

_) s (-ano_ s'am,ide
_) s (-anino_ s'am,ide
_) s (-ano s'am,ide
_) s (-anino s'am,ide

_) s (-ta_ s'ank
@@ -220,7 +218,6 @@

£ pundo
£ (_D _pundoI_:
_! _k@-*isig'no_
__) - (_D minus_
D_) - (_D st@-*ek'eto_
A_) - (_D _

+ 20
- 12
dictsource/fr_list View File

@@ -24,7 +24,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2008-11-06 Michel Such <[email protected]>
// Updated 2008-12-03 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -97,7 +97,6 @@ _rng rO~t2A~S'Ef
_stk b'ar
_tld t'ild


// character names

_cap maZysk'yl
@@ -116,13 +115,14 @@ _* asterisk:
_, virgyl
_- tirE
_. _|pw%E~
_/ slaS
_: d'Ypw'E~
_; pwE~virg'yl
_/ bar||oblik
_: d'Y||pw'E~
_; pwE~||virg'yl
_< E~ferjWr
_= egal
_> syperjWr
_? pwE~dE~terogasj'O~
_? pwE~||dE~terogasj'O~
_! pwE~||dEksklamasj'O~
_[ uvr@-_kroSE
_\ b'aksl'aS
_] f'E2rm_kroS'E
@@ -130,27 +130,33 @@ _^ sirkOnflEks
__ sulin^e
_` aks'A~_gr'av
_{ uvr_akOlad
_| bar
_| bar_vErtik'al
_} f'E2rm_akOl'ad
² pw^is'A~s||d'Y
_« uvre||gijm'E
_» fErme||gijm'E
_’ a2postr'Of
_‘ a2postr'Of
_µ mikR'o
_§ sEksj'O~

// symbols that are normally spoken when reading text
! Eksklamasj'O~
@ arobaz
% pursA~
& _e
& e $u $brk
_& _e_komErsj'al
+ plys
~ tilde
€ @ro
¢ sEnt
¥ i;En
¥ jEn
£ livr
± pl'yz_'u_mw'E~
× myltipli:'e_p'ar
÷ diviz'e_p'ar
¼ W~_k'ar
½ W~_d@m'i
¾ trwAk'ar
¾ trwA_k'ar
© _^_EN
® m'ark_depos'e

@@ -709,7 +715,7 @@ bit bit
bluetooth blut'us
computer _^_en
(cyber link) _^_en
debian dEbjAn
debian dEbjan
edit _^_en
emacs Emaks
emacspeak Emakspi:k
@@ -803,6 +809,7 @@ samoa samoa
leone leO2n
koweït kowEjt
taïwan tajwAn
texas tEks'as
venezuela venezyela
(viêt nam) viEtnam
wallis wAlis
@@ -810,3 +817,4 @@ futuna futuna
zimbabwe zimbabwe




+ 8
- 5
dictsource/fr_rules View File

@@ -23,7 +23,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2008-11-19 Michel Such <[email protected]>
// Updated: 2008-11-28 Michel Such <[email protected]>
//

// Letter classes:
@@ -34,6 +34,7 @@

.L01 d e l n r t u
.L02 b c d f g h k p t v
.L03 d l m n s t v


.group a
@@ -629,6 +630,7 @@ _) h (érit // hériter
_) h (ésit // hésiter
_) h (eure // heure
_) h (iber // hibernation
_) hi (A j // hier
_) h (ippo // hippodrome
_) h (iro // hirondelle
_) h (ist // histoire
@@ -651,6 +653,7 @@ _) h (uma // humain
_) h (umb // humble
_) h (umi // humide
_) h (umo // humour
_) hy (A j
_) h (y // hypermarché
_) hyper (@P5 ipEr
_) hyper (_ ipEr
@@ -1016,6 +1019,7 @@ mou) rr rr // mourrai

ai) s (em s // vraisemblable
aCè) s (_ s
kansa) s (_ s // Kansas, Arkansas
ub) s (is z // subsister
tran) s (A z // transition
tran) s (e s // transe
@@ -1286,10 +1290,9 @@ Vn) t (_ t2

.group x
x ks
xs ks // lexique lexicaux vox
e) x (A gz // exagérer exemple
Ce) x (i ks
ine) x (i gz
L03e) x (A ks // annexe, vexer
_ine) x (A gz
_e) x (h gz // exhumer

ai) x (_ // voix paix prix
@@ -1314,7 +1317,7 @@ Vn) t (_ t2

.group y
y i // cryogénique myope
_) y (A _!i // yak, yacht
_) y (A j // yak, yacht
_) y (eu i // yeux

_) yahoo (P5 ia'u

+ 5
- 1
dictsource/hi_rules View File

@@ -38,6 +38,8 @@

.group इ
इ I
// इँ i~
// इं i~

.group ई
ई i:
@@ -99,6 +101,8 @@

.group ि
ि I
// िँ i~
// िं i~

.group ी
ी i:
@@ -399,7 +403,7 @@
ँ n // candrabindu

.group ं
N // anusvara
n // anusvara
ं (प m
ं (फ m
ं (ब m

+ 9
- 1
dictsource/it_list View File

@@ -411,6 +411,14 @@ i i: $atend
o O: $atend


// foreign words
chat tSat
cliché kli:Se
internet 'internet
jeans dZi:nz
web wEb


// exceptions
aereo $2
difficile $2
@@ -424,6 +432,6 @@ celsius tsElsj'us
conoscerla $2
no nO
posta pOsta
principi $1
tesser tess'ER
uomini $1
internet 'internet

+ 21
- 59
dictsource/it_rules View File

@@ -1,6 +1,10 @@
// translation rules
// This file is UTF-8 encoded

// letter groups
// A any vowel
// Y front vowels: e i (& accents)
.L01 a à o ò ó u ù

.group a
a a:
@@ -31,30 +35,12 @@
c k
cc k:
c (' tS
c (e tS
c (é tS
c (è tS
c (i tS
c (ì tS
cc (e tS:
cc (é tS:
cc (è tS:
cc (i tS:
cc (ì tS:
c (Y tS
cc (Y tS:
ch k
cch k:
ci (a tS
ci (à tS
ci (o tS
ci (ò tS
ci (u tS
ci (ù tS
cci (a tS:
cci (à tS:
cci (o tS:
cci (ò tS:
cci (u tS:
cci (ù tS:
ci (L01 tS
cci (L01 tS:
@) co (lA_ =ko
.group d
@@ -94,28 +80,10 @@
g g
gg g:
gh g
g (e dZ
g (é dZ
g (è dZ
g (i dZ
g (ì dZ
gi (a dZj
gi (à dZj
gi (o dZj
gi (ò dZj
gi (u dZj
gi (ù dZj
gg (e dZ:
gg (é dZ:
gg (è dZ:
gg (i dZ:
gg (ì dZ:
ggi (a dZ:
ggi (à dZ:
ggi (o dZ:
ggi (ò dZ:
ggi (u dZ:
ggi (ù dZ:
g (Y dZ
gi (L01 dZj
gg (Y dZ:
ggi (L01 dZ:
@) gger (lo_ =dZ:eR
gl (i l^
gl (ì l^
@@ -155,6 +123,11 @@
@) i (dere_ 'i
@) i (le_ =i
@) i (li_ =i
@) i (ma_ =i
r) i (ma_ i
laCr) i (ma_ =i
st) i (ma_ i
enz) i (ma_ i
@) iera (_ i'E:Ra
@) iere (_ i'E:Re
@) i (ente_ i
@@ -207,6 +180,8 @@
@) o (metro_ 'O
@) o (logo_ 'O
o (str 'O
@) o (di_ =o
@) o (do_ =o
@) o (lo_ =o

@@ -244,21 +219,8 @@
ss ss
s (t s
s (x s
sc (e S
sc (é S
sc (è S
sc (i S
sc (ì S
// A) sc (e SS
// A) sc (é SS
// A) sc (è SS
// A) sc (i SS
// A) sc (ì SS
sch (e sk
sch (é sk
sch (è sk
sch (i sk
sch (ì sk
sc (Y S
sch (Y sk
sh (K S // foreign words
K) sh S // foreign words
@) sia s'ia

+ 187
- 186
dictsource/pl_list View File

@@ -7,11 +7,11 @@
// prefixed by a _ character.

// Numbers
_0 z'E*O:
_0 z'ERO:
_1 j'EdEn
_2 dv'a
_3 t|S'y
_4 tSt'E*y
_4 tSt'ERy
_5 p;'En^ts;
_6 S'ES;ts;
_7 S;'EdEm
@@ -21,7 +21,7 @@ _10 dz;'ES;En^ts;
_11 jEdEn'aS;ts;E
_12 dvan'aS;ts;E
_13 t|Syn'aS;ts;E
_14 tStE*n'aS;ts;E
_14 tStERn'aS;ts;E
_15 pjEtn'aS;ts;E
_16 SEsn'aS;ts;E
_17 S;EdEmn'aS;ts;E
@@ -29,7 +29,7 @@ _18 OS;Emn'aS;ts;E
_19 dz;Ev;Etn'aS;ts;E
_2X dvadz;'ES;ts;a
_3X t|Sydz;'ES;c;i
_4X tStE*dz;'ES;c;i
_4X tStERdz;'ES;c;i
_5X p;En^dz;'ES;Ont
_6X SEZ;dz;'ES;Ont
_7X S;EdEmdz;'ES;Ont
@@ -39,7 +39,7 @@ _9X dz;Ev;En^dz;'ES;Ont
_1C st'O
_2C dv;'ES;c;E
_3C t|S'ysta
_4C tSt'E*ysta
_4C tSt'ERysta
_5C p;'En^ts;sEt
_6C S'ES;sEt
_7C S;'EdEmsEt
@@ -52,9 +52,9 @@ _0MA1 tyS;'OntsE // alternative form
_0MA2 m;ilj'Ony
_1M2 m;'iljOn
_0M2 m;ilj'Onuf
_0MA3 m;ilj'a@-*dy
_1M3 m;'ilja@-*d
_0M3 m;ilj'a@-*duf
_0MA3 m;ilj'aRdy
_1M3 m;'iljaRd
_0M3 m;ilj'aRduf
_0MA4 b;ilj'Ony
_1M4 b;'iljOn
_0M4 b;ilj'Onuf
@@ -62,67 +62,67 @@ _0M4 b;ilj'Onuf
_dpt _pSEts;'inEk_

_cap d'uZE_
_?A litE*a
_?A litERa
_?? symbOl
_#9 tab
_#32 spatsja

// accent names
_lig ligat'u*a
_acu _'Ost@-*E
_ac2 x,uNga*'umlawt // pOdv'ujnE_'Ost@-*E
_brv b@-*'Evis
_lig ligat'uRa
_acu _'OstRE
_ac2 x,uNgaR'umlawt // pOdv'ujnE_'OstRE
_brv bR'Evis
_ced z|tsEd;'ilO~
_cir z|d'aSc;Em //pSEts;'ONgwE
_dia _'umlawt
_dot z|k@-*OpkO~
_dot z|kROpkO~
_grv ts;'E~Sc;E
_hac h'atSEk
_mcn nadk@-*ES;l'OnE //m'ak@-*On
_mcn nadkRES;l'OnE //m'akROn
_ogo z|Og'Onc;Em
_rng z|k'uwc;Em //k'OwO
_stk sk@-*ES;l'OnE // dz;ElOnE
_stk skRES;l'OnE // dz;ElOnE
_tld z|t'yldO~


w vy $u $atend
z zy $u $atend
_a a
ą O~
b bE
c tsE
ć ts;i
d dE
e E
ę E~
f Ef
g gjE
h xa
_i i
j jOt
k ka
l El
ł Ew
m Em
n En
ń n^i
_o O
,u_k@-*EskOv'anE
p pE
q ku
r E*
s Es
ś S;i
t tE
_u u
v faw
_w vu
x iks
y 'ig*Ek
_z zEt
ż ZEt|z|k@-*'OpkO~
ź Z;i
w vy $u $atend
z zy $u $atend
_a a
ą O~
b bE
c tsE
ć ts;i
d dE
e E
ę E~
f Ef
g gjE
h xa
_i i
j jOt
k ka
l El
ł wy
m Em
n En
ń n^i
_o O
,u_kREskOv'anE
p pE
q ku
r ER
s Es
ś S;i
t tE
_u u
v faw
_w vu
x iks
y 'igREk
_z zEt
ż ZEt|z|kR'OpkO~
ź Z;i

ä $accent
ö $accent
@@ -138,41 +138,6 @@ _z zEt
í $accent


// other characters

˘ b@-*'Evis
¤ val'uta
§ pa*'ag@-*af
¨ 'umlawt
° st'Op;En^
˛ Og'OnEk
´ ,Ost@-*y_'aktsEnt
ˇ k'a*On
¸ tsEd;'illa
˝ x,uNga*'umlawt
× @-*'azy
÷ dz;El'En^;E
˙ g'u*na_k@-*'Opka
¯ nadk@-*ES;l'En^E
² kv'ad@-*at
³ S'ES;tS;an
¼ jEdnatSf'a*ta
½ jEdnad@-*'uga
¾ t||SytSf'a*tE
¹ jEdEng'u*nE
™ t@-*'Ejdma*k
± plusm'inus
£ funt
® zastSEZ'Ony
¡ Odv@-*,Otny||vykS'ykn^ik
¢ tsEnt
¥ jEn
« f@-*ants,usci||tsudz'yswuf
¬ nEg'atsja
» p@-*'avy||f@-*ants,usci||tsudz'yswuf
¶ ak'apit
¿ Odv@-*,Otny||pytajn^ik

// redefine foreign letters from pl_rules as CHAR

ß S,arfEs_'Es
@@ -191,44 +156,80 @@ _z zEt

// all my keyboard...

_! vykS'ykn^ik
_= *'uvna||S;E
_< mn^'EjSE
_> w;'ENkSE
_" tsudz'yswuf
_. k@-*'Opka
_, pSEts;'inEk
_- m'yS;lnik // or minus?
_? zn,ak||zapyt'an^a
_~ t'ylda
__ pOdk*ES;l'En^E
_: dvuk@-*'OpEk
_; S;@-*'Edn^ik
_( nav;as
_) pOnav;'aS;E
_[ n,av;as||kvad@-*at'Ovy
_] p@-*avy||n,av;as||kvad@-*at'Ovy
_{ n,av;as||klam@-*Ovy
_} p@-*avy||n,av;as||klam@-*'Ovy
_' ap'Ost@-*Of
_/ slES
_* gv;'astka
_\ b'EkslES
_| k@-*,Eska||p;On'Ova
_# haS
_$ d'Ola*
% p@-*'OtsEnt
_^ d'aSEk // what's be better?
_& and
_` 'aktsEnt
_@ m'awpa
+ plus
_! vykS'ykn^ik
_< mn^'EjSE
_> w;'ENkSE
_" tsudz'yswuf
_, pSEts;'inEk
_- m'yS;lnik // or minus?
_? zn,ak||zapyt'an^a
__ pOdkRES;l'En^E
_: dvukR'OpEk
_; S;R'Edn^ik
_( nav;as
_) pOnav;'aS;E
_[ n,av;as||kvadRat'Ovy
_] pRavy||n,av;as||kvadRat'Ovy
_{ n,av;as||klamROvy
_} pRavy||n,av;as||klamR'Ovy
_' ap'OstROf

. kR'Opka
~ t'ylda
= R'uvna||S;E
/ slES
* gv;'astka
\ b'EkslES
| kR,Eska||p;On'Ova
# haS
_$ d'OlaR
% pR'OtsEnt
^ d'aSEk // what's be better?
& and
` 'aktsEnt
@ m'awpa
+ plus

// other characters

˘ bR'Evis
¤ val'uta
§ paR'agRaf
¨ 'umlawt
° st'Op;En^
˛ Og'OnEk
´ ,OstRy_'aktsEnt
ˇ k'aROn
¸ tsEd;'illa
˝ x,uNgaR'umlawt
× R'azy
÷ dz;El'En^;E
˙ g'uRna_kR'Opka
¯ nadkRES;l'En^E
² kv'adRat
³ S'ES;tS;an
¼ jEdnatSf'aRta
½ jEdnadR'uga
¾ t||SytSf'aRtE
¹ jEdEng'uRnE
™ tR'EjdmaRk
± plusm'inus
£ funt
® zastSEZ'Ony
¡ OdvR,Otny||vykS'ykn^ik
¢ tsEnt
¥ jEn
« fRants,usci||tsudz'yswuf
¬ nEg'atsja
» pR'avy||fRants,usci||tsudz'yswuf
¶ ak'apit
¿ OdvR,Otny||pytajn^ik


// screenreadery

nvda EnfawdE'a $abbrev
orca O*ka
orca ORka
jaws dZ'Ews $abbrev

// komputery, komputery
@@ -247,8 +248,8 @@ load lOwd
office Ofis
play plEj
scane skan
(screen reader) sk@-*in*'idEr
(sound juicer) sawnd||dZ'usE*
(screen reader) skRinR'idEr
(sound juicer) sawnd||dZ'usER
thunderbird $1
view v;u
(e mail) imEjl
@@ -262,12 +263,12 @@ view v;u
(e mailowe) imEjlOvE
delete dil'Ejt
eject iZ'Ekt
forward fO*wE*d
backward bEkwE*d
forward fORwERd
backward bEkwERd
device div'ajs
devices divajsis
usb uEsb'E $abbrev
url uE*'El $abbrev
url uER'El $abbrev
drive drajv
scsi sk'azi $abbrev
hda $abbrev
@@ -275,8 +276,8 @@ sda $abbrev
dvd divid'i $abbrev
sh Es'xa $abbrev
ascii 'askEj $abbrev
ctrl k'Ont@-*Ol $abbrev
right *ajt $abbrev
ctrl k'OntROl $abbrev
right Rajt $abbrev

// nazwy własne akcentowanie - wymowa w regułkach
// todo: more!
@@ -305,29 +306,29 @@ microsoft $1

andrew Endrju // nieodmienne
chihuahua tSiwawa
francisco f@-*ansiskO
francisco fRansiskO
josé hOz'E
jose hOz'E
jake dZEjk
jersey dZE*zi
jersey dZERzi
miami maj'ami

janet dZanEt // żeńskie nie kończące się na a
jane dZEjn
alice Elis
circe ki*kE
maureen mO*'in
circe kiRkE
maureen mOR'in
jackie dZEki
jacqueline Zakl'in
janice dZEn^is
jeanette Zan'Et

george dZOrdZ // i męskie zakończone samogłoską odmieniane przez apostrof
maurice mO*is
maurice mORis
anthony EntOn
anthony EntOny $1 $only
jerry dZE*
jerry dZE*y $only
jerry dZER
jerry dZERy $only


// some exceptions - dawać więcej!
@@ -508,26 +509,26 @@ proc pr'OtsEnt $dot

//dr, mgr and so...

dr d'OktO* $dot
mgr mag'istE* $dot
dr d'OktOR $dot
mgr mag'istER $dot
doc d'OtsEnt $dot
prof p*Of'EsO* $dot
prof pROf'EsOR $dot
hab habilitOv'any $dot
inż inZ'yn^E* $dot
inż inZ'yn^ER $dot
mec mEtsEnas $dot
//ks kS;Onts $dot
//bp biskup $dot
//bpa biskupa
//hr h@-*ab;ja $dot
//hr hRab;ja $dot

//gen gEnE*aw $dot
//gen gEnERaw $dot
płk puwk'Ovnik $dot // declinated forms in pl_rules
ppłk pOtpuwk'Ovnik $dot
mjr m'ajO* $dot
mjr m'ajOR $dot
kpt kap'itan $dot
//por pO*'utSn^ik $dot
ppor pOdpO*'utSn^ik $dot
kpr kap*al $dot
//por pOR'utSn^ik $dot
ppor pOdpOR'utSn^ik $dot
kpr kapRal $dot

// abbr

@@ -537,7 +538,7 @@ usg u_Esg;'E $abbrev
tzn tO||znatSy $dot
itd i||tak||dalEj $dot
itp i||tEmu||pOdObnE $dot
etc Ets'EtE*a $dot
etc Ets'EtERa $dot
św S;v;Enty $dot
śp S;v;EntEj||pam;En^ts;i $dot

@@ -547,7 +548,7 @@ ok Ok'Ej $allcaps
np napS'ykwad $dot
tys tyS;E~tsy $dot
mln miljOnuf
mld milja*duf
mld miljaRduf

//popularne zagraniczniaki nieodmienne (no, prawie)
(ad hoc) adh'Ok
@@ -555,24 +556,24 @@ adieu adj'E
(ad oculos) ad'OkulOs
angelica angElika $2

(carte blanche) ka*tbl'anS
(carte blanche) kaRtbl'anS
challenge tSElEndZ
chanson SansO~ $2
(chargé d'affaires) Sa*ZEdafE* $4
(charge d'affaires) Sa*ZEdafE* $4
charmant Sa*man $2
charme Sa*m
charmeur Sa*mE* $2
charmeuse Sa*mEz $2
(chargé d'affaires) SaRZEdafER $4
(charge d'affaires) SaRZEdafER $4
charmant SaRman $2
charme SaRm
charmeur SaRmER $2
charmeuse SaRmEz $2
chippendale tSipEndEjl
chippendale tSipEndEjl $1 $only
(chow chow) tSawtSau $2
ciao tSjaw
(cicer cum caule) ts,itsE*kumk'awlE
(cicer cum caule) ts,itsERkumk'awlE
(ci devant) sidEv'aN
cinquecento tSinkwEtSEntO
circa tsi*ka
(cis dur) tsisd'u*
circa tsiRka
(cis dur) tsisd'uR
(cis moll) tsism'Ol
cito tsitO
city tsity
@@ -585,58 +586,58 @@ collège kOlEZ $2 //fr
comte kO~t
comtesse kO~t'Es
con kOn
concierge kOnsj'E*Z
concierge kOnsj'ERZ
cool kul
copyright k'Opy*ajt
(cosa nostra) k,Ozan'Ost@-*a
copyright k'OpyRajt
(cosa nostra) k,Ozan'OstRa
cottage kOtydZ
coupé kup'E
coupe kup'E
country kant@-*y
country kantRy
cubiculum kub'ikulum
culpa kulpa
curriculum ku*'ikulum
curriculum kuR'ikulum

d'amour damu* $2
d'amour damuR $2
(de facto) dEfaktO
(de iure) dEju*E
(de iure) dEjuRE
(déjà vu) dEZav'i
(déjà vue) dEZav'i
(deja vu) dEZav'i
(deja vue) dEZav'i
dell'arte dEl'a*
del'arte dEl'a*
(dies irae) d;'ijEs'i*E
dell'arte dEl'aR
del'arte dEl'aR
(dies irae) d;'ijEs'iRE
dinghy d;iNgi

faciendi fasjEndi
foyer fuaj'E

gentleman $1
graecas g@-*Ekas
graecas gREkas


monsieur mEsj'E
madame mad'am
mademoiselle madmuaz'El
(maitré d'hotel) mEt*EdOt'El
(maitre d'hotel) mEt*EdOt'El
(maitré d'hotel) mEtREdOt'El
(maitre d'hotel) mEtREdOt'El
mlle madmuaz'El
(mon ami) mOnami $3
(mon cher) mO~SE* $2
(mon cher) mO~SER $2

new n^;u

out awt

poirot puwa*'O // odmieniony w regułkach
poirot puwaR'O // odmieniony w regułkach

(qui pro quo) kvip*OkvO $3
(qui pro quo) kvipROkvO $3
rock rOk

sir sE*
sire si*
street st@-*it
sir sER
sire siR
street stRit

(va banque) vab'aNk
variétés varjEtE $3
@@ -652,12 +653,12 @@ von fOn
voodoo vudu

// kuchnia, kuchnia, jeść nam się chce!
//ragout *ag'u // przen. do rules
//ragout Rag'u // przen. do rules
fondue fO~d'i
beaujolais bOZOl'E
boeuf bEf
cabernet kabE*n'E
camembert kamEmb'E*
cabernet kabERn'E
camembert kamEmb'ER
café kafE $2
cafe kafE $2
chablis Sabli $2
@@ -670,12 +671,12 @@ chilli tSili
coca kOka
cola kOla
coleslaw kOlEslOw
croissant k@-*uas'aN
cumberland k'ambE*lEnd
(cura çao) ki*asaO
curaçao ki*asaO
curacao ki*asaO
curry ka*y
croissant kRuas'aN
cumberland k'ambERlEnd
(cura çao) kiRasaO
curaçao kiRasaO
curacao kiRasaO
curry kaRy
(de la maison) dElamEz'O~
(de volaille) dEvOl'aj
(a la) al'a

+ 110
- 102
dictsource/pl_rules View File

@@ -35,10 +35,10 @@
C) ai (r E
_alt) ai (r ai
_k) ai (r ai
_) archie E*tSi
_) archie (C E*tS|;E
_) archie ERtSi
_) archie (C ERtS|;E
acku (p Eka
_) arcy (@P4t a*tsy
_) arcy (@P4t aRtsy

@ł) a (by_ =a
@ł) a (bym_ =a
@@ -74,7 +74,7 @@

b b
ja) bł (kA p
b (_A p
b (_ p
b (i b;
bi (A b;j

@@ -179,7 +179,7 @@
_) challeng (er tSElEndZ
cha (mpi tZE
chan (nel tSa
_) charle (s tSa*ls
_) charle (s tSaRls
_) chie (f tSi
_) ch (ip tS
_) chippendal (A tSipEndEjl
@@ -202,16 +202,16 @@
_) c (ominu ts
_) conc (ert kOntS
_) c (onC k
_) copywri (t kOpy*aj
_) copywri (t kOpyRaj
_) c (orC k
_) c (owbo k
crack k@-*ak
_) croiss k@-*ruas
crack kRak
_) croiss kRruas
_) c (r k
_) c (umul k
_) curie ki*i
_) curie kiRi
_) cu (rli kE
cresc (end k@-*EStS
cresc (end kREStS

_) c (aps_ k
_) c (apslo k
@@ -219,7 +219,7 @@
lo) ck (u_ k
lo) ck (iem_ k
lo) ck (a_ k
_s) creenrea (d k@-*in*i
_s) creenrea (d kRinRi

.group ć
ć ts;
@@ -228,21 +228,21 @@

.group d
d d
d (_A t
d (_ t
d (i d;
di (A dj
dies (lA d;iz
dies (el d;iz
dz dz
dz (_A ts
dz (_ ts
dz (i dz;
dzi (A dz;
_na) dzi (em d|Z;
_po) dzi (em d|Z;
dź dz;
dź (_A ts;
dź (_ ts;
dż dZ
dż (_A tS
dż (_ tS

_o) dż d|Z
_po) dż d|Z
@@ -312,17 +312,16 @@
g g
g (i g;
hi) gi (e gj
g (_A k
gł (_ g
gł (_A k
g (_ k
gł (_ gw
gh g
gate (s gEjt
_) gentleman dZEntElmEn
_) georgi (o_ dZO*dZj
_) georgi (ą_ dZO*dZj
_) georgi (ę_ dZO*dZj
_) georgi (i_ dZO*dZj
_) georgi (a_ dZO*dZj
_) georgi (o_ dZORdZj
_) georgi (ą_ dZORdZj
_) georgi (ę_ dZORdZj
_) georgi (i_ dZORdZj
_) georgi (a_ dZORdZj

.group h
h x
@@ -338,8 +337,8 @@
_kl) i (e ;ij
żm) ii (_ iji
rak) ii (_ iji
_f) ire (fox_ 'ajE*
_f) ire (fo ajE*
_f) ire (fox_ 'ajER
_f) ire (fo ajER
_m) ic (ro ajk

C) ie (_ ;E#
@@ -460,6 +459,7 @@

.group j
jazz dZEz
jazz (_ dZEs
j j

_) james dZEjms
@@ -480,7 +480,7 @@
.group k
k k
// k (i c
kł (_ k
kł (_ kw
// ki (A kj
_) klow (n klaw

@@ -570,32 +570,33 @@
qu (A kv

.group r
r *
A_) r (A *
K) r (A @-*
ri (A *j
A) rr (A *
r R
A_) r (A R
K) r (A R
ri (A Rj
A) rr (A R
rz Z
rz (and *ts
_mu) rz (asichl *z
_mu) rz (o_+++ *z
_mu) rz (owie_+++ *z
_mu) rz (ą_+++ *z
_mu) rz (y_+++ *z
_mu) rz (ę_+++ *z
_mu) rz (a_+++ *z
_mu) rz (ów_+++ *z
_mu) rz (ami_+++ *z
_mu) rz (ach_+++ *z
_mi) rz (o_+++ *z
_mi) rz (owie_+++ *z
_mi) rz (ą_+++ *z
_mi) rz (y_+++ *z
_mi) rz (ę_+++ *z
_mi) rz (a_+++ *z
_mi) rz (ów_+++ *z
_mi) rz (ami_+++ *z
_mi) rz (ach_+++ *z
rz (_ S
rz (and Rts
_mu) rz (asichl Rz
_mu) rz (o_+++ Rz
_mu) rz (owie_+++ Rz
_mu) rz (ą_+++ Rz
_mu) rz (y_+++ Rz
_mu) rz (ę_+++ Rz
_mu) rz (a_+++ Rz
_mu) rz (ów_+++ Rz
_mu) rz (ami_+++ Rz
_mu) rz (ach_+++ Rz
_mi) rz (o_+++ Rz
_mi) rz (owie_+++ Rz
_mi) rz (ą_+++ Rz
_mi) rz (y_+++ Rz
_mi) rz (ę_+++ Rz
_mi) rz (a_+++ Rz
_mi) rz (ów_+++ Rz
_mi) rz (ami_+++ Rz
_mi) rz (ach_+++ Rz
c) rz (A S
ć) rz (A S
cz) rz (A S
@@ -607,28 +608,28 @@
ś) rz (A S
sz) rz (A S
t) rz S
rz (ini_ *ts
rz (inim_ *ts
rz (inimi_ *ts
rz (inich_ *ts
rz (iniemu_ *ts
rz (iniego_ *ts
rz (oni_ *ts
rz (onim_ *ts
rz (onimi_ *ts
rz (onich_ *ts
rz (oniemu_ *ts
rz (oniego_ *ts
r (zi *
A) r (zł *
ma) r (zn *
ma) r (zlin *
_zama) r (za *
_zma) r (za *
odma) r (za *
_bo) r (zoj *
ry' (e *
rz (ini_ Rts
rz (inim_ Rts
rz (inimi_ Rts
rz (inich_ Rts
rz (iniemu_ Rts
rz (iniego_ Rts
rz (oni_ Rts
rz (onim_ Rts
rz (onimi_ Rts
rz (onich_ Rts
rz (oniemu_ Rts
rz (oniego_ Rts
r (zi R
A) r (zł R
ma) r (zn R
ma) r (zlin R
_zama) r (za R
_zma) r (za R
odma) r (za R
_bo) r (zoj R
ry' (e R
.group s

@) son (_S3t sOn
@@ -694,7 +695,7 @@

skj (A S

scherz skE*ts
scherz skERts
sch (ą sx
sch (ę sx
pa) sch (a sx
@@ -776,7 +777,7 @@
_) sch (lebi sx
_) sch (etyn sx

schwarz Sva*ts
schwarz SvaRts
schoe SE
sch S

@@ -833,11 +834,21 @@
w v
w (sk _v
ier) wsz (A S
w (_A f
w (_ f
c) w (A f
ć) w (A f
cz) w (A f

_) w (_c f
_) w (_f wE
_) w (_h f
_) w (_k f
_) w (_p f
_) w (_s f
_) w (_t f
_) w (_mn wE // 'w' should be written 'we' before 'mn', but not always
_) w (_ w

f) w (A f
h) w (A f
k) w (A f
@@ -850,8 +861,8 @@
_) window wyndOw
wee (k wi
_) washi wOSi
wrigh *aj
C) wrigh @-*aj
wrigh Raj
C) wrigh Raj

.group x
x ks
@@ -951,7 +962,7 @@

.group z
z z
z (_A s
z (_ s
z (i Z;
zi (A Z;
_) zi (p Z;i
@@ -960,9 +971,20 @@
_nie) zi (C z_i
zi (C zi

_) z (_c s
_) z (_f s
_) z (_h s
_) z (_k s
_) z (_p s
_) z (_s s
_) z (_t s
_) z (_mn zE // 'z' should be written 'ze' before 'mn', but not always
_) z (_ z

mo) zi (ll zi
_ro) z (iC z
_) zuri (ch tsu*y
_) zuri (ch tsuRy
_) zz (a_ z_z
zz (ini_ ts
zz (inim_ ts
zz (inimi_ ts
@@ -999,22 +1021,22 @@

.group ź
ź Z;
ź (_A S;
ź (_ S;

.group ż
ż Z
ż (_A S
ż (_ S

.group th
_e) th (anak t
_) the (_A zi
_) the (_ zE
_) the (_ dE
th s
th (ie_ s;
_) th t
thew sju
_) thank fENk
thew fju

_) thunderbi (rd fEndE*bE
_) thunderbi (rd fEndERbE

.group dg
_na) dg dg
@@ -1037,7 +1059,7 @@
_dy) sh sx
_fi) sh (armon sx
sh S
shire SajE*
shire SajER
.group ph
ph f

@@ -1098,19 +1120,5 @@
'ego (_S4 EgO
'emu (_S4 Emu

$ dOla*
@ mawpa
% p@-*OtsEnt
+ plus
# haS
= *'uvna||S;E
/ slES
\ bEkslES
* gv;astka
| k@-*Eska||p;OnOva
^ d'aSEk
& and
` aktsEnt
. k@-*Opka
, pSEts;inEk
$ dOlaR


+ 4
- 4
dictsource/sw_list View File

@@ -15,7 +15,7 @@ _m em
n en
p pi
q kju
r ar
r aR
s es
t ti
v vi
@@ -28,7 +28,7 @@ z zedi


// numbers
_0 sif'u*i
_0 sif'uRi
_1 m'oJa
_2 _|mb'ili
_3 t'atu
@@ -39,9 +39,9 @@ _7 s'aba
_8 n'ane
_9 t'isa
_1X k'umi
_2X iSi*'ini
_2X iSiR'ini
_3X TeleT'ini
_4X a*oba'ini
_4X aRoba'ini
_5X hams'ini
_6X sit'ini
_7X sab'ini

+ 3
- 3
dictsource/sw_rules View File

@@ -84,10 +84,10 @@
q k

.group r
r r
A) r (A *
r R
A) r (A R
C) r (A @-*
rr *r
rr RR

.group s
s s

+ 42
- 10
dictsource/vi_list View File

@@ -22,18 +22,50 @@ x i3ts;
z zE3t

// numbers
_0 z'ez,o
_1 m'o6t[
_2 h'a:I
_3 _b'a:
_4 _b'o3n
_5 n'am
_6 s'aU3
_7 _b'aI4
_8 t['a:3m
_9 ts;'i3n
_0 J'e1z.'o // dê-rô
_1 m'o6t[ // một
_2 h'a:I // hai
_3 _b'a: // ba
_4 _b'o3n // bốn
_5 n'am // năm
_6 s.'aU3 // sáu
_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

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

_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


_0C cr'am // trăm
_0M1 N'a:2n // ngàn
_0M2 cr'i@6w // triệu
_0M3 t['i4 // tỷ
_0and l,in^ // linh

// symbols


+ 96
- 88
dictsource/vi_rules View File

@@ -75,6 +75,101 @@ ỹ ỹ
ỵ ỵ


//================================
// Consonants
//================================

.group b
b b
_) b _b

.group c
c k
c (_ kh
ch c // try [tS;] [tS] [c]

.group d
d J // try [z] [J] [dZ] [dZ;] [J^]

.group đ
đ d
_) đ _d

.group 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]


.group h
h h


.group j
j Z


.group k
k k
k (_ kh
kh x

.group l
l l

.group m
m m

.group n
n n
ng N
ngh N
nh n^

.group ñ
ñ n^

.group p
p p
ph f

.group q
q k
q (_ kh
qu kw

.group r
r z. // try [z] [z.] [r] [z;]

.group s
s s. // try [s.] [s] [S]

.group t
t t[
th t
tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]

.group v
v v

.group w
w w

.group x
x s

.group z
z z


//================================
// Vowels
//================================

.group a
a a:
ai a:I
@@ -187,24 +282,6 @@ ỵ ỵ
ậy @I6
ậu @U6

//================================
.group b
b b
_) b _b

.group c
c k
c (_ kh
ch c // try [ts;] [tS] [c] [dZ] [dz;]

.group d
d z

.group đ
đ d
_) đ _d


//===========================
.group e
e E
@@ -261,20 +338,6 @@ ỵ ỵ
ệ e6
ệu eU6

//============================
.group f
f f


.group g
g Q // try [g] [Q]
gh Q // or [g] [Q]
gi D // ??? [dZ]


.group h
h h


//============================
.group i
@@ -331,30 +394,6 @@ ỵ ỵ
ịu iU6


//=============================
.group j
j Z


.group k
k k
k (_ kh
kh x

.group l
l l

.group m
m m

.group n
n n
ng N
ngh N
nh n^

.group ñ
ñ n^

//=========================
.group o
@@ -452,31 +491,12 @@ ỵ ỵ
ợu @:U6


//============================
.group p
p p
ph f

.group q
q k
q (_ kh
qu kw

.group r
r z;

.group s
s s

.group t
t t[
th t
tr c // try [ts;] [tS] [c] [dZ] [dz;]

//=============================
.group u
u u
u (A w
A) u w
ui uI
uì uI2
uí uI3
@@ -588,15 +608,6 @@ ỵ ỵ
ựu yw6


//=============================
.group v
v v

.group w
w w

.group x
x s

.group y
y i
@@ -641,9 +652,6 @@ ỵ ỵ
ỵa i@6


.group z
z z

.group
$ d'o||l'a
% f'@2n||tS;'am

BIN
phsource/b/xb View File


+ 161
- 111
phsource/compile_report View File

@@ -1,65 +1,66 @@
60 phoneme tables
61 phoneme tables
new total
base 101 101
base2 24 120
en 51 147
en_n 31 147
en_us 36 148
en_sc 39 149
en_rp 34 147
en_wm 30 147
en_wi 30 147
af 39 133
cy 29 127
de 33 128
eo 13 113
jbo 4 114
fi 40 132
fr 54 138
fr_ca 11 138
hi 52 139
ta 17 142
hu 23 117
lv 28 123
nl 28 124
pl 18 114
sk 29 132
cs 6 132
hr 26 137
mk 3 138
sr 14 137
ru 39 132
it 17 123
la 21 119
es 9 121
es_la 1 121
ca 9 122
pt 28 137
pt_pt 20 137
ro 36 144
el 8 120
grc 12 125
sv 25 123
no 28 127
is 33 127
vi 42 139
zhy 40 134
zh 65 151
sw 14 110
tr 18 125
ku 18 125
id 15 122
rw 15 127
ko 18 149
da 15 131
sq 24 129
ml 13 141
kn 15 141
bn 59 147
ne 23 151
hy 17 115
om 21 121
en_klatt 77 147
base 103 103
base2 24 122
en 51 149
en_n 31 149
en_us 36 150
en_sc 39 151
en_rp 34 149
en_wm 30 149
en_wi 30 149
af 39 135
cy 29 129
de 33 130
eo 13 115
jbo 4 116
fi 40 134
fr 54 140
fr_ca 11 140
hi 59 148
ta 17 151
hu 23 119
lv 28 125
nl 28 126
pl 19 116
sk 28 134
cs 6 134
hr 26 139
mk 3 140
sr 14 139
ru 39 134
it 17 125
la 21 121
es 9 123
es_la 1 123
ca 9 124
pt 28 139
pt_pt 20 139
ro 36 146
el 8 122
grc 12 127
sv 25 125
no 28 129
is 33 129
vi 42 140
zhy 40 136
zh 65 153
sw 14 112
tr 18 127
ku 18 127
id 15 124
rw 15 129
ko 18 158
da 15 133
sq 31 127
ml 13 150
kn 15 150
bn 59 153
ne 18 156
hy 16 116
om 25 125
en_klatt 77 149
ga 18 117

Data file Used by
b/b [b] base
@@ -96,6 +97,7 @@ b/bu [b] base
b/xb [b] base
[b] fr
[b] hi
[bh] hi
[b] bn
d/d [d] base
[d[] base
@@ -116,6 +118,8 @@ d/d [d] base
[d] id
[d] bn
[d.] bn
[d`] om
[d[] ga
d/d_ [d] base
[d[] base
[d] base2
@@ -135,6 +139,8 @@ d/d_ [d] base
[d] id
[d] bn
[d.] bn
[d`] om
[d[] ga
d/d_dnt [d] sr
d/dr [*] base
[d] base
@@ -156,6 +162,7 @@ d/dr [*] base
[d] id
[d] bn
[d.] bn
[d[] ga
d/tap [*;] ro
d/tap1 [*] base
d/tap2 [t#] en_us
@@ -169,6 +176,7 @@ d/xd [d] base
[d] fr
[d] hi
[d.] hi
[dh] hi
[d] hu
[d] pl
[d] hr
@@ -179,6 +187,9 @@ d/xd [d] base
[d] id
[d] bn
[d.] bn
[d[] ga
d/xd2 [d`] om
d/xd3 [dh] hi
d/xd_pzd [d;] pl
[d;] ru
d/x_tap [t#] en_us
@@ -224,8 +235,9 @@ dzh/xdz_pzd [J] base
[J2] bn
envelope/i_risefall [11] zh
envelope/i_risefall2 [+2] rw
envelope/p_214 [214] zh
envelope/p_512 [8] vi
envelope/p_214 [5] vi
[214] zh
envelope/p_512 [6] vi
envelope/p_fall [2] vi
[7] vi
[1] zhy
@@ -246,14 +258,13 @@ envelope/p_rise [3] vi
[5] zhy
[44] zh
[35] zh
envelope/vi_5 [5] vi
envelope/vi_5amp [5] vi
envelope/vi_6 [6] vi
envelope/vi_6amp [6] vi
g2/g [g-] base
g2/g_ [g-] base
g2/xg [g-] base
[g] hi
[gh] hi
[g] bn
g/g [g] base
[g] cy
@@ -294,7 +305,6 @@ h/ha [h] base
[<h>] la
[H] bn
[h] bn
[a#] om
h/he [h] base
[h] fi
[H] hi
@@ -662,6 +672,7 @@ l/l_u [(u)] base
[u] fr
[u:] fr
[(u)] en_klatt
l/l_vi [l] vi
l/l_y [y] fr
l/tl [l] base
[l] en
@@ -796,7 +807,7 @@ r3/r_trill [R2] base
[r] af
[R2] lv
[r] nl
[R] sk
[R] pl
[r*] sr
[x] pt
r3/r_trill2 [R] base
@@ -810,13 +821,13 @@ r3/r_trill3.wav [R3] base
[r] nl
r3/r_trill.wav [R2] base
[R2] lv
[R] sk
[R] pl
[r*] sr
[x] pt
r3/r_u [(u)] base
[(u)] en_klatt
r3/r_ulv [r"] hy
r3/r_uvl [r"] hy
r3/r_ulv [r"] base
r3/r_uvl [r"] base
r3/rx [*] base
[r/] base
[r/] af
@@ -941,6 +952,7 @@ ufric/s_ [s] base
[s#] pt
[z;] ro
[s2] is
[s2] om
[s] en_klatt
[z] en_klatt
ufric/s! [s] base
@@ -951,11 +963,13 @@ ufric/s! [s] base
[s] es
[s#] pt
[s2] is
[s2] om
[s] en_klatt
ufric/s_continue [s2] fi
[s2] hu
[s2] lv
[s2] is
[s2] om
ufric/sh [S] base
[S] fr
[s#] pt_pt
@@ -999,13 +1013,13 @@ ufric/x_hr [x] base
ufric/x_sr [h] sr
[x] sr
ufric/xx3 [X] base
[Q"] base
[Q] hy
ustop/c [c] base
ustop/c_ejc [c`] om
ustop/k [k] base
[k] en
[k] fr
[kh] hi
[k] zhy
[k] sw
[kh] bn
@@ -1014,7 +1028,6 @@ ustop/k_ [k] base
[k] en
[k] fi
[k] fr
[kh] hi
[k] hu
[k] lv
[k] sk
@@ -1023,6 +1036,8 @@ ustop/k_ [k] base
[k] sw
[k] sq
[kh] bn
ustop/k_asp [gh] hi
[kh] hi
ustop/k_ejc [k`] om
ustop/ki [c] base
[k] base
@@ -1083,7 +1098,6 @@ ustop/k_unasp [k] base
[k] bn
ustop/k_unasp_ [k] zh
ustop/null [?] base
[dh] om
ustop/p [p] base
[p] fr
[p2] fr
@@ -1096,7 +1110,8 @@ ustop/p_ [p] base
[ph] zh
[ph] bn
[ph] hy
ustop/p_asp [ph] hi
ustop/p_asp [bh] hi
[ph] hi
[ph] hy
ustop/p_ejc [p`] om
ustop/percus10 [(X1] base
@@ -1169,7 +1184,7 @@ ustop/t_ [t] base
[t] sk
[t] el
[th] zh
[t] sq
[t2] sq
[t.] bn
[t.h] bn
ustop/t_dnt [t] base
@@ -1178,6 +1193,7 @@ ustop/t_dnt [t] base
[t2] en
[t] fi
[t] hi
[dh] hi
[th] hi
[t] hu
[t] pl
@@ -1188,6 +1204,7 @@ ustop/t_dnt [t] base
[t] sw
[t`] ko
[t] bn
[t[] ga
ustop/t_dnt2 [t[] vi
ustop/t_ejc [t`] om
ustop/t_hi [t] hi
@@ -1210,6 +1227,7 @@ ustop/ts [ts] base2
[ts;] ro
[z] zhy
[tsh] zh
[ts] sq
[ts] hy
ustop/ts_ [ts] base2
[ts] de
@@ -1219,6 +1237,7 @@ ustop/ts_ [ts] base2
[ts] pl
[ts] ru
[ts;] ro
[ts] sq
[ts] hy
ustop/ts2 [ts] lv
ustop/tsh [tS] base
@@ -1234,7 +1253,7 @@ ustop/t_short [t] fr
[t] lv
[t] sk
[t] el
[t] sq
[t2] sq
[t.] bn
ustop/tsh_pzd [tS;] zh
ustop/tsh_pzd_unasp [tS;] zh
@@ -1282,6 +1301,7 @@ vdiph2/eo [eo] ro
vdiph2/e[u [e[u] ro
vdiph2/i@ [i@] en_n
[i@] hy
[i@] ga
vdiph2/i@_2 [i@] en_wm
vdiph2/ie [i@] en_wi
[ie] fi
@@ -1306,7 +1326,7 @@ vdiph2/oa [Oa] ro
vdiph2/o_oo [o@] en_wi
[o] is
[o] zh
vdiph2/u-@ [y@] vi
vdiph2/u@ [u@] ga
vdiph2/u#@ [U@] en_sc
vdiph2/uaa [uo] lv
vdiph2/uo [uo] fi
@@ -1325,6 +1345,7 @@ vdiph2/ye [yE] sq
vdiph2/yu [yU] nl
[yu] zh
vdiph2/y-y# [yY] fi
[y@] vi
vdiph/8u [oU] en_us
[ou] zh
vdiph/aae [aI] en_us
@@ -1418,6 +1439,7 @@ vdiph/ei [eI] base2
[eI] is
[eI] vi
[ei] zhy
[eI] sq
vdiph/eu [eU] base2
[eU] en
[eU] cy
@@ -1428,6 +1450,9 @@ vdiph/eu [eU] base2
[eU] vi
[eU] ne
vdiph/eu_2 [eu] fi
vdiph/@i [@I] vi
[@:I] vi
[@I] ga
vdiph/&i [&i] fi
[aI] hi
[aI] bn
@@ -1439,7 +1464,6 @@ vdiph/@i_3 [eI] en_wm
[@I] ro
[ai] zhy
vdiph/&i_3 [aI] vi
vdiph/@i_4 [@I] vi
vdiph/ii [iI] ro
vdiph/i#i [yI] ro
vdiph/oi [oI] base2
@@ -1463,6 +1487,7 @@ vdiph/ooi_2 [OI] af
vdiph/ooi_3 [OI] en_rp
[aI] en_wm
vdiph/ooi_4 [OI] en_us
[OI] sq
vdiph/oou [oU] cs
[OU] grc
vdiph/ou [ou] fi
@@ -1473,8 +1498,11 @@ vdiph/ou_2 [oU] sk
vdiph/ou_3 [oU] is
[oU2] is
vdiph/@u [u:] en_wm
[@U] vi
[@:U] vi
vdiph/@u_2 [oU] en_rp
vdiph/@u_3 [@U] ro
[@U] ga
vdiph/@u_en [oU] en
[@U] id
vdiph/ui [uI] base2
@@ -1488,14 +1516,11 @@ vdiph/u-i [yI] vi
vdiph/ui_2 [uI] af
vdiph/ui_3 [uI] cy
[uY] cy
vdiph/Vi [@:I] vi
[VI] ne
vdiph/Vi [VI] ne
vdiph/Vu [@U] af
[VU] ne
vdiph/Vu_2 [oU] en_wm
vdiph/Vu_3 [o:] nl
vdiph/Vu_4 [@U] vi
[@:U] vi
vdiph/&y [&y] fi
[Wy] nl
vdiph/yi [yi] fi
@@ -1510,8 +1535,8 @@ vdiph/y#y [Yy] fi
vdiph/y#y_2 [Yy] af
[eoi] zhy
vdiph/y#y_3 [Y:] nl
vnasal/aa_n [a~] bn
[a~] ne
vnasal/aa_n [a~] hi
[a~] bn
vnasal/aa_n2 [A~] en
[A~] fr
vnasal/aa_n3 [A~] af
@@ -1526,13 +1551,13 @@ vnasal/ee_n2 [a] en_us
[E~] bn
vnasal/ee_u_n [E~] pl
vnasal/e_n [e~] af
[e~] hi
[e~] pt
[e~] bn
[e~] ne
vnasal/i_n [i~] pt
[i~] bn
[i:~] bn
[i~] ne
vnasal/i_n2 [i~] hi
vnasal/m- [m-] sw
vnasal/n- [n-] sw
vnasal/nn- [N-] sw
@@ -1552,8 +1577,7 @@ vnasal/u_n [u~] hi
[u] zh
[u~] bn
[u:~] bn
[u~] ne
vnasal/V_n [V~] ne
vnasal/V_n [V~] hi
vnasal/W_n [E~] fr
[W~] fr
voc/bh [B] base
@@ -1561,7 +1585,8 @@ voc/dh [D] base
[D] es
voc/dh_ [D] base
[D] es
voc/dh_om [d`] om
[D] om
voc/dh_om [D] om
voc/j [J^] base
voc/Q [Q] base
[Q^] base
@@ -1571,7 +1596,8 @@ voc/Q_ [Q] base
[x2] pt
voc/Q_less [Q] nl
[x2] pt
voc/Q_ulv [Q] hy
voc/Q_ulv [Q"] base
[Q] hy
voc/v [v] base
[v] fi
[v] fr
@@ -1597,6 +1623,8 @@ voc/vj [v] base
[v] fr
vocw/dh [D] base
[D] es
[D] om
[d`] om
[D] en_klatt
vocw/Q [Q] base
[Q^] base
@@ -1653,6 +1681,7 @@ vowel/@ [@] base
[@] kn
[@4] bn
[@] hy
[@] ga
vowel/@- [@-] base
[r*] hr
vowel/& [a] en_rp
@@ -1673,6 +1702,11 @@ vowel/0_2 [0] en_n
vowel/0_3 [O] en_sc
[0] en_rp
[A] hu
vowel/@_2 [@] vi
[@:] vi
[@] sq
[V] sq
[@/] sq
vowel/@_3 [@] en_sc
[I] en_sc
[@2] en_sc
@@ -1721,6 +1755,7 @@ vowel/a [a] en
[a] zh
[a] id
[a] ko
[a] ga
vowel/a# [a/] base2
[a2] en_sc
[a2] en_wi
@@ -1729,6 +1764,8 @@ vowel/a# [a/] base2
[&/] pt
[a#] rw
[a/] rw
[a] om
[a:] om
vowel/a_2 [a] base2
[a] en_wi
[A:] en_wi
@@ -1739,7 +1776,6 @@ vowel/a_2 [a] base2
[A] pt
[a] pt_pt
[a] ro
[a:] vi
[a] rw
[a] da
vowel/a#_2 [a#] pl
@@ -1747,9 +1783,7 @@ vowel/a#_2 [a#] pl
[a2] sv
[&] is
[a/] sw
[a/] sq
[a] kn
[a] om
vowel/a_3 [a] en_sc
[a/] en_sc
[A:] en_sc
@@ -1759,6 +1793,7 @@ vowel/a_3 [a] en_sc
[a] is
[A] zh
[A] da
[a] sq
vowel/a#_3 [a2] en
[a2] en_n
[a2] en_us
@@ -1770,10 +1805,11 @@ vowel/a#_3 [a2] en
[a#] ca
[&] pt_pt
[&/] pt_pt
[@] vi
[a] zhy
[a/] sq
[a] ml
[a] bn
[a#] om
vowel/a_4 [a/] el
[a] vi
[a:] om
@@ -1783,12 +1819,12 @@ vowel/a_5 [a:] ta
[a] sv
[a] sw
[a] tr
[a] sq
[a:] ml
[a:] kn
[A:] om
[A] om
vowel/a_6 [a] fr
[a2] fr
[a:] vi
vowel/aa [a] fi
[A] fr_ca
[a] lv
@@ -1797,6 +1833,7 @@ vowel/aa [a] fi
[A:] no
[aa] zhy
[a] hy
[A:] ga
vowel/aa# [O] en_us
[0] en_wi
[a2] fi
@@ -1854,10 +1891,12 @@ vowel/e [e] base2
[e#] rw
[e] ko
[e] da
[e] sq
[e] ml
[e:] ml
[e:] kn
[e] ne
[e:] ga
vowel/e# [I] en_sc
[I2] en_sc
vowel/e_2 [eI] en_sc
@@ -1874,7 +1913,6 @@ vowel/e_3 [i] en_n
[e] ku
vowel/e_5 [i] en_sc
vowel/e_6 [e] om
vowel/e_7 [e] sq
vowel/ee [E] en_n
[E] sv
vowel/e_e [E] en_sc
@@ -1895,11 +1933,11 @@ vowel/ee_2 [E] en
[E#] ku
[&] da
vowel/ee#_2 [E-] sv
[E] sq
vowel/ee_3 [&] af
[&:] af
[E] pt
[E] vi
vowel/ee_4 [E] sq
vowel/ee_6 [&] sk
[E3] sv
[E] ku
@@ -1941,8 +1979,11 @@ vowel/e_mid2 [E] af
[e] sw
[e] tr
[E] ko
[e#] sq
[e] kn
[E] om
[E#] om
[E] ga
vowel/@_fnt [@] en_wi
[@2] en_wi
[@2] hr
@@ -1976,6 +2017,7 @@ vowel/i [i] base2
[i] ne
[i] hy
[i:] om
[i:] ga
vowel/i# [y:] cy
vowel/i_2 [i2] de
[i:] de
@@ -1990,12 +2032,14 @@ vowel/i_4 [i] fi
[i] hu
[I] it
[i] is
[i] vi
[i] da
vowel/i_5 [i:] en_sc
vowel/i#_5 [y] pt_pt
[i/] pt_pt
[y] ro
vowel/i_6 [i] ta
vowel/i_6 [i] hi
[i] ta
[i] lv
[i:] lv
[i] hr
@@ -2006,12 +2050,11 @@ vowel/i_6 [i] ta
[i] kn
vowel/i#_6 [i.] zh
vowel/i_7 [i] pl
[i] sq
vowel/i#_7 [i[] zh
vowel/i_en [i:] en
[i:] en_us
[i] vi
vowel/i_fnt [i:] en_wi
[i] hi
[i:] hi
[i] bn
[i:] bn
@@ -2028,12 +2071,14 @@ vowel/ii [I] en_n
[I] is
[i] zhy
[I] ku
[I#] sq
[I] om
[I#] om
[I] ga
vowel/ii# [Y] cy
[Y] ru
[I] ku
[i] sq
[e#] sq
[y] ml
[y] kn
vowel/ii_2 [i] zh
@@ -2061,7 +2106,7 @@ vowel/ii_6 [I] en_wm
[I] pt
[y] pt
[i/] pt
[i] sq
[I] sq
vowel/ii_en [i] en
[i] sq
vowel/ii_final [i] en_us
@@ -2106,12 +2151,14 @@ vowel/o [o] base2
[o:] kn
[o] bn
[o] hy
[o:] ga
vowel/o_2 [o:] cy
[o2] fr
[o:] hi
[o:] hu
[o:] la
[o:] no
[o] vi
[o] ko
[o] da
[o:] bn
@@ -2154,6 +2201,7 @@ vowel/oo [O:] en_sc
[o] zhy
[O] tr
[O] id
[O] ga
vowel/oo_1 [O:] en_n
[O:] en_rp
[O@] en_rp
@@ -2167,7 +2215,6 @@ vowel/oo_1 [O:] en_n
[o] sk
[o:] sk
[o] hr
[o] vi
[O/] sq
vowel/oo_2 [0] en_sc
[O] cy
@@ -2182,6 +2229,7 @@ vowel/oo_4 [O] base2
[O] it
[O] bn
[O] om
[O#] om
vowel/oo_5 [O] pl
[O] is
[O] sq
@@ -2240,6 +2288,7 @@ vowel/u#_4 [U] en_sc
vowel/u_5 [u] lv
[u:] lv
[u] sw
vowel/u#_5 [y] vi
vowel/u_6 [U] pt_pt
[u] pt_pt
[u] ku
@@ -2266,11 +2315,12 @@ vowel/u_bck [u] base2
[u] rw
[u#] rw
[u] ko
[u] sq
[u:] bn
[u] ne
[u] hy
[u:] ga
vowel/u_bck2 [u:] la
[u] sq
vowel/u_fnt [u:] en_rp
vowel/uu [U] en
[U] en_n
@@ -2293,6 +2343,8 @@ vowel/uu_bck [U] en_wi
[u] zhy
[U] bn
[U] om
[U#] om
[U] ga
vowel/u_unr [u-] ko
vowel/V [3] en_sc
vowel/V_2 [V] en
@@ -2305,11 +2357,8 @@ vowel/V_3 [V] en_rp
[V] ta
[V] bn
vowel/V_4 [V] en_sc
[@:] vi
[V] da
vowel/V_6 [V] en_us
[@] sq
[V] sq
vowel/y [y:] en
[y:] de
[y] fi
@@ -2326,7 +2375,6 @@ vowel/y# [Y:] en
[Y:] hu
[8] nl
[Y] ro
[y] vi
[oe] zhy
[Y] ko
vowel/y## [y#] is
@@ -2351,7 +2399,6 @@ vowel/yy_4 [y] de
[y] grc
[y] is
[y] hy
vweak/@ [@#] om
vwl_af/@ [@] af
vwl_af/I [I] af
vwl_af/r@ [@] af
@@ -2435,7 +2482,6 @@ vwl_no/u#2 [u-:] no
vwl_no/y# [Y:] no
vwl_no/y#y [Yy] no
vwl_ro/ii- [I^] ro
[I#] om
vwl_ro/li [I^] ro
vwl_ro/mi [I^] ru
[I^] ro
@@ -2493,6 +2539,7 @@ w/w2 [w2] base2
[w] pl
[w] sk
[w] pt_pt
[w] sq
w/wa [(a)] base
w/we [(e)] base
w/wi [(i)] base
@@ -2555,7 +2602,9 @@ x/d_ [d] base
[d] id
[d] bn
[d.] bn
[d`] om
[d] en_klatt
[d[] ga
x/d_dnt [d[] base
[d] base2
[d] fi
@@ -2566,6 +2615,7 @@ x/d_dnt [d[] base
[d;] ro
[d] sw
[d] bn
[d[] ga
x/d_pzd [d;] pl
[d;] ru
x/dzh [J] base

BIN
phsource/d/xd View File


BIN
phsource/dzh/dz_pzd View File


BIN
phsource/dzh/dzh View File


BIN
phsource/dzh/xdz_pzd View File


BIN
phsource/dzh/xdzh View File


+ 5
- 5
phsource/envelope/vi_5amp View File

@@ -1,6 +1,6 @@
ENVELOPE
0 100
34 100
50 63
66 100
100 100
0 95
33 95
49 55
65 95
100 95

+ 10
- 3
phsource/envelope/vi_6amp View File

@@ -1,8 +1,15 @@
ENVELOPE
0 100
34 100
50 100
63 100
100 20
47 66
64 100
73 100
74 0
85 95
86 95
92 95
94 0
100 0




BIN
phsource/g/xg View File


BIN
phsource/g2/xg View File


+ 8
- 4
phsource/mbrola/in1 View File

@@ -16,8 +16,9 @@
0 @2 NULL 0 a
0 @3 NULL 0 a
0 @4 NULL 0 a
0 i NULL 0 ii
0 i: NULL 0 ii
0 I NULL 0 i
0 I NULL 0 ii
0 e: NULL 0 e
0 e NULL 0 e
0 E: NULL 0 ai
@@ -27,14 +28,17 @@
0 a: NULL 0 aa
0 o: NULL 0 o
0 o NULL 0 o
0 O NULL 0 o
0 O: NULL 0 au
0 o~ NULL 0 o
0 O~ NULL 0 au
0 U NULL 0 uu
0 u: NULL 0 uu
0 aI NULL 0 ai
0 aU NULL 0 au

0 o~ NULL 60 o n
0 O~ NULL 60 au n
0 u~ NULL 60 uu n

0 H NULL 0 h
0 t. NULL 0 T
0 t.h NULL 0 Th
@@ -47,5 +51,5 @@
0 j NULL 0 y
0 S NULL 0 sh
0 s. NULL 0 sh
0 l. NULL 0 l


+ 2
- 2
phsource/ph_english_us View File

@@ -263,7 +263,7 @@ endphoneme

phoneme aI@
vowel starttype (a) endtype (@)
length 260
length 300
formants vwl_en_us/ai@
linkout r-
endphoneme
@@ -271,7 +271,7 @@ endphoneme

phoneme aU@
vowel starttype (a) endtype (@)
length 260
length 270
formants vwl_en/aU@
linkout r-
endphoneme

+ 83
- 66
phsource/ph_hindi View File

@@ -62,7 +62,7 @@ endphoneme
phoneme i // as [i:] but not marked as 'long'
vowel starttype (i) endtype (i)
length 230
formants vowel/i_fnt
formants vowel/i_6
linkout ;
endphoneme

@@ -97,13 +97,6 @@ phoneme E
formants vowel/e_mid
endphoneme

phoneme E~
vowel starttype (e) endtype (e)
length 230
formants vnasal/ee_n2
endphoneme


phoneme &:
vowel long starttype (a) endtype (a)
length 220
@@ -142,18 +135,6 @@ phoneme O:
formants vowel/oo_4
endphoneme

phoneme o~
vowel long starttype (o) endtype (o)
length 220
formants vnasal/o_n
endphoneme

phoneme O~
vowel long starttype (o) endtype (o)
length 230
formants vnasal/oo_n2
endphoneme


phoneme O
vowel starttype (o) endtype (o)
@@ -176,6 +157,51 @@ phoneme u:
endphoneme


// Nasal vowels
//=============

phoneme i~
vowel long starttype (i) endtype (i)
length 220
formants vnasal/i_n2
endphoneme

phoneme e~
vowel long starttype (e) endtype (e)
length 220
formants vnasal/e_n
endphoneme

phoneme E~
vowel starttype (e) endtype (e)
length 230
formants vnasal/ee_n2
endphoneme

phoneme a~
vowel long starttype (a) endtype (a)
length 250
formants vnasal/aa_n
endphoneme

phoneme V~
vowel long starttype (@) endtype (@)
length 250
formants vnasal/V_n
endphoneme

phoneme O~
vowel long starttype (o) endtype (o)
length 230
formants vnasal/oo_n2
endphoneme

phoneme o~
vowel long starttype (o) endtype (o)
length 220
formants vnasal/o_n
endphoneme

phoneme u~
vowel long starttype (u) endtype (u)
length 230
@@ -318,23 +344,16 @@ phoneme b // this is [b]
endphoneme


//phoneme bh // use [b]+[h]
// vcd blb stop
// vowelout f1=1 f2=1000 -500 -300 f3=-300 80 brk
// formants b/b+x/b
// before _ b/b_+x/b_
// before (a) b/ba+x/b
// before (@) b/b@+x/b
// before (e) b/be+x/b
// before (i) b/bi+x/b
// before (o) b/bo+x/b
// before (u) b/bu+x/b
// before @- b/b@2+x/b
// after _ NULL
// after @ b/xb
// lengthmod 5
// switchvoicing p
//endphoneme
phoneme bh
vcd blb stop
vowelin f1=0 f2=1000 -50 -100 f3=-200 80
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
lengthmod 5
formants b/xb+ustop/p_asp%70
after @ b/xb
switchvoicing ph
endphoneme




@@ -355,7 +374,7 @@ endphoneme

phoneme th // dental variant of /t/
vls dnt stop
vowelin f1=0 f2=1500 -300 300 f3=-100 80
vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16
vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
lengthmod 2
wave ustop/t_dnt%50
@@ -380,19 +399,17 @@ phoneme d // dental variant of /d/
endphoneme


phoneme dh
vcd dnt stop
vowelin f1=0 f2=1500 -300 300 f3=-100 80
vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
lengthmod 5
formants d/xd3+ustop/t_dnt%40
before _ ustop/t_dnt%35
after @ d/xd
switchvoicing th
endphoneme

//phoneme dh // use [d]+[h]
// vcd dnt stop
// vowelin f1=1 f2=1700 -200 200 f3=100 80
// vowelout f1=1 f2=1700 -200 200 f3=100 80 rms=20 len=1
// formants d/d+x/d_dnt%60
// before _ d/d_+x/d_
// before r d/dr+x/d_dnt%60
// after _ NULL
// after @ d/xd
// lengthmod 5
// switchvoicing t
//endphoneme



@@ -458,7 +475,7 @@ phoneme c // this is [ts;]
vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1
lengthmod 2
wave ustop/ts_pzd2%80
wave ustop/ts_pzd2%90
before _ ustop/ts_pzd_
switchvoicing J
endphoneme
@@ -526,20 +543,20 @@ phoneme k
switchvoicing g
endphoneme

phoneme kh // this is english [k]
phoneme kh
vls vel stop
vowelin f1=0 f2=2300 200 300 f3=-150 80
vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
lengthmod 2
wave ustop/k
before _ ustop/k_
wave ustop/k_asp%90
before _ ustop/k_asp%50
before r ustop/kr
before l ustop/kl
switchvoicing g
endphoneme


phoneme g //
phoneme g
vcd vel stop
vowelin f1=1 f2=2300 200 300 f3=-300 80
vowelout f1=1 f2=2300 250 300 f3=-300 80 brk
@@ -550,16 +567,16 @@ phoneme g //
lengthmod 5
endphoneme

//phoneme gh // this is English [g] // use [g]+[h]
// vcd vel stop
// vowelin f1=1 f2=2300 200 400 f3=-100 80
// vowelout f1=1 f2=2300 250 300 f3=-300 80 brk
// formants g/g+x/g
// before _ g/g_+x/g_
// after _ NULL
// after @ g/xg
// lengthmod 5
// switchvoicing k
//endphoneme
phoneme gh
vcd dnt stop
vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20
vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
lengthmod 5
formants g2/xg+ustop/k_asp%70
after @ g2/xg
switchvoicing kh
endphoneme



+ 1
- 1
phsource/ph_italian View File

@@ -5,7 +5,7 @@

phoneme : // Lengthen previous vowel by "length"
virtual
length 40
length 50
endphoneme



+ 10
- 0
phsource/ph_polish View File

@@ -80,6 +80,16 @@ endphoneme
// CONSONANTS
//===========

phoneme R
liquid
vowelin f1=0 f2=1700 -300 300 f3=-300 80
vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
formants r3/r_trill+r3/r_trill.wav%50
trill
lengthmod 6
endphoneme


phoneme t
vls dnt stop
vowelin f1=0 f2=1600 -300 300 f3=-100 80

+ 0
- 9
phsource/ph_slovak View File

@@ -115,15 +115,6 @@ phoneme r:
endphoneme


phoneme R
liquid
vowelin f1=0 f2=1700 -300 300 f3=-300 80
vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
formants r3/r_trill+r3/r_trill.wav%50
trill
lengthmod 6
endphoneme


phoneme R^ // Czech r-caron
vcd pla frc sibilant

+ 34
- 31
phsource/ph_vi View File

@@ -4,60 +4,55 @@
//====================================================


phoneme 1 // tone: level
phoneme 1 // ngang tone: level
stress
length 11
tone 28 32 envelope/p_level NULL
endphoneme


phoneme 2 // tone: low falling
phoneme 2 // huyền tone: low falling
stress
length 12
tone 20 8 envelope/p_fall NULL
endphoneme


phoneme 3 // tone rising
phoneme 3 // sắc tone rising
stress
length 13
tone 28 43 envelope/p_rise NULL
tone 25 50 envelope/p_rise NULL
endphoneme


phoneme 4 // tone curve (dipping rising)
phoneme 4 // hỏi tone curve (dipping rising)
stress
length 14
tone 28 5 envelope/p_fallrise NULL
tone 30 5 envelope/p_fallrise NULL
endphoneme


phoneme 5 // tone: broken (creaking rising)
phoneme 5 // ngã tone: broken (creaking rising)
stress
length 15
tone 28 45 envelope/vi_5 envelope/vi_5amp
tone 30 55 envelope/p_214 envelope/vi_5amp
endphoneme


phoneme 6 // tone drop (constricted)
phoneme 6 // nặng tone drop (constricted)
stress
length 16
tone 30 5 envelope/vi_6 envelope/vi_6amp
tone 40 20 envelope/p_512 envelope/vi_6amp
endphoneme


phoneme 7 // tone 1 at end of clause
phoneme 7 // tone 1 (ngang) at end of clause
stress
length 17
tone 30 20 envelope/p_fall NULL
tone 40 20 envelope/p_fall NULL
endphoneme


phoneme 8 // TEST
stress
length 18
tone 30 6 envelope/p_512 NULL
endphoneme

// Vowels
//=======
@@ -72,7 +67,7 @@ endphoneme
phoneme a:
vowel starttype (a) endtype (a)
length 280
formants vowel/a_2
formants vowel/a_6
endphoneme


@@ -92,7 +87,7 @@ endphoneme
phoneme i
vowel starttype (i) endtype (i)
length 190
formants vowel/i_en
formants vowel/i_4
after w w/wi
linkout ;
endphoneme
@@ -107,7 +102,7 @@ endphoneme
phoneme o
vowel starttype (o) endtype (o)
length 200
formants vowel/oo_1
formants vowel/o_2
endphoneme


@@ -120,7 +115,7 @@ endphoneme
phoneme y
vowel starttype (u) endtype (u)
length 200
formants vowel/y#
formants vowel/u#_5
endphoneme


@@ -128,14 +123,14 @@ endphoneme
phoneme @
vowel starttype (@) endtype (a)
length 130
formants vowel/a#_3
formants vowel/@_2
endphoneme


phoneme @:
vowel starttype (@) endtype (@)
length 280
formants vowel/V_4
formants vowel/@_2
endphoneme


@@ -160,14 +155,14 @@ endphoneme
phoneme @I
vowel starttype (@) endtype (i)
length 250
formants vdiph/@i_4
formants vdiph/@i
endphoneme


phoneme @:I
vowel starttype (@) endtype (i)
length 250
formants vdiph/Vi
formants vdiph/@i
endphoneme


@@ -216,14 +211,14 @@ endphoneme

phoneme aU
vowel starttype (a) endtype (u)
length 230
length 210
formants vdiph/aau_4
endphoneme


phoneme a:U
vowel starttype (a) endtype (u)
length 260
length 270
formants vdiph/au
endphoneme

@@ -250,13 +245,13 @@ endphoneme
phoneme @U
vowel starttype (@) endtype (u)
length 200
formants vdiph/Vu_4
formants vdiph/@u
endphoneme

phoneme @:U
vowel starttype (@) endtype (u)
length 260
formants vdiph/Vu_4
length 270
formants vdiph/@u
endphoneme


@@ -270,7 +265,7 @@ endphoneme
phoneme y@
vowel starttype (i) endtype (@)
length 200
formants vdiph2/u-@
formants vdiph2/y-y#
endphoneme

phoneme u@
@@ -302,3 +297,11 @@ phoneme kh
switchvoicing Q
endphoneme

phoneme l
liquid
length 100
lengthmod 7
beforenotvowel l/
formants l/l_vi
endphoneme


+ 20
- 4
phsource/phonemes View File

@@ -435,6 +435,13 @@ phoneme R3 // Afrikaans
endphoneme


phoneme r" // uvular trill
vcd uvl frc
formants r3/r_ulv+r3/r_uvl%75
before _ r3/r_ulv+r3/r_uvl%50
lengthmod 6
endphoneme


phoneme l
liquid
@@ -740,7 +747,7 @@ phoneme J
vcd pla afr sibilant
vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1
formants dzh/dz_pzd+x/dzh%40
formants dzh/dz_pzd+x/dzh%45
before _ dzh/dz_pzd_+x/dzh%35
after _ NULL
after @ dzh/xdz_pzd
@@ -829,7 +836,7 @@ phoneme Z
vcd pla frc sibilant
vowelin f1=0 f2=2000 0 300 f3=-200 80
vowelout f1=2 f2=2000 0 300 f3=-200 80 brk
formants voc/zh+vocw/zh
formants voc/zh+vocw/zh%130
before _ voc/zh_+vocw/zh
lengthmod 6
switchvoicing S
@@ -900,6 +907,13 @@ phoneme Q^
switchvoicing x
endphoneme

phoneme Q" // voiced velar fricative
vcd uvl frc
formants voc/Q_ulv+ufric/xx3%80
before _ voc/Q_ulv+ufric/xx3%60
lengthmod 6
endphoneme



//*******************************************************************
@@ -1326,7 +1340,7 @@ include ph_korean
phonemetable da is
include ph_danish

phonemetable sq base2
phonemetable sq base
include ph_albanian

phonemetable ml hi
@@ -1349,4 +1363,6 @@ include ph_oromo

phonemetable en_klatt en
include ph_english_klatt
]

phonemetable ga base
include ph_irish

BIN
phsource/vdiph/aai View File


BIN
phsource/vdiph/ai_4 View File


BIN
phsource/vdiph/vowelchart.png View File


BIN
phsource/voc/Q_ulv View File


BIN
phsource/voc/zh View File


BIN
phsource/voc/zh_ View File


BIN
phsource/vowel/@_2 View File


BIN
phsource/vowel/V_7 View File


BIN
phsource/vowel/a View File


BIN
phsource/vowel/a_5 View File


BIN
phsource/vowel/e View File


BIN
phsource/vowel/i_4 View File


BIN
phsource/vowel/o_2 View File


BIN
phsource/vowel/u#_5 View File


BIN
phsource/vowel/uu_4 View File


BIN
phsource/vowel/vowelchart.png View File


+ 61
- 60
platforms/windows/windows_cmd/src/speech.h View File

@@ -1,60 +1,61 @@
/***************************************************************************
* Copyright (C) 2005,2006 by Jonathan Duddington *
* [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/

// Windows command-line version of eSpeak


// conditional compilation options

#define PLATFORM_WINDOWS
#define __WIN32__
#define NEED_WCSTOF
#define NEED_GETOPT

#define PATHSEP '\\'
#define USE_PORTAUDIO
#define ESPEAK_API

// will look for espeak_data directory here, and also in user's home directory
#define PATH_ESPEAK_DATA "/usr/share/espeak-data"

typedef unsigned short USHORT;
typedef unsigned char UCHAR;
typedef double DOUBLEX;




typedef struct {
const char *mnem;
int value;
} MNEM_TAB;
int LookupMnem(MNEM_TAB *table, char *string);



#define N_PATH_HOME 120
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory

extern void strncpy0(char *to,const char *from, int size);
int GetFileLength(const char *filename);
char *Alloc(int size);
void Free(void *ptr);

/***************************************************************************
* Copyright (C) 2005,2006 by Jonathan Duddington *
* [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
// Windows command-line version of eSpeak
// conditional compilation options
#define PLATFORM_WINDOWS
#define __WIN32__
#define NEED_WCSTOF
#define NEED_GETOPT
#define PATHSEP '\\'
#define USE_PORTAUDIO
#define ESPEAK_API
#define INCLUDE_KLATT
// will look for espeak_data directory here, and also in user's home directory
#define PATH_ESPEAK_DATA "/usr/share/espeak-data"
typedef unsigned short USHORT;
typedef unsigned char UCHAR;
typedef double DOUBLEX;
typedef struct {
const char *mnem;
int value;
} MNEM_TAB;
int LookupMnem(MNEM_TAB *table, char *string);
#define N_PATH_HOME 220
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory
extern void strncpy0(char *to,const char *from, int size);
int GetFileLength(const char *filename);
char *Alloc(int size);
void Free(void *ptr);

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

@@ -35,7 +35,7 @@
//#define __cdecl // define as null, needed for Borland compiler ?
//#define USE_PORTAUDIO
//#define USE_NANOSLEEP
#define INCLUDE_KLATT

// will look for espeak_data directory here, and also in user's home directory
#define PATH_ESPEAK_DATA "/usr/share/espeak-data"
@@ -55,7 +55,7 @@ int LookupMnem(MNEM_TAB *table, char *string);



#define N_PATH_HOME 120
#define N_PATH_HOME 220
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory

extern void strncpy0(char *to,const char *from, int size);

+ 3
- 1
src/compiledata.cpp View File

@@ -297,7 +297,8 @@ static keywtab_t keywords[] = {
{"f4", 0x300000a},
{"paus", 0x300000b},
{"colr=",0x300000c},
{"amp=", 0x300000d},
{"amp=", 0x300000d}, // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths)

{"", -1}
};

@@ -1286,6 +1287,7 @@ void Compile::VowelTransition(int which, unsigned int *trans)
vcolour = NextItem(tNUMBER);
break;
case 13:
// set rms of 1st frame as fraction of rms of 2nd frame (1/30ths)
rms = (Range(NextItem(tNUMBER), 1, 0, 31) & 0x1f) | 0x20;
flags |= 1;
break;

+ 1
- 0
src/compiledict.cpp View File

@@ -90,6 +90,7 @@ MNEM_TAB mnem_flags[] = {
{"$alt2", 21},

{"$max3", 27}, // limit to 3 repetitions
{"$brk", 28}, // a shorter $pause
{"$text", 29}, // word translates to replcement text, not phonemes


+ 51
- 1
src/dictionary.cpp View File

@@ -684,6 +684,7 @@ int Translator::IsLetterGroup(char *word, int group, int pre)
// match the word against a list of utf-8 strings
char *p;
char *w;
int len;

p = letterGroups[group];
if(p == NULL)
@@ -691,14 +692,26 @@ int Translator::IsLetterGroup(char *word, int group, int pre)

while(*p != RULE_GROUP_END)
{
w = word;
if(pre)
{
len = strlen(p);
w = word - len + 1;
}
else
{
w = word;
}
while(*p == *w)
{
w++;
p++;
}
if(*p == 0)
{
if(pre)
return(len);
return(w-word); // matched a complete string
}

while(*p++ != 0); // skip to end of string
}
@@ -1023,6 +1036,7 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int

unsigned char vowel_stress[N_WORD_PHONEMES/2];
char syllable_weight[N_WORD_PHONEMES/2];
char vowel_length[N_WORD_PHONEMES/2];
unsigned char phonetic[N_WORD_PHONEMES];

static char consonant_types[16] = {0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0};
@@ -1079,6 +1093,7 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int
// long vowel, increase syllable weight
weight++;
}
vowel_length[ix] = weight;

if(lengthened) p++; // advance over phonLENGTHEN

@@ -1150,6 +1165,14 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int
}
}
}
if(langopts.stress_flags & 0x80000)
{
// stress on last syllable if it has a long vowel, but previous syllable has a short vowel
if(vowel_length[vowel_count - 1] > vowel_length[vowel_count - 2])
{
stressed_syllable = vowel_count - 1;
}
}

if(vowel_stress[stressed_syllable] == 1)
{
@@ -2547,6 +2570,10 @@ int Translator::TranslateRules(char *p_start, char *phonemes, int ph_size, char
}
p += (wc_bytes-1);
}
else
{
phonemes_repeat_count = 0;
}
}
}

@@ -2590,6 +2617,7 @@ int Translator::TranslateRules(char *p_start, char *phonemes, int ph_size, char
// any language specific changes ?
ApplySpecialAttribute(phonemes,dict_flags0);
memcpy(p_start,word_copy,strlen(word_copy));

return(0);
} /* end of TranslateRules */

@@ -3127,6 +3155,28 @@ int Translator::LookupDictList(char **wordptr, char *ph_out, unsigned int *flags

found = LookupDict2(word, word1, ph_out, flags, end_flags, wtab);

if(flags[0] & FLAG_MAX3)
{
if(strcmp(ph_out, phonemes_repeat) == 0)
{
phonemes_repeat_count++;
if(phonemes_repeat_count > 3)
{
ph_out[0] = 0;
}
}
else
{
strncpy0(phonemes_repeat, ph_out, sizeof(phonemes_repeat));
phonemes_repeat_count = 1;
}
}
else
{
phonemes_repeat_count = 0;
}


if((found == 0) && (flags[1] & FLAG_ACCENT))
{
int letter;

+ 10
- 4
src/espeak.cpp View File

@@ -324,7 +324,7 @@ int main (int argc, char **argv)

FILE *f_text=NULL;
char *p_text=NULL;
FILE *f_phonemes_out = stderr;
FILE *f_phonemes_out = stdout;
char *data_path = NULL; // use default path for espeak-data

int option_index = 0;
@@ -345,7 +345,8 @@ int main (int argc, char **argv)
int option_linelength = 0;
int option_waveout = 0;

char filename[120];
espeak_VOICE voice_select;
char filename[200];
char voicename[40];
char voice_mbrola[20];
char dictname[40];
@@ -529,8 +530,13 @@ int main (int argc, char **argv)

if(espeak_SetVoiceByName(voicename) != EE_OK)
{
fprintf(stderr,"%svoice '%s'\n",err_load,voicename);
exit(2);
memset(&voice_select,0,sizeof(voice_select));
voice_select.languages = voicename;
if(espeak_SetVoiceByProperties(&voice_select) != EE_OK)
{
fprintf(stderr,"%svoice '%s'\n",err_load,voicename);
exit(2);
}
}

if(flag_compile)

+ 30
- 9
src/readclause.cpp View File

@@ -79,8 +79,6 @@ const unsigned short punct_chars[] = {',','.','?','!',':',';',
0x037e, // Greek question mark (looks like semicolon)
0x0387, // Greek semicolon, ano teleia
0x0964, // Devanagari Danda (fullstop)
0x3001, // ideograph comma
0x3002, // ideograph period

0x0589, // Armenian period
0x055d, // Armenian comma
@@ -88,6 +86,17 @@ const unsigned short punct_chars[] = {',','.','?','!',':',';',
0x055e, // Armenian question
0x055b, // Armenian emphasis mark

0x1362, // Ethiopic period
0x1363,
0x1364,
0x1365,
0x1366,
0x1367,
0x1368,

0x3001, // ideograph comma
0x3002, // ideograph period

0xff01, // fullwidth exclamation
0xff0c, // fullwidth comma
0xff0e, // fullwidth period
@@ -109,8 +118,6 @@ static const unsigned int punct_attributes [] = { 0,
CLAUSE_QUESTION, // Greek question mark
CLAUSE_SEMICOLON, // Greek semicolon
CLAUSE_PERIOD+0x8000, // Devanagari Danda (fullstop)
CLAUSE_COMMA+0x8000, // ideograph comma
CLAUSE_PERIOD+0x8000, // ideograph period

CLAUSE_PERIOD+0x8000, // Armenian period
CLAUSE_COMMA, // Armenian comma
@@ -118,6 +125,17 @@ static const unsigned int punct_attributes [] = { 0,
CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question
CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark

CLAUSE_PERIOD, // Ethiopic period
CLAUSE_COMMA, // Ethiopic comma
CLAUSE_SEMICOLON, // Ethiopic semicolon
CLAUSE_COLON, // Ethiopic colon
CLAUSE_COLON, // Ethiopic preface colon
CLAUSE_QUESTION, // Ethiopic question mark
CLAUSE_PERIOD, // Ethiopic paragraph

CLAUSE_COMMA+0x8000, // ideograph comma
CLAUSE_PERIOD+0x8000, // ideograph period

CLAUSE_EXCLAMATION+0x8000, // fullwidth
CLAUSE_COMMA+0x8000,
CLAUSE_PERIOD+0x8000,
@@ -865,7 +883,7 @@ int Translator::AnnouncePunctuation(int c1, int c2, char *buf, int bufix)
#define SSML_AUDIO 11
#define SSML_EMPHASIS 12
#define SSML_BREAK 13
#define SSML_METADATA 14
#define SSML_IGNORE_TEXT 14
#define HTML_BREAK 15
#define SSML_CLOSE 0x10 // for a closing tag, OR this with the tag type

@@ -887,7 +905,7 @@ MNEM_TAB ssmltags[] = {
{"audio", SSML_AUDIO},
{"emphasis", SSML_EMPHASIS},
{"break", SSML_BREAK},
{"metadata", SSML_METADATA},
{"metadata", SSML_IGNORE_TEXT},

{"br", HTML_BREAK},
{"li", HTML_BREAK},
@@ -898,6 +916,8 @@ MNEM_TAB ssmltags[] = {
{"h3", SSML_PARAGRAPH},
{"h4", SSML_PARAGRAPH},
{"hr", SSML_PARAGRAPH},
{"script", SSML_IGNORE_TEXT},
{"style", SSML_IGNORE_TEXT},
{NULL,0}};


@@ -911,6 +931,7 @@ static const char *VoiceFromStack()
SSML_STACK *sp;
const char *v_id;
int voice_name_specified;
int voice_found;
espeak_VOICE voice_select;
char voice_name[40];
char language[40];
@@ -952,7 +973,7 @@ static const char *VoiceFromStack()

voice_select.name = voice_name;
voice_select.languages = language;
v_id = SelectVoice(&voice_select);
v_id = SelectVoice(&voice_select, &voice_found);
if(v_id == NULL)
return("default");
return(v_id);
@@ -1625,12 +1646,12 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
}
break;

case SSML_METADATA:
case SSML_IGNORE_TEXT:
ignore_text = 1;
break;

case SSML_SUB + SSML_CLOSE:
case SSML_METADATA + SSML_CLOSE:
case SSML_IGNORE_TEXT + SSML_CLOSE:
ignore_text = 0;
break;


+ 12
- 5
src/speak.cpp View File

@@ -447,7 +447,7 @@ static void StopSpeak(int unused)
static int optional_argument;
static const char *arg_opts = "afklpsvw"; // which options have arguments
static char *opt_string="";
#define no_argument 0
#define no_argument 0
#define required_argument 1
#define optional_argument 2
#endif
@@ -494,7 +494,8 @@ int main (int argc, char **argv)
int flag_stdin = 0;
int flag_compile = 0;
int pitch_adjustment = 50;
char filename[120];
espeak_VOICE voice_select;
char filename[200];
char voicename[40];
char dictname[40];

@@ -510,10 +511,11 @@ int main (int argc, char **argv)
option_endpause = 1;
option_phoneme_input = 1;
option_multibyte = espeakCHARS_AUTO; // auto
f_trans = stderr;
f_trans = stdout;

#ifdef NEED_GETOPT
optind = 1;
opt_string = "";
while(optind < argc)
{
int len;
@@ -735,8 +737,13 @@ int main (int argc, char **argv)

if(SetVoiceByName(voicename) != EE_OK)
{
fprintf(stderr,"%svoice '%s'\n",err_load,voicename);
exit(2);
memset(&voice_select,0,sizeof(voice_select));
voice_select.languages = voicename;
if(SetVoiceByProperties(&voice_select) != EE_OK)
{
fprintf(stderr,"%svoice '%s'\n",err_load,voicename);
exit(2);
}
}

SetParameter(espeakRATE,speed,0);

+ 7
- 4
src/speak_lib.cpp View File

@@ -911,10 +911,12 @@ ESPEAK_API espeak_ERROR espeak_Char(wchar_t character)


ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name)
{//===================================================
{//============================================================
ENTER("espeak_SetVoiceByName");

#ifdef USE_ASYNC
//#ifdef USE_ASYNC
// I don't think there's a need to queue change voice requests
#ifdef deleted
espeak_ERROR a_error;

if(synchronous_mode)
@@ -937,10 +939,11 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name)


ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector)
{//=====================================================================
{//==============================================================================
ENTER("espeak_SetVoiceByProperties");

#ifdef USE_ASYNC
//#ifdef USE_ASYNC
#ifdef deleted
espeak_ERROR a_error;

if(synchronous_mode)

+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.39.29 23.Nov.08";
const char *version_string = "1.39.36 03.Dec.08";
const int version_phdata = 0x013900;

int option_device_number = -1;

+ 31
- 21
src/tr_languages.cpp View File

@@ -123,7 +123,7 @@ Translator *SelectTranslator(const char *name)
int name2 = 0;
Translator *tr;

static const unsigned char stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 };
static const unsigned char stress_amps_sk[8] = {17,17, 20,20, 20,24, 24,22 };
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};

// convert name string into a word of up to 4 characters, for the switch()
@@ -198,10 +198,9 @@ Translator *SelectTranslator(const char *name)

case L('d','a'): // Danish
{
static const unsigned char stress_amps_da[] = {16,16, 20,20, 20,24, 24,22 };
static const short stress_lengths_da[8] = {160,140, 200,200, 0,0, 220,210};
tr = new Translator();
SetupTranslator(tr,stress_lengths_da,stress_amps_da);
SetupTranslator(tr,stress_lengths_da,NULL);

tr->langopts.stress_rule = 0;
SetLetterVowel(tr,'y');
@@ -365,6 +364,16 @@ Translator *SelectTranslator(const char *name)
}
break;

#ifdef deleted
case L('g','a'): // Irish Gaelic
{
tr = new Translator();

tr->langopts.stress_rule = 1;
}
break;
#endif

case L('h','i'): // Hindi
case L('n','e'): // Nepali
{
@@ -390,7 +399,7 @@ Translator *SelectTranslator(const char *name)
case L('b','s'): // Bosnian
case L('s','r'): // Serbian
{
static const unsigned char stress_amps_hr[8] = {16,16, 20,20, 20,24, 24,22 };
static const unsigned char stress_amps_hr[8] = {17,17, 20,20, 20,24, 24,22 };
static const short stress_lengths_hr[8] = {180,160, 200,200, 0,0, 220,230};
static const short stress_lengths_sr[8] = {160,150, 200,200, 0,0, 250,260};

@@ -476,12 +485,11 @@ SetLengthMods(tr,3); // all equal

case L('i','s'): // Icelandic
{
static const unsigned char stress_amps_is[] = {16,16, 20,20, 20,24, 24,22 };
static const short stress_lengths_is[8] = {180,160, 200,200, 0,0, 240,250};
static const wchar_t is_lettergroup_B[] = {'c','f','h','k','p','t','x',0xfe,0}; // voiceless conants, including 'þ' ?? 's'

tr = new Translator();
SetupTranslator(tr,stress_lengths_is,stress_amps_is);
SetupTranslator(tr,stress_lengths_is,NULL);
tr->langopts.stress_rule = 0;
tr->langopts.stress_flags = 0x10;
tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels
@@ -499,8 +507,8 @@ SetLengthMods(tr,3); // all equal

case L('i','t'): // Italian
{
static const short stress_lengths_it[8] = {150, 140, 180, 180, 0, 0, 270, 320};
static const unsigned char stress_amps_it[8] = {15,14, 19,19, 20,24, 24,22 };
static const short stress_lengths_it[8] = {150, 140, 170, 170, 0, 0, 300, 330};
static const unsigned char stress_amps_it[8] = {15,14, 19,19, 20,22, 22,20 };

tr = new Translator();
SetupTranslator(tr,stress_lengths_it,stress_amps_it);
@@ -606,7 +614,7 @@ SetLengthMods(tr,3); // all equal
{
static wchar_t vowels_cyrillic[] = {0x440, // also include 'р' [R]
0x430,0x435,0x438,0x439,0x43e,0x443,0x44b,0x44d,0x44e,0x44f,0x450,0x451,0x456,0x457,0x45d,0x45e,0};
static const unsigned char stress_amps_mk[8] = {16,16, 20,20, 20,24, 24,22 };
static const unsigned char stress_amps_mk[8] = {17,17, 20,20, 20,24, 24,22 };
static const short stress_lengths_mk[8] = {180,160, 200,200, 0,0, 220,230};

tr = new Translator();
@@ -639,10 +647,9 @@ SetLengthMods(tr,3); // all equal

case L('n','o'): // Norwegian
{
static const unsigned char stress_amps_no[] = {16,16, 20,20, 20,24, 24,22 };
static const short stress_lengths_no[8] = {160,140, 200,200, 0,0, 220,210};
tr = new Translator();
SetupTranslator(tr,stress_lengths_no,stress_amps_no);
SetupTranslator(tr,stress_lengths_no,NULL);

tr->langopts.stress_rule = 0;
SetLetterVowel(tr,'y');
@@ -652,12 +659,13 @@ SetLengthMods(tr,3); // all equal

case L('o','m'):
{
static const unsigned char stress_amps_om[] = {16,16, 20,20, 20,24, 24,22 };
static const unsigned char stress_amps_om[] = {18,15, 20,20, 20,22, 22,22 };
static const short stress_lengths_om[8] = {200,200, 200,200, 0,0, 200,200};
tr = new Translator();
SetupTranslator(tr,stress_lengths_om,stress_amps_om);

tr->langopts.stress_rule = 3;
tr->langopts.stress_rule = 2;
tr->langopts.stress_flags = 0x16 + 0x80000;
}
break;

@@ -766,11 +774,13 @@ SetLengthMods(tr,3); // all equal

case L('s','q'): // Albanian
{
static const short stress_lengths_sq[8] = {170, 170, 170, 170, 0, 0, 250, 270};
static const unsigned char stress_amps_sq[8] = {17,12, 17,17, 20,20, 24,22 };
static const short stress_lengths_sq[8] = {150, 150, 180, 180, 0, 0, 300, 300};
static const unsigned char stress_amps_sq[8] = {16,12, 16,16, 20,20, 21,19 };
tr = new Translator();
SetupTranslator(tr,stress_lengths_sq,stress_amps_sq);
tr->langopts.stress_flags = 0x4 + 0x10;

tr->langopts.stress_rule = 2;
tr->langopts.stress_flags = 0x16 + 0x100;
SetLetterVowel(tr,'y');
tr->langopts.numbers = 0x69 + 0x8000;
}
@@ -879,8 +889,8 @@ SetLengthMods(tr,3); // all equal

case L('v','i'): // Vietnamese
{
static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 220, 220, 280};
static const unsigned char stress_amps_vi[] = {16,16, 16,16, 24,24, 24,22 };
static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 230, 230, 240};
static const unsigned char stress_amps_vi[] = {16,16, 16,16, 22,22, 22,22 };
static wchar_t vowels_vi[] = {
0x61, 0xe0, 0xe1, 0x1ea3, 0xe3, 0x1ea1, // a
0x103, 0x1eb1, 0x1eaf, 0x1eb3, 0x1eb5, 0x1eb7, // ă
@@ -900,12 +910,12 @@ SetLengthMods(tr,3); // all equal
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

tr->langopts.stress_rule = 0;
tr->langopts.word_gap = 0x20; // length of a final vowel is less dependent on the next consonant
tr->langopts.vowel_pause = 4;
tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word
// tr->langopts.vowel_pause = 4;
tr->letter_groups[0] = vowels_vi;
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
tr->langopts.unstressed_wd1 = 2;
tr->langopts.numbers = 0x0049;

}
break;

+ 2
- 1
src/translate.cpp View File

@@ -412,7 +412,7 @@ int IsSpace(unsigned int c)
Translator::Translator()
{//=====================
int ix;
static const unsigned char stress_amps2[] = {16,16, 20,20, 20,24, 24,21 };
static const unsigned char stress_amps2[] = {17,17, 20,20, 20,24, 24,21 };
static const short stress_lengths2[8] = {182,140, 220,220, 220,240, 260,280};
static const wchar_t empty_wstring[1] = {0};
static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words
@@ -2111,6 +2111,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_
expect_verb_s=0;
end_stressed_vowel=0;
prev_dict_flags = 0;
phonemes_repeat_count = 0;

sbuf[0] = 0;
sbuf[1] = ' ';

+ 4
- 1
src/translate.h View File

@@ -56,7 +56,7 @@
#define FLAG_ALT_TRANS 0x100000 // language specific
#define FLAG_ALT2_TRANS 0x200000 // language specific

#define FLAG_MAX3 0x08000000 // limit to 3 repeats
#define FLAG_PAUSE1 0x10000000 // shorter prepause
#define FLAG_TEXTMODE 0x20000000 // word translates to replacement text, not phonemes
#define BITNUM_FLAG_TEXTMODE 29
@@ -314,6 +314,7 @@ typedef struct {
// bit16= Don't diminish consecutive syllables within a word.
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"
// bit18= don't lengthen short vowels more than long vowels at end-of-clause
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel

int stress_flags;
int unstressed_wd1; // stress for $u word of 1 syllable
@@ -416,6 +417,8 @@ public:

char phon_out[300];
char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes
char phonemes_repeat[20];
int phonemes_repeat_count;

unsigned char stress_amps[8];
unsigned char stress_amps_r[8];

+ 1
- 1
src/voice.h View File

@@ -71,7 +71,7 @@ extern USHORT voice_pcnt[N_PEAKS+1][3];
extern voice_t *voice;
extern int tone_points[12];

const char *SelectVoice(espeak_VOICE *voice_select);
const char *SelectVoice(espeak_VOICE *voice_select, int *found);
espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name);
voice_t *LoadVoice(const char *voice_name, int control);
voice_t *LoadVoiceVariant(const char *voice_name, int variant);

+ 15
- 6
src/voices.cpp View File

@@ -365,8 +365,11 @@ void VoiceReset(int tone_only)
static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600};

// default is: pitch 82,118
voice->pitch_base = 0x49000; // default, 73 << 12;
voice->pitch_range = 0x0f30; // default = 0x1000
// voice->pitch_base = 0x49000; // default, 73 << 12;
// voice->pitch_range = 0x0f30; // default = 0x1000
voice->pitch_base = 0x47000;
voice->pitch_range = 3996;

voice->formant_factor = 256;

voice->echo_delay = 0;
@@ -1122,7 +1125,7 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s
matching_parts += matching; // number of parts which match

if(matching_parts == 0)
break; // no matching parts for this language
continue; // no matching parts for this language

x = 5;
// reduce the score if not all parts of the required language match
@@ -1301,8 +1304,8 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name)



char const *SelectVoice(espeak_VOICE *voice_select)
{//================================================
char const *SelectVoice(espeak_VOICE *voice_select, int *found)
{//============================================================
// Returns a path within espeak-voices, with a possible +variant suffix
// variant is an output-only parameter
int nv; // number of candidates
@@ -1323,6 +1326,7 @@ char const *SelectVoice(espeak_VOICE *voice_select)
static espeak_VOICE voice_variants[N_VOICE_VARIANTS];
static char voice_id[50];

*found = 1;
memcpy(&voice_select2,voice_select,sizeof(voice_select2));

if(n_voices_list == 0)
@@ -1366,6 +1370,7 @@ char const *SelectVoice(espeak_VOICE *voice_select)
if(nv == 0)
{
// no matching voice, choose the default
*found = 0;
if((voices[0] = SelectVoiceByName(voices_list,"default")) != NULL)
nv = 1;
}
@@ -1639,8 +1644,12 @@ espeak_ERROR SetVoiceByName(const char *name)
espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector)
{//============================================================
const char *voice_id;
int voice_found;

voice_id = SelectVoice(voice_selector, &voice_found);

voice_id = SelectVoice(voice_selector);
if(voice_found == 0)
return(EE_NOT_FOUND);

LoadVoiceVariant(voice_id,0);
DoVoiceChange(voice);

+ 30
- 40
src/wavegen.cpp View File

@@ -59,7 +59,7 @@ voice_t *wvoice;

FILE *f_log = NULL;
int option_waveout = 0;
int option_harmonic1 = 11; // 10
int option_harmonic1 = 10; // 10
int option_log_frames = 0;
static int flutter_amp = 64;

@@ -252,7 +252,7 @@ static const unsigned char Flutter_tab[N_FLUTTER] = {
};

// waveform shape table for HF peaks, formants 6,7,8
#define N_WAVEMULT 512
#define N_WAVEMULT 128
static int wavemult_offset=0;
static int wavemult_max=0;

@@ -266,32 +266,8 @@ static unsigned char wavemult[N_WAVEMULT] = {
218,213,207,201,194,188,181,174,166,159,152,144,136,128,121,113,
105, 98, 90, 83, 76, 69, 62, 55, 49, 43, 37, 32, 27, 22, 18, 14,
11, 8, 5, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

// set from y = pow(2,x) * 128, x=-1 to 1
unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = {
@@ -662,24 +638,31 @@ int WavegenOpenSound()
}



int WavegenCloseSound()
{//====================
PaError active;

// check whether speaking has finished, and close the stream
// if(pa_stream != NULL)
if((pa_stream != NULL) && (WcmdqUsed() == 0)) // TEST, also check that queue is empty
if(pa_stream != NULL)
{
#if USE_PORTAUDIO == 18
active = Pa_StreamActive(pa_stream);
#else
active = Pa_IsStreamActive(pa_stream);
#endif
if(active == 0)
if(WcmdqUsed() == 0) // also check that the queue is empty
{
Pa_CloseStream(pa_stream);
pa_stream = NULL;
return(1);
if(active == 0)
{
Pa_CloseStream(pa_stream);
pa_stream = NULL;
return(1);
}
}
else
{
WavegenOpenSound(); // still items in the queue, shouldn't be closed
}
}
return(0);
@@ -901,13 +884,20 @@ int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control)
}
}

// increase bass, up to the F1 peak
h=1;
x = peaks[1].height * 24;
for(f=pitch; f<peaks[1].freq; f+=pitch)
{
int y;
int h2;
// increase bass
y = peaks[1].height * 10; // addition as a multiple of 1/256s
h2 = (1000<<16)/pitch; // decrease until 1000Hz
x = y/h2;
h = 1;
while(y > 0)
{
htab[h++] += x;
htab[h++] += y;
y -= x;
}
}

// find the nearest harmonic for HF peaks where we don't use shape
for(; pk<N_PEAKS; pk++)
@@ -1255,8 +1245,8 @@ int Wavegen()
if((ix = amp_ix>>8) > 127) ix = 127;
amp = amplitude_env[ix];
amplitude2 = (amplitude2 * amp)/255;
if(amp < 255)
modulation_type = 7;
// if(amp < 255)
// modulation_type = 7;
}

// introduce roughness into the sound by reducing the amplitude of

Loading…
Cancel
Save