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

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

+ 5
- 0
Makefile.am View File

phsource/ph_portugal \ phsource/ph_portugal \
phsource/ph_pt_brazil \ phsource/ph_pt_brazil \
phsource/ph_punjabi \ phsource/ph_punjabi \
phsource/ph_pyash \
phsource/ph_romanian \ phsource/ph_romanian \
phsource/ph_russian \ phsource/ph_russian \
phsource/ph_russian_lv \ phsource/ph_russian_lv \
espeak-ng-data/pap_dict \ espeak-ng-data/pap_dict \
espeak-ng-data/pl_dict \ espeak-ng-data/pl_dict \
espeak-ng-data/pt_dict \ espeak-ng-data/pt_dict \
espeak-ng-data/py_dict \
espeak-ng-data/quc_dict \ espeak-ng-data/quc_dict \
espeak-ng-data/ro_dict \ espeak-ng-data/ro_dict \
espeak-ng-data/ru_dict \ espeak-ng-data/ru_dict \
pt: espeak-ng-data/pt_dict pt: espeak-ng-data/pt_dict
espeak-ng-data/pt_dict: dictsource/pt_list dictsource/pt_rules dictsource/pt_extra dictsource/pt_emoji 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 quc: espeak-ng-data/quc_dict
espeak-ng-data/quc_dict: dictsource/quc_list dictsource/quc_rules dictsource/quc_extra dictsource/quc_emoji espeak-ng-data/quc_dict: dictsource/quc_list dictsource/quc_rules dictsource/quc_extra dictsource/quc_emoji



+ 13
- 14
README.md View File

---------- ----------


The eSpeak NG (Next Generation) Text-to-Speech program is an open source speech 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 based on the eSpeak engine created by Jonathan Duddington. It supports spectral
and Klatt formant synthesis, and the ability to use MBROLA voices. and Klatt formant synthesis, and the ability to use MBROLA voices.


| ronn | `sudo apt-get install ruby-ronn` | | ronn | `sudo apt-get install ruby-ronn` |
| kramdown | `sudo apt-get install ruby-kramdown` | | 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 ### Building


