Browse Source

Merge branch 'master' into android

master
Reece H. Dunn 12 years ago
parent
commit
7d63680378
67 changed files with 2387 additions and 2099 deletions
  1. 144
    4
      dictsource/an_list
  2. 114
    97
      dictsource/an_rules
  3. 9
    5
      dictsource/bg_list
  4. 35
    38
      dictsource/da_list
  5. 292
    274
      dictsource/da_rules
  6. 1
    0
      dictsource/en_list
  7. 3
    1
      dictsource/en_rules
  8. 1545
    1545
      dictsource/fr_rules
  9. 2
    7
      dictsource/hi_list
  10. 1
    1
      dictsource/hi_rules
  11. 1
    1
      dictsource/kn_list
  12. 1
    1
      dictsource/ml_list
  13. 17
    4
      dictsource/pt_list
  14. 27
    10
      dictsource/pt_rules
  15. 4
    4
      dictsource/ta_list
  16. 25
    0
      dictsource/ta_rules
  17. 1
    1
      dictsource/te_list
  18. 4
    4
      dictsource/vi_rules
  19. 5
    6
      docs/phonemes.html
  20. 0
    0
      espeak-data/voices/europe/an
  21. BIN
      phsource/klatt/nr
  22. 53
    62
      phsource/ph_danish
  23. 3
    0
      phsource/ph_english
  24. 2
    4
      phsource/ph_hindi
  25. BIN
      phsource/r/V_
  26. BIN
      phsource/r/V_2_
  27. BIN
      phsource/vnasal/&_n
  28. BIN
      phsource/vnasal/&u_n
  29. BIN
      phsource/vnasal/V_n
  30. BIN
      phsource/vnasal/W_n
  31. BIN
      phsource/vnasal/a#_n
  32. BIN
      phsource/vnasal/a#_n2
  33. BIN
      phsource/vnasal/a#u_n
  34. BIN
      phsource/vnasal/aa_n
  35. BIN
      phsource/vnasal/aa_n2
  36. BIN
      phsource/vnasal/aa_n3
  37. BIN
      phsource/vnasal/aa_n4
  38. BIN
      phsource/vnasal/e#_n
  39. BIN
      phsource/vnasal/e_n
  40. BIN
      phsource/vnasal/ee_n
  41. BIN
      phsource/vnasal/ee_n2
  42. BIN
      phsource/vnasal/ee_u_n
  43. BIN
      phsource/vnasal/i_n
  44. BIN
      phsource/vnasal/i_n2
  45. BIN
      phsource/vnasal/ii_n
  46. BIN
      phsource/vnasal/o_n
  47. BIN
      phsource/vnasal/o_n2
  48. BIN
      phsource/vnasal/o_n3
  49. BIN
      phsource/vnasal/o_n4
  50. BIN
      phsource/vnasal/oi_n
  51. BIN
      phsource/vnasal/oo_n
  52. BIN
      phsource/vnasal/oo_n2
  53. BIN
      phsource/vnasal/oo_n3
  54. BIN
      phsource/vnasal/u_n
  55. BIN
      phsource/vnasal/vowelchart.png
  56. 1
    0
      platforms/windows/windows_cmd/src/speech.h
  57. 1
    0
      platforms/windows/windows_dll/src/speech.h
  58. 1
    0
      platforms/windows/windows_sapi/src/speech.h
  59. 23
    5
      src/compiledata.cpp
  60. 2
    2
      src/dictionary.cpp
  61. 2
    2
      src/menus.cpp
  62. 46
    12
      src/phonemelist.cpp
  63. 1
    1
      src/synthdata.cpp
  64. 1
    1
      src/synthesize.cpp
  65. 7
    3
      src/tr_languages.cpp
  66. 12
    3
      src/translate.cpp
  67. 1
    1
      src/voices.cpp

+ 144
- 4
dictsource/an_list View File

@@ -1,7 +1,30 @@
// Aragon translation rules
// This file is UTF-8 encoded

// letters

_cap m'aJ^uskla // should be after the letter
_?? simb'Olo
_#32 Esp'aTjo


// accent names
_lig liQaD'ura
_acu akT'ento aQ'uDo
_ac2 d'Ople||aQ'uDo
_brv br'eu
_ced TeD'il^a
_cir Tirkumfl'ekso
_dia djEr'esi
_dac d'Ople||aQ'uDo
_dot p'unto
_grv gr'iEu
_hac kar'On
_mcn makr'On
_ogo kod'eta
_rng an'iel^o
_stk b'aRR2a // ??
_tld t'il^a


// letter names
@@ -31,6 +54,14 @@ z Teta
y i $u // word 'and'
_y je
y je $atend
ch tSe
ll 'El^e
á 'a||akTEntw'aDa
é 'e||akTEntw'aDa
í 'i||akTEntw'aDa
_ó 'o||akTEntw'aDa
ú 'u||akTEntw'aDa
ü ,uDjEr'Esi


// numbers
@@ -56,7 +87,7 @@ _2X B,int
_3X tr'enta
_4X kwar'anta
_5X Tinkw'anta
_6X siks'anta
_6X siS'anta
_7X set'anta
_8X gwit'anta
_9X noB'anta
@@ -70,16 +101,85 @@ _7C sjEteTj'Entos
_8C gwitoTj'Entos
_9C nowTj'Entos
_0M1 m'il
_1M1 m'il
_0M2 mil^'ons
_1M2 un||mil^'on
_0M4 bil^'ons
_1M4 un||bil^'on

_0and i
_0and %i
_dpt kon


// ordinal numbers
_#º o
_#ª a
//_ord eno

_1ox prim'Er
_2ox seQ'und
_3ox tErT'Er

_1o un'en
_2o dos'en
_3o tres'en
_4o kwatr'en
_5o Tink'en
_6o seIs'en
_7o sEt'en
_8o gwit'en
_9o nU'en
_11o onT'en
_12o DoT'en
_13o tReT'en
_14o katorT'en
_15o kinT'en
_16o sET'en
_10o DET'en
_20o Bint'en
_30o trent'en
_40o kwarant'en
_50o Tinkwant'en
_60o siSant'en
_70o sEtant'en
_80o gwitant'en
_90o noBant'en

_1Xo DeTi
_2Xo Binti
_3Xo trentaI
_4Xo kwarantaI
_5Xo TinkwantaI
_6Xo siSantaI
_7Xo sEtantaI
_8Xo gwitantaI
_9Xo noBantaI
_1Co TEnt'en
_2Co dosTEnt'en
_3Co tresTEnt'en
_4Co kw,atroTEnt'en
_5Co T,inkoTEnt'en
_6Co seIsTEnt'en
_7Co sjEtTEnt'en
_8Co gw,eItoTEnt'en
_9Co nweUTEnt'en

_0M1o mil'en
_1M1 mil'en
_0M2o mil^on'en
_1M2o mil^on'en


// unstressed words
o $u
o $atend
a $u
a $atend
os $u
os $atend
as $u
as $atend

lo $u
la $u
los $u
@@ -90,4 +190,44 @@ me $u
te $u
se $u
le $u
les $u
li $u
nos $u
mos $u
tos $u
vos $u
os $u
les $u
lis $u

// exceptions
holio x'olio
jazz dZ'as


// Foreign words
android andr'oId
apple 'apEl
at 'at
chat tS'at
chrome kr'ome
espeak isp'ik
(e speak) isp'ik
facebook f'eIsbuk
firefox f'aIrfoks
google g'ugEl
(i phone) 'aIfon
iphone 'aIfon
(i pod) 'aIpod
ipod 'aIpod
hardware x'ardwer
live l'aIB
messenger m'esendZer
mozilla moT'ila
nvda ene|be|de|'a
office 'ofis
skype esk'aIp
software s'oftwer
thunderbird Tanderb'ird
twitter tw'iter
whatsapp was'app
windows w'indows

