@@ -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 |
@@ -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 | |||
@@ -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 | |||
@@ -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 |
@@ -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 ü |
@@ -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 | |||
@@ -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 |
@@ -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 |
@@ -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. |
@@ -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 | |||
@@ -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 |
@@ -0,0 +1,7 @@ | |||
name Pyash | |||
language py | |||
maintainer Logan Streondj <[email protected]> | |||
status testing | |||
speed 80 // speed adjustment, percentage | |||
stressRule 0 |
@@ -1,2 +1,3 @@ | |||
name German | |||
language de | |||
tunes s4 c1 q4 e1 |
@@ -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,5 +1,5 @@ | |||
name Russian (Latvia) | |||
language ru-LV 2 | |||
language ru-lv 2 | |||
maintainer Valdis Vitolins <[email protected]> | |||
status testing |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -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 |
@@ -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 | |||
@@ -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; |
@@ -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); | |||
@@ -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 |
@@ -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)); |
@@ -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; |
@@ -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@" |
@@ -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). | |||