The first time you build eSpeak NG, or when you want to change how to build The first time you build eSpeak NG, or when you want to change how to build
2. the [Android NDK](http://developer.android.com/tools/sdk/ndk/index.html); 2. the [Android NDK](http://developer.android.com/tools/sdk/ndk/index.html);
3. Gradle 3.2.1 or later. 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 ### Building with Gradle


1. Set the location of the Android SDK: 1. Set the location of the Android SDK:


$ export ANDROID_HOME=<path-to-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`) (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: 2. Add location of NDK to the PATH variable:


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

3. Configure the project: 3. Configure the project:


$ ./autogen.sh $ ./autogen.sh
ndk-build (Android): yes ndk-build (Android): yes
... ...
`<path-to-gradle>` may be just `gradle` if it is found in your path by simple name. `<path-to-gradle>` may be just `gradle` if it is found in your path by simple name.

4. Build the project: 4. Build the project:


$ make apk-release $ make apk-release


## Documentation ## 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 ## eSpeak Compatibility



+ 127
- 28
dictsource/de_list View File

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


// de_rules includes the words ending in "-ing" // de_rules includes the words ending in "-ing"
access _^_EN access _^_EN
account _^_EN account _^_EN
aid _^_EN // aids
aid _^_EN
aids _^_EN
america _^_EN
appeal _^_EN appeal _^_EN
apple _^_EN apple _^_EN
association _^_EN association _^_EN
baseball _^_EN baseball _^_EN
bbc _^_EN bbc _^_EN
beat _^_EN beat _^_EN
britain _^_EN
british _^_EN
browser _^_EN browser _^_EN
byte _^_EN byte _^_EN
bytes _^_EN bytes _^_EN
cool _^_EN cool _^_EN
copy _^_EN copy _^_EN
couch _^_EN couch _^_EN
cover _^_EN
cursor _^_EN cursor _^_EN
daisy _^_EN daisy _^_EN
date _^_EN date _^_EN
debugger _^_EN debugger _^_EN
desktop d'EsktOp
dj d'i:dZEI dj d'i:dZEI
download _^_EN
downloads _^_EN
email _^_EN email _^_EN
empire _^_EN
enterprise _^_EN enterprise _^_EN
escape _^_EN escape _^_EN
espeak _^_EN espeak _^_EN
firefox _^_EN firefox _^_EN
firewall _^_EN firewall _^_EN
foul _^_EN foul _^_EN
foyer _^_EN
frame _^_EN frame _^_EN
freak _^_EN freak _^_EN
german _^_EN german _^_EN
germany _^_EN
gin _^_EN gin _^_EN
google _^_EN google _^_EN
great _^_EN
groupie _^_EN groupie _^_EN
hip _^_EN hip _^_EN
homepage _^_EN homepage _^_EN
joke _^_EN joke _^_EN
joystick _^_EN joystick _^_EN
junkie _^_EN junkie _^_EN
kingdom _^_EN
laptop _^_EN laptop _^_EN
laser _^_EN laser _^_EN
level _^_EN level _^_EN
mail _^_EN mail _^_EN
mailbox _^_EN mailbox _^_EN
message _^_EN message _^_EN
moodle _^_EN
move _^_EN move _^_EN
my _^_EN my _^_EN
mysql _^_EN mysql _^_EN
notepad _^_EN notepad _^_EN
nugget _^_EN nugget _^_EN
nvda _^_EN nvda _^_EN
nvaccess _^_EN
of _^_EN
office _^_EN
offices _^_EN
offline _^_EN offline _^_EN
online _^_EN online _^_EN
out _^_EN out _^_EN
player _^_EN player _^_EN
plot _^_EN plot _^_EN
poster _^_EN poster _^_EN
quiz _^_EN
reader _^_EN
receiver _^_EN receiver _^_EN
recovery _^_EN
registry _^_EN registry _^_EN
release _^_EN release _^_EN
remake _^_EN remake _^_EN
research _^_EN research _^_EN
return _^_EN
roadie _^_EN roadie _^_EN
roastbeef _^_EN roastbeef _^_EN
quiz _^_EN
reader _^_EN
run _^_EN run _^_EN
running _^_EN running _^_EN
save _^_EN save _^_EN
small _^_EN small _^_EN
smiley _^_EN smiley _^_EN
snob _^_EN snob _^_EN
solution _^_EN
song _^_EN song _^_EN
sorry _^_EN sorry _^_EN
source _^_EN source _^_EN
space _^_EN
spaces _^_EN
spam _^_EN spam _^_EN
speak _^_EN speak _^_EN
spirit _^_EN spirit _^_EN
squaw _^_EN squaw _^_EN
state _^_EN
states _^_EN
stream _^_EN stream _^_EN
suite _^_EN suite _^_EN
sweatshirt _^_EN sweatshirt _^_EN
teaser _^_EN teaser _^_EN
tech _^_EN tech _^_EN
terminal _^_EN terminal _^_EN
the _^_EN
their _^_EN
they _^_EN
this _^_EN
thunderbird _^_EN thunderbird _^_EN
time _^_EN time _^_EN
timer _^_EN timer _^_EN
tool _^_EN tool _^_EN
trip _^_EN trip _^_EN
tuner _^_EN tuner _^_EN
turn _^_EN
united _^_EN
unix _^_EN unix _^_EN
update _^_EN update _^_EN
updates _^_EN updates _^_EN
venture _^_EN venture _^_EN
verify _^_EN verify _^_EN
very _^_EN
voice _^_EN voice _^_EN
voices _^_EN voices _^_EN
weather _^_EN weather _^_EN
website _^_EN website _^_EN
window _^_EN window _^_EN
wipe _^_EN wipe _^_EN
with _^_EN
word _^_EN word _^_EN




alarm $2 alarm $2
allein $2 allein $2
allgemein 'alg@maIn allgemein 'alg@maIn
amerika $2
andre andr@ // andere andre andr@ // andere
aneinander an1aIn'and3 aneinander an1aIn'and3
anomalie $2 anomalie $2
aventurin avEntu:r'i:n aventurin avEntu:r'i:n
ave A:vE ave A:vE


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


changier SaNZ'i:r changier SaNZ'i:r
cembalo tS'Embalo: cembalo tS'Embalo:
centre center $text
champagner Samp'anj3 champagner Samp'anj3
champignon S'ampInjON champignon S'ampInjON
ciao tSaU ciao tSaU
dritte drIt@ dritte drIt@
dschungel dZ'UN@l dschungel dZ'UN@l
duett du:'Et duett du:'Et
düst dy:st


ebendaher e:b@ndah'e:r ebendaher e:b@ndah'e:r
ebendahin e:b@ndah'In ebendahin e:b@ndah'In
extrem Ekstr'e:m extrem Ekstr'e:m


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


gegenüber ge:g@n_|'y:b3 gegenüber ge:g@n_|'y:b3
geglichen g@glIC@n geglichen g@glIC@n
gemein g@maIn gemein g@maIn
gen ge:n
gene ge:n@
genial ge:nj'A:l genial ge:nj'A:l
geranie ge:r'A:nI@ geranie ge:r'A:nI@
gessen gEs@n gessen gEs@n
gestern gEst3n gestern gEst3n
gitarre $2 gitarre $2
glorie $alt glorie $alt
grafem grA:f'e:m
graphem grA:f'e:m
grazie $alt grazie $alt


handy hEndi: handy hEndi:
jahrhundert $2 jahrhundert $2
januar janu:A:r januar janu:A:r


kalender kal'End3
Kamel kam'e:l Kamel kam'e:l
kamelie $alt kamelie $alt
kanäl $2 kanäl $2
kastanie $alt kastanie $alt
kid kId kid kId
klops kl'Ops klops kl'Ops
kognak kOnjak
kombinationsfeld $4 kombinationsfeld $4
komödie $alt komödie $alt
kompass $1 kompass $1
numero $1 numero $1


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


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


sabbat zabat sabbat zabat
sagt zA:gt sagt zA:gt
salopp $2 salopp $2
sarkasmus $2
schieberegler S'i:b@re:gl3 schieberegler S'i:b@re:gl3
schokolad $3 schokolad $3
schreibung Sr'aIbUN schreibung Sr'aIbUN
subjekt $1 subjekt $1


tag tA:g tag tA:g
teint t'W~
telegen te:le:g'e:n telegen te:le:g'e:n
terrain tEr'W~ terrain tEr'W~
the D@ // English
theater te:'A:t3 theater te:'A:t3
tja tjA: tja tjA:
tonnage $alt tonnage $alt
tsunami tsu:n'A:mi: tsunami tsu:n'A:mi:
turin tu:r'i:n turin tu:r'i:n


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






// Names // 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 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: Djakarta dZak'artA:
Djibouti dZi:b'u:ti: Djibouti dZi:b'u:ti:
duisburg dy:sbUrg
Eric e:rIk
Erik e:rIk
florian $1
Fruecht fr'yCt Fruecht fr'yCt
Georg ge:Ork $only Georg ge:Ork $only
George dZO:rdZ 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 Josef j'o:zEf
Katharina katar'i:nA:
Kasachstan $1
Kirgisien $2
Klango kl'aNgo: Klango kl'aNgo:
Khmer kme:r 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 Mc %mEk
michael mICae:l
michaela mICa'e:lA:
Montenegro mOnt@n'e:gro:
Moradi $2 Moradi $2
münchen mynC@n
naomi $2
Neumexiko $2 Neumexiko $2
Neuseeland $2 Neuseeland $2
nordrhein nOrd||raIn
portugal pOrtu:gal
Rumänien $2
Rwanda rU'andA: Rwanda rU'andA:
san %zan
saarbrücken $2
schlesien Sle:zI@n
schleswig Sle:svIg#
Sebastian $2
slowenien $2
Sri %sri: Sri %sri:
steve _^_EN steve _^_EN
soest zo:st
sultan $1
Tom tOm $only Tom tOm $only
Tim tIm $only Tim tIm $only
Turkmenistan $2
ukraine UkrA'i:n@
vatikanstadt vA:ti:k'A:nStat
vera v'e:rA: vera v'e:rA:
verena ve:r'e:nA: verena ve:r'e:nA:

westfalen $2

+ 41
- 12
dictsource/de_rules View File

au aU au aU
auh (_ aU auh (_ aU
auer aU3 auer aU3
mold) auisch aUIS


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


_) ba (lA b%a _) ba (lA b%a
_) ba (ll@ b%a _) ba (ll@ b%a


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




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


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


i (i i:_! i (i i:_!


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


_) sch (mA S _) sch (mA S
_) sch (nA S _) sch (nA S
_) sch (w S _) sch (w S
schenk SENk
_) sh (A S _) sh (A S
_) sh (rA S _) sh (rA S
_) s (kA s // allow _sk _) s (kA s // allow _sk
_) s (plA S _) s (plA S
_) s (plend s _) s (plend s
_) s (prA S _) s (prA S
spräch SprE:C
_) s (quA s _) s (quA s
_) s (tA S _) s (tA S
_) s (trA S _) s (trA S
_) s (zA s _) s (zA s


sch S sch S
schenk SENk
sh (K S sh (K S
sou (nd saU sou (nd saU
p) s (a s p) s (a s
st (art St st (art St
st (ä St st (ä St
st (eh St st (eh St
st (off St
stein (_ StaIn
st (ö St st (ö St
st (rich St st (rich St
st (ü St st (ü St
st (uh St st (uh St
st (ung st st (ung st


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


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


speed _^_EN speed _^_EN
stau) ss s stau) ss s
_) t (_ te: _) t (_ te:
t t t t
t) t t) t
th t
_) th (A t // allow _th _) th (A t // allow _th
_) th (rA t // allow _thr _) th (rA t // allow _thr
th (K t th (K t
_) teen _^_EN _) teen _^_EN
_) tele (@ t,e:le: _) tele (@ t,e:le:
_) thermo tErmo: _) 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 touch _^_EN
tuerei (_ tu:@r'aI tuerei (_ tu:@r'aI
thrill _^_EN thrill _^_EN
@) tion (_ tsj'o:n @) tion (_ tsj'o:n
_) trail _^_EN _) trail _^_EN
_) tranqu _^_EN _) tranqu _^_EN
translat _^_EN
traver tr%avEr traver tr%avEr
_) tw _^_EN _) tw _^_EN


väter fE:t3 väter fE:t3
_) v (ati_ f _) v (ati_ f
_) v (ät f _) v (ät f
vers (_ v'Erz
_) v (ie f _) v (ie f
_) v (iet v _) v (iet v
_) v (iz f _) v (iz f


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




.group x .group x
_) zer (@P3 tsEr _) zer (@P3 tsEr
_) zere (b tse:re: _) zere (b tse:re:
_) zere (m tse:re: _) zere (m tse:re:
kon) zert ts'Ert
ziell tsj'El ziell tsj'El
_) zie (ge@P3 ts'i: _) zie (ge@P3 ts'i:
zitat tsi:t'A:t zitat tsi:t'A:t
ö (C% W ö (C% W
ö (CC W ö (CC W
ö (sch W ö (sch W
öster Y:st3r




.group ü .group ü

+ 193
- 0
dictsource/py_list View File


// 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


// 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

.L03 ch nh .L03 ch nh
.L04 a u ă â o ô á à ả ã ạ ù ú ủ ũ ụ ắ ằ ẳ ẵ ặ ấ ầ ẩ ẫ ậ ó ò ỏ õ ọ ố ồ ổ ỗ ộ ư ứ ừ ử ữ ự ơ ớ ờ ở ỡ ợ .L04 a u ă â o ô á à ả ã ạ ù ú ủ ũ ụ ắ ằ ẳ ẵ ặ ấ ầ ẩ ẫ ậ ó ò ỏ õ ọ ố ồ ổ ỗ ộ ư ứ ừ ử ữ ự ơ ớ ờ ở ỡ ợ
.L05 o ó ò ỏ õ ọ ô ố ồ ộ ỗ ổ .L05 o ó ò ỏ õ ọ ô ố ồ ộ ỗ ổ
.group b .group b
b b b b
_) b _b _) b _b
.group q .group q
q k q k
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
.group a .group a
a 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 ?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 ?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 a (L01 _^_EN
ai (L02 _^_EN ai (L02 _^_EN
a (@ _^_EN a (@ _^_EN
a (L03 a
a (L03 e-
.group à .group à
à a:2 à a:2
ài a:I2
ày aI2
ài a:j2
ày aj2
?2 ày a:I2 ?2 ày a:I2
à (L03 e-2
ào a:U2
àu aU2
ào a:w2
àu aw2
?2 àu a:U2 ?2 àu a:U2
.group á .group á
á a:3 á 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 áu a:U3
?2 áy a:I3 ?2 áy a:I3
á (L03 e-3
.group ả .group ả
ả a:4 ả 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 ảu a:U4
?2 ảy a:I4 ?2 ảy a:I4
ả (L03 e-4
.group ã .group ã
ã a:5 ã 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 ãu a:U5
?2 ãy a:I5 ?2 ãy a:I5
ã (L03 e-5
.group ạ .group ạ
ạ a:6 ạ 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 ạu a:U6
?2 ạy a:I6 ?2 ạy a:I6
ạ (L03 e-6
//================================ //================================
.group â .group â
â @ â @
ây @I ây @I
âu @U1
âu @w1
?2 â (L03 a ?2 â (L03 a
?1 â (L03 a ?1 â (L03 a
.group ầ .group ầ
ầ @2 ầ @2
ầy @I2 ầy @I2
ầu @U2
ầu @w2
?2 ầ (L03 a2 ?2 ầ (L03 a2
?1 ầ (L03 a2 ?1 ầ (L03 a2
.group ấ .group ấ
ấ @3 ấ @3
ấy @I3 ấy @I3
ấu @U3
ấu @w3
?2 ấ (L03 a3 ?2 ấ (L03 a3
?1 ấ (L03 a3 ?1 ấ (L03 a3
.group ẩ .group ẩ
ẩ @4 ẩ @4
ẩy @I4 ẩy @I4
ẩu @U4
ẩu @w4
.group ẫ .group ẫ
ẫ @5 ẫ @5
ẫy @I5 ẫy @I5
ẫu @U5
ẫu @w5
.group ậ .group ậ
ậ @6 ậ @6
ậy @I6 ậy @I6
ậu @U6
ậu @w6
?2 ậ (L03 a6 ?2 ậ (L03 a6
?1 ậ (L03 a6 ?1 ậ (L03 a6
//=========================== //===========================
.group e .group e
e 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 e (L01 _^_EN
ey (_ _^_EN ey (_ _^_EN
e (@ _^_EN e (@ _^_EN
.group è .group è
è E2 è E2
èo EU2
èo Ew2
.group é .group é
é E3 é E3
éo EU3
éo Ew3
.group ẻ .group ẻ
ẻ E4 ẻ E4
ẻo EU4
ẻo Ew4
.group ẽ .group ẽ
ẽ E5 ẽ E5
ẽo EU5
ẽo Ew5
.group ẹ .group ẹ
ẹ E6 ẹ E6
ẹo EU6
ẹo Ew6
.group ê .group ê
ê e ê e
êu eU1
êu ew1
?2 ê (L03 @: ?2 ê (L03 @:
?2 ê (L02 @: ?2 ê (L02 @:
.group ề .group ề
ề e2 ề e2
ều eU2
ều ew2
?2 ề (L03 @:2 ?2 ề (L03 @:2
?2 ề (L02 @:2 ?2 ề (L02 @:2
.group ế .group ế
ế e3 ế e3
ếu eU3
ếu ew3
?2 ế (L03 @:3 ?2 ế (L03 @:3
.group ể .group ể
ể e4 ể e4
ểu eU4
ểu ew4
?2 ể (L03 @:4 ?2 ể (L03 @:4
?2 ể (L02 @:4 ?2 ể (L02 @:4
.group ễ .group ễ
ễ e5 ễ e5
ễu eU5
ễu ew5
?2 ễ (L03 @:5 ?2 ễ (L03 @:5
?2 ễ (L02 @:5 ?2 ễ (L02 @:5
.group ệ .group ệ
ệ e6 ệ e6
ệu eU6
ệu ew6
?2 ệ (L03 @:6 ?2 ệ (L03 @:6
?2 ệ (L02 @:6 ?2 ệ (L02 @:6
.group i .group i
i i i i
//i (A j
A) i j
ia i@ ia i@
ià i@2 ià i@2
iá i@3 iá i@3
iể iE4 iể iE4
iễ iE5 iễ iE5
iệ iE6 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 (L01 _^_EN
i (@ _^_EN i (@ _^_EN
?2 i (L03 @ ?2 i (L03 @
ì i2 ì i2
ì (A j2 ì (A j2
ìa i@2 ìa i@2
ìu iU2
ìu iw2
?2 ì (L03 @2 ?2 ì (L03 @2
?1 ì (L03 @2 ?1 ì (L03 @2
?2 ì (L02 @2 ?2 ì (L02 @2
í i3 í i3
í (A j3 í (A j3
ía i@3 ía i@3
íu iU3
íu iw3
?2 í (L03 @3 ?2 í (L03 @3
?1 í (L03 @3 ?1 í (L03 @3
?2 í (L02 @3 ?2 í (L02 @3
ỉ i4 ỉ i4
ỉ (A j4 ỉ (A j4
ỉa i@4 ỉa i@4
ỉu iU4
ỉu iw4
?2 ỉ (L03 @4 ?2 ỉ (L03 @4
?1 ỉ (L03 @4 ?1 ỉ (L03 @4
?2 ỉ (L02 @4 ?2 ỉ (L02 @4
ĩ i5 ĩ i5
ĩ (A j5 ĩ (A j5
ĩa i@5 ĩa i@5
ĩu iU5
ĩu iw5
?2 ĩ (L03 @5 ?2 ĩ (L03 @5
?1 ĩ (L03 @5 ?1 ĩ (L03 @5
?2 ĩ (L02 @5 ?2 ĩ (L02 @5
ị i6 ị i6
ị (A j6 ị (A j6
ịa i@6 ịa i@6
ịu iU6
ịu iw6
?2 ị (L03 @6 ?2 ị (L03 @6
?1 ị (L03 @6 ?1 ị (L03 @6
?2 ị (L02 @6 ?2 ị (L02 @6
.group o .group o
o 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 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 ò .group ò
ò O2 ò O2
òi OI2
òa o@2 //ò (A w2
òng O#2
òe o&2
òa wa:2 //ò (A w2
òng O#N2
òe wE2
.group ó .group ó
ó O3 ó 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 óc O#3k
.group ỏ .group ỏ
ỏ O4 ỏ O4
ỏi OI4
ỏa o@4 //ỏ (A w4
ỏng O#4
ỏe o&4
ỏa wa:4 //ỏ (A w4
ỏng O#N4
ỏe wE4
.group õ .group õ
õ O5 õ O5
õi OI5
õa o@5 //õ (A w5
õng O#5
õe o&5
õa wa:5 //õ (A w5
õng O#N5
õe wE5
.group ọ .group ọ
ọ O6 ọ 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 ọc O#6k
.group ô .group ô
ô o ô o
ôi oI
ông o# // ông sound
ôi oj
ông o#N // ông sound
?2 ôi O- //south dialect ?2 ôi O- //south dialect
ôc o#k
.group ồ .group ồ
ồ o2 ồ o2
ồi oI2
ồng o#2
ồi oj2
ồng o#N2
?2 ồi O-2 ?2 ồi O-2
.group ố .group ố
ố o3 ố o3
ối oI3
ống o#3
ối oj3
ống o#N3
?2 ối O-3 ?2 ối O-3
ốc o#3k
.group ổ .group ổ
ổ o4 ổ o4
ổi oI4
ổng o#4
ổi oj4
ổng o#N4
?2 ổi O-4 ?2 ổi O-4
.group ỗ .group ỗ
ỗ o5 ỗ o5
ỗi oI5
ỗng o#5
ỗi oj5
ỗng o#N5
?2 ỗi O-5 ?2 ỗi O-5
.group ộ .group ộ
ộ o6 ộ o6
ội oI6
// ộng o#6
ội oj6
ộng o#N6
?2 ội O-6 ?2 ội O-6
ộc o#6k
.group ơ .group ơ
ơ @: ơ @:
ơi @:I
ơi @:j
ơu @:U ơu @:U
?2 ơi @- //south dialect ?2 ơi @- //south dialect
.group ờ .group ờ
ờ @:2 ờ @:2
ời @:I2
ời @:j2
ờu @:U2 ờu @:U2
?2 ời @-2 ?2 ời @-2
.group ớ .group ớ
ớ @:3 ớ @:3
ới @:I3
ới @:j3
ớu @:U3 ớu @:U3
?2 ới @-3 ?2 ới @-3
.group ở .group ở
ở @:4 ở @:4
ởi @:I4
ởi @:j4
ởu @:U4 ởu @:U4
?2 ởi @-4 ?2 ởi @-4
.group ỡ .group ỡ
ỡ @:5 ỡ @:5
ỡi @:I5
ỡi @:j5
ỡu @:U5 ỡu @:U5
?2 ỡi @-5 ?2 ỡi @-5
.group ợ .group ợ
ợ @:6 ợ @:6
ợi @:I6
ợi @:j6
ợu @:U6 ợu @:U6
?2 ợi @-6 ?2 ợi @-6
.group u .group u
u u u u
u (A u
u (A w
A) u 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@ ua u@
uà u@2 uà u@2
uá u@3 uá u@3
u (L01 _^_EN u (L01 _^_EN
u (@ _^_EN u (@ _^_EN
// ua (L01 _^_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 ù .group ù
ù u2 ù u2
ù (A u2
ùy ui2
ùi uI2
ù (A w2
ùy wi2
ùi uj2
ùa u@2 ùa u@2
//ùng u#2 //ùng u#2
.group ú .group ú
ú u3 ú u3
ú (A u3
úy ui3
úi uI3
ú (A w3
úy wi3
úi uj3
úa u@3 úa u@3
//úng u#3 //úng u#3
?2 ú u-3 ?2 ú u-3
.group ủ .group ủ
ủ u4 ủ u4
ủ (A u4
ủy ui4
ủi uI4
ủ (A w4
ủy wi4
ủi uj4
ủa u@4 ủa u@4
//ủng u#4 //ủng u#4
.group ũ .group ũ
ũ u5 ũ u5
ũ (A u5
ũy ui5
ũi uI5
ũ (A w5
ũy wi5
ũi uj5
ũa u@5 ũa u@5
//ũng u#5 //ũng u#5
?2 ũ u-5 ?2 ũ u-5
.group ụ .group ụ
ụ u6 ụ u6
ụ (A u6
ụy ui6
ụi uI6
ụ (A w6
ụy wi6
ụi uj6
ụa u@6 ụa u@6
//ụng u#6 //ụng u#6
?2 ụ u-6 ?2 ụ u-6
.group ư .group ư
ư y ư y
ưi yI
ưa y@ ưa y@
ươ y@ ươ y@
ườ y@2 ườ y@2
ưở y@4 ưở y@4
ưỡ y@5 ưỡ y@5
ượ y@6 ượ y@6
ưu yw
ưu iw
ươi y@j ươi y@j
ười y@j2 ười y@j2
ưới y@j3 ưới y@j3
.group ừ .group ừ
ừ y2 ừ y2
ừi yI2
ừa y@2 ừa y@2
ừu y2w2
ừu iw2
.group ứ .group ứ
ứ y3 ứ y3
ứi yI3
ứa y@3 ứa y@3
ứu y3w3
ứu iw3
.group ử .group ử
ử y4 ử y4
ửi yI4
ửa y@4 ửa y@4
ửu y4w4
ửu iw4
.group ữ .group ữ
ữ y5 ữ y5
ữi yI5
ữa y@5 ữa y@5
ữu y5w5
ữu iw5
.group ự .group ự
ự y6 ự y6
ựi yI6
ựa y@6 ựa y@6
ựu y6w6
ựu iw6
yả i@4 yả i@4
yã i@5 yã i@5
yạ i@6 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êu i@U
y (L01 _^_EN y (L01 _^_EN
bu) y _^_EN bu) y _^_EN

+ 17
- 12
docs/languages.md View File

[private-use extensions](https://raw.githubusercontent.com/espeak-ng/bcp47-data/master/bcp47-extensions) [private-use extensions](https://raw.githubusercontent.com/espeak-ng/bcp47-data/master/bcp47-extensions)
have been used. 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 | | Family Code | Identifier | Language Family | Language | Accent/Dialect |
|-------------|-------------------|-----------------------|-----------------------------|------------------------| |-------------|-------------------|-----------------------|-----------------------------|------------------------|
| `zlw` | `cs` | West Slavic | Czech | | | `zlw` | `cs` | West Slavic | Czech | |
| `gmq` | `da` | North Germanic | Danish | | | `gmq` | `da` | North Germanic | Danish | |
| `gmw` | `nl` | West Germanic | Dutch | | | `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` | West Germanic | English | British |
| `gmw` | `en-029` | West Germanic | English | Caribbean | | `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 | | | `art` | `eo` | Constructed | Esperanto | |
| `urj` | `et` | Uralic | Estonian | | | `urj` | `et` | Uralic | Estonian | |
| `ira` | `fa` | Iranian | Persian | | | `ira` | `fa` | Iranian | Persian | |
| `ira` | `fa-Latn` | Iranian | Persian<sup>\[2\]</sup> | |
| `ira` | `fa-latn` | Iranian | Persian<sup>\[2\]</sup> | |
| `urj` | `fi` | Uralic | Finnish | | | `urj` | `fi` | Uralic | Finnish | |
| `roa` | `fr-BE` | Romance | French | Belgium |
| `roa` | `fr-be` | Romance | French | Belgium |
| `roa` | `fr` | Romance | French | France | | `roa` | `fr` | Romance | French | France |
| `roa` | `fr-CH` | Romance | French | Switzerland |
| `roa` | `fr-ch` | Romance | French | Switzerland |
| `cel` | `ga` | Celtic | Gaelic | Irish | | `cel` | `ga` | Celtic | Gaelic | Irish |
| `cel` | `gd` | Celtic | Gaelic | Scottish | | `cel` | `gd` | Celtic | Gaelic | Scottish |
| `ccs` | `ka` | South Caucasian | Georgian | | | `ccs` | `ka` | South Caucasian | Georgian | |
| `inc` | `kok` | Indic | Konkani | | | `inc` | `kok` | Indic | Konkani | |
| | `ko` | | Korean | | | | `ko` | | Korean | |
| `ira` | `ku` | Iranian | Kurdish | | | `ira` | `ku` | Iranian | Kurdish | |
| `trk` | `kk` | Turkic | Kazakh | |
| `trk` | `ky` | Turkic | Kyrgyz | | | `trk` | `ky` | Turkic | Kyrgyz | |
| `itc` | `la` | Italic | Latin | | | `itc` | `la` | Italic | Latin | |
| `bat` | `lv` | Baltic | Latvian | | | `bat` | `lv` | Baltic | Latvian | |
| `inc` | `or` | Indic | Oriya | | | `inc` | `or` | Indic | Oriya | |
| `cus` | `om` | Cushitic | Oromo | | | `cus` | `om` | Cushitic | Oromo | |
| `roa` | `pap` | Romance | Papiamento | | | `roa` | `pap` | Romance | Papiamento | |
| `art` | `py` | Constructed | Pyash | |
| `zlw` | `pl` | West Slavic | Polish | | | `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 | | `roa` | `pt` | Romance | Portuguese | Portugal |
| `inc` | `pa` | Indic | Punjabi | | | `inc` | `pa` | Indic | Punjabi | |
| `roa` | `ro` | Romance | Romanian | | | `roa` | `ro` | Romance | Romanian | |
| `zle` | `ru` | East Slavic | Russian | | | `zle` | `ru` | East Slavic | Russian | |
| `zle` | `ru-lv` | East Slavic | Russian | Latvia |
| `zls` | `sr` | South Slavic | Serbian | | | `zls` | `sr` | South Slavic | Serbian | |
| `bnt` | `tn` | Bantu | Setswana | | | `bnt` | `tn` | Bantu | Setswana | |
| `inc` | `sd` | Indic | Sindhi | | | `inc` | `sd` | Indic | Sindhi | |
| `tai` | `shn` | Tai | Shan (Tai Yai) | |
| `inc` | `si` | Indic | Sinhala | | | `inc` | `si` | Indic | Sinhala | |
| `zlw` | `sk` | West Slavic | Slovak | | | `zlw` | `sk` | West Slavic | Slovak | |
| `zls` | `sl` | South Slavic | Slovenian | | | `zls` | `sl` | South Slavic | Slovenian | |
| `dra` | `te` | Dravidian | Telugu | | | `dra` | `te` | Dravidian | Telugu | |
| `trk` | `tr` | Turkic | Turkish | | | `trk` | `tr` | Turkic | Turkish | |
| `inc` | `ur` | Indic | Urdu | | | `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` | 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 | | | `cel` | `cy` | Celtic | Welsh | |


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

+ 40
- 30
docs/mbrola.md View File

- [Windows Installation](#windows-installation) - [Windows Installation](#windows-installation)
- [Linux Installation](#linux-installation) - [Linux Installation](#linux-installation)
- [Installation of standard packages](#installation-of-standard-packages) - [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) - [Usage](#usage)
- [Adding new MBROLA voice entry to eSpeak NG](#adding-new-mbrola-voice-entry-to-espeak-ng) - [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) - [1. Add MBROLA voice definition file](#1-add-mbrola-voice-definition-file)


---------- ----------


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. to generate speech sound.


## Voice Names ## Voice Names
`.../espeak-ng-data/voices/mb` (where `...` is usually `/usr/share`, `.../espeak-ng-data/voices/mb` (where `...` is usually `/usr/share`,
but could be somewhere else). 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 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 using a MBROLA voice for a different language. These contain the name of
the MBROLA voice with a suffix `-en`. For example, the voice 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 `mb-de4-en` will speak English text with a German accent by using the
MBROLA `de4` voice. 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 | | MBROLA Voice | Language | Gender | eSpeak | Debian Package |
|--------------|----------------------|--------|----------|----------------| |--------------|----------------------|--------|----------|----------------|
| `us3` | American English | male | `mb-us3` | `mbrola-us3` | | `us3` | American English | male | `mb-us3` | `mbrola-us3` |
| `vz1` | Venezuelan Spanish | male | `mb-vz1` | `mbrola-vz1` | | `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 ## Windows Installation


2. Install the PC/Windows version of MBROLA (`MbrolaTools35.exe`) from: 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). [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. 4. Use the voice `espeak-MB-EN1` from the list of SAPI5 voices.




apt-cache search mbrola 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 ## Usage



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

name Vietnamese (Northern) name Vietnamese (Northern)
language vi 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

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

name German name German
language de language de
tunes s4 c1 q4 e1

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

name Persian (Pinglish) name Persian (Pinglish)
// Sometimes, Farsi speakers write Farsi words using English characters, particularly in Chat and SMS (texte messages).), called 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]> maintainer Shadyar Khodayari <[email protected]>
status mature status mature
dictrules 1 dictrules 1

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

name Russian (Latvia) name Russian (Latvia)
language ru-LV 2
language ru-lv 2


maintainer Valdis Vitolins <[email protected]> maintainer Valdis Vitolins <[email protected]>
status testing status testing

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

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

formant 2 97 70 90 formant 2 97 70 90
formant 3 97 60 90 formant 3 97 60 90
formant 4 97 60 90 formant 4 97 60 90
formant 5 75 50 90
formant 5 100 50 90
formant 6 90 50 100 formant 6 90 50 100
formant 7 100 50 100 formant 7 100 50 100
formant 8 100 50 100 formant 8 100 50 100

BIN
phsource/n/nm View File


+ 14
- 14
phsource/ph_german View File




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






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




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




ELSEIF prevPhW(d) OR prevPhW(b) OR prevPhW(g) OR prevPhW(k) OR prevPhW(p) THEN ELSEIF prevPhW(d) OR prevPhW(b) OR prevPhW(g) OR prevPhW(k) OR prevPhW(p) THEN
PauseBefore 15 PauseBefore 15
ELSE ELSE
InsertPhoneme(@-)
FMT(r3/r_, 40) addWav(r3/rx, 150)
ENDIF ENDIF
ENDIF ENDIF
ENDIF ENDIF


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


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

+ 9
- 0
phsource/ph_pyash View File

// 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



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






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






phoneme a phoneme a
vwl starttype #@ endtype #@ 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 endphoneme


phoneme a: phoneme a:
vwl starttype #a endtype #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 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 ELSE
length 180 //200
length 180
ENDIF ENDIF
// FMT(vowel/a_8)
FMT(vietnam/a_2)
//FMT(vowel/a_8)
FMT(vietnam/aa)
endphoneme endphoneme




phoneme E phoneme E
vwl starttype #e endtype #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 length 180
ENDIF
FMT(vowel/e_e) //ee_3)
ENDIF
//FMT(vowel/e_e) //ee_3)
FMT(vietnam/e_e_2)
endphoneme endphoneme


phoneme e phoneme e
vwl starttype #e endtype #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 length 180
ENDIF
// FMT(vowel/e)
FMT(vietnam/e)
ENDIF
IF nextPh(n^) THEN
FMT(vowel/e)
ELSE
FMT(vietnam/e, 150)
ENDIF
endphoneme endphoneme




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

phoneme i phoneme i
vwl starttype #i endtype #i vwl starttype #i endtype #i
IfNextVowelAppend(;) IfNextVowelAppend(;)
IF prevPhW(w) THEN IF prevPhW(w) THEN
VowelStart(w/wi) VowelStart(w/wi)
ENDIF 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 ENDIF
IF nextPh(n^) OR nextPh(c) THEN IF nextPh(n^) OR nextPh(c) THEN
length 100
FMT(vnasal/ii_n)
//FMT(vnasal/ii_n)
FMT(vietnam/i)
ELSE ELSE
length 180
FMT(vowel/i_4)
//FMT(vowel/i_4)
FMT(vietnam/i_2, 100)
ENDIF ENDIF
endphoneme endphoneme




phoneme O phoneme O
vwl starttype #o endtype #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 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 length 180
ENDIF
FMT(vdiph2/o_oo) //vowel/oo)
ENDIF
//FMT(vdiph2/o_oo) //vowel/oo)
FMT(vietnam/oo)
endphoneme endphoneme


phoneme O+ phoneme O+


phoneme o phoneme o
vwl starttype #o endtype #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 length 180
ENDIF
FMT(vowel/o) // o_2)
ENDIF
//FMT(vowel/o) // o_2)
FMT(vietnam/o_2)
endphoneme endphoneme




phoneme u phoneme u
vwl starttype #u endtype #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 length 240
ELSE
ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN
length 333
ELSE
length 180 length 180
ENDIF
FMT(vnasal/u_n,60) //vowel/u_5)
ENDIF
//FMT(vnasal/u_n) //vowel/u_5)
FMT(vietnam/u)
endphoneme endphoneme


phoneme y phoneme y
vwl starttype #u endtype #u 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 length 180
ENDIF
FMT(vowel/u#_5)
ENDIF
//FMT(vowel/u#_5)
FMT(vietnam/y_2, 60)
endphoneme endphoneme






phoneme @ phoneme @
vwl starttype #@ endtype #a 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 length 240
ELSE
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELSE
length 180 length 180
ENDIF
ENDIF
// FMT(vowel/V) //vowel/@_2) // FMT(vowel/V) //vowel/@_2)
FMT(vietnam/V)
FMT(vietnam/V_2)
endphoneme endphoneme




phoneme @: phoneme @:
vwl starttype #@ endtype #@ 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 length 180
ENDIF
FMT(vowel/@_2)
ENDIF
//FMT(vowel/@_2)
FMT(vietnam/@_2)
endphoneme endphoneme






phoneme y@ phoneme y@
vwl starttype #i endtype #@ 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 length 240
ELSE
ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN
length 240
ELSE
length 200 length 200
ENDIF
FMT(vdiph2/y-y#)
ENDIF
//FMT(vdiph2/y-y#)
FMT(vietnam/y@)
endphoneme endphoneme


phoneme u@ phoneme u@
vwl starttype #u endtype #@ 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 length 240
ELSE
length 200
ENDIF
FMT(vdiph2/uu@)
ENDIF
//FMT(vdiph2/uu@)-
FMT(vietnam/u@)
endphoneme endphoneme


// Addition Dipthongs // Addition Dipthongs


phoneme o# // ông phoneme o# // ông
vwl starttype #o endtype #o 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 ELSE
length 200 length 200
ENDIF ENDIF
FMT(vnasal/a#u_n)
//FMT(vnasal/a#u_n)
FMT(vietnam/o#)
endphoneme endphoneme


phoneme O# // ong phoneme O# // ong
length 240 length 240
ELIF nextPh(k) THEN ELIF nextPh(k) THEN
length 140 length 140
ELIF nextPh(N) THEN
length 102
ELSE ELSE
length 200 length 200
ENDIF ENDIF
FMT(vnasal/&u_n)
//FMT(vnasal/&u_n)
FMT(vietnam/O_short_2)
endphoneme endphoneme






phoneme iE // iê : viết, giệc phoneme iE // iê : viết, giệc
vwl starttype #i endtype #e 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 endphoneme


phoneme Oi // oai sound phoneme Oi // oai sound
endphoneme endphoneme


phoneme k phoneme k
vls vel frc
vls vel stp
lengthmod 3 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 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 Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20
WAV(ustop/c)
//WAV(ustop/c)
endphoneme endphoneme


phoneme N // si**ng** phoneme N // si**ng**
vcd lbv nas 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 Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
ENDIF
lengthmod 12 // longer than 'n' 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 ENDIF
FMT(n/nm)
endphoneme endphoneme


phoneme l phoneme l
vcd alv stp vcd alv stp
// lengthmod 5 // lengthmod 5
ipa ɗ 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 endphoneme
phoneme c phoneme c
vls pal stp pzd vls pal stp pzd
//voicingswitch J //voicingswitch J
lengthmod 2 lengthmod 2
length 2
length 50
Vowelin f1=0 f2=2700 400 600 f3=300 80 len=15 brk 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 Vowelout f1=1 f2=2700 400 600 f3=200 70 len=15 colr=1


phoneme p phoneme p
vls blb stp vls blb stp
lengthmod 2 lengthmod 2
length 15
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 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 endphoneme


phoneme t[ // dental variant of /t/ 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 ENDIF
WAV(ustop/t_hi, 70)
endphoneme 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

phonemetable jbo eo phonemetable jbo eo
include ph_lojban include ph_lojban


phonemetable py eo
include ph_pyash

phonemetable nci base2 phonemetable nci base2
include ph_nahuatl 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

#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h>
#include <time.h> #include <time.h>


#include <espeak-ng/espeak_ng.h> #include <espeak-ng/espeak_ng.h>
"--voices=<language>\n" "--voices=<language>\n"
"\t List the available voices for the specified language.\n" "\t List the available voices for the specified language.\n"
"\t If <language> is omitted, then list all voices.\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"; "-h, --help Show this help.\n";


int samplerate; int samplerate;
{ "compile-mbrola", optional_argument, 0, 0x10e }, { "compile-mbrola", optional_argument, 0, 0x10e },
{ "compile-intonations", no_argument, 0, 0x10f }, { "compile-intonations", no_argument, 0, 0x10f },
{ "compile-phonemes", optional_argument, 0, 0x110 }, { "compile-phonemes", optional_argument, 0, 0x110 },
{ "load", no_argument, 0, 0x111 },
{ 0, 0, 0, 0 } { 0, 0, 0, 0 }
}; };


int value; int value;
int flag_stdin = 0; int flag_stdin = 0;
int flag_compile = 0; int flag_compile = 0;
int flag_load = 0;
int filesize = 0; int filesize = 0;
int synth_flags = espeakCHARS_AUTO | espeakPHONEMES | espeakENDPAUSE; int synth_flags = espeakCHARS_AUTO | espeakPHONEMES | espeakENDPAUSE;


int phoneme_options = 0; int phoneme_options = 0;
int option_linelength = 0; int option_linelength = 0;
int option_waveout = 0; int option_waveout = 0;
espeak_VOICE voice_select; espeak_VOICE voice_select;
char filename[200]; char filename[200];
char voicename[40]; char voicename[40];
} }
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
case 0x111: // --load
flag_load = 1;
break;
default: default:
exit(0); exit(0);
} }
if (voicename[0] == 0) if (voicename[0] == 0)
strcpy(voicename, ESPEAKNG_DEFAULT_VOICE); 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) { if (result != ENS_OK) {
memset(&voice_select, 0, sizeof(voice_select)); memset(&voice_select, 0, sizeof(voice_select));
voice_select.languages = voicename; voice_select.languages = voicename;

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

ESPEAK_NG_API espeak_ng_STATUS ESPEAK_NG_API espeak_ng_STATUS
espeak_ng_SetVoiceByName(const char *name); 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_API espeak_ng_STATUS
espeak_ng_SetVoiceByProperties(espeak_VOICE *voice_selector); espeak_ng_SetVoiceByProperties(espeak_VOICE *voice_selector);



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

are listed, and they are listed in preference order. 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 #ifdef __cplusplus
extern "C" extern "C"
#endif #endif

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

return status_to_espeak_error(espeak_ng_SetVoiceByName(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) ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector)
{ {
return status_to_espeak_error(espeak_ng_SetVoiceByProperties(voice_selector)); return status_to_espeak_error(espeak_ng_SetVoiceByProperties(voice_selector));

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



#pragma GCC visibility push(default) #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_NG_API espeak_ng_STATUS espeak_ng_SetVoiceByName(const char *name)
{ {
espeak_VOICE *v; 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

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 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 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 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 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 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@" 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

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 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 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 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 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 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." 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."
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 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 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 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). ##### Fallback to other languages in different scripts (language switch).



Loading…
Cancel
Save