+ 114
- 97
dictsource/an_rules View File

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


.L01 l r y
.L03 f h j s y z r // allow [B] [D] [Q] before these consonants
.L04 b v f p // labials, nasals are [m]
@@ -10,18 +8,19 @@


.group a
a a
ai aI
ai (X 'aI
ay (K aI
ay (X 'aI
au aU
au (X 'aU
a a
aix aS
ai aI
ai (X 'aI
ay (K aI
ay (X 'aI
au aU
au (X 'aU


.group b
b b
_) b b // phoneme definition may change it to [B]
_) b b // phoneme definition may change it to [B]
_) b (A b
b (A B
b (cY B
@@ -33,15 +32,15 @@


.group c
c k
c (Y T // ce ci
cc kT
ch tS
c k
c (Y T // ce ci
ck k // Forano (Foreign)
ch tS


.group d
d d
_) d d // phoneme definition may change it to [D]
_) d d // phoneme definition may change it to [D]
_) d (A d
d (A D
d (cY D
@@ -51,138 +50,156 @@
l) d d
r) d d

n) d (_ = // silent, but stress on last vowel
n) d (_ = // silent, but stress on last vowel


.group e
e e
ei eI
ei (X 'eI
ey (K eI
ey (X 'eI
eu eU
eu (X 'eU
i) e E
u) e E
y) e E
e e
eix eS
ei eI
ei (X 'eI
ey (K eI
ey (X 'eI
eu eU
eu (X 'eU
i) e E
u) e E
y) e E


.group f
f f
f f


.group g
g g
_) g g // phoneme definition may change it to [Q]
_) gh (A g // allow _gh in foreign words
gü gw
_) gh (A g // allow _gh in foreign words
_) gn (A n
_) g (A g
g (A Q
g (cY Q
g (L03 Q
m) g g
n) g g
g (Y+ x // ge gi
gu (A gw
gü gw
gu (e g
gu (i g
g (Y+ x // ge gi
gu (A gw
gu (e g
gu (i g
gu (é g
gu (í g


.group h
h // silent
h // silent


.group i
i i
i (A j
A) ix S
_) ix iS
i i
i (u i
i (A j


.group j
j x
j x


.group k
k k
k k

.group l
l l
ll l^
l l
ll l^
ll (_ l


.group m
m m
m m


.group n
n n
n (L04 m
n (_L04 m
ny n^
n n
n (L04 m
n (_L04 m
ny n^


.group ñ
ñ n^
ñ n^


.group o
o o
oi oI
oi (X 'oI
oy (K oI
oy (X 'oI
ou ow
ou (X 'ow
i) o O
u) o O
y) o O
o o
oix oS
oi oI
oi (X 'oI
oy (K oI
oy (X 'oI
ou ow
ou (X 'ow
i) o O
u) o O
y) o O

.group p
p p
p p
_) ps s


.group q
qu (A kw
qü kw
qu (e k
qu (i k

qu (A kw
qü kw
qu (e k
qu (i k
qu (é k
qu (í k

.group r
r r
_) r R
rr RR2
@) r (- = // followed by hyphen. Silent, but stress on last vowel
rs (_ =s

r r
r (_ r
r (t r
A) r (A r
C) r (A r
_) r (A R
l) r (A R
m) r (A R
n) r (A R
s) r (A R
rr RR2
@) r (- = // followed by hyphen. Silent, but stress on last vowel
rs (_ =s


.group s
s s
&) s (_S1 s
s s
&) s (_S1 s


.group t
t t
a) t (_ t# // becomes silent in a stressed syllable
u) t (_ t#
ei) t (_ t#
n) t (_ = // silent, but stress on last vowel
tz T
t t
a) t (_ t# // becomes silent in a stressed syllable
u) t (_ t#
ei) t (_ t#
n) t (_ = // silent, but stress on last vowel
tz T
ue) t (_ t#
ui) t (_ t#
s) t (_ = // silent, but stress on last vowel


.group u
u u
u (A w
_) u (A gw
u u
u (u u
u (i u
u (A w
_) u (A gw
uix uS



.group v // same as 'b'
v b
_) v b // phoneme definition may change it to [B]
_) v b // phoneme definition may change it to [B]
_) v (A b
v (A B
v (cY B
@@ -194,26 +211,26 @@


.group w
w w
w B


.group x
x ks
_) x S
x ks
_) x S
i) x S

.group y
y j
y j
y (_ i

.group z
z T
z T


.group
á ''a
é ''e
í ''i
ó ''o
ú ''u
á ''a
é ''e
í ''i
ó ''o
ú ''u


+ 9
- 5
dictsource/bg_list View File

@@ -4,13 +4,17 @@

// words of one letter
в $combine
а $u $combine
а $u $combine
е $u
й i $u
й i $u
и $u $pause
у $u $combine
с $combine
г god'ina $hasdot
у $u $combine
с $combine
г god'ina $hasdot

(а в) %av
(а с) %as


// letter names
б b@

+ 35
- 38
dictsource/da_list View File

@@ -84,7 +84,7 @@ __ b'Onsdrai
¢ s'ent
¥ j'en:
µ my
' apostr'Vf // PB o changed to V
' apostr'Vf
½ en'hal
+ plus
@@ -102,27 +102,27 @@ _9 n'i
_10 t'i
_11 'Elv@
_12 t'Vl
_13 tR'?&#d@-n // PB & changed to &#
_13 tR'?&#d@-n
_14 fj'ord@-n
_15 f'Emd@-n
_16 s'ajsd@-n
_17 s'Wd@-n // PP Y changed to W
_18 '?&d@-n // PB a changed to &
_17 s'Wd@-n
_18 '?&d@-n
_19 n'ed@-n
_2X t'y:?u
_3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@]
_4X f'?W:_|V //PB [f'W:*3] changed to [ f'?W:V]
_5X h&l't*Es // PB [a] changed to [&], e changed to E
_6X t*'Es // PB changed from e to E
_7X h&lfj'&rs // PV a changed to &
_3X tR'&#Dv@
_4X f'?W:_|V
_5X h&l't*Es
_6X t*'Es
_7X h&lfj'&rs
_8X f'irs
_9X h&lf'Ems // PB a changed to &
_0C h'un*VD
_1C ed||h'unRV:D // PB added 'et hundrede'
_0M1 t'u:s@-n
_1M1 ed||t'u:s@-n // PB added 'et' to tusind
_0C h'unRVD
_1C ed||h'unRV:D
_0M1 t'?us@-n
_1M1 ed||t'?us@-n
_1M2 'e:n||milij'o:n
_0M2 milij'o:nV // PB [3] changed to [V]
_0M2 milij'o:nV
_1M3 'e:n||milij'A:d
_0M3 milij'A:d3
_1M4 'e:n||bilij'o:n
@@ -174,7 +174,7 @@ men $pause // but
eller // or
mens $pause // while
for
fordi fVd'i $pause // because - PB: changed stress
fordi fVd'i $pause // because
når nVr $pause // while
der dEr $u+ $u // PB changed from [dA]
hvor v'O // where
@@ -187,16 +187,15 @@ fra $u+ // from
ved $u+ // at
om $u+ $brk // about, within
med $u+ // with
af & // PB changed from [a?] to [&] - sound too short in a sentence
// Also removed $u from 'af' and other words. They disappeared.
ad & // PB added 'ad'
ad &D $atend $sentence // PB "Det må ikke skille os ad."
at & $u // PB changed from [at] to [&:]
hos // at - PB: removed [$u+]
som sVm $u // which / that - PB: removed [$u+]
af &
ad &
ad &D $atend $sentence // "Det må ikke skille os ad."
at & $u
hos
som sVm $u // which / that

// pronouns
jeg jaj $u+ // I
jeg jAj $u+ // I
du du $u
de $u
han $u
@@ -205,8 +204,8 @@ det de $u
dét de
vi vi $u
i _i $u+
mig maj $u // me
dig daj $u+
mig mAj $u // me
dig dAj $u+
dem $u
ham $u
hende $u
@@ -244,7 +243,7 @@ jeres $u+
er Er $u // is/are
var vAr $u+ // was/were
har hAr $u+ // has/have
havde h&:D@ $u+ // had
havde h&D@ $u+ // had
vil $u+ // will
skal $u+ // shall
kan $u+ // can
@@ -360,7 +359,7 @@ window _^_EN
word _^_EN
warrior _^_EN

// PB names
// Names
august OgOsd $capital
austin _^_EN
bailey _^_EN
@@ -381,7 +380,7 @@ piccadilly _^_EN
reynolds _^_EN
white _^_EN

// PB French words
// French words
croquis _^_FR
crouton _^_FR
jugement _^_FR
@@ -389,7 +388,7 @@ monsieur _^_FR
madame _^_FR
mademoiselle _^_FR

// PB (French) nouns with final -age - stressed a, "age" pronounced ['&S@]
// French) nouns with final -age - stressed a, "age" pronounced ['&S@]
affutage $alt
apanage $alt
arbitrage $alt
@@ -448,7 +447,7 @@ takkelage $alt
tonnage $alt
trikotage $alt

// PB final -abel - stressed a
// Final -abel - stressed a
// "el" has been removed in order to make rules for
// "konstabel" and the plural "konstabler" without "e"
acceptab $alt
@@ -691,7 +690,7 @@ substans $alt
tolerans $alt
varians $alt

// PB nouns with final -ade - stressed a
// Nouns with final -ade - stressed a
ambassade $alt
arkade $alt
ballade $alt
@@ -755,7 +754,7 @@ tamponade $alt
tirade $alt
triade $alt

// PB nouns and adjectives with final -al - stressed a
// Nouns and adjectives with final -al - stressed a
admiral $alt
adverbial $alt
aksial $alt
@@ -997,7 +996,7 @@ vokal $alt
ækvatorial $alt
ødipal $alt

// PB words with final -ar - stressed a
// Words with final -ar - stressed a
dokumentar $alt
aktuar $alt
proletar $alt
@@ -1067,7 +1066,7 @@ vegetar $alt
velar $alt
vokabular $alt

// PB final -agtig - stressed a
// Final -agtig - stressed a
barnagtig $alt
blødagtig $alt
delagtig $alt
@@ -1100,7 +1099,7 @@ svinagtig $alt
tvivlagtig $alt
tyvagtig $alt

// PB words with final -an - stressed a
// Words with final -an - stressed a
aeroplan $alt2
agraman $alt2
altan $alt2
@@ -1128,7 +1127,6 @@ filigran $alt2
galan $alt2
hortulan $alt2
human $alt2
hvordan vVd'&n $alt
inhuman $alt2
kapellan $alt2
karljohan $alt2
@@ -5778,7 +5776,6 @@ adstringer $alt
adviser $alt
advoker $alt
afficer $alt
'aflever $alt
'afmarcher $alt
afrikaniser $alt
agere $alt
@@ -11195,7 +11192,7 @@ skateboardet sk'eitbo@d3D // PB
(secret service) sigred||s'Wvis
(happy hour) h&pi||'AuV
chevrolet sjEvrol'e
saigon sajg3-n // PB Saigon
saigon sAjgVn // PB Saigon
managua m&n'&:gw&
(deja-vu) deSja||'vy
(il duce) il||d'u:tSj@ // PB Italian Fascist

+ 292
- 274
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 1
- 0
dictsource/en_list View File

@@ -3381,6 +3381,7 @@ Amy eImi
Andre 0ndreI
Andrea andri@
Andreas A:ndr'eI@s
Angela $1
Anita $alt3
Anthony ant@ni
Anton ant0n

+ 3
- 1
dictsource/en_rules View File

@@ -3926,10 +3926,12 @@
o (blo 0
_r) o (bo oU
_) o (bs %0
?3 _) o (bs %0#
_) obs (er %0bz
obso (l 0bs@
o (bstin 0
_) o (bt %0
?3 _) o (bt %0#
o (by_ oU
f) o (cA oU
_l) o (cA oU
@@ -5862,7 +5864,7 @@
_) zs (Y z
_) z (wY z

n) z (_ ts
n) z (_N ts
@) zales (_ z'A:l@s
zei zaI
zes (_ zI2z

+ 1545
- 1545
dictsource/fr_rules
File diff suppressed because it is too large
View File


+ 2
- 7
dictsource/hi_list View File

@@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
श S@
ष s.@ // retroflex [S]
स s@
ह H@
ह H@-
क़ q@
ख़ x@
ग़ Q@
@@ -195,12 +195,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
ॐ #X1o~m

_?? Vks.@r
_a ej
_b bi:
_c si:
_d di:
_e i:
_f Ef


// Punctuation
। dVn.d.V

+ 1
- 1
dictsource/hi_rules View File

@@ -346,7 +346,7 @@
स (B s

.group ह
ह HV
ह H
ह (B H



+ 1
- 1
dictsource/kn_list View File

@@ -26,7 +26,7 @@ p pi:
q kju:
r a:r
s Es
t thi:
t t#i:
u ju:
v vi:
w dabalju:

+ 1
- 1
dictsource/ml_list View File

@@ -63,7 +63,7 @@ p pi:
q kju:
r a:R
s Es
t ti:
t t#i:
u ju:
v vi:
w dVbVlju:

+ 17
- 4
dictsource/pt_list View File

@@ -662,6 +662,7 @@ arroz $alt2
assembleia $alt
ateia $alt
aterro $alt2 $noun
aterros $alt2
atmosfera $alt
atrozes $alt
autora $alt2
@@ -716,6 +717,7 @@ chovesse $alt2
chupeta $alt2
clamores $alt2
clero $alt
crepe $alt
coco $alt2
cofre $alt
cogumelo $alt
@@ -732,6 +734,7 @@ comodo $alt2
concerto $alt2 $noun
concordo $alt
conforto $alt $verb
congelo $alt
consolo $alt2 $noun
controle $alt2 $noun
controlo $alt2 $noun
@@ -754,11 +757,15 @@ desemprego $alt $verb
desespero $alt2 $noun
desfecho $alt2
desprezo $alt2 $noun
desse $alt2
desse $alt $verb
deste $alt2
deste $alt $verb
desterro $alt2
deveras $alt
dez $alt
diarreia $alt
discordo $alt
dissermos $alt
dobro $alt2 $noun
doce $alt2
doutora $alt2
@@ -786,6 +793,7 @@ erros $alt2
esboço $alt $verb
escopeta $alt2
escova $alt2 $noun
escovo $alt
escroto $alt2
esforço $alt $verb
esforços $alt
@@ -820,12 +828,13 @@ folga $alt
fogos $alt
foguete $alt2
foice $alt2
fora $alt
fora $alt2 $verb
forca $alt2
força $alt2 $noun
forças $alt2
forço $alt
fordes $alt2
fores $alt2
fossem $alt2
forro $alt $verb
fosse $alt2
frevo $alt2
@@ -853,7 +862,6 @@ hemorroida $alt
hoje $alt2
horrores $alt2
ideia $alt
insonoro $alt
interesse $alt2 $noun
jogo $alt2 $noun
joguete $alt2
@@ -949,6 +957,7 @@ primavera $alt
provo $alt
quarteto $alt2
queda $alt
quede $alt2
quinteto $alt2
recomeço $alt2 $noun
recordo $alt
@@ -969,6 +978,8 @@ rocha $alt
rock $alt
rola $alt2 $noun
rolo $alt2 $noun
rota $alt2
rota $alt $noun
rumores $alt2
saleta $alt2
sarjeta $alt
@@ -982,6 +993,7 @@ selvagem seUv'aZeIN
sexteto $alt2
?1 senhora $alt2
senhores $alt2
singelo $alt
sinopse $alt
soco $alt2
soco $alt $verb
@@ -1019,6 +1031,7 @@ trombeta $alt2
tumores $alt2
valeta $alt2
vanessa $alt2
velo $alt
velozes $alt
verme $alt
violeta $alt2

+ 27
- 10
dictsource/pt_rules View File

@@ -359,11 +359,11 @@
_perd) e (L05_ e
_quis) e (L05_ E
_soub) e (L05_ E
proteg) e (L05_ e // des-
diss) e (L06_ E // contra-
tend) e (L06_ e // a- con- en- es-
vend) e (L06_ e // re-
_mord) e (L06_ e
_rend) e (L06_ e
_vend) e (L06_ e
prend) e (L06_ e // a- rea- des- desa-
_arrepend) e (L06_ e
_defend) e (L06_ e
@@ -372,6 +372,7 @@ _escond) e (L06_ e
preend) e (L06_ e // com- a- re- sur-
respond) e (L06_ e // cor-
bat) e (L07_ e // re- com-
ceb) e (L07_ e // re- per- con-
ced) e (L07_ e // pro- con- su-
met) e (L07_ e // co- pro- arre- re- intro- compro- sub-
mov) e (L07_ e // re- co-
@@ -386,6 +387,7 @@ respond) e (L06_ e // cor-
tend) e (L07_ e // en- con- a- es-
torc) e (L07_ e // con-
venc) e (L07_ e // con-
vend) e (L07_ e // re-
vert) e (L07_ e // in- re- con-
volv) e (L07_ e // de- en- re-
_eleg) e (L07_ e
@@ -399,7 +401,6 @@ respond) e (L06_ e // cor-
parec) e (L07_ e // a- rea- com- desa-
prend) e (L07_ e // a- rea- des-
screv) e (L07_ e // e- in- ree- pre- de-
_abastec) e (L07_ e
_aborrec) e (L07_ e
_absolv) e (L07_ e
_adoec) e (L07_ e
@@ -417,6 +418,7 @@ _emagrec) e (L07_ e
_endurec) e (L07_ e
_enlouquec) e (L07_ e
_enraivec) e (L07_ e
_entorpec) e (L07_ e
_entristec) e (L07_ e
_envaidec) e (L07_ e
_envelhec) e (L07_ e
@@ -425,11 +427,13 @@ _escond) e (L07_ e
_escurec) e (L07_ e
_espairec) e (L07_ e
_esquec) e (L07_ e
_estremec) e (L07_ e
_interromp) e (L07_ e
_perec) e (L07_ e
_rejuvenec) e (L07_ e
_resolv) e (L07_ e
_suspend) e (L07_ e
abastec) e (L07_ e // re-
conhec) e (L07_ e // & re- des-
estabelec) e (L07_ e // re-
favorec) e (L07_ e // des-
@@ -440,6 +444,7 @@ respond) e (L07_ e // cor-
qu) e (brL04_ E
_hosp) e (dL03_ E
_gr) e (gL03_ e
_gal) e (gL03_ e
_n) e (grL03_ e
_estr) ei (L03_ EI
_inv) e (jL04_ E
@@ -453,16 +458,20 @@ respond) e (L07_ e // cor-
_sev) e (rL03_ E
_reit) e (rL03_ E
_sinc) e (rL03_ E
g) e (rL04_ E // su- refri-
_g) e (rL04_ E
qu) e (rL04_ E // re-
_op) e (rL04_ E
gen) e (rL04_ E // de- re-
_alt) e (rL04_ E
_sug) e (rL04_ E
_sup) e (rL04_ E
_tol) e (rL04_ E
_ven) e (rL04_ E
acel) e (rL04_ E // des-
_coop) e (rL04_ E
_temp) e (rL04_ E
_recup) e (rL04_ E
_refrig) e (rL04_ E
_v) e (rbL03_ E
_p) e (rdL02_ E
_l) e (rdL03_ E
@@ -496,17 +505,18 @@ _obsol) e (tL03_ e
_d) e (vL03_ e
scr) e (vL03_ e // e- in- pre- ree- de-
_atr) e (vL03_ e
pr) e (zL04_ E // des- menos-
_r) e (zL04_ E
_pr) e (zL04_ E
_despr) e (zL04_ E
_embel) e (zL04_ E
_acont) e (çL01_ e
_arref) e (çL01_ e
_menospr) e (zL04_ E
_emagr) e (çL03
pr) e (çL03_ e // a-
aqu) e (çL03_ e // re-
mer) e (çL03_ e // des-
pad) e (çL03_ e // com-
par) e (çL03_ e // a- re- com- rea- desa-
_ado) e (çL03_ e
_aqu) e (çL03_ e
_car) e (çL03_ e
_per) e (çL03_ e_
conh) e (çL03_ e // re-
@@ -516,10 +526,12 @@ _emagr) e (çL03
_ofer) e (çL03_ e
abast) e (çL03_ e // re-
_aborr) e (çL03_ e
_acont) e (çL03_ e
_agrad) e (çL03_ e
_amanh) e (çL03_ e
_amort) e (çL03_ e
_anoit) e (çL03_ e
_arref) e (çL03_ e
_desguarn) e (çL03_ e
_desguarnec) e (çL03_ e
_enfraqu) e (çL03_ e
@@ -825,6 +837,7 @@ estabel) e (çL03_ e // re-
?1 v) o (lt O

//sort
_f) o (L06_ o
_engl) o (bL01_ O
_s) o (bL02_ O
_esn) o (bL04_ O
@@ -851,6 +864,10 @@ _desabr) o (chL04_ O
_ens) o (pL04_ O
_s) o (prL04_ O
_) o (ptL04_ O
_inod) o (rL03_ O
_inson) o (rL03_ O
_comem) o (rL04 O
_remem) o (rL04_ O
_enf) o (rquL02_ O
c) o (rrL01_ o // escorra, incorra, corra, recorra
_m) o (rrL01_ o
@@ -858,6 +875,7 @@ _desabr) o (chL04_ O
_r) o (snL04_ O
_c) o (spL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_gar) o (tL03_ o
_g) o (zL04_ O
_ad) o (çL03_ O
_end) o (çL03_ O
@@ -935,10 +953,9 @@ _desabr) o (chL04_ O
r (C *@-
A) r (A *
A) r (_A *
rr rx
rr x
XC) r (A R
C) r (A *
//?1 C) r (A r
_) r x
l) r x
n) r (+ x

+ 4
- 4
dictsource/ta_list View File

@@ -49,7 +49,7 @@ U+bcd ot.RU


// speak Latin letters as English
a e:j
a e:j $atend
b bi:
c si:
d di:
@@ -57,7 +57,7 @@ e i:
f Ef
g dZi:
h e:tS
i a:j
i a:j $atend
j dZe:j
k ke:j
l El
@@ -68,7 +68,7 @@ p pi:
q kju:
r a:R
s Es
t thi:
t t#i:
u ju:
v vi:
w dVbVlju:
@@ -540,7 +540,7 @@ tamil தமிழ் $text
கிர் $alt
கங்க $alt
காந்த $alt
கேம் $alt




+ 25
- 0
dictsource/ta_rules View File

@@ -334,6 +334,7 @@
_) கி (ளாமர g
_) கி (ளாஸ்_ g
_) கி (ளாஸ்_மேட k
_) கிளாஸ்க (ோ gl.a:sg
_) கிளிக் (_L29 kl.ik
_) கிளிட kl.it.V#
_) கிளிண்ட (ன klint.V
@@ -483,6 +484,7 @@ _மன்மதக்) க (ுகை g
_) க (ேட்டைக் g
_) க (ேட்டைத் g
_) க (ேட்டைப் g
_) க (ேமை g
_) க (ேம்ஸ g
_) கேரண்ட ge:rVn.t.V#
_) க (ேலரி g
@@ -667,6 +669,7 @@ _ஹன்L04ி) க (ா k
அ) க (ாடமி k
_நேர்) க (ாணல k
_கண்) க (ாணா k
_கர்ம) க (ாண்ட g
உத்திரா) க (ாண்ட k
_ராம) க (ாதை k
இராம) க (ாதை k
@@ -947,6 +950,7 @@ _துப்பாக்கி) க்க (ுண்ட gg
_ப) சக் tSVk
_) ச (க்கரவர்த்தி tSV
_) ச (க்கிலி tSV
_) சக் (ரவர்த்தி tSVk
_க) ச (க்ஸ்தான zV
சங்க (ர s.VNkV
_) ச (ட்டL08ஸ்கர tSV
@@ -1054,11 +1058,16 @@ _தணிகா) ச (ல tSV
_வரதா) ச (ாரி tS
_வேதா) ச (ாரி tS
_கிருஷ்ணமா) ச (ாரி tS
_கோபால) ச (ாரி tS
_சங்கரா) ச (ாரி tS
_தேசிகா) ச (ாரி tS
_பட்டா) ச (ாரி tS
_பிரம்ம) ச (ாரி tS
_மத்வா) ச (ாரி tS
அனந்தா) ச (ாரி tS
அன்னமா) ச (ாரி tS
ராஜகோபால) ச (ாரி tS
ராமானுஜா) ச (ாரி tS
ஆ) ச (ாரிய_ tS
ஆ) ச (ாரியார tS
அ) ச (ாருதீன z
@@ -2157,6 +2166,7 @@ _ஸ்வர்ணல) த (ா t
_மால) த (ி t
_ரேவ) த (ி t
_வசந்) த (ி t
அவந்) த (ி t
வாசந்) த (ி t
_கோம) த (ி t
ஜெயந்) த (ி t
@@ -2594,6 +2604,10 @@ _டீயும்_) ப (ன்னும்_ bV
_) ப (ாகீரதி b
_) ப (ாக்கிக் b
_) ப (ாக்கிய b
_) ப (ாக்டரி_ f
_) ப (ாக்டரியா b
_) ப (ாக்டரியி f
_) ப (ாக்டரியை f
_) பாக்ட (ீரியா ba:kt.
_) பாக்த (ாத ba:gd
_) ப (ாக்ய b
@@ -2790,6 +2804,7 @@ _விளையாடு_) ப (ாம்பே p
_) ப (ாவேய b
_) ப (ாவ்நகர b
_) ப (ாஷாக்கள b
_) ப (ாஷாபிமான b
_) ப (ாஷாவ b
_) ப (ாஷிய b
_) ப (ாஷை b
@@ -2939,6 +2954,7 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ராதித் p
_) பி (ராத்தல b
_) பி (ராந்தி_ b
_) பி (ராந்திய_ p
_) பி (ராந்தியங் p
_) பி (ராந்தியத் p
_) பி (ராந்தியம்_ p
@@ -2978,8 +2994,10 @@ _விளையாடு_) ப (ாம்பே p
_) பி (ரித்தானி b
_) பிரின்சிப (ால prinsip
_) பி (ரிமிய p
_) பி (ரியங்கள p
_) பிரியங்க (ா prijVNk
_) பி (ரியதர p
_) பி (ரியத்த p
_) பி (ரியன p
_) பி (ரியப்பட p
_) பி (ரியம p
@@ -3315,6 +3333,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ோதகன b
_) ப (ோதகர b
_) ப (ோதன b
_) ப (ோதம b
_) ப (ோதிக்க b
_) ப (ோதிசத் b
_) ப (ோதிசத்வ b
@@ -3349,6 +3368,8 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ோர்_அடி b
_) ப (ோர்ஜரி f
_) ப (ோர்டL31 b
_) ப (ோர்டு b
_) ப (ோர்ட்டிகோ p
_) ப (ோர்தான்_அடி b
_) ப (ோர்மேன f
_) ப (ோர்வெல் b
@@ -3547,6 +3568,7 @@ _ஜெனி) ப (ர fV
ஆ) ப (ரேஷன pV
_கார்) ப (ரேஷன pV
_பம்) ப (ர்_ pV
அ) ப (ர்ணா pV
_கன்) ப (ர்ம fV
இன்) ப (ர்ம fV
கரம்) ப (ற் pV
@@ -3659,6 +3681,7 @@ _பிளாட்) ப (ார f
இம்) ப (ால f
இரு) ப (ால p
ஒரு) ப (ால p
_தங்க) ப (ால b
ஆண்) ப (ால p
_பெண்) ப (ால p
L03தன்) ப (ால p
@@ -4032,6 +4055,7 @@ _சந்தேக) ப்ப (ுத்தி bb
கம்) ப்யூட (ர pjU:t.V
_பெர்) ப் (யூம f
_யூ) ப்ரட (ீஸ frVt.
_சு) ப் (ரியா p
_ஸ்ரீ) ப் (ரியா p
_சு) ப் (ரீம p
_) ப் (ரீயா f
@@ -4218,6 +4242,7 @@ _சந்தேக) ப்ப (ுத்தி bb
இ (ரதத்த
இ (ரதம
இ (ரத்த
இ (ரபீந்திர
இரப்ப (ர rVbbV
இ (ரமண
இ (ரம்மிய

+ 1
- 1
dictsource/te_list View File

@@ -24,7 +24,7 @@ p pi:
q kju:
r a:r
s Es
t thi:
t t#i:
u ju:
v vi:
w dVbVlju:

+ 4
- 4
dictsource/vi_rules View File

@@ -77,7 +77,7 @@ ỵ ỵ
//================================
// Consonants
//================================
.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve
.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve ge
.L02 n
@@ -460,7 +460,7 @@ ỵ ỵ
.group i
i i
i (A j
//i (A j
ia i@
ià i@2
iá i@3
@@ -822,7 +822,7 @@ ỵ ỵ
.group y
y i
y (A j
// y (A j
ya i@
yà i@2
yá i@3
@@ -837,7 +837,7 @@ ỵ ỵ
yệ i@6
// yêu i@U
y (L01 _^_EN
.group ỳ
ỳ i2

+ 5
- 6
docs/phonemes.html View File

@@ -24,8 +24,8 @@ Phoneme mnemonics can be used directly in the text input to <strong>espeak</stro
<table>
<tbody valign=top>
<tr>
<td width=25><code>[p]</code><td width=150>
<td width=25><code>[b]</code><td width=150>
<td width=25><code>[p]</code><td width=80>
<td width=25><code>[b]</code><td width=80>
<tr>
<td><code>[t]</code><td>
<td><code>[d]</code><td>
@@ -92,7 +92,7 @@ In rhotic accents, such as General American, the phonemes <code>[3:], [A@], [e@]
<table>
<tbody valign=top>
<tr><td width=25><code>[@]</code>
<td width=60>alph<b>a</b><td width=400>schwa
<td width=60>alph<b>a</b><td width=80>schwa

<tr><td><code>[3]</code>
<td>bett<b>er</b><td>rhotic schwa. In British English this is the same as <code>[@]</code>, but it includes 'r' colouring in American and other rhotic accents. In these cases a separate <code>[r]</code> should not be included unless it is followed immediately by another vowel.
@@ -105,7 +105,7 @@ In rhotic accents, such as General American, the phonemes <code>[3:], [A@], [e@]

<tr><td><code>[a]</code><td>tr<b>a</b>p
<tr><td><code>[aa]</code><td>b<b>a</b>th<td>This is <code>[a]</code> in some accents, <code>[A:]</code> in others.
<tr><td><code>[a#]</code><td><b>a</b>bout<td>This may be <code>[@]</code> or may be a more open schwa.
<tr><td><code>[a2]</code><td><b>a</b>bout<td>This may be <code>[@]</code> or may be a more open schwa.
<tr><td><code>[A:]</code><td>p<b>al</b>m
<tr><td><code>[A@]</code><td>st<b>ar</b>t
<tr><td><p>
@@ -161,8 +161,7 @@ Other languages will have their own vowel definitions, eg:

</tbody>
</table>
<p>
<code> [:] </code> can be used to lengthen a vowel, eg <code> [e:]</code>


</body>
</html>

espeak-data/voices/test/an → espeak-data/voices/europe/an View File


BIN
phsource/klatt/nr View File


+ 53
- 62
phsource/ph_danish View File

@@ -45,14 +45,14 @@ endphoneme

phoneme i
vowel starttype #i endtype #i
length 90 //150
length 95 //150
// PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 150
ENDIF
// "gider" TEST
// "gider", vrider"
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN
length 90
length 95
ENDIF
// PB long vowel followed by certain vowels - "pigen" [p'i@-n]
IF nextPhW(#@) OR nextPhW(#e) THEN
@@ -69,7 +69,7 @@ IF thisPh(isWordEnd) THEN
ENDIF
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
length 95
ENDIF
// PB "tie", "stige", "krige" vowel + vowel: extra length
// What is causing this very short [i] in words with final [@-]?
@@ -99,14 +99,14 @@ endphoneme

phoneme e
vowel starttype #e endtype #e
length 90 //150
length 95 //150
// "delte", "mente"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@) THEN
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN
length 150
ENDIF
// PB "ring", "ringe"
IF nextPhW(N) THEN
length 90
length 95
ENDIF
// PB "enig", "enige", "evig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
@@ -118,7 +118,7 @@ IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
length 95
ENDIF
FMT(vowel/e)
endphoneme
@@ -133,14 +133,14 @@ endphoneme

phoneme E
vowel starttype #e endtype #e
length 90 //150
length 100 //150
// "værelse", "breve"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
// length 150
ENDIF
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 150
length 160
ENDIF
// "ære", "kærester", "ærefrygt" - longer E
IF nextPhW(V) THEN
@@ -148,23 +148,23 @@ IF nextPhW(V) THEN
ENDIF
// Only the letter "æ" - long
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
length 160
ENDIF
// "stædig" [st'EDi] long
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
length 160
ENDIF
// "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN
length 90
length 120
ENDIF
// "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN
length 90
length 120
ENDIF
// "mælkebøtte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
length 120
ENDIF
FMT(vowel/e_mid2)
endphoneme
@@ -173,12 +173,8 @@ endphoneme
// "læsse" vs. "læse"
phoneme ?E
vowel starttype #e endtype #e
length 90
// PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ]
// Changed now [f'?E3-V] but it won't do any harm
IF nextPhW(V) THEN
length 120
ENDIF
ipa ε
length 100
FMT(vowel/e_mid2)
endphoneme

@@ -193,7 +189,7 @@ ENDIF
// ThisPh + gooup #e or group #@
// "ae", "aer" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 240
length 220
ENDIF
// This vowel is word end - longer because it sounds too short
// "ja", "Omaha"
@@ -278,6 +274,10 @@ ENDIF
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN
length 90
ENDIF
// "fare" [f'A:A]
IF nextPhW(A) THEN
length 150
ENDIF
FMT(vowel/a_8)
endphoneme
@@ -297,27 +297,21 @@ endphoneme
phoneme u
vowel starttype #u endtype #u
length 90 //150
// Short vowel followed by consonant and NOT consonant + 3 or V or @
// "blus" vs. "bluse" and "bluser"
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
// glstop
// length 90
ENDIF
// "suge", "uge", bluse
// "suge", "uge", "bluse", "julegave"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
length 150
ENDIF
// extra length followed by 3 or V or @
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
// length 240
ENDIF
// "umulig"
// "umulig" [u:m'uli]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
ENDIF
// Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
ENDIF
FMT(vowel/u_bck)
endphoneme
@@ -332,20 +326,13 @@ endphoneme

phoneme o
vowel starttype #o endtype #o
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// "tro"
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 90 //150
// "bore", "borer"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 150
ENDIF
// "modig" - long vowel after consonant + [i]
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN
IF nextPhW(D) AND next2PhW(i) THEN
length 150
ENDIF
FMT(vowel/o_2)
@@ -362,7 +349,7 @@ endphoneme
phoneme O
vowel starttype #o endtype #o
length 90 // 150
// PB "sove", "sover" - consonant + #e or #@: long
// "sove", "sover" - consonant + #e or #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
@@ -377,7 +364,7 @@ ENDIF
FMT(vowel/o_5)
endphoneme

// PB Experimental glottal O
// Short O
// "toget" vs. "tåget"
phoneme ?O
vowel starttype #o endtype #o
@@ -400,13 +387,17 @@ ENDIF
IF nextPhW(isNotVowel) AND next2Ph(V) THEN
length 90
ENDIF
// PB "snorke", "snorker", årlig
// "snorke", "snorker", årlig
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN
length 180
ENDIF
// "sove" [sVw3] - longer followed by w + 3
IF nextPhW(w) AND next2PhW(3) THEN
length 220
ENDIF
// PB "konge"
IF nextPhW(N) THEN
length 95
ENDIF
FMT(vowel/V_4)
endphoneme
@@ -415,7 +406,7 @@ endphoneme
// "forstår" vs. "kåre"
phoneme ?V
vowel starttype #@ endtype #@
length 100
length 90
FMT(vowel/V_4)
endphoneme

@@ -432,7 +423,7 @@ ENDIF
FMT(vowel/oo_2)
endphoneme

// ?B short 0 "sukker"
// Short 0 "sukker"
phoneme ?0
vowel starttype #o endtype #o
length 90
@@ -492,8 +483,8 @@ endphoneme

phoneme W
vowel starttype #@ endtype #@
length 99 //160
// "kløe" vowel + vowel: extra length
length 90 //160
// "kløe" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
ENDIF
@@ -501,8 +492,8 @@ ENDIF
IF next2PhW(#@) OR next2PhW(#e) THEN
length 160
ENDIF
// "røveri" TEST
IF next2PhW(V) OR next2PhW(?V) THEN
// "røveri" but NOT "surfer" [sWf?V] TEST
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN
length 90
ENDIF
// PB "nødig", "nødigt", "kølige"
@@ -520,7 +511,7 @@ ENDIF
FMT(vowel/oe)
endphoneme

// PB short W
// Short W
// "prøv" vs. "prøve"
phoneme ?W
vowel starttype #@ endtype #@
@@ -528,7 +519,7 @@ phoneme ?W
FMT(vowel/oe)
endphoneme

// PB added for the ø in "røv", "røg", "øje" instead of [V3]
// Added for the ø in "røv", "røg", "øje" instead of [V3]
phoneme W#
vowel starttype #@ endtype #@
length 90 //150
@@ -543,12 +534,12 @@ ENDIF
FMT(vowel/V)
endphoneme

// PB short W#
// Short W#
// "rømme"
phoneme ?W#
vowel starttype #@ endtype #@
length 90
FMT(vowel/V)
FMT(vowel/V)
endphoneme

phoneme aI
@@ -594,10 +585,10 @@ phoneme l/3 // Replacement for [l/]

PrevVowelEndings
VowelEnding(l/l_@)
VowelEnding(l/l_a)
VowelEnding(l/l_a,-70) // kvalt, kapital
VowelEnding(l/l_e, -40)
VowelEnding(l/l_i, -70)
VowelEnding(l/l_o)
VowelEnding(l/l_o,-70) // stole, skole, pistol
VowelEnding(l/l_u, -70)
EndSwitch

@@ -694,7 +685,7 @@ phoneme j
VowelStart(j/ja)
VowelStart(j/je,-35)
VowelStart(j/ji)
VowelStart(j/jo)
VowelStart(j/jo,-65) // "kjole"
VowelStart(j/ju)
EndSwitch
Vowelout len=70

+ 3
- 0
phsource/ph_english View File

@@ -145,6 +145,9 @@ phoneme @2 // Schwa, changes to I before a vowel
IF nextPh(isVowel) THEN
ChangePhoneme(I2)
ENDIF
IF nextPh(isVowel) THEN
FMT(vowel/ii_4)
ENDIF
FMT(vowel/@)
endphoneme


+ 2
- 4
phsource/ph_hindi View File

@@ -33,14 +33,12 @@ phoneme V
ChangePhoneme(NULL)
ENDIF

IF nextVowel(isFlag1) THEN
ELSE
IF NOT nextVowel(isFlag1) THEN
IF thisPh(isSeqFlag1) THEN
// delete the last inherent vowel of a sequence
ChangePhoneme(NULL)
ELSE
IF thisPh(isFirstVowel) THEN
ELSE
IF NOT thisPh(isFirstVowel) THEN
// delete if not the first vowel, and is an isolated 'a'
ChangePhoneme(NULL)
ENDIF

BIN
phsource/r/V_ View File


BIN
phsource/r/V_2_ View File


BIN
phsource/vnasal/&_n View File


BIN
phsource/vnasal/&u_n View File


BIN
phsource/vnasal/V_n View File


BIN
phsource/vnasal/W_n View File


BIN
phsource/vnasal/a#_n View File


BIN
phsource/vnasal/a#_n2 View File


BIN
phsource/vnasal/a#u_n View File


BIN
phsource/vnasal/aa_n View File


BIN
phsource/vnasal/aa_n2 View File


BIN
phsource/vnasal/aa_n3 View File


BIN
phsource/vnasal/aa_n4 View File


BIN
phsource/vnasal/e#_n View File


BIN
phsource/vnasal/e_n View File


BIN
phsource/vnasal/ee_n View File


BIN
phsource/vnasal/ee_n2 View File


BIN
phsource/vnasal/ee_u_n View File


BIN
phsource/vnasal/i_n View File


BIN
phsource/vnasal/i_n2 View File


BIN
phsource/vnasal/ii_n View File


BIN
phsource/vnasal/o_n View File


BIN
phsource/vnasal/o_n2 View File


BIN
phsource/vnasal/o_n3 View File


BIN
phsource/vnasal/o_n4 View File


BIN
phsource/vnasal/oi_n View File


BIN
phsource/vnasal/oo_n View File


BIN
phsource/vnasal/oo_n2 View File


BIN
phsource/vnasal/oo_n3 View File


BIN
phsource/vnasal/u_n View File


BIN
phsource/vnasal/vowelchart.png View File


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

@@ -36,6 +36,7 @@
#define NO_VARIADIC_MACROS
#define INCLUDE_KLATT
#define INCLUDE_MBROLA
#define INCLUDE_SONIC
// will look for espeak_data directory here, and also in user's home directory
#define PATH_ESPEAK_DATA "/usr/share/espeak-data"

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

@@ -39,6 +39,7 @@
#define LIBRARY
#define INCLUDE_KLATT
#define INCLUDE_MBROLA
#define INCLUDE_SONIC

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

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

@@ -41,6 +41,7 @@
//#define USE_NANOSLEEP
#define INCLUDE_KLATT
#define INCLUDE_MBROLA
#define INCLUDE_SONIC
// will look for espeak_data directory here, and also in user's home directory
#define PATH_ESPEAK_DATA "/usr/share/espeak-data"

+ 23
- 5
src/compiledata.cpp View File

@@ -745,6 +745,7 @@ static void CompileReport(void)
REF_HASH_TAB **list;
const char *data_path;
int prev_table;
int procedure_num;
int prev_mnemonic;

if(f_report == NULL)
@@ -802,7 +803,17 @@ static void CompileReport(void)
j++;
}

fprintf(f_report," [%s] %s",WordToString(prev_mnemonic = list[ix]->ph_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name);
prev_mnemonic = list[ix]->ph_mnemonic;
if((prev_mnemonic >> 24) == 'P')
{
// a procedure, not a phoneme
procedure_num = atoi(WordToString(prev_mnemonic));
fprintf(f_report," %s %s", phoneme_tab_list2[prev_table = list[ix]->ph_table].name, proc_names[procedure_num]);
}
else
{
fprintf(f_report," [%s] %s",WordToString(prev_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name);
}
fputc('\n',f_report);
}

@@ -1856,7 +1867,7 @@ static int LoadWavefile(FILE *f, const char *fname)
}

sprintf(command,"sox \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp);
if(system(command) < 0)
if(system(command) != 0)
{
failed = 1;
}
@@ -2761,6 +2772,8 @@ int CompilePhoneme(int compile_phoneme)
}
strcpy(proc_names[n_procs], item_string);
phoneme_out = &phoneme_out2;
sprintf(number_buf,"%.3dP", n_procs);
phoneme_out->mnemonic = StringToWord(number_buf);
}

phoneme_out->code = phcode;
@@ -3498,10 +3511,11 @@ static void CompilePhonemeData2(const char *source)
make_envs();
#endif

wxLogStatus(_T("Compiling phoneme data: ")+wxString(path_source,wxConvLocal));
n_envelopes = 0;
error_count = 0;
resample_count = 0;
memset(markers_used,0,sizeof(markers_used));
memset(markers_used,0,sizeof(markers_used));

f_errors = stderr;

@@ -3668,7 +3682,7 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references

if(error_count > 0)
{
report += _T(" See file: 'phsource/error_log'.");
report += _T(" See file: '")+wxString(path_source,wxConvLocal)+_T("phsource/error_log'.");
wxLogError(report);
}
wxLogStatus(report + report_dict);
@@ -4138,7 +4152,11 @@ void CompilePhonemeData()
void CompileSampleRate()
{
long value;
value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs sox)"), 22050, 5000, 48000);
#ifndef PLATFORM_POSIX
wxLogError(_T("Change Sample Rate needs the 'sox' program. It probably doesn't work on Windows"));
#endif

value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs 'sox' program)"), 22050, 5000, 48000);

if(value > 1000)
{

+ 2
- 2
src/dictionary.cpp View File

@@ -3182,7 +3182,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
continue;
}

if((dictionary_flags2 & FLAG_ATEND) && (word_end < tr->clause_end))
if((dictionary_flags2 & FLAG_ATEND) && (word_end < translator->clause_end))
{
// only use this pronunciation if it's the last word of the clause
continue;
@@ -3194,7 +3194,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
continue;
}

if((dictionary_flags2 & FLAG_SENTENCE) && !(tr->clause_terminator & CLAUSE_BIT_SENTENCE))
if((dictionary_flags2 & FLAG_SENTENCE) && !(translator->clause_terminator & CLAUSE_BIT_SENTENCE))
{
// only uis this clause is a sentence , i.e. terminator is {. ? !} not {, : :}
continue;

+ 2
- 2
src/menus.cpp View File

@@ -91,8 +91,8 @@ wxMenuBar *MakeMenu(int type, const char *dict_name)
data_menu = new wxMenu;
data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary"));
data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)"));
data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data"));
data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate"));
data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data 22050Hz"));
data_menu->Append(MENU_COMPILE_PH2, _("Compile at sample &rate"));
data_menu->AppendSeparator();
data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list..."));
data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data"));

+ 46
- 12
src/phonemelist.cpp View File

@@ -122,6 +122,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
int regression;
int end_sourceix;
int alternative;
int delete_count;
int word_start;
PHONEME_DATA phdata;

int n_ph_list3;
@@ -166,18 +168,40 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
}

// look for switch of phoneme tables
delete_count = 0;
current_phoneme_tab = tr->phoneme_tab_ix;
for(j = 0; j < n_ph_list2; j++)
{
if(plist2[j].phcode == phonSWITCH)
{
current_phoneme_tab = plist2[j].tone_ph;
}
if(current_phoneme_tab != tr->phoneme_tab_ix)
{
plist2[j].synthflags |= SFLAG_SWITCHED_LANG;
}

if(delete_count > 0)
{
memcpy(&plist2[j-delete_count], &plist2[j], sizeof(plist2[0]));
}

if(plist2[j].phcode == phonSWITCH)
{
if((!(plist2[j].synthflags & SFLAG_EMBEDDED)) && (
(plist2[j].tone_ph == current_phoneme_tab) ||
(plist2[j+1].phcode == phonSWITCH) ||
((plist2[j+1].phcode == phonPAUSE) && (plist2[j+2].phcode == phonSWITCH))
))
{
// delete this phonSWITCH if it's switching to the current phoneme table, or
// delete this phonSWITCH if its followed by another phonSWITCH
delete_count++;
}
else
{
current_phoneme_tab = plist2[j].tone_ph;
}
}

}
n_ph_list2 -= delete_count;

if((regression = tr->langopts.param[LOPT_REGRESSIVE_VOICING]) != 0)
{
@@ -311,23 +335,39 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
// transfer all the phonemes of the clause into phoneme_list
ph = phoneme_tab[phonPAUSE];
ph_list3[0].ph = ph;
word_start = 1;

for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++)
{
plist3 = &ph_list3[j];

if(plist3->sourceix != 0)
word_start = j;

if(insert_ph != 0)
{
// we have a (linking) phoneme which we need to insert here
next = phoneme_tab[plist3->phcode]; // this phoneme, i.e. after the insert

// re-use the previous entry for the inserted phoneme.
// That's OK because we don't look backwards from plist3 *** but CountVowelPosiion() and isAfterStress does !!!
// That's OK because we don't look backwards from plist3 *** but CountVowelPosition() and isAfterStress does !!!
j--;
plist3 = plist3_inserted = &ph_list3[j];
if(j > 0)
{
memcpy(&plist3[-1], &plist3[0], sizeof(*plist3));
// move all previous phonemes in the word back one place
int k;
if(word_start > 0)
{
k = word_start;
word_start--;
}
else
{
k = 2; // No more space, don't loose the start of word mark at ph_list2[word_start]
}
for(; k<=j; k++)
memcpy(&ph_list3[k-1], &ph_list3[k], sizeof(*plist3));
}
memset(&plist3[0], 0, sizeof(*plist3));
plist3->phcode = insert_ph;
@@ -343,12 +383,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)

if(plist3->phcode == phonSWITCH)
{
if(!(plist3->synthflags & SFLAG_EMBEDDED)) // ?? phonSWITCH can't have SFLAG_EMBEDDED ??
{
if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH)))
continue; // next phoneme is also a phonSWITCH, so ignore
}

// change phoneme table
SelectPhonemeTable(plist3->tone_ph);
}

+ 1
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.46.48 13.Mar.13";
const char *version_string = "1.46.53 16.Mar.13";
const int version_phdata = 0x014640;

int option_device_number = -1;

+ 1
- 1
src/synthesize.cpp View File

@@ -82,7 +82,7 @@ const char *WordToString(unsigned int word)
int ix;
static char buf[5];

for(ix=0; ix<3; ix++)
for(ix=0; ix<4; ix++)
buf[ix] = word >> (ix*8);
buf[4] = 0;
return(buf);

+ 7
- 3
src/tr_languages.cpp View File

@@ -455,6 +455,7 @@ Translator *SelectTranslator(const char *name)
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};

static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230};
static const short stress_lengths_ta2[8] = {230, 230, 240, 240, 0, 0, 260, 260};
static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 };

// convert name string into a word of up to 4 characters, for the switch()
@@ -731,6 +732,7 @@ Translator *SelectTranslator(const char *name)
if(name2 == L('a','n'))
{
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.numbers2 = 0;
}
else
if(name2 == L_pap)
@@ -1423,7 +1425,7 @@ SetLengthMods(tr,3); // all equal
case L('m','r'): // Marathi
case L('t','e'): // Telugu
{
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
SetupTranslator(tr,stress_lengths_ta2, stress_amps_ta);
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

tr->langopts.stress_rule = STRESSPOSN_1L;
@@ -1433,9 +1435,12 @@ SetLengthMods(tr,3); // all equal

if(name2 == L('t','a'))
{
SetupTranslator(tr,stress_lengths_ta, NULL);
tr->letter_bits_offset = OFFSET_TAMIL;
tr->langopts.numbers = NUM_OMIT_1_THOUSAND ;
tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words
}
else
if(name2 == L('m','r'))
{
tr->letter_bits_offset = OFFSET_DEVANAGARI;
@@ -1458,9 +1463,8 @@ SetLengthMods(tr,3); // all equal
tr->letter_bits_offset = OFFSET_TELUGU;
tr->langopts.numbers = 0x1;
}
tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words
SetIndicLetters(tr); // call this after setting OFFSET_
SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial)
SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial)
}
break;


+ 12
- 3
src/translate.cpp View File

@@ -846,7 +846,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
char prefix_chars[0x3f + 2];
int found=0;
int end_flags;
char c_temp; // save a character byte while we temporarily replace it with space
int c_temp; // save a character byte while we temporarily replace it with space
int first_char;
int last_char = 0;
int add_plural_suffix = 0;
@@ -916,7 +916,9 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
if((word_length == 1) && (wflags & FLAG_TRANSLATOR2))
{
// retranslating a 1-character word using a different language, say its name
spell_word = 1;
utf8_in(&c_temp, wordx+1); // the next character
if(!IsAlpha(c_temp) || (AlphabetFromChar(last_char) != AlphabetFromChar(c_temp)))
spell_word = 1;
}

if(option_sayas == SAYAS_KEY)
@@ -1077,10 +1079,16 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
{
if(word_length > 1)
return(FLAG_SPELLWORD); // a mixture of languages, retranslate as individual letters, separated by spaces
if(phonemes[0] == phonSWITCH)
{
// problem with espeak -vbg "b.c.d.e.f"
}
return(0);
}
strcpy(word_phonemes, phonemes);
return(dictionary_flags[0] & FLAG_SKIPWORDS); // ??
if(wflags & FLAG_TRANSLATOR2)
return(0);
return(dictionary_flags[0] & FLAG_SKIPWORDS); // for "b.c.d"
}
else if(found == 0)
{
@@ -1936,6 +1944,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
if(ok)
{
*p2 = '-'; // replace next space by hyphen
wtab[0].flags &= ~FLAG_ALL_UPPER; // prevent it being considered an abbreviation
flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word
if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f)))
{

+ 1
- 1
src/voices.cpp View File

@@ -587,7 +587,7 @@ voice_t *LoadVoice(const char *vname, int control)
static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue ";
static const char *voices_europe =
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";
"an bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";


strncpy0(voicename, vname, sizeof(voicename));

Loading…
Cancel
Save