Browse Source

Merge remote-tracking branch 'upstream/master'

master
chrislm 6 years ago
parent
commit
52d10ff9d1
68 changed files with 1359 additions and 435 deletions
  1. 1
    0
      CHANGELOG.md
  2. 5
    0
      Makefile.am
  3. 13
    14
      README.md
  4. 127
    28
      dictsource/de_list
  5. 41
    12
      dictsource/de_rules
  6. 193
    0
      dictsource/py_list
  7. 107
    0
      dictsource/py_rules
  8. 182
    200
      dictsource/vi_rules
  9. 17
    12
      docs/languages.md
  10. 40
    30
      docs/mbrola.md
  11. 5
    2
      espeak-ng-data/lang/aav/vi
  12. 7
    0
      espeak-ng-data/lang/art/py
  13. 1
    0
      espeak-ng-data/lang/gmw/de
  14. 1
    1
      espeak-ng-data/lang/ira/fa-Latn
  15. 1
    1
      espeak-ng-data/lang/zle/ru-LV
  16. 16
    0
      espeak-ng-data/voices/!v/Nguyen
  17. 1
    1
      espeak-ng-data/voices/!v/m8
  18. BIN
      phsource/n/nm
  19. 14
    14
      phsource/ph_german
  20. 9
    0
      phsource/ph_pyash
  21. 500
    115
      phsource/ph_vietnam
  22. 3
    0
      phsource/phonemes
  23. BIN
      phsource/vietnam/@_2
  24. BIN
      phsource/vietnam/O_short
  25. BIN
      phsource/vietnam/O_short_2
  26. BIN
      phsource/vietnam/V_2
  27. BIN
      phsource/vietnam/_w
  28. BIN
      phsource/vietnam/a_2
  29. BIN
      phsource/vietnam/aa
  30. BIN
      phsource/vietnam/c.wav
  31. BIN
      phsource/vietnam/c_2.wav
  32. BIN
      phsource/vietnam/dd_2.wav
  33. BIN
      phsource/vietnam/dda.wav
  34. BIN
      phsource/vietnam/dda_2.wav
  35. BIN
      phsource/vietnam/e
  36. BIN
      phsource/vietnam/e_2
  37. BIN
      phsource/vietnam/e_e
  38. BIN
      phsource/vietnam/e_e_2
  39. BIN
      phsource/vietnam/e_short_1
  40. BIN
      phsource/vietnam/e_short_2
  41. BIN
      phsource/vietnam/hi.wav
  42. BIN
      phsource/vietnam/hu.wav
  43. BIN
      phsource/vietnam/i
  44. BIN
      phsource/vietnam/i_2
  45. BIN
      phsource/vietnam/ie
  46. BIN
      phsource/vietnam/n^_
  47. BIN
      phsource/vietnam/o#
  48. BIN
      phsource/vietnam/o_2
  49. BIN
      phsource/vietnam/oo
  50. BIN
      phsource/vietnam/u
  51. BIN
      phsource/vietnam/u@
  52. BIN
      phsource/vietnam/w.wav
  53. BIN
      phsource/vietnam/w_
  54. BIN
      phsource/vietnam/y
  55. BIN
      phsource/vietnam/y@
  56. BIN
      phsource/vietnam/y_2
  57. BIN
      phsource/vwl_de/ue_short
  58. BIN
      phsource/vwl_de/y#
  59. 12
    2
      src/espeak-ng.c
  60. 3
    0
      src/include/espeak-ng/espeak_ng.h
  61. 13
    0
      src/include/espeak-ng/speak_lib.h
  62. 5
    0
      src/libespeak-ng/espeak_api.c
  63. 39
    0
      src/libespeak-ng/voices.c
  64. BIN
      src/windows/Debug/[email protected]
  65. BIN
      src/windows/Debug/output_e.wav
  66. BIN
      src/windows/Debug/output_i.wav
  67. 1
    1
      tests/language-phonemes.test
  68. 2
    2
      tests/language-pronunciation.test

+ 1
- 0
CHANGELOG.md View File

@@ -48,6 +48,7 @@ new languages:
* hak (Hakka Chinese) -- Chen Chien-ting
* ht (Haitian Creole) -- Valdis Vitolins
* kk (Kazakh) -- boracasli14, Valdis Vitolins
* py (Pyash) -- Logan Streondj
* quc (K'iche') -- Valdis Vitolins
* ru-lv (Russian Latvia) -- Valdis Vitolins
* shn (Shan Tay Yai) -- ronaldaug

+ 5
- 0
Makefile.am View File

@@ -367,6 +367,7 @@ phsource/phonemes.stamp: \
phsource/ph_portugal \
phsource/ph_pt_brazil \
phsource/ph_punjabi \
phsource/ph_pyash \
phsource/ph_romanian \
phsource/ph_russian \
phsource/ph_russian_lv \
@@ -522,6 +523,7 @@ dictionaries: \
espeak-ng-data/pap_dict \
espeak-ng-data/pl_dict \
espeak-ng-data/pt_dict \
espeak-ng-data/py_dict \
espeak-ng-data/quc_dict \
espeak-ng-data/ro_dict \
espeak-ng-data/ru_dict \
@@ -754,6 +756,9 @@ espeak-ng-data/pl_dict: dictsource/pl_list dictsource/pl_rules dictsource/pl_ext
pt: espeak-ng-data/pt_dict
espeak-ng-data/pt_dict: dictsource/pt_list dictsource/pt_rules dictsource/pt_extra dictsource/pt_emoji

py: espeak-ng-data/py_dict
espeak-ng-data/py_dict: dictsource/py_list dictsource/py_rules dictsource/py_extra

quc: espeak-ng-data/quc_dict
espeak-ng-data/quc_dict: dictsource/quc_list dictsource/quc_rules dictsource/quc_extra dictsource/quc_emoji


+ 13
- 14
README.md View File

@@ -29,7 +29,7 @@
----------

The eSpeak NG (Next Generation) Text-to-Speech program is an open source speech
synthesizer that supports [102 languages and accents](docs/languages.md),
synthesizer that supports [107 languages and accents](docs/languages.md),
based on the eSpeak engine created by Jonathan Duddington. It supports spectral
and Klatt formant synthesis, and the ability to use MBROLA voices.

@@ -126,6 +126,12 @@ be installed using the following commands:
| ronn | `sudo apt-get install ruby-ronn` |
| kramdown | `sudo apt-get install ruby-kramdown` |

For recent Debian or Ubuntu >= 18.04 you should also install:

| Dependency | Install |
|---------------|------------------------------------------------------------------|
| pcaudiolib | `sudo apt-get install libpcaudio-dev` |

### Building

The first time you build eSpeak NG, or when you want to change how to build
@@ -282,20 +288,18 @@ In order to build the Android APK file, you need:
2. the [Android NDK](http://developer.android.com/tools/sdk/ndk/index.html);
3. Gradle 3.2.1 or later.

In order to use Android Studio, you will also need:

1. [Android Studio](http://developer.android.com/sdk/installing/studio.html).

### Building with Gradle

1. Set the location of the Android SDK:

$ export ANDROID_HOME=<path-to-the-android-sdk>
(where `<path-to-the-android-sdk>` is your actual path of SDK folder e.g. `/home/user/Android/Sdk`)

2. Add location of NDK to the PATH variable:

$ export PATH=$PATH:<path-to-the-android-ndk>
(where `<path-to-the-android-ndk>` is your actual path of NDK folder, e.g. `/home/user/Android/Ndk`)

3. Configure the project:

$ ./autogen.sh
@@ -308,6 +312,7 @@ Check that log shows following lines:
ndk-build (Android): yes
...
`<path-to-gradle>` may be just `gradle` if it is found in your path by simple name.

4. Build the project:

$ make apk-release
@@ -359,15 +364,9 @@ To enable eSpeak, you need to:

## Documentation

The [documentation](docs/README.md) for eSpeak NG provides:

1. a user guide;
2. a guide for language and voice authors; and
3. details for developers.

The [espeak-ng](src/espeak-ng.1.ronn) and [speak-ng](src/speak-ng.1.ronn)
command-line documentation provide a reference of the different command-line
options available to these commands with example usage.
1. [User guide](src/espeak-ng.1.ronn) provides reference and examples for command-line options.
2. [Language guide](docs/add_language.md) provides step-by-step instructions, how to add/improve support for language.
3. [Readme](docs/README.md) provides entries to more detailed information for contributors and developers.

## eSpeak Compatibility


+ 127
- 28
dictsource/de_list View File

@@ -32,7 +32,8 @@ _| St'A:b
_: d'Op@lp,UNkt
_; Str'ICpUNkt
__ ,Unt3Str'IC
_- b'Ind@str,IC
_- b'Ind@str,IC
− mi:nUs
_! 'aUs_|r,u:f@ts,aIC@n
_? fr'Ag@ts,aIC@n
_' ,apo:str'Of
@@ -363,7 +364,7 @@ unserm Unz3m $u
unserem Unz@r@m $u
unseren Unz@r@n $u
unserer $u
unseres $u
ihre i:r@ $u
ihrem i:r@m $u
ihrer i:r3 $u
@@ -385,7 +386,7 @@ nur $brk
jetzt j,Etst $strend2
schon S,o:n $strend2
einst 'aInst // not 'ein' + st
zwar tsv,a:r
zwar $u
wo v,o:
während $u

@@ -452,13 +453,17 @@ kam ,kA:m
// de_rules includes the words ending in "-ing"
access _^_EN
account _^_EN
aid _^_EN // aids
aid _^_EN
aids _^_EN
america _^_EN
appeal _^_EN
apple _^_EN
association _^_EN
baseball _^_EN
bbc _^_EN
beat _^_EN
britain _^_EN
british _^_EN
browser _^_EN
byte _^_EN
bytes _^_EN
@@ -477,15 +482,14 @@ computer kOmpj'u:t3
cool _^_EN
copy _^_EN
couch _^_EN
cover _^_EN
cursor _^_EN
daisy _^_EN
date _^_EN
debugger _^_EN
desktop d'EsktOp
dj d'i:dZEI
download _^_EN
downloads _^_EN
email _^_EN
empire _^_EN
enterprise _^_EN
escape _^_EN
espeak _^_EN
@@ -496,12 +500,13 @@ file _^_EN
firefox _^_EN
firewall _^_EN
foul _^_EN
foyer _^_EN
frame _^_EN
freak _^_EN
german _^_EN
germany _^_EN
gin _^_EN
google _^_EN
great _^_EN
groupie _^_EN
hip _^_EN
homepage _^_EN
@@ -516,6 +521,7 @@ joint _^_EN
joke _^_EN
joystick _^_EN
junkie _^_EN
kingdom _^_EN
laptop _^_EN
laser _^_EN
level _^_EN
@@ -526,6 +532,7 @@ macho _^_EN
mail _^_EN
mailbox _^_EN
message _^_EN
moodle _^_EN
move _^_EN
my _^_EN
mysql _^_EN
@@ -533,6 +540,10 @@ notebook _^_EN
notepad _^_EN
nugget _^_EN
nvda _^_EN
nvaccess _^_EN
of _^_EN
office _^_EN
offices _^_EN
offline _^_EN
online _^_EN
out _^_EN
@@ -543,15 +554,17 @@ pidgin _^_EN
player _^_EN
plot _^_EN
poster _^_EN
quiz _^_EN
reader _^_EN
receiver _^_EN
recovery _^_EN
registry _^_EN
release _^_EN
remake _^_EN
research _^_EN
return _^_EN
roadie _^_EN
roastbeef _^_EN
quiz _^_EN
reader _^_EN
run _^_EN
running _^_EN
save _^_EN
@@ -571,13 +584,18 @@ slum _^_EN
small _^_EN
smiley _^_EN
snob _^_EN
solution _^_EN
song _^_EN
sorry _^_EN
source _^_EN
space _^_EN
spaces _^_EN
spam _^_EN
speak _^_EN
spirit _^_EN
squaw _^_EN
state _^_EN
states _^_EN
stream _^_EN
suite _^_EN
sweatshirt _^_EN
@@ -586,6 +604,10 @@ team _^_EN
teaser _^_EN
tech _^_EN
terminal _^_EN
the _^_EN
their _^_EN
they _^_EN
this _^_EN
thunderbird _^_EN
time _^_EN
timer _^_EN
@@ -593,11 +615,14 @@ to _^_EN $only
tool _^_EN
trip _^_EN
tuner _^_EN
turn _^_EN
united _^_EN
unix _^_EN
update _^_EN
updates _^_EN
venture _^_EN
verify _^_EN
very _^_EN
voice _^_EN
voices _^_EN
weather _^_EN
@@ -605,6 +630,7 @@ web w'Eb $only
website _^_EN
window _^_EN
wipe _^_EN
with _^_EN
word _^_EN


@@ -622,7 +648,6 @@ akkord $2
alarm $2
allein $2
allgemein 'alg@maIn
amerika $2
andre andr@ // andere
aneinander an1aIn'and3
anomalie $2
@@ -642,24 +667,21 @@ automatisch $3
aventurin avEntu:r'i:n
ave A:vE

bebung b'e:bUN
baguette bag'Et
balkan $1
balkon $2
balance bal'A~s
bandagier bandaZ'i:r
beben be:b@n
bebung b'e:bUN
beere be:r@
bestie bEstI@
best bEst
bestem b'Est@m
beta b'e:tA:
beten be:t@n
bibliothek bi:bli:o:t'e:k
bisschen b'IsC@n
bizarr $2
blamage $alt
bourgeoisie bUrZwAz'i:
braille braIj
bronchie $alt
buch b'u:x
@@ -674,6 +696,7 @@ bürostuhl by:r'o:Stu:l

changier SaNZ'i:r
cembalo tS'Embalo:
centre center $text
champagner Samp'anj3
champignon S'ampInjON
ciao tSaU
@@ -694,7 +717,6 @@ dragier draZ'i:r
dritte drIt@
dschungel dZ'UN@l
duett du:'Et
düst dy:st

ebendaher e:b@ndah'e:r
ebendahin e:b@ndah'In
@@ -724,7 +746,7 @@ extravagant $1
extrem Ekstr'e:m

foyer fOj'e:
friedvoll fr'i:tf,Ol
friedvoll fr'i:tfOl
furchen fUrC@n
furie $alt

@@ -735,6 +757,8 @@ gegenständ $1
gegenüber ge:g@n_|'y:b3
geglichen g@glIC@n
gemein g@maIn
gen ge:n
gene ge:n@
genial ge:nj'A:l
geranie ge:r'A:nI@
gessen gEs@n
@@ -742,6 +766,8 @@ geste ge:st@
gestern gEst3n
gitarre $2
glorie $alt
grafem grA:f'e:m
graphem grA:f'e:m
grazie $alt

handy hEndi:
@@ -784,6 +810,7 @@ inzwischen $2
jahrhundert $2
januar janu:A:r

kalender kal'End3
Kamel kam'e:l
kamelie $alt
kanäl $2
@@ -792,6 +819,7 @@ kartonage $alt
kastanie $alt
kid kId
klops kl'Ops
kognak kOnjak
kombinationsfeld $4
komödie $alt
kompass $1
@@ -843,6 +871,7 @@ november $2
numero $1

oboe o:b'o:@
orchester $2
orgie $alt
ok o:k'e:
oktober $2
@@ -857,26 +886,26 @@ pinie $alt
planet plan'e:t
pochier pOS'i:r
pochs pOxs
portemonnaie pOrtmOn'e:
präsident $3
prämie $alt
prinzip $2
prinzipien prInts'i:pI@n
privatisier pri:vA:ti:z'i:r
problematisier $5
protein pro:te:_|'i:n
protokoll $3

referendum $3
refrain rEfr'W~
relevanz $3
reliquie $alt
rendezvous rA~de:v'u:
restaurant rEsto:r'A~
risik $1
ruhezustand ru:@ts,u:Stand
rupie $alt

sabbat zabat
sagt zA:gt
salopp $2
sarkasmus $2
schieberegler S'i:b@re:gl3
schokolad $3
schreibung Sr'aIbUN
@@ -903,10 +932,8 @@ stalagmit stalagm'It
subjekt $1

tag tA:g
teint t'W~
telegen te:le:g'e:n
terrain tEr'W~
the D@ // English
theater te:'A:t3
tja tjA:
tonnage $alt
@@ -918,10 +945,12 @@ trost tr'o:st
tsunami tsu:n'A:mi:
turin tu:r'i:n

überschrift $1
umgehen $2
umrahmen $2
unten Unt@n
untermenü 'Unt3me:n,y:
unterschrift $1
urin u:r'i:n
übrig 'y:brIg#

@@ -952,28 +981,98 @@ zymbal $1


// Names
Albanien $2
adrian A:dri:A:n
Alditalk aldi:tO:k
Alea $2
amerika $2
Andorra and'OrA:
Andrea andr'e:A:
Andreas andr'e:A:s
Anika ani:kA:
Armin $1
chopin SOp'W~
aserbaidschan A:z3baIdZ'A:n
Asien A:zI@n
Bremerhaven bre:m3h'Af@n
Cathleen katle:n
Cedric sEdrIk
Chiara kjA:rA:
Chris krIs
Christian $1
Christina $2
Daniel dA:nI@l
Daniela danj'e:lA:
Djakarta dZak'artA:
Djibouti dZi:b'u:ti:
duisburg dy:sbUrg
Eric e:rIk
Erik e:rIk
florian $1
Fruecht fr'yCt
Georg ge:Ork $only
George dZO:rdZ
ines 'i:n@s
john dZ'On
gibraltar $2
Gina dZi:nA:
hannover han'o:f3
Herzegowina hErtse:g'Ovi:nA
Ines i:n@s
Italien i:t'A:lI@n
Johann jo:han
Johanna jo:h'anA:
Johannes jo:h'an@s
John dZOn
Jon dZOn
jonatan $1
jonathan jonatan $text
jonny dZOni:
Josef j'o:zEf
Katharina katar'i:nA:
Kasachstan $1
Kirgisien $2
Klango kl'aNgo:
Khmer kme:r
liam _^_EN
kosovo kOso:vo:
kristina $2
kroatien kro:'A:tsI@n
Leon le:On
Leonie $1
Liam _^_EN
Lüneburg ly:n@bUrg
Maria $2
Marian $1
Marlene marl'e:n@
mathias mat'i:A:s
Matthias mathias $text
Matias mathias $text
Mattias mathias $text
Mc %mEk
michael mICae:l
michaela mICa'e:lA:
Montenegro mOnt@n'e:gro:
Moradi $2
münchen mynC@n
naomi $2
Neumexiko $2
Neuseeland $2
nordrhein nOrd||raIn
portugal pOrtu:gal
Rumänien $2
Rwanda rU'andA:
san %zan
saarbrücken $2
schlesien Sle:zI@n
schleswig Sle:svIg#
Sebastian $2
slowenien $2
Sri %sri:
steve _^_EN
soest zo:st
sultan $1
Tom tOm $only
Tim tIm $only
Turkmenistan $2
ukraine UkrA'i:n@
vatikanstadt vA:ti:k'A:nStat
vera v'e:rA:
verena ve:r'e:nA:

westfalen $2

+ 41
- 12
dictsource/de_rules View File

@@ -53,6 +53,7 @@
au aU
auh (_ aU
auer aU3
mold) auisch aUIS

ab (t_ A:p
ag (t_ A:k
@@ -79,6 +80,7 @@
_) abzu (@P4 'aptsu:
_) ac (et ats
_) ad (ju at
afgh afg
_) an (@P2 'an
_) an (a %an
_) a (natioP1 'A:
@@ -96,6 +98,8 @@
_) an (nL03hP2 'an
_) anti (@P4 ,antI
_) an (tw an
apo (thek apo:
emp) athisch A:tIS
_) auf (@P3 _!'aUf
_) aus (@P3 _!'aUs
_) aus (ku aUs
@@ -153,7 +157,7 @@
a (rch_ 'A:
@) at (_ 'A:t
@) atisch (_S6 'A:tIS
@) atisieren (_S9 A:tIs'i:r@n
@) atisieren (_S9 A:ti:z'i:r@n
a (tion a
_) ato (m %ato:
_) au (Ceinand aU
@@ -185,6 +189,7 @@ r p) ay EI
_) beige (_ be:S
_) beige (@ baIg@
_) be (inhP2 b@
bet (_ b'e:t

_) ba (lA b%a
_) ba (ll@ b%a
@@ -215,6 +220,8 @@ r p) ay EI

_o) b (C p
baby _^_EN
bela (rus %bEl%a
bergisch bErgIS
beten be:t@n
bestimm %b@StIm
_) bike _^_EN
@@ -241,7 +248,7 @@ r p) ay EI
fa) c (et ts
_) cey tsaI
chef (_ SEf
_) c (ent ts
_) c (ent s
c (ie s
pla) c (ie ts
coat (_ _^_EN
@@ -355,6 +362,7 @@ r p) ay EI
.group e
_) e (_ e:
e e:
&) eau (_ 'o:
ee e:
eh (+ e:

@@ -370,7 +378,6 @@ r p) ay EI

eb (t_ e:p
eg (t_ e:k
enz (_ 'Ents
eth e:t

een (_ 'e:@n
@@ -418,7 +425,9 @@ r p) ay EI
&) eres (_S4 @r@s
er (d_ e:r
&) er (r_ E
w) er (k_ Er
er (g Er
erg (_ Erg
erk (_ Erk
&) erin (_ @rIn
&) erisch (_ @rIS
exp) er (t Er
@@ -461,7 +470,7 @@ r p) ay EI
_) elen e:lEn
mod) e (l@ E
s) e (lig e:
_) emp (@P3 _|%Emp
_) emp (@ %Emp
_) emph (@ %Emf
_) emp (ir %Emp
br) ems Ems // brems-t, not brem-st
@@ -676,7 +685,7 @@ r p) ay EI
@) ig (+ Ig# // [ig] or [iC]
igh (K _^_EN
ine (_ 'i:n@
inen (_ 'i:n@n
inen (_ i:n@n

i (i i:_!

@@ -711,6 +720,8 @@ r p) ay EI
@) is (_ Is
&) isch (_ =IS
is (mus_ 'Is
istan =IstA:n
istisch (_ 'IstIS
@) ist (_ 'Ist
@) it (_N 'It
@) ite (_ 'i:t@
@@ -809,6 +820,7 @@ formal) ie =I@
lady _^_EN
_) land (C@P4 l'ant
_) landes (@P6 l'and@s
&) ländisch l,EndIS
_) lang (C@P4 l'aN
_) lang (t@ l'aN
langsam l'aNzA:m
@@ -838,6 +850,7 @@ formal) ie =I@
&) lichstes (_S8 l2ICst@s
&) lichkeit (_S8 l2ICkaIt
&) lichung (_S7 l2IC%UN
load _^_EN
@) lo (gisch l'o:
dia) log lo:g
_) luft (CP4 l'Uft
@@ -973,6 +986,9 @@ formal) ie =I@
papier pap'i:r
_) para (@ p,ara
passagie pasaZ'i:
path (_ p'At
pathin (_ p'AtIn
pathisch (_ p'A:tIS
_) peri p,e:ri:
_) perio p,e:rIo:
_) periphe p,e:ri:fe:
@@ -1024,6 +1040,7 @@ formal) ie =I@
rangier rA:NZ'i:r
_) re (d re:
register re:g'Ist@r
reichisch raICIS
ressourc rEs'Urs
revers r%e:vErs

@@ -1046,7 +1063,6 @@ formal) ie =I@
_) sch (mA S
_) sch (nA S
_) sch (w S
schenk SENk
_) sh (A S
_) sh (rA S
_) s (kA s // allow _sk
@@ -1059,7 +1075,6 @@ schenk SENk
_) s (plA S
_) s (plend s
_) s (prA S
spräch SprE:C
_) s (quA s
_) s (tA S
_) s (trA S
@@ -1068,6 +1083,7 @@ schenk SENk
_) s (zA s

sch S
schenk SENk
sh (K S
sou (nd saU
p) s (a s
@@ -1100,7 +1116,7 @@ schenk SENk
st (art St
st (ä St
st (eh St
st (off St
stein (_ StaIn
st (ö St
st (rich St
st (ü St
@@ -1108,6 +1124,8 @@ schenk SENk
st (uh St
st (ung st

sachse zaks@
&) sächsisch zEksIS
_) safe _^_EN
&) schaft (_S6 Saft

@@ -1133,12 +1151,13 @@ schenk SENk
seku (nden ze:k'U
_) selbst (@@P6 z'Elpst
service (_S7 z%Ervi:s
share (ware SE:r
shop _^_EN
_) sky _^_EN
soft (ware sOft
soldat z%OldA:t
&) so (rt_ s_|O
summe zUm@
synaps zy:n'aps

speed _^_EN
stau) ss s
@@ -1157,6 +1176,7 @@ schenk SENk
_) t (_ te:
t t
t) t
th t
_) th (A t // allow _th
_) th (rA t // allow _thr
th (K t
@@ -1202,6 +1222,12 @@ schenk SENk
_) teen _^_EN
_) tele (@ t,e:le:
_) thermo tErmo:
&) thek t'e:k
&) thekar te:k'A:r
&) thekarin te:k'ArIn
&) thekerin t'e:k@rIn
top tOp
toph tOf
touch _^_EN
tuerei (_ tu:@r'aI
thrill _^_EN
@@ -1213,6 +1239,7 @@ schenk SENk
@) tion (_ tsj'o:n
_) trail _^_EN
_) tranqu _^_EN
translat _^_EN
traver tr%avEr
_) tw _^_EN

@@ -1303,7 +1330,6 @@ schenk SENk
väter fE:t3
_) v (ati_ f
_) v (ät f
vers (_ v'Erz
_) v (ie f
_) v (iet v
_) v (iz f
@@ -1375,7 +1401,7 @@ schenk SENk

@) wert (_ ve:rt
_) wh _^_EN
&) ware (_ _^_EN
&) ware (_ wE:r
_) wasch (@P5 v'aS
_) wasser (@P6 v'as@r
_) weit (C@P4 v'aIt
@@ -1390,6 +1416,7 @@ schenk SENk
_) wovor vo:f'o:r
_) wohl (@P4 v'o:l
work _^_EN
württem (berg vyrt@m


.group x
@@ -1420,6 +1447,7 @@ schenk SENk
_) zer (@P3 tsEr
_) zere (b tse:re:
_) zere (m tse:re:
kon) zert ts'Ert
ziell tsj'El
_) zie (ge@P3 ts'i:
zitat tsi:t'A:t
@@ -1464,6 +1492,7 @@ schenk SENk
ö (C% W
ö (CC W
ö (sch W
öster Y:st3r


.group ü

+ 193
- 0
dictsource/py_list View File

@@ -0,0 +1,193 @@

// This file is UTF8 encoded
// Spelling to phoneme words for Pyash (an artificial constructed language).

// Note: initial/final "." has already been removed


// How Number ASCII is pronounced
_0 zRon
_1 hjik
_2 tjut
_3 tjin
_4 ksas
_5 hfak
_6 hlis
_7 hsip
_8 hwap
_9 twun
_A htip
_B slen
_C tfat
_D tses
_E hses
_F hpet
_dpt fjih


// how letters are pronounced individually
_a a
b b@
c S@
d d@
_e e
f f@
g g@
h h@
_i i
j Z@
k k@
l l@
m m@
n n@
_o o
p p@
q N@
r R@
s s@
t t@
_u u
v v@
w w@
x x@
y j@
z z@



// stressed cmavo
//cai S'aI_!
//cu'i S'uhi_!
//pei p'eI_!
//ru'e R'uhe_!
//sai s'aI_!
//nai n'aI_!
//na n'a_!
//ja'a Z'aha_!


// unstressed words. Note single-syllable cmavo are all unstressed in jbo_rules
//e'o $u+ // request
//po'e $u+ // of
//zo'e $u+ // pronoun
//
//
//i i_: $u // sentence break (recognised by eSpeak program). Try a short pause after ".i"

// end-of-clause [_;_] before these
//noi _;_noI $u
//poi _;_poI $u
//no'u _;_nohu $u
//po'u _;_pohu $u
//goi _;_goI $u
//
//ija _;_iZa // should this series be unstressed?
//ijanai _;_iZan'aI
//ije _;_iZe
//ije'i _;_iZehi
//ijenai _;_iZenaI
//ijo _;_iZo
//ijonai _;_iZon'aI
//inaja _;_inaZa
//
//to _::to $u // start parenthesis, pause but don't raise intonation

// independent clause terminators (include a long pause after)
li li_:: $u
tu tu_:: $u
cu cu_:: $u
si si_:: $u
ri ri_:: $u
di di_:: $u
tcih tcih_:: $u
lo lo_:: $u
cyih cjih_:: $u
dwih dwih_:: $u
pcih pcih_:: $u
psih psih_:: $u
tseh tseh_:: $u
twuh twuh_:: $u
rwih rwih_:: $u
jwih jwih_:: $u
mwih mwih_:: $u
mu mu_:: $u
nwoh nwoh_:: $u
lu lu_:: $u
byih bjih_:: $u
kcuh kcuh_:: $u
dyah djah_:: $u
pceh pceh_:: $u
pruh pruh_:: $u
swuh swuh_:: $u
ru ru_:: $u
ksuh ksuh_:: $u
t6 t@_:: $u
zlih zlih_:: $u
n6 n@_:: $u
gyih gjih_:: $u
//pi7 pi55_:: $u
//si2 si22_:: $u


// case terminators (short pause after)
na na_: $u
ka ka_: $u
ta ta_: $u
wu wu_: $u
ti ti_: $u
ma ma_: $u
yi ji_: $u
yu ju_: $u
mwah mwah_: $u
pwah pwah_: $u
swih swih_: $u
da da_: $u
te te_: $u
ga ga_: $u
so so_: $u
pwih pwih_: $u
twah twah_: $u
twih twih_: $u
myah mjah_: $u
lwah lwah_: $u
lwih lwih_: $u
ksih ksih_: $u
tweh tweh_: $u
nweh nweh_: $u
lweh lweh_: $u
we we_: $u
twoh twoh_: $u
de de_: $u
nwah nwah_: $u
tloh tloh_: $u
nyeh njeh_: $u
sweh sweh_: $u
txih txih_: $u
gvih gvih_: $u
ryoh rjoh_: $u
psuh psuh_: $u
pxeh pxeh_: $u
pxoh pxoh_: $u
dxoh dxoh_: $u
greh greh_: $u
rweh rweh_: $u
xwih xwih_: $u
kxeh kxeh_: $u
lwoh lwoh_: $u
bvah bvah_: $u
dvah dvah_: $u
je je_: $u
gveh gveh_: $u
vwih vwih_: $u
bveh bveh_: $u
dzih dzih_: $u
//tsi7h tsi55h_: $u
vyah vjah_: $u
gvah gvah_: $u
zreh zreh_: $u
bu bu_: $u
//sa7 sa55_: $u
//si7 si55_: $u
//tsi2h tsi22h_: $u
//ta7 ta55_: $u


+ 107
- 0
dictsource/py_rules View File

@@ -0,0 +1,107 @@

// This file is UTF8 encoded
// Spelling to phoneme rules for Pyash (an artificial constructed language).

// Note: initial/final "." has already been removed

.group a
a a

.group b
b b

.group c
c S

.group d
d d

.group e
e e

.group f
f f

.group g
g g

.group h
h h

.group i
i i

.group j
j Z

.group k
k k

.group l
l l

.group m
m m

.group n
n n

.group o
o o

.group p
p p

.group q
q N

.group r
r R


.group s
s s

.group t
t t

.group u
u u

.group v
v v

.group w
w w

.group x
x x

.group y
y j

.group 6
6 @

.group h
h h

.group z
z z

// low tone
.group 2 22
// high tone
.group 7 55

.group
. _! // dot
_) . (@P1 _! // remove . prefix
. (_S1 _! // remove . suffix


ˈ ' // U+2c8 stress marker (from syllable capitalisation)
// tones not working
//.group
// 1 55
// 2 22

+ 182
- 200
dictsource/vi_rules View File

@@ -84,6 +84,7 @@ ỵ ỵ
.L03 ch nh
.L04 a u ă â o ô á à ả ã ạ ù ú ủ ũ ụ ắ ằ ẳ ẵ ặ ấ ầ ẩ ẫ ậ ó ò ỏ õ ọ ố ồ ổ ỗ ộ ư ứ ừ ử ữ ự ơ ớ ờ ở ỡ ợ
.L05 o ó ò ỏ õ ọ ô ố ồ ộ ỗ ổ
.group b
b b
_) b _b
@@ -267,7 +268,13 @@ ỵ ỵ
.group q
q k
q (_ k
qu kw //kw
qu kw //kw
quô ku@
quồ ku@2
quố ku@3
quổ ku@4
quỗ ku@5
quộ ku@6
@@ -357,47 +364,47 @@ ỵ ỵ
.group a
a a:
ai a:I
aì a:I2
aí a:I3
aỉ a:I4
aĩ a:I5
aị a:I6
ay aI
ai a:j
aì a:j2
aí a:j3
aỉ a:j4
aĩ a:j5
aị a:j6
ay aj
?2 ay a:I
aý aI3
aỷ aI4
aỹ aI5
aỵ aI6
ao a:U
aò a:U2
aó a:U3
aỏ a:U4
aõ a:U5
aọ a:U6
au aU
aý aj3
aỷ aj4
aỹ aj5
aỵ aj6
ao a:w
aò a:w2
aó a:w3
aỏ a:w4
aõ a:w5
aọ a:w6
au aw
?2 au a:U
aù aU2
aú aU3
aủ aU4
aũ aU5
aụ aU6
aù aw2
aú aw3
aủ aw4
aũ aw5
aụ aw6
a (L01 _^_EN
ai (L02 _^_EN
a (@ _^_EN
a (L03 a
a (L03 e-
.group à
à a:2
ài a:I2
ày aI2
ài a:j2
ày aj2
?2 ày a:I2
à (L03 e-2
@@ -405,47 +412,51 @@ ỵ ỵ
ào a:U2
àu aU2
ào a:w2
àu aw2
?2 àu a:U2
.group á
á a:3
ái a:I3
áy aI3
áo a:U3
áu aU3
ái a:j3
áy aj3
áo a:w3
áu aw3
?2 áu a:U3
?2 áy a:I3
á (L03 e-3
.group ả
ả a:4
ải a:I4
ảy aI4
ảo a:U4
ảu aU4
ải a:j4
ảy aj4
ảo a:w4
ảu aw4
?2 ảu a:U4
?2 ảy a:I4
ả (L03 e-4
.group ã
ã a:5
ãi a:I5
ãy aI5
ão a:U5
ãu aU5
ãi a:j5
ãy aj5
ão a:w5
ãu aw5
?2 ãu a:U5
?2 ãy a:I5
ã (L03 e-5
.group ạ
ạ a:6
ại a:I6
ạy aI6
ạo a:U6
ạu aU6
ại a:j6
ạy aj6
ạo a:w6
ạu aw6
?2 ạu a:U6
?2 ạy a:I6
ạ (L03 e-6
//================================
@@ -504,7 +515,7 @@ ỵ ỵ
.group â
â @
ây @I
âu @U1
âu @w1
?2 â (L03 a
?1 â (L03 a
@@ -515,7 +526,7 @@ ỵ ỵ
.group ầ
ầ @2
ầy @I2
ầu @U2
ầu @w2
?2 ầ (L03 a2
?1 ầ (L03 a2
@@ -526,7 +537,7 @@ ỵ ỵ
.group ấ
ấ @3
ấy @I3
ấu @U3
ấu @w3
?2 ấ (L03 a3
?1 ấ (L03 a3
@@ -537,7 +548,7 @@ ỵ ỵ
.group ẩ
ẩ @4
ẩy @I4
ẩu @U4
ẩu @w4
@@ -548,7 +559,7 @@ ỵ ỵ
.group ẫ
ẫ @5
ẫy @I5
ẫu @U5
ẫu @w5
@@ -559,7 +570,7 @@ ỵ ỵ
.group ậ
ậ @6
ậy @I6
ậu @U6
ậu @w6
?2 ậ (L03 a6
?1 ậ (L03 a6
@@ -567,12 +578,12 @@ ỵ ỵ
//===========================
.group e
e E
eo EU
eò EU2
eó EU3
eỏ EU4
eỗ EU5
eọ EU6
eo Ew
eò Ew2
eó Ew3
eỏ Ew4
eỗ Ew5
eọ Ew6
e (L01 _^_EN
ey (_ _^_EN
e (@ _^_EN
@@ -581,7 +592,7 @@ ỵ ỵ
.group è
è E2
èo EU2
èo Ew2
@@ -591,7 +602,7 @@ ỵ ỵ
.group é
é E3
éo EU3
éo Ew3
@@ -601,7 +612,7 @@ ỵ ỵ
.group ẻ
ẻ E4
ẻo EU4
ẻo Ew4
@@ -611,7 +622,7 @@ ỵ ỵ
.group ẽ
ẽ E5
ẽo EU5
ẽo Ew5
@@ -621,7 +632,7 @@ ỵ ỵ
.group ẹ
ẹ E6
ẹo EU6
ẹo Ew6
@@ -632,7 +643,7 @@ ỵ ỵ
.group ê
ê e
êu eU1
êu ew1
?2 ê (L03 @:
?2 ê (L02 @:
@@ -640,7 +651,7 @@ ỵ ỵ
.group ề
ề e2
ều eU2
ều ew2
?2 ề (L03 @:2
?2 ề (L02 @:2
@@ -648,7 +659,7 @@ ỵ ỵ
.group ế
ế e3
ếu eU3
ếu ew3
?2 ế (L03 @:3
@@ -656,7 +667,7 @@ ỵ ỵ
.group ể
ể e4
ểu eU4
ểu ew4
?2 ể (L03 @:4
?2 ể (L02 @:4
@@ -664,7 +675,7 @@ ỵ ỵ
.group ễ
ễ e5
ễu eU5
ễu ew5
?2 ễ (L03 @:5
?2 ễ (L02 @:5
@@ -672,7 +683,7 @@ ỵ ỵ
.group ệ
ệ e6
ệu eU6
ệu ew6
?2 ệ (L03 @:6
?2 ệ (L02 @:6
@@ -683,7 +694,7 @@ ỵ ỵ
.group i
i i
//i (A j
A) i j
ia i@
ià i@2
iá i@3
@@ -696,18 +707,18 @@ ỵ ỵ
iể iE4
iễ iE5
iệ iE6
iu iU
iù iU2
iú iU3
iủ iU4
iũ iU5
iụ iU6
iêu iU
iều iU2
iếu iU3
iểu iU4
iễu iU5
iệu iU6
iu iw
iù iw2
iú iw3
iủ iw4
iũ iw5
iụ iw6
iêu iEw
iều iEw2
iếu iEw3
iểu iEw4
iễu iEw5
iệu iEw6
i (L01 _^_EN
i (@ _^_EN
?2 i (L03 @
@@ -718,7 +729,7 @@ ỵ ỵ
ì i2
ì (A j2
ìa i@2
ìu iU2
ìu iw2
?2 ì (L03 @2
?1 ì (L03 @2
?2 ì (L02 @2
@@ -727,7 +738,7 @@ ỵ ỵ
í i3
í (A j3
ía i@3
íu iU3
íu iw3
?2 í (L03 @3
?1 í (L03 @3
?2 í (L02 @3
@@ -736,7 +747,7 @@ ỵ ỵ
ỉ i4
ỉ (A j4
ỉa i@4
ỉu iU4
ỉu iw4
?2 ỉ (L03 @4
?1 ỉ (L03 @4
?2 ỉ (L02 @4
@@ -747,7 +758,7 @@ ỵ ỵ
ĩ i5
ĩ (A j5
ĩa i@5
ĩu iU5
ĩu iw5
?2 ĩ (L03 @5
?1 ĩ (L03 @5
?2 ĩ (L02 @5
@@ -758,7 +769,7 @@ ỵ ỵ
ị i6
ị (A j6
ịa i@6
ịu iU6
ịu iw6
?2 ị (L03 @6
?1 ị (L03 @6
?2 ị (L02 @6
@@ -770,42 +781,18 @@ ỵ ỵ
.group o
o O
oa o@ // modify oa sound example: hoa,khoa // o (A w
oà o@2
oá o@3
oả o@4
oã o@5
oạ o@6
o (A w
oi Oj
oo O
oi OI
oì OI2
oí OI3
oỉ OI4
oĩ OI5
oị OI6
ong O#
oe o& // Adding oe sound example: lóe sáng,toét mắt
oai Oi // oai sound
o (@ _^_EN
oại Oi6
oài Oi2
oái Oi3
oải Oi4
oãi Oi5
oă o@1
oằ o@2
oắ o@3
oẳ o@4
oẵ o@5
oặ o@6
oc O#k
ong O#N
oc O#k
.group ò
ò O2
òi OI2
òa o@2 //ò (A w2
òng O#2
òe o&2
òa wa:2 //ò (A w2
òng O#N2
òe wE2
@@ -815,10 +802,9 @@ ỵ ỵ
.group ó
ó O3
ói OI3
óa o@3 //ó (A w3
óng O#3
óe o&3
óa wa:3 //ó (A w3
óng O#N3
óe wE3
óc O#3k
@@ -828,10 +814,9 @@ ỵ ỵ
.group ỏ
ỏ O4
ỏi OI4
ỏa o@4 //ỏ (A w4
ỏng O#4
ỏe o&4
ỏa wa:4 //ỏ (A w4
ỏng O#N4
ỏe wE4
@@ -841,10 +826,9 @@ ỵ ỵ
.group õ
õ O5
õi OI5
õa o@5 //õ (A w5
õng O#5
õe o&5
õa wa:5 //õ (A w5
õng O#N5
õe wE5
@@ -854,10 +838,9 @@ ỵ ỵ
.group ọ
ọ O6
ọi OI6
ọa o@6 //ọ (A w6
ọng O#6
ọe o&6
ọa oa:6 //ọ (A w6
ọng O#N6
ọe wE6
ọc O#6k
@@ -870,16 +853,16 @@ ỵ ỵ
.group ô
ô o
ôi oI
ông o# // ông sound
ôi oj
ông o#N // ông sound
?2 ôi O- //south dialect
ôc o#k
.group ồ
ồ o2
ồi oI2
ồng o#2
ồi oj2
ồng o#N2
?2 ồi O-2
@@ -888,18 +871,18 @@ ỵ ỵ
.group ố
ố o3
ối oI3
ống o#3
ối oj3
ống o#N3
?2 ối O-3
ốc o#3k
.group ổ
ổ o4
ổi oI4
ổng o#4
ổi oj4
ổng o#N4
?2 ổi O-4
@@ -908,8 +891,8 @@ ỵ ỵ
.group ỗ
ỗ o5
ỗi oI5
ỗng o#5
ỗi oj5
ỗng o#N5
?2 ỗi O-5
@@ -918,10 +901,10 @@ ỵ ỵ
.group ộ
ộ o6
ội oI6
// ộng o#6
ội oj6
ộng o#N6
?2 ội O-6
ộc o#6k
@@ -931,7 +914,7 @@ ỵ ỵ
.group ơ
ơ @:
ơi @:I
ơi @:j
ơu @:U
?2 ơi @- //south dialect
@@ -941,7 +924,7 @@ ỵ ỵ
.group ờ
ờ @:2
ời @:I2
ời @:j2
ờu @:U2
?2 ời @-2
@@ -951,7 +934,7 @@ ỵ ỵ
.group ớ
ớ @:3
ới @:I3
ới @:j3
ớu @:U3
?2 ới @-3
@@ -961,7 +944,7 @@ ỵ ỵ
.group ở
ở @:4
ởi @:I4
ởi @:j4
ởu @:U4
?2 ởi @-4
@@ -971,7 +954,7 @@ ỵ ỵ
.group ỡ
ỡ @:5
ỡi @:I5
ỡi @:j5
ỡu @:U5
?2 ỡi @-5
@@ -981,7 +964,7 @@ ỵ ỵ
.group ợ
ợ @:6
ợi @:I6
ợi @:j6
ợu @:U6
?2 ợi @-6
@@ -994,14 +977,15 @@ ỵ ỵ
.group u
u u
u (A u
u (A w
A) u w
ui uI
uì uI2
uí uI3
uỉ uI4
uĩ uI5
uị uI6
gi) u u
ui uj
uì uj2
uí uj3
uỉ uj4
uĩ uj5
uị uj6
ua u@
uà u@2
uá u@3
@@ -1024,15 +1008,19 @@ ỵ ỵ
u (L01 _^_EN
u (@ _^_EN
// ua (L01 _^_EN
?2 u u-
?2 u u-
uyu wiw
uỳu wiw2
uýu wiw3
uỷu wiw4
uỹu wiw5
uỵu wiw6
.group ù
ù u2
ù (A u2
ùy ui2
ùi uI2
ù (A w2
ùy wi2
ùi uj2
ùa u@2
//ùng u#2
@@ -1043,9 +1031,9 @@ ỵ ỵ
.group ú
ú u3
ú (A u3
úy ui3
úi uI3
ú (A w3
úy wi3
úi uj3
úa u@3
//úng u#3
?2 ú u-3
@@ -1056,9 +1044,9 @@ ỵ ỵ
.group ủ
ủ u4
ủ (A u4
ủy ui4
ủi uI4
ủ (A w4
ủy wi4
ủi uj4
ủa u@4
//ủng u#4
@@ -1069,9 +1057,9 @@ ỵ ỵ
.group ũ
ũ u5
ũ (A u5
ũy ui5
ũi uI5
ũ (A w5
ũy wi5
ũi uj5
ũa u@5
//ũng u#5
?2 ũ u-5
@@ -1082,9 +1070,9 @@ ỵ ỵ
.group ụ
ụ u6
ụ (A u6
ụy ui6
ụi uI6
ụ (A w6
ụy wi6
ụi uj6
ụa u@6
//ụng u#6
?2 ụ u-6
@@ -1096,7 +1084,6 @@ ỵ ỵ
.group ư
ư y
ưi yI
ưa y@
ươ y@
ườ y@2
@@ -1104,7 +1091,7 @@ ỵ ỵ
ưở y@4
ưỡ y@5
ượ y@6
ưu yw
ưu iw
ươi y@j
ười y@j2
ưới y@j3
@@ -1126,9 +1113,8 @@ ỵ ỵ
.group ừ
ừ y2
ừi yI2
ừa y@2
ừu y2w2
ừu iw2
@@ -1138,9 +1124,8 @@ ỵ ỵ
.group ứ
ứ y3
ứi yI3
ứa y@3
ứu y3w3
ứu iw3
@@ -1150,9 +1135,8 @@ ỵ ỵ
.group ử
ử y4
ửi yI4
ửa y@4
ửu y4w4
ửu iw4
@@ -1162,9 +1146,8 @@ ỵ ỵ
.group ữ
ữ y5
ữi yI5
ữa y@5
ữu y5w5
ữu iw5
@@ -1174,9 +1157,8 @@ ỵ ỵ
.group ự
ự y6
ựi yI6
ựa y@6
ựu y6w6
ựu iw6
@@ -1194,12 +1176,12 @@ ỵ ỵ
yả i@4
yã i@5
yạ i@6
yê i@
yề i@2
yế i@3
yể i@4
yễ i@5
yệ i@6
yê iE
yề iE2
yế iE3
yể iE4
yễ iE5
yệ iE6
// yêu i@U
y (L01 _^_EN
bu) y _^_EN

+ 17
- 12
docs/languages.md View File

@@ -8,7 +8,7 @@ and dialects,
[private-use extensions](https://raw.githubusercontent.com/espeak-ng/bcp47-data/master/bcp47-extensions)
have been used.

The 102 supported languages and accents are:
The 107 supported languages and accents are:

| Family Code | Identifier | Language Family | Language | Accent/Dialect |
|-------------|-------------------|-----------------------|-----------------------------|------------------------|
@@ -35,21 +35,21 @@ The 102 supported languages and accents are:
| `zlw` | `cs` | West Slavic | Czech | |
| `gmq` | `da` | North Germanic | Danish | |
| `gmw` | `nl` | West Germanic | Dutch | |
| `gmw` | `en-US` | West Germanic | English | American |
| `gmw` | `en-us` | West Germanic | English | American |
| `gmw` | `en` | West Germanic | English | British |
| `gmw` | `en-029` | West Germanic | English | Caribbean |
| `gmw` | `en-GB-x-gbclan` | West Germanic | English | Lancastrian |
| `gmw` | `en-GB-x-rp` | West Germanic | English | Received Pronunciation |
| `gmw` | `en-GB-scotland` | West Germanic | English | Scottish |
| `gmw` | `en-GB-x-gbcwmd` | West Germanic | English | West Midlands |
| `gmw` | `en-gb-x-gbclan` | West Germanic | English | Lancastrian |
| `gmw` | `en-gb-x-rp` | West Germanic | English | Received Pronunciation |
| `gmw` | `en-gb-scotland` | West Germanic | English | Scottish |
| `gmw` | `en-gb-x-gbcwmd` | West Germanic | English | West Midlands |
| `art` | `eo` | Constructed | Esperanto | |
| `urj` | `et` | Uralic | Estonian | |
| `ira` | `fa` | Iranian | Persian | |
| `ira` | `fa-Latn` | Iranian | Persian<sup>\[2\]</sup> | |
| `ira` | `fa-latn` | Iranian | Persian<sup>\[2\]</sup> | |
| `urj` | `fi` | Uralic | Finnish | |
| `roa` | `fr-BE` | Romance | French | Belgium |
| `roa` | `fr-be` | Romance | French | Belgium |
| `roa` | `fr` | Romance | French | France |
| `roa` | `fr-CH` | Romance | French | Switzerland |
| `roa` | `fr-ch` | Romance | French | Switzerland |
| `cel` | `ga` | Celtic | Gaelic | Irish |
| `cel` | `gd` | Celtic | Gaelic | Scottish |
| `ccs` | `ka` | South Caucasian | Georgian | |
@@ -71,6 +71,7 @@ The 102 supported languages and accents are:
| `inc` | `kok` | Indic | Konkani | |
| | `ko` | | Korean | |
| `ira` | `ku` | Iranian | Kurdish | |
| `trk` | `kk` | Turkic | Kazakh | |
| `trk` | `ky` | Turkic | Kyrgyz | |
| `itc` | `la` | Italic | Latin | |
| `bat` | `lv` | Baltic | Latvian | |
@@ -89,15 +90,19 @@ The 102 supported languages and accents are:
| `inc` | `or` | Indic | Oriya | |
| `cus` | `om` | Cushitic | Oromo | |
| `roa` | `pap` | Romance | Papiamento | |
| `art` | `py` | Constructed | Pyash | |
| `zlw` | `pl` | West Slavic | Polish | |
| `roa` | `pt-BR` | Romance | Portuguese | Brazillian |
| `roa` | `pt-br` | Romance | Portuguese | Brazillian |
| `myn` | `quc` | Mayan | K'iche' | |
| `roa` | `pt` | Romance | Portuguese | Portugal |
| `inc` | `pa` | Indic | Punjabi | |
| `roa` | `ro` | Romance | Romanian | |
| `zle` | `ru` | East Slavic | Russian | |
| `zle` | `ru-lv` | East Slavic | Russian | Latvia |
| `zls` | `sr` | South Slavic | Serbian | |
| `bnt` | `tn` | Bantu | Setswana | |
| `inc` | `sd` | Indic | Sindhi | |
| `tai` | `shn` | Tai | Shan (Tai Yai) | |
| `inc` | `si` | Indic | Sinhala | |
| `zlw` | `sk` | West Slavic | Slovak | |
| `zls` | `sl` | South Slavic | Slovenian | |
@@ -110,9 +115,9 @@ The 102 supported languages and accents are:
| `dra` | `te` | Dravidian | Telugu | |
| `trk` | `tr` | Turkic | Turkish | |
| `inc` | `ur` | Indic | Urdu | |
| `aav` | `vi-VN-x-central` | Austroasiatic | Vietnamese | Central Vietnam |
| `aav` | `vi-vn-x-central` | Austroasiatic | Vietnamese | Central Vietnam |
| `aav` | `vi` | Austroasiatic | Vietnamese | Northern Vietnam |
| `aav` | `vi-VN-x-south` | Austroasiatic | Vietnamese | Southern Vietnam |
| `aav` | `vi-vn-x-south` | Austroasiatic | Vietnamese | Southern Vietnam |
| `cel` | `cy` | Celtic | Welsh | |

\[1\] Currently, only fully diacritized Arabic is supported.

+ 40
- 30
docs/mbrola.md View File

@@ -4,7 +4,7 @@
- [Windows Installation](#windows-installation)
- [Linux Installation](#linux-installation)
- [Installation of standard packages](#installation-of-standard-packages)
- [Installation of latest MBROLA packages](#installation-of-latest-mbrola-packages)
- [Installation of MBROLA package from source](#installation-of-mbrola-package-from-source)
- [Usage](#usage)
- [Adding new MBROLA voice entry to eSpeak NG](#adding-new-mbrola-voice-entry-to-espeak-ng)
- [1. Add MBROLA voice definition file](#1-add-mbrola-voice-definition-file)
@@ -13,14 +13,13 @@

----------

The MBROLA project is a collection of diphone voices for speech
synthesis. They do not include any text-to-phoneme translation, so this
must be done by another program. The MBROLA voices are cost-free but are
not open source. Voice files are available at
[http://www.tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html](http://www.tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html).
The [MBROLA](https://github.com/numediart/MBROLA) is an open source speech engine
with collection of diphone voices for speech synthesis. Voices are cost-free for
non-commerical purposes, but are not open source.

eSpeak NG can be used as a front-end to MBROLA. It provides the
spelling-to-phoneme translation and intonation, which MBROLA then uses
MBROLA does not include any text-to-phoneme translation, so this
must be done by another program. eSpeak NG can be used as a front-end to MBROLA,
to provide spelling-to-phoneme translation and intonation, which MBROLA then uses
to generate speech sound.

## Voice Names
@@ -37,17 +36,13 @@ where `xxN` is the name of a MBROLA voice (e.g. `mb-en1` for the MBROLA
`.../espeak-ng-data/voices/mb` (where `...` is usually `/usr/share`,
but could be somewhere else).

The installation instructions below use the MBROLA voice `en1` as an
example. You can use other mbrola voices for which there is an
equivalent eSpeak NG voice in `espeak-ng-data/voices/mb`.

There are some additional eSpeak NG MBROLA voices, which speak English text
using a MBROLA voice for a different language. These contain the name of
the MBROLA voice with a suffix `-en`. For example, the voice
`mb-de4-en` will speak English text with a German accent by using the
MBROLA `de4` voice.

The following MBROLA voices are available. Not all are supported by eSpeak NG.
The following MBROLA voices are available in eSpeak NG.

| MBROLA Voice | Language | Gender | eSpeak | Debian Package |
|--------------|----------------------|--------|----------|----------------|
@@ -127,8 +122,11 @@ The following MBROLA voices are available. Not all are supported by eSpeak NG.
| `us3` | American English | male | `mb-us3` | `mbrola-us3` |
| `vz1` | Venezuelan Spanish | male | `mb-vz1` | `mbrola-vz1` |

* If some MBROLA voice is not available as Debian package, you can download data files
from [here](https://github.com/mbrola/mbrola-voices).
eSpeak NG will look for mbrola voices firstly in `espeak-ng-data/mbrola` and then in `/usr/share/mbrola`.

The installation instructions below use the MBROLA voice `en1` as an
example. You can use other mbrola voices for which there is an
equivalent eSpeak NG voice in `espeak-ng-data/voices/mb`.

## Windows Installation

@@ -140,11 +138,10 @@ The SAPI5 version of eSpeak NG uses the `mbrola.dll`.
2. Install the PC/Windows version of MBROLA (`MbrolaTools35.exe`) from:
[http://www.tcts.fpms.ac.be/synthesis/mbrola/bin/pcwin/MbrolaTools35.exe](http://www.tcts.fpms.ac.be/synthesis/mbrola/bin/pcwin/MbrolaTools35.exe).

3. Get the `en1` or other voice from:
[http://www.tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html](http://www.tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html).
3. Download the `en1` or other voice from:
[https://github.com/numediart/MBROLA-voices](https://github.com/numediart/MBROLA-voices)

4. Unpack the archive, and copy the `en1` data file (not the whole "en1" folder) into
`C:/Program Files/eSpeak/espeak-ng-data/mbrola`.
4. Save downloaded `en1` data file into `C:/Program Files/eSpeak/espeak-ng-data/mbrola`.

4. Use the voice `espeak-MB-EN1` from the list of SAPI5 voices.

@@ -166,24 +163,37 @@ You can check other available voices searching with command:

apt-cache search mbrola

### Installation of latest MBROLA packages
If some MBROLA voice is not available as Debian package, you can download data files
from [https://github.com/numediart/MBROLA-voices](https://github.com/numediart/MBROLA-voices)
and save them in `/usr/share/mbrola/xxN/xxN` file, where `xxN` is code and number of language file.

1. To install the latest MBROLA binary for Linux, download:
[http://www.tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip](http://www.tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip).
### Installation of MBROLA package from source

2. Unpack the archive, and copy and rename the file from: `mbrola-linux-i386` to `mbrola` somewhere in your executable path (eg. `/usr/bin/mbrola`).
1. Install necessary packages:
```
sudo apt-get install git make gcc
```

3. Get the `en1` or other voice from:
[http://www.tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html](http://www.tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html).
2. Clone MBROLA git repository:
```
git clone https://github.com/numediart/MBROLA.git
cd MBROLA
```

4. Unpack the archive, and copy the `en1` data file (not the whole "en1" folder) to `/usr/share/mbrola/en1` folder.
3. Compile MBROLA:
```
make
```

5. Remember to make `mbrola` file executable.
4. Install MBROLA:
```
sudo cp Bin/mbrola /usr/bin/mbrola
```

__Notes:__
5. Download the `en1` or other voice from
[https://github.com/numediart/MBROLA-voices](https://github.com/numediart/MBROLA-voices)

* eSpeak NG will look for mbrola voices firstly in `espeak-ng-data/mbrola` and then in `/usr/share/mbrola`.
* You can download latest development versions of MBROLA binaries from [https://github.com/mbrola/mbrola-bin/](https://github.com/mbrola/mbrola-bin/)
6. Copy the `en1` data file to `/usr/share/mbrola/en1` folder.

## Usage


+ 5
- 2
espeak-ng-data/lang/aav/vi View File

@@ -1,5 +1,8 @@
name Vietnamese (Northern)
language vi

words 1
pitch 100 180
words 1 2
pitch 95 175


tone 100 225 800 100 2000 50 5400 75 8000 200

+ 7
- 0
espeak-ng-data/lang/art/py View File

@@ -0,0 +1,7 @@
name Pyash
language py
maintainer Logan Streondj <[email protected]>
status testing

speed 80 // speed adjustment, percentage
stressRule 0

+ 1
- 0
espeak-ng-data/lang/gmw/de View File

@@ -1,2 +1,3 @@
name German
language de
tunes s4 c1 q4 e1

+ 1
- 1
espeak-ng-data/lang/ira/fa-Latn View File

@@ -1,6 +1,6 @@
name Persian (Pinglish)
// Sometimes, Farsi speakers write Farsi words using English characters, particularly in Chat and SMS (texte messages).), called Pinglish
language fa-Latn
language fa-latn
maintainer Shadyar Khodayari <[email protected]>
status mature
dictrules 1

+ 1
- 1
espeak-ng-data/lang/zle/ru-LV View File

@@ -1,5 +1,5 @@
name Russian (Latvia)
language ru-LV 2
language ru-lv 2

maintainer Valdis Vitolins <[email protected]>
status testing

+ 16
- 0
espeak-ng-data/voices/!v/Nguyen View File

@@ -0,0 +1,16 @@
language variant
name Nguyen

pitch 95 175

formant 0 100 125 100
formant 1 96 90 80
formant 2 97 70 90
formant 3 97 60 90
formant 4 97 60 90
formant 5 75 50 90
formant 6 90 50 100
formant 7 100 50 100
formant 8 100 50 100

tone 100 200 600 150 800 100 2400 80 3600 95 5400 100

+ 1
- 1
espeak-ng-data/voices/!v/m8 View File

@@ -8,7 +8,7 @@ formant 1 96 90 80
formant 2 97 70 90
formant 3 97 60 90
formant 4 97 60 90
formant 5 75 50 90
formant 5 100 50 90
formant 6 90 50 100
formant 7 100 50 100
formant 8 100 50 100

BIN
phsource/n/nm View File


+ 14
- 14
phsource/ph_german View File

@@ -1,4 +1,4 @@


//=========================================================
// German
@@ -9,7 +9,7 @@
phoneme @ // Schwa
vwl starttype #@ endtype #@
unstressed
length 120
length 40
IF nextPh(r) THEN
IF next2Ph(isVowel) THEN
ELSE
@@ -171,7 +171,7 @@ endphoneme
phoneme OY
vwl starttype #o endtype #i
length 220
FMT(vdiph/oi)
FMT(vwl_de/eu)
endphoneme


@@ -205,19 +205,19 @@ endphoneme

phoneme y
vwl starttype #u endtype #u
ipa ʏ
length 110
ipa ?
length 100
IF nextPh(*) THEN
length 115
length 110
ENDIF
FMT(vowel/yy_4)
FMT(vowel/u#_3)
endphoneme


phoneme Y:
vwl starttype #@ endtype #@
length 180
FMT(vowel/y#)
length 220
FMT(vwl_de/y#)
endphoneme


@@ -344,7 +344,7 @@ phoneme r // note, following consonant must be 'ustop/t_' not 'ustop/tr' etc.
ELSEIF prevPhW(d) OR prevPhW(b) OR prevPhW(g) OR prevPhW(k) OR prevPhW(p) THEN
PauseBefore 15
ELSE
InsertPhoneme(@-)
FMT(r3/r_, 40) addWav(r3/rx, 150)
ENDIF
ENDIF
ENDIF
@@ -361,7 +361,7 @@ endphoneme

phoneme iR // TEST "vier" = [f'iR] not successful
vwl starttype #i endtype #@
ipa iɐ
ipa i?
flag1
length 240
FMT(vdiph2/i@_3)
@@ -370,7 +370,7 @@ endphoneme

phoneme UR
vwl starttype #u endtype #@
ipa ʊɐ
ipa ??
flag1
length 180
FMT(vwl_de/uu_@)
@@ -461,12 +461,12 @@ phoneme k
WAV(ustop/k, 70)
ELIF nextPh(R) OR nextPh(R2) THEN
WAV(ustop/k_)
ELIF nextPh(i:) OR nextPh(;) THEN
ELIF nextPh(i:) OR nextPh(j) OR nextPh(;) THEN
WAV(ustop/ki)
ELIF nextPh(l) THEN
WAV(ustop/kl)
ELIF nextPh(@-) THEN
WAV(ustop/k_unasp)
WAV(ustop/k, 70)
ENDIF
WAV(ustop/k)
endphoneme

+ 9
- 0
phsource/ph_pyash View File

@@ -0,0 +1,9 @@
// Phonemes for Pyash (an artificial constructed language)
// Inherits phonemes from Esperanto

phoneme e
vwl starttype #e endtype #e
length 170
FMT(vowel/e_mid2)
endphoneme


+ 500
- 115
phsource/ph_vietnam View File

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

phoneme 1 // ngang tone: level
stress
Tone(30, 28, envelope/p_level, NULL) // 28 29
Tone(27, 25, envelope/p_level, NULL) // 28 29
endphoneme


@@ -18,7 +18,7 @@ endphoneme

phoneme 3 // sắc Tone(rising
stress
Tone(30, 55, envelope/p_rise, NULL) // 30 60
Tone(20, 50, envelope/p_rise, NULL) // 30 60
endphoneme


@@ -54,86 +54,188 @@ endphoneme

phoneme a
vwl starttype #@ endtype #@
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
length 180
ENDIF
IF nextPh(N) OR nextPh(c) THEN
FMT(vnasal/a_n)
ELSE
//FMT(vietnam/a) //a_4)
FMT(vietnam/a_x)
ENDIF
IF nextPhW(p) THEN
length 78
ELIF nextPhW(t[) THEN
length 84
ELIF nextPhW(c) THEN
length 82
ELIF nextPhW(m) THEN
length 90
ELIF nextPhW(n) THEN
length 100
ELIF nextPhW(N) THEN
length 90
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 140
ELSE
length 100
ENDIF
FMT(vietnam/a_2) //a_4)
endphoneme

phoneme a:
vwl starttype #a endtype #a
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd)THEN
IF nextPhW(p) THEN
length 142
ELIF nextPhW(t[) THEN
length 126
ELIF nextPhW(c) THEN
length 136
ELIF nextPhW(m) THEN
length 155
ELIF nextPhW(n) THEN
length 185
ELIF nextPhW(N) THEN
length 200
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF nextPh(n^) OR nextPh(c) THEN
length 100
ELIF nextPh(N) THEN
length 200
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 333
ELSE
length 180 //200
length 180
ENDIF
// FMT(vowel/a_8)
FMT(vietnam/a_2)
//FMT(vowel/a_8)
FMT(vietnam/aa)
endphoneme


phoneme E
vwl starttype #e endtype #e
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
IF nextPhW(p) THEN
length 143
ELIF nextPhW(t[) THEN
length 107
ELIF nextPhW(c) THEN
length 141
ELIF nextPhW(m) THEN
length 128
ELIF nextPhW(n) THEN
length 160
ELIF nextPhW(N) THEN
length 187
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 352
ELSE
length 180
ENDIF
FMT(vowel/e_e) //ee_3)
ENDIF
//FMT(vowel/e_e) //ee_3)
FMT(vietnam/e_e_2)
endphoneme

phoneme e
vwl starttype #e endtype #e
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
IF nextPhW(p) THEN
length 114
ELIF nextPhW(t[) THEN
length 126
ELIF nextPhW(c) THEN
length 140
ELIF nextPhW(n^) THEN
length 120
ELIF nextPhW(m) THEN
length 148
ELIF nextPhW(n) THEN
length 163
ELIF nextPhW(N) THEN
length 115
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 324
ELSE
length 180
ENDIF
// FMT(vowel/e)
FMT(vietnam/e)
ENDIF
IF nextPh(n^) THEN
FMT(vowel/e)
ELSE
FMT(vietnam/e, 150)
ENDIF
endphoneme


phoneme e-
vwl starttype #e endtype #a
length 140
FMT(vietnam/e_short_1)
//FMT(vdiph/aai_3)
endphoneme

phoneme i
vwl starttype #i endtype #i
IfNextVowelAppend(;)
IF prevPhW(w) THEN
VowelStart(w/wi)
ENDIF
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
IF nextPhW(p) THEN
length 131
ELIF nextPhW(t[) THEN
length 113
ELIF nextPhW(c) OR nextPhW(n^) THEN
length 72
ELIF nextPhW(m) THEN
length 120
ELIF nextPhW(n) THEN
length 128
ELIF nextPhW(N) THEN
length 97
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 310
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 363
ELSE
length 180
ENDIF
IF nextPh(n^) OR nextPh(c) THEN
length 100
FMT(vnasal/ii_n)
//FMT(vnasal/ii_n)
FMT(vietnam/i)
ELSE
length 180
FMT(vowel/i_4)
//FMT(vowel/i_4)
FMT(vietnam/i_2, 100)
ENDIF
endphoneme


phoneme O
vwl starttype #o endtype #o
IF nextPh(kh) OR nextPh(N) THEN
IF nextPhW(p) THEN
length 129
ELIF nextPhW(t[) THEN
length 125
ELIF nextPhW(c) THEN
length 80
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
ELIF nextPhW(m) THEN
length 133
ELIF nextPhW(n) THEN
length 158
ELIF nextPhW(N) THEN
length 102
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 331
ELSE
length 180
ENDIF
FMT(vdiph2/o_oo) //vowel/oo)
ENDIF
//FMT(vdiph2/o_oo) //vowel/oo)
FMT(vietnam/oo)
endphoneme

phoneme O+
@@ -150,65 +252,142 @@ endphoneme

phoneme o
vwl starttype #o endtype #o
IF nextPh(kh) OR nextPh(N) THEN
length 110
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
IF nextPhW(p) THEN
length 140
ELIF nextPhW(t[) THEN
length 113
ELIF nextPhW(c) THEN
length 88
ELIF nextPhW(m) THEN
length 134
ELIF nextPhW(n) THEN
length 168
ELIF nextPhW(N) THEN
length 99
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 310
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 363
ELSE
length 180
ENDIF
FMT(vowel/o) // o_2)
ENDIF
//FMT(vowel/o) // o_2)
FMT(vietnam/o_2)
endphoneme


phoneme u
vwl starttype #u endtype #u
IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound
length 120
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
IF nextPhW(p) THEN
length 110
ELIF nextPhW(t[) THEN
length 94
ELIF nextPhW(c) THEN
length 83
ELIF nextPhW(m) THEN
length 141
ELIF nextPhW(n) THEN
length 177
ELIF nextPhW(N) THEN
length 80
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELSE
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 333
ELSE
length 180
ENDIF
FMT(vnasal/u_n,60) //vowel/u_5)
ENDIF
//FMT(vnasal/u_n) //vowel/u_5)
FMT(vietnam/u)
endphoneme

phoneme y
vwl starttype #u endtype #u
IF nextPh(kh) OR nextPh(N) THEN
length 120
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
IF nextPhW(p) THEN
length 102
ELIF nextPhW(t[) THEN
length 76
ELIF nextPhW(c) THEN
length 90
ELIF nextPhW(m) THEN
length 143
ELIF nextPhW(n) THEN
length 136
ELIF nextPhW(N) THEN
length 101
ELIF nextPhW(w) OR nextPhW(j) THEN
length 110
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 328
ELSE
length 180
ENDIF
FMT(vowel/u#_5)
ENDIF
//FMT(vowel/u#_5)
FMT(vietnam/y_2, 60)
endphoneme



phoneme @
vwl starttype #@ endtype #a
IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN
length 120
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
IF nextPhW(p) THEN
length 123
ELIF nextPhW(t[) THEN
length 123
ELIF nextPhW(c) THEN
length 139
ELIF nextPhW(m) THEN
length 127
ELIF nextPhW(n) THEN
length 160
ELIF nextPhW(N) THEN
length 156
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELSE
length 180
ENDIF
ENDIF
// FMT(vowel/V) //vowel/@_2)
FMT(vietnam/V)
FMT(vietnam/V_2)
endphoneme


phoneme @:
vwl starttype #@ endtype #@
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
IF nextPhW(p) THEN
length 123
ELIF nextPhW(t[) THEN
length 123
ELIF nextPhW(c) THEN
length 139
ELIF nextPhW(m) THEN
length 127
ELIF nextPhW(n) THEN
length 160
ELIF nextPhW(N) THEN
length 156
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 333
ELSE
length 180
ENDIF
FMT(vowel/@_2)
ENDIF
//FMT(vowel/@_2)
FMT(vietnam/@_2)
endphoneme


@@ -386,34 +565,73 @@ endphoneme

phoneme y@
vwl starttype #i endtype #@
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
IF nextPhW(p) THEN
length 123
ELIF nextPhW(t[) THEN
length 123
ELIF nextPhW(c) THEN
length 139
ELIF nextPhW(m) THEN
length 127
ELIF nextPhW(n) THEN
length 180
ELIF nextPhW(N) THEN
length 156
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELSE
length 200
ENDIF
FMT(vdiph2/y-y#)
ENDIF
//FMT(vdiph2/y-y#)
FMT(vietnam/y@)
endphoneme

phoneme u@
vwl starttype #u endtype #@
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
IF nextPhW(p) THEN
length 123
ELIF nextPhW(t[) THEN
length 123
ELIF nextPhW(c) THEN
length 139
ELIF nextPhW(m) THEN
length 127
ELIF nextPhW(n) THEN
length 160
ELIF nextPhW(N) THEN
length 156
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 333
ELSE
length 240
ELSE
length 200
ENDIF
FMT(vdiph2/uu@)
ENDIF
//FMT(vdiph2/uu@)-
FMT(vietnam/u@)
endphoneme

// Addition Dipthongs

phoneme o# // ông
vwl starttype #o endtype #o
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
IF nextPhW(k) THEN
length 120
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 360
ELIF nextPhW(N) THEN
length 99
ELIF nextPhW(k) THEN
length 88
ELSE
length 200
ENDIF
FMT(vnasal/a#u_n)
//FMT(vnasal/a#u_n)
FMT(vietnam/o#)
endphoneme

phoneme O# // ong
@@ -422,10 +640,13 @@ phoneme O# // ong
length 240
ELIF nextPh(k) THEN
length 140
ELIF nextPh(N) THEN
length 102
ELSE
length 200
ENDIF
FMT(vnasal/&u_n)
//FMT(vnasal/&u_n)
FMT(vietnam/O_short_2)
endphoneme


@@ -451,12 +672,32 @@ endphoneme

phoneme iE // iê : viết, giệc
vwl starttype #i endtype #e
IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 240
ELSE
length 200
ENDIF
FMT(vietnam/ie_2)
IF nextPhW(p) THEN
length 114
ELIF nextPhW(t[) THEN
length 126
ELIF nextPhW(c) THEN
length 140
ELIF nextPhW(n^) THEN
length 120
ELIF nextPhW(m) THEN
length 148
ELIF nextPhW(n) THEN
length 163
ELIF nextPhW(N) THEN
length 115
ELIF nextPhW(w) THEN
length 100
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 300
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 324
ELSE
length 180
ENDIF
FMT(vietnam/ie)
endphoneme

phoneme Oi // oai sound
@@ -510,21 +751,36 @@ phoneme kh
endphoneme

phoneme k
vls vel frc
vls vel stp
lengthmod 3
IF nextPhW(#u) THEN
Vowelin f1=1 f2=600 -200 -400 f3=-200 80 amp=200 len=30 rms=200
WAV(vietnam/c_2, 255)
ELSE
Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30
WAV(vietnam/c)
ENDIF
Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20
WAV(ustop/c)
//WAV(ustop/c)
endphoneme

phoneme N // si**ng**
vcd lbv nas
IF prevPhW(u@) THEN
// do nothing
ELSE
Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
ENDIF
lengthmod 12 // longer than 'n'
IF prevPhW(isVowel) AND prev2PhW(isVowel) THEN
length 160
IF thisPh(isWordEnd) THEN
length 163
ENDIF
IF thisPh(isWordEnd) THEN
FMT(n/nm, 50)
ELSE
FMT(nn/_nn)
ENDIF
FMT(n/nm)
endphoneme

phoneme l
@@ -563,17 +819,18 @@ phoneme d_
vcd alv stp
// lengthmod 5
ipa ɗ
length 50
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=15
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30
WAV(vietnam/dd)
length 70
Vowelin f1=1 f2=1500 -300 300 f3=-100 80 len=15
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30
WAV(vietnam/dda_2, 200)
endphoneme
phoneme c
vls pal stp pzd
//voicingswitch J
lengthmod 2
length 2
length 50
Vowelin f1=0 f2=2700 400 600 f3=300 80 len=15 brk
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=15 colr=1

@@ -585,24 +842,152 @@ endphoneme
phoneme p
vls blb stp
lengthmod 2
length 15
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22

WAV(ustop/p_unasp_,10)
IF thisPh(isWordEnd) THEN
WAV(ustop/p_unasp_, 10)
ELSE
WAV(ustop/p)
ENDIF
endphoneme

phoneme t[ // dental variant of /t/
vls dnt stp
voicingswitch d[
lengthmod 2
length 5
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=15
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=15
IF thisPh(isWordEnd) THEN
vls alv stp
voicingswitch d
lengthmod 2
length 15
IF prevPhW(#@) THEN
Vowelout f1=0 f2=1200 -50 50 f3=50 80 rms=20 len=15
ELIF prevPhW(y@) THEN
Vowelout f1=2 f2=1200 -100 150 f3=150 80 rms=20 len=15
ELIF prevPhW(#i) THEN
Vowelout f1=0 f2=2000 -300 250 f3=-50 80 rms=20 len=15
ELIF prevPhW(E) THEN
Vowelout f1=0 f2=1900 -200 200 f3=-100 80 rms=20 len=15
ELIF prevPhW(e) OR prevPhW(iE) THEN
Vowelout f1=2 f2=1800 -400 250 f3=-200 80 rms=20 len=15
ELIF prevPhW(u) THEN
Vowelout f1=2 f2=1000 -1000 250 f3=-400 80 rms=20 len=15
ELIF prevPhW(y) THEN
Vowelout f1=1 f2=1500 -300 250 f3=-400 80 rms=20 len=15
ELIF prevPhW(#a) THEN
Vowelout f1=2 f2=1500 -300 250 f3=-500 80 rms=20 len=15
ELIF prevPhW(o) THEN
Vowelout f1=2 f2=1000 -100 250 f3=-200 80 rms=20 len=15
ELIF prevPhW(O) THEN
Vowelout f1=1 f2=1000 -300 200 f3=-100 80 rms=20 len=15
ELSE
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=15
ENDIF
WAV(ustop/t_, 25)
ELSE
vls dnt stp
voicingswitch d[
lengthmod 2
IF nextPhW(#u) THEN
length 30
ELSE
length 15
ENDIF
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=35
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=15

IF nextPh(isPause2) THEN
WAV(ustop/t_unasp2, 5)
IF nextPh(isPause2) THEN
WAV(ustop/t_unasp2, 5)
ENDIF
WAV(ustop/t_hi, 70)
ENDIF
WAV(ustop/t_hi, 70)
endphoneme

phoneme w
liquid
starttype #u
IF nextPh(isVowel) THEN
length 20
NextVowelStarts
VowelStart(w/w@)
VowelStart(w/wa)
VowelStart(w/we)
VowelStart(w/wi)
VowelStart(w/wo)
VowelStart(w/wu)
EndSwitch

VowelEnding(w/xw, -30)
IF nextPh(isVowel) AND prevPhW(t[) THEN
FMT(vnasal/u_n, 60) addWav(vietnam/w, 50)
ELIF prevPhW(isNasal) THEN
FMT(w/w)
ELSEIF prevPhW(h) THEN
// none, [hw]
ELSE
//FMT(w/_w) addWav(vietnam/w)
FMT(vietnam/_w)
ENDIF
ELSE
// no vowel follows
length 80
Vowelout len=20 rms=20
//FMT(w/w_)
FMT(vietnam/w_, 150)
ENDIF
endphoneme

phoneme n^ // (a)nh
vcd pal nas pzd
ipa ɲ
Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate
lengthmod 4

IF KlattSynth THEN
VowelStart(klatt/n^@)
FMT(klatt/n^)
ENDIF

NextVowelStarts
VowelStart(n^/n^@)
VowelStart(n^/n^a)
VowelStart(n^/n^e)
VowelStart(n^/n^i)
VowelStart(n^/n^o)
VowelStart(n^/n^u)
EndSwitch

IF thisPh(isWordEnd) THEN
IF nextPhW(n^) THEN
length 75
ELIF prevPhW(n^) THEN
length 100
ENDIF
FMT(vietnam/n^_)
ELSE
FMT(n^/_n^)
ENDIF
endphoneme

phoneme h
vls glt frc
lengthmod 3
ipa h
IF nextPh(#@) THEN
WAV(h/h@)
ELIF nextPh(#a) THEN
WAV(h/ha)
ELIF nextPh(#e) THEN
WAV(h/he)
ELIF nextPh(#i) THEN
WAV(vietnam/hi)
ELIF nextPh(#o) THEN
WAV(h/ho)
ELIF nextPh(#u) THEN
WAV(vietnam/hu, 25)
ENDIF
WAV(h/h_, 70) // no vowel following
endphoneme

+ 3
- 0
phsource/phonemes View File

@@ -1722,6 +1722,9 @@ include ph_interlingua
phonemetable jbo eo
include ph_lojban

phonemetable py eo
include ph_pyash

phonemetable nci base2
include ph_nahuatl


BIN
phsource/vietnam/@_2 View File


BIN
phsource/vietnam/O_short View File


BIN
phsource/vietnam/O_short_2 View File


BIN
phsource/vietnam/V_2 View File


BIN
phsource/vietnam/_w View File


BIN
phsource/vietnam/a_2 View File


BIN
phsource/vietnam/aa View File


BIN
phsource/vietnam/c.wav View File


BIN
phsource/vietnam/c_2.wav View File


BIN
phsource/vietnam/dd_2.wav View File


BIN
phsource/vietnam/dda.wav View File


BIN
phsource/vietnam/dda_2.wav View File


BIN
phsource/vietnam/e View File


BIN
phsource/vietnam/e_2 View File


BIN
phsource/vietnam/e_e View File


BIN
phsource/vietnam/e_e_2 View File


BIN
phsource/vietnam/e_short_1 View File


BIN
phsource/vietnam/e_short_2 View File


BIN
phsource/vietnam/hi.wav View File


BIN
phsource/vietnam/hu.wav View File


BIN
phsource/vietnam/i View File


BIN
phsource/vietnam/i_2 View File


BIN
phsource/vietnam/ie View File


BIN
phsource/vietnam/n^_ View File


BIN
phsource/vietnam/o# View File


BIN
phsource/vietnam/o_2 View File


BIN
phsource/vietnam/oo View File


BIN
phsource/vietnam/u View File


BIN
phsource/vietnam/u@ View File


BIN
phsource/vietnam/w.wav View File


BIN
phsource/vietnam/w_ View File


BIN
phsource/vietnam/y View File


BIN
phsource/vietnam/y@ View File


BIN
phsource/vietnam/y_2 View File


BIN
phsource/vwl_de/ue_short View File


BIN
phsource/vwl_de/y# View File


+ 12
- 2
src/espeak-ng.c View File

@@ -28,6 +28,7 @@
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>

#include <espeak-ng/espeak_ng.h>
@@ -113,6 +114,7 @@ static const char *help_text =
"--voices=<language>\n"
"\t List the available voices for the specified language.\n"
"\t If <language> is omitted, then list all voices.\n"
"--load Load voice from a file in current directory by name.\n"
"-h, --help Show this help.\n";

int samplerate;
@@ -321,6 +323,7 @@ int main(int argc, char **argv)
{ "compile-mbrola", optional_argument, 0, 0x10e },
{ "compile-intonations", no_argument, 0, 0x10f },
{ "compile-phonemes", optional_argument, 0, 0x110 },
{ "load", no_argument, 0, 0x111 },
{ 0, 0, 0, 0 }
};

@@ -336,6 +339,7 @@ int main(int argc, char **argv)
int value;
int flag_stdin = 0;
int flag_compile = 0;
int flag_load = 0;
int filesize = 0;
int synth_flags = espeakCHARS_AUTO | espeakPHONEMES | espeakENDPAUSE;

@@ -349,7 +353,7 @@ int main(int argc, char **argv)
int phoneme_options = 0;
int option_linelength = 0;
int option_waveout = 0;
espeak_VOICE voice_select;
char filename[200];
char voicename[40];
@@ -562,6 +566,9 @@ int main(int argc, char **argv)
}
return EXIT_SUCCESS;
}
case 0x111: // --load
flag_load = 1;
break;
default:
exit(0);
}
@@ -605,7 +612,10 @@ int main(int argc, char **argv)
if (voicename[0] == 0)
strcpy(voicename, ESPEAKNG_DEFAULT_VOICE);

result = espeak_ng_SetVoiceByName(voicename);
if(flag_load)
result = espeak_ng_SetVoiceByFile(voicename);
else
result = espeak_ng_SetVoiceByName(voicename);
if (result != ENS_OK) {
memset(&voice_select, 0, sizeof(voice_select));
voice_select.languages = voicename;

+ 3
- 0
src/include/espeak-ng/espeak_ng.h View File

@@ -119,6 +119,9 @@ espeak_ng_SetPunctuationList(const wchar_t *punctlist);
ESPEAK_NG_API espeak_ng_STATUS
espeak_ng_SetVoiceByName(const char *name);

ESPEAK_NG_API espeak_ng_STATUS
espeak_ng_SetVoiceByFile(const char *filename);

ESPEAK_NG_API espeak_ng_STATUS
espeak_ng_SetVoiceByProperties(espeak_VOICE *voice_selector);


+ 13
- 0
src/include/espeak-ng/speak_lib.h View File

@@ -606,6 +606,19 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec);
are listed, and they are listed in preference order.
*/

#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_SetVoiceByFile(const char *filename);
/* Loads a voice given the file path. Language is not considered.
"filename" is a UTF8 string.

Return: EE_OK: operation achieved
EE_BUFFER_FULL: the command can not be buffered;
you may try after a while to call the function again.
EE_INTERNAL_ERROR.
*/

#ifdef __cplusplus
extern "C"
#endif

+ 5
- 0
src/libespeak-ng/espeak_api.c View File

@@ -128,6 +128,11 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name)
return status_to_espeak_error(espeak_ng_SetVoiceByName(name));
}

ESPEAK_API espeak_ERROR espeak_SetVoiceByFile(const char *filename)
{
return status_to_espeak_error(espeak_ng_SetVoiceByFile(filename));
}

ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector)
{
return status_to_espeak_error(espeak_ng_SetVoiceByProperties(voice_selector));

+ 39
- 0
src/libespeak-ng/voices.c View File

@@ -1466,6 +1466,45 @@ static void GetVoices(const char *path, int len_path_voices, int is_language_fil

#pragma GCC visibility push(default)


ESPEAK_NG_API espeak_ng_STATUS espeak_ng_SetVoiceByFile(const char *filename)
{
espeak_VOICE *v;
int ix;
espeak_VOICE voice_selector;
char *variant_name;
static char buf[60];

strncpy0(buf, filename, sizeof(buf));

variant_name = ExtractVoiceVariantName(buf, 0, 1);

for (ix = 0;; ix++) {
// convert voice name to lower case (ascii)
if ((buf[ix] = tolower(buf[ix])) == 0)
break;
}

memset(&voice_selector, 0, sizeof(voice_selector));
voice_selector.name = (char *)filename; // include variant name in voice stack ??

// first check for a voice with this filename
// This may avoid the need to call espeak_ListVoices().

if (LoadVoice(buf, 0x10) != NULL) {
if (variant_name[0] != 0)
LoadVoice(variant_name, 2);

DoVoiceChange(voice);
voice_selector.languages = voice->language_name;
SetVoiceStack(&voice_selector, variant_name);
return ENS_OK;
}

return ENS_VOICE_NOT_FOUND;
}


ESPEAK_NG_API espeak_ng_STATUS espeak_ng_SetVoiceByName(const char *name)
{
espeak_VOICE *v;

BIN
src/windows/Debug/[email protected] View File


BIN
src/windows/Debug/output_e.wav View File


BIN
src/windows/Debug/output_i.wav View File


+ 1
- 1
tests/language-phonemes.test View File

@@ -48,7 +48,7 @@ test_lang cmn e7831fc783f79f1505e90d81d193dc591cb6f54e "na Na la ja pa pha fa ta
test_lang cs 73d5bdeebdab81c629d34f76c87930bb6a188c50 "ma na n^a pa ta ca ka ba da Ja ga tsa tSa dza dZa fa sa Sa xa va za Za ha r-a Ra R^a R^/a la ja _:_ mi mi: me me: ma ma: mo mo: mu mu: maU meU moU"
test_lang cy 5c5c7ab1c1b531dcacbbe072d5ee9cef3467d945 "ma na Na pa ta ka ba da ga tSa dZa fa Ta sa Sa xa ha ca Da za ra Ca la l/2a ja wa _:_ ma mE mI mY mO mU mV mi: my: mu: me: mo: mA: mAY maI maY maU m@I m@Y meU mIu mYu mOI mOY muI muY"
test_lang da c55842af4f63fd67e6e48b97903b77223b6a4d77 "ma na Na pa ta ka ba da ga fa sa ha S;a tS;a va Da ja ra Ra _:_ m@ m@- m3 m3- mi m?i mI me m?e mE m?E m& m?& m&# m?&# mA m?A mu m?u mo m?o mO m?O mV m?V m0 m?0 my m?y mY mW m?W mW# m?W# maI"
test_lang de ec91c396bf20b12b96bb18b4d631188dcf2a480e "ma na Na pa ta ka ?a ba da ga pFa tsa tSa dZa sa Sa za Za fa Ta Ca xa ha ca Da ja la ra g#a l/a l2a _:_ m@ m3 ma mE mE2 mI mO mU mA mi2 my mW mI: mA: mi: mu: mE: me: mo: my: mY: maU maI mEI mOY moU mA~ miR mUR"
test_lang de f250cd80d6ddb782efcd3df9541b8b588e58e3d8 "ma na Na pa ta ka ?a ba da ga pFa tsa tSa dZa sa Sa za Za fa Ta Ca xa ha ca Da ja la ra g#a l/a l2a _:_ m@ m3 ma mE mE2 mI mO mU mA mi2 my mW mI: mA: mi: mu: mE: me: mo: my: mY: maU maI mEI mOY moU mA~ miR mUR"
test_lang el b01fb02420612ea59c43bf6aff4175063bd93bcb "ma na pa ta ka ba da ga fa Ta sa xa va Da za Qa ra la _:_ ma me mi mo mu"
test_lang en c4ed41c6ef4a43bae30f3469fe886c7b456dd02d "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@"
test_lang en-029 cfd13bc57be7f495935c662472eae3d2c7200ebd "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@"

+ 2
- 2
tests/language-pronunciation.test View File

@@ -38,7 +38,7 @@ test_phonemes ca "Latn" "d'ona# a#m'o* k'E s@**,as f'Elis\na#jS;'O\nill'us k'omp
test_phonemes cs "Latn" "n'exc j'iS hR^'i:Sne: s'aksof,oni J'a:blu: R'ozezv,utSi: s'i:n^ 'u:Jesn,i:mi t'o:ni v'aldzu\nt'aNga_! a kv'itskstepu\npR^'i:liZ Zl'ucoUtSki: k'u:n^ 'u:pjel J'a:belske: 'o:di" "Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu. Příliš žluťoučký kůň úpěl ďábelské ódy."
test_phonemes cy "Latn" "p'arkjaIs vY dZ'ak k'o:dI b'aU h'y:d l#'aUn d'u:r g'Er t'y: m'A:bOn" "Parciais fy jac codi baw hud llawn dŵr ger tŷ Mabon."
test_phonemes da "Latn" "kv'isd?elt,?&jVn@-_! sp'?isd@-_! j'?orb?E3- m?ED fl'WD@-_!\nm'?Ens s'?i3-k?uskl,?0wn@-n w'Olth?V_! sp'?el@-D@-_! p?O s,?yl?of'?on\n'?ER?W,?Ol" "Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon. Ærøål."
test_phonemes de "Latn" "v'Ikto:r j'A:kt tsv'Wlf b'OkskEmpf3 kv'e:r_:_: _|,y:b3 de:n gr'o:s@n z'ylt3 d'aIC\nh'aItsWl@-r,yksto:s,abdEmpf,UN" "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich. Heizölrückstoßabdämpfung."
test_phonemes de "Latn" "v'Ikto:r j'A:kt tsv'Wlf b'OkskEmpf3 kv'e:r_:_: _|,y:b3 de:n gr'o:s@n z'ylt3 d'aIC\nh'aItsWlr,yksto:s,abdEmpf,UN" "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich. Heizölrückstoßabdämpfung."
test_phonemes el "Grek" "ks,escep'azo t'im bz,ixofT'ora vD,eliQm'i;a" "Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία."
test_phonemes en "Latn" "D@ kw'Ik br'aUn f'0ks dZ'Vmps ,oUv3 D@ l'eIzi d'0g" "The quick brown fox jumps over the lazy dog"
test_phonemes eo "Latn" ",eble tS'i;u kv'azaUd'etsa f,uSxoR'aZo dZoI'igos homt'ipon\n,exoS'andZo tS,i;uZ'aUde\np@-*'eskaU f@-*'eSa tS'exa mandZ'aZo" "Eble ĉiu kvazaŭ-deca fuŝĥoraĵo ĝojigos homtipon. Eĥoŝanĝo ĉiuĵaŭde, preskaŭ freŝa ĉeĥa manĝaĵo."
@@ -111,7 +111,7 @@ test_phonemes tn "Latn" "B'aTU B'oKl B'a ts'i:tswl B'a g,olUl,os-'igill_:_: ll g
test_phonemes tr "Latn" "piZ'amaL@ hast'a j'a:@z SofW*'E tSabudZ'ak Jyv&nd'I\nSISlid'E byj'Yk tS'Wp j@:@nLa*'@" "Pijamalı hasta yağız şoföre çabucak güvendi. Şişli’de büyük çöp yığınları."
test_phonemes tt "Cyrl" "b0rL'Vq keSel'&r d'& 0z'0t h'&m 'yz 0brujLAr'V h'&m xoquqLAr'V jAGVnn'An t'iN bup'Vp tuAp'Ar\n0L0rG'A 0q'VL h'&m wWZ;d'An birelQ'&n h'&m b'&rb&rsen'& q0r0t'A tuGAnnArS;'A mWnAs&b&tt'& buLVrG'A tieSl'&r" "Барлык кешеләр дә азат һәм үз абруйлары һәм хокуклары ягыннан тиң бупып туапар. Аларга акыл һәм вөҗдан бирелгән һәм бәр-бәрсенә карата туганнарча мөнасәбәттә булырга тиешләр."
test_phonemes ur "Arab" "t.#'Vnd. m'e~\n'e:k q'VH@t z'Vda ga:'o:n se: g'Vz@Rte: v'aqt 'e:k c'[email protected]:\nb'a:s@R 'o: f'a:RIQ S'axs. k'o: b'a:z J'Vl p'VRi n'Uma: 'aZ@dHe: naz.'aR 'a:e:" "ٹھنڈ میں، ایک قحط زدہ گاؤں سے گذرتے وقت ایک چڑچڑے، باأثر و فارغ شخص کو بعض جل پری نما اژدہے نظر آئے۔"
test_phonemes vi "Latn" "t['@3t[_| k'a:4_| m,OI6_| N'y@2j_| s'i1n^_| z'a:1_| d_'eU2_| d_,y@6c_| t['y6_| z'O1_| v,a:2_| _b'i2n^_| d_'a4N_| v'e2_| n^'@1n_| f'@4m_| v,a:2_| kw'i@2n_| l'@:I6_|\nm,OI6_| k,O1n_| N'y@2j_| d_'eU2_| d_,y@6c_| t['a:U6_| h'o@3_| _b'a:1n_| tS,O1_| l'i3_| tS'i3_| v,a:2_| l'y@1N_| t['@1m_| v,a:2_| k'@2n_| f,a:I4_| d_'oI3_| s'y4_| v,@:I3_| n^'aU1_| tS'O#1_| t['i2n^_| 'a1n^_| 'E7m_|" "Tất cả mọi người sinh ra đều được tự do và bình đẳng về nhân phẩm và quyền lợi. Mọi con người đều được tạo hóa ban cho lý trí và lương tâm và cần phải đối xử với nhau trong tình anh em."
test_phonemes vi "Latn" "t['@3t[_| k'a:4_| m,O6j_| N'y@2j_| s'i1n^_| z'a:1_| d_'e2w_| d_,y@6c_| t['y6_| z'O1_| v,a:2_| _b'i2n^_| d_'a4N_| v'e2_| n^'@1n_| f'@4m_| v,a:2_| kw'iE2n_| l'@:6j_|\nm,O6j_| k,O1n_| N'y@2j_| d_'e2w_| d_,y@6c_| t['a:6w_| hw'a:3_| _b'a:1n_| tS,O1_| l'i3_| tS'i3_| v,a:2_| l'y@1N_| t['@1m_| v,a:2_| k'@2n_| f,a:4j_| d_'o3j_| s'y4_| v,@:3j_| n^'a1w_| tS'O#1N_| t['i2n^_| 'e-1n^_| 'E7m_|" "Tất cả mọi người sinh ra đều được tự do và bình đẳng về nhân phẩm và quyền lợi. Mọi con người đều được tạo hóa ban cho lý trí và lương tâm và cần phải đối xử với nhau trong tình anh em."

##### Fallback to other languages in different scripts (language switch).


Loading…
Cancel
Save