Browse Source

Merge pull request #981

qya: sjn: Add Tolkien’s Elvish languages Quenya and Sindarin
master
jaacoppi 4 years ago
parent
commit
67ce80d568
No account linked to committer's email address

+ 10
- 0
Makefile.am View File

@@ -412,6 +412,7 @@ phsource/phonemes.stamp: \
phsource/ph_punjabi \
phsource/ph_pyash \
phsource/ph_quechua \
phsource/ph_quenya \
phsource/ph_romanian \
phsource/ph_russian \
phsource/ph_russian_lv \
@@ -419,6 +420,7 @@ phsource/phonemes.stamp: \
phsource/ph_serbian \
phsource/ph_setswana \
phsource/ph_shan \
phsource/ph_sindarin \
phsource/ph_sindhi \
phsource/ph_sinhala \
phsource/ph_slovak \
@@ -589,11 +591,13 @@ dictionaries: \
espeak-ng-data/qdb_dict \
espeak-ng-data/qu_dict \
espeak-ng-data/quc_dict \
espeak-ng-data/qya_dict \
espeak-ng-data/ro_dict \
espeak-ng-data/ru_dict \
espeak-ng-data/sd_dict \
espeak-ng-data/shn_dict \
espeak-ng-data/si_dict \
espeak-ng-data/sjn_dict \
espeak-ng-data/sk_dict \
espeak-ng-data/sl_dict \
espeak-ng-data/smj_dict \
@@ -861,6 +865,9 @@ espeak-ng-data/qu_dict: dictsource/qu_list dictsource/qu_rules dictsource/qu_ext
quc: espeak-ng-data/quc_dict
espeak-ng-data/quc_dict: dictsource/quc_list dictsource/quc_rules dictsource/quc_extra dictsource/quc_emoji

qya: espeak-ng-data/qya_dict
espeak-ng-data/qya_dict: dictsource/qya_list dictsource/qya_rules

ro: espeak-ng-data/ro_dict
espeak-ng-data/ro_dict: dictsource/ro_list dictsource/ro_rules dictsource/ro_extra dictsource/ro_emoji

@@ -882,6 +889,9 @@ espeak-ng-data/shn_dict: dictsource/shn_list dictsource/shn_rules dictsource/shn
si: espeak-ng-data/si_dict
espeak-ng-data/si_dict: dictsource/si_list dictsource/si_rules dictsource/si_extra dictsource/si_emoji

sjn: espeak-ng-data/sjn_dict
espeak-ng-data/sjn_dict: dictsource/sjn_list dictsource/sjn_rules

sk: espeak-ng-data/sk_dict
espeak-ng-data/sk_dict: dictsource/sk_list dictsource/sk_rules dictsource/sk_extra dictsource/sk_emoji


+ 31
- 0
dictsource/qya_list View File

@@ -0,0 +1,31 @@
// words with a single light syllable which should not be stressed

// conjunctions:
a $u
an $u
ar $u
hya $u
i $u
mal $u
nan $u
o $u
qui $u
ta $u
var $u
// prepositions:
et $u
han $u
ho $u
lo $u
mi $u
mil $u
no $u
nu $u
or $u
pa $u
po $u
tar $u
ter $u
va $u
ve $u
yo $u

+ 180
- 0
dictsource/qya_rules View File

@@ -0,0 +1,180 @@
// syllable nuclei: vowels (any length) and diphthongs
.L01 i e a o u í é á ó ú î ê â ô û ui oi ai iu eu au
// front vowels (finally): after these, ht is [çt]
.L02 i e í é î ê ui oi ai
// back vowels (finally): after these, ht is [xt]
.L03 a o u á ó ú â ô û iu eu au

.replace
// turn x into cs, both because that’s how it’s pronounced
// and to free up x as a single letter for ch (see immediately below)
x cs
// turn ch, dh, th into single consonants for stress purposes
ch x
dh ð
th þ
// turn k into c: both letters are equivalent in Tolkien’s languages,
// with c usually reserved for Eldarin languages and k for others
k c

.group a
a a
ai (+ aI
au (+ aU
// light penultimate syllable: put stress on antepenultimate
a (L01X =a
a (CL01X =a

.group á
á a:

.group â
â a::

.group b
b b
bb b:

.group c
c k
cc k:
// recall that ch was replaced with x earlier

.group x
x X

.group d
d d
db d:
// recall that dh was replaced with ð earlier

.group ð
ð D

.group e
e E
eu (+ EU
// light penultimate syllable: put stress on antepenultimate
e (L01X =E
e (CL01X =E

.group é
é e:

.group ê
ê e::

.group f
f f
f (_ v

.group g
g g
gg g:

.group h
h h
L02) ht Ct
L03) ht xt
hl l#
hr hR
hw w#
hy C

.group i
i I
iu (+ iu
// light penultimate syllable: put stress on antepenultimate
i (L01X =I
i (CL01X =I

.group í
í i:

.group î
î i::

// j does not occur in Quenya

// recall that k was replaced with c earlier

.group l
l l

.group m
m m

.group n
n n

.group ng
ng Ng
ng (_ N

.group o
o O
oi (+ OI
// light penultimate syllable: put stress on antepenultimate
o (L01X =O
o (CL01X =O

.group ó
ó o:

.group ô
ô o::

.group p
p p
pp p:

.group ph
ph f
A) ph (A f:

.group q
q kw // (immature) Qenya
qu kw

.group r
r R

.group s
s s

.group t
t t
tt t:
// recall that th was replaced with þ earlier

.group þ
þ T

.group ty
ty tj

.group u
u u
ui (+ uI
// light penultimate syllable: put stress on antepenultimate
u (L01X =u
u (CL01X =u

.group ú
ú u:

.group û
û u::

.group v
v v

.group w
w w

// recall that x was replaced with cs earlier

.group y
y j

// z does not occur in Quenya

+ 32
- 0
dictsource/sjn_list View File

@@ -0,0 +1,32 @@
// potential “muta cum liquida” rule:
// the use of these words in poems suggests that they are stressed on the antepenultimate syllable,
// rather than the penultimate one, even though the penultimate syllable is heavy;
// see <https://menegroth.github.io/stress-in-sindarin.html> for details

imladris $1 // Seek for the Sword that was broken, line 2
menegroþ $1 // Lay of Leithian Recommenced, line 65
nargoþrond $1 // The world was young, the mountains green, line 13

// words with a single light syllable which should not be stressed

// conjunctions:
// a – exception: also an interjection, should still be stressed then
ach $u
ah $u
ir $u
sui $u
// prepositions:
am $u
an $u
ben $u
bo $u
dan $u
na $u
ned $u
nef $u
nu $u
o $u
or $u
os $u
pen $u
vi $u

+ 183
- 0
dictsource/sjn_rules View File

@@ -0,0 +1,183 @@
// syllable nuclei: vowels (any length) and diphthongs
.L01 i e a o u y í é á ó ú ý î ê â ô û ŷ ae ai ei oe ui au

.replace
// turn x into cs, both because that’s how it’s pronounced
// (strictly speaking only in some Quenya, but let’s do it here too)
// and to free up x as a single letter for ch (see immediately below)
x cs
// turn ch, dh, th into single consonants for stress purposes
ch x
dh ð
th þ
// turn k into c: both letters are equivalent in Tolkien’s languages,
// with c usually reserved for Eldarin languages and k for others
k c

.group a
a a
ae (+ aE
ai (+ aI
au (+ aU
// light penultimate syllable: put stress on antepenultimate
a (L01X =a
a (CL01X =a

.group á
á a:

.group â
â a::

.group b
b b
bb b:

.group c
c k
cc c:
// recall that ch was replaced with x earlier

.group x
x X

.group d
d d
dd d:
// recall that dh was replaced with ð earlier

.group ð
ð D

.group e
e E
ei (+ EI
// light penultimate syllable: put stress on antepenultimate
e (L01X =E
e (CL01X =E

.group é
é E:

.group ê
ê E::

.group f
f f
f (_ v

.group g
g g
gg g:

.group h
h h
hw w#

.group i
i I
_) i (A+ j
// light penultimate syllable: put stress on antepenultimate
i (L01X =I
i (CL01X =I

.group í
í i:

.group î
î i::

// j does not occur in Sindarin

// recall that k was replaced with c earlier

.group l
l l
lh l#

.group m
m m

.group n
n n

.group ng
ng Ng
ng (_ N

.group o
o O
oe (+ OI
// light penultimate syllable: put stress on antepenultimate
o (L01X =O
o (CL01X =O

.group ó
ó O:

.group ô
ô O::

.group p
p p
pp p:

.group ph
ph f
A) ph (A f:

.group q
q _^_qya // q does not occur in Sindarin

.group r
r R
rh hR

.group s
s s

.group t
t t
tt t:
// recall that th was replaced with þ earlier

.group þ
þ T

.group ty
ty tj

.group u
u u
ui (+ uI
// light penultimate syllable: put stress on antepenultimate
u (L01X =u
u (CL01X =u

.group û
û u::

.group ú
ú u:

.group v
v v

.group w
w w

// recall that x was replaced with cs earlier

.group y
y y
// light penultimate syllable: put stress on antepenultimate
y (L01X =y
y (CL01X =y

.group ý
ý y:

.group ŷ
ŷ y::

// z does not occur in Sindarin

+ 4
- 0
espeak-ng-data/lang/art/qya View File

@@ -0,0 +1,4 @@
name Quenya
language qya
stressRule 2
// rule=penultimate, with qya_rules for light penultimate syllables to move primary stress to the preceding (antepenultimate) syllable

+ 4
- 0
espeak-ng-data/lang/art/sjn View File

@@ -0,0 +1,4 @@
name Sindarin
language sjn
stressRule 2
// rule=penultimate, with sjn_rules for light penultimate syllables to move primary stress to the preceding (antepenultimate) syllable

+ 51
- 0
phsource/ph_quenya View File

@@ -0,0 +1,51 @@
phoneme n
IF nextPhW(isVelar) THEN // /n/ is velarized to /N/ when before velar stops
ChangePhoneme(N)
ENDIF
CALL base1/n
endphoneme

phoneme O
vwl starttype #o endtype #o
length 200
FMT(vowel/oo)
endphoneme

phoneme w#
vls glt apr // [h]
ipa ʍ

IF nextPh(isVowel) THEN
NextVowelStarts
VowelStart(w/w@)
VowelStart(w/wa)
VowelStart(w/we)
VowelStart(w/wi)
VowelStart(w/wo)
VowelStart(w/wu)
EndSwitch
ENDIF

WAV(h/hu, 70)
endphoneme


phoneme aI
vwl starttype #a endtype #i
length 240
FMT(vdiph/ai)
endphoneme

phoneme uI
vwl starttype #u endtype #i
length 290
lng
FMT(vdiph/ui)
endphoneme

phoneme iu
vwl starttype #i endtype #u
length 280
lng
FMT(vdiph2/iu_2)
endphoneme

+ 56
- 0
phsource/ph_sindarin View File

@@ -0,0 +1,56 @@
phoneme n
IF nextPhW(isVelar) THEN // /n/ is velarized to /N/ when before velar stops
ChangePhoneme(N)
ENDIF
CALL base1/n
endphoneme

phoneme O
vwl starttype #o endtype #o
length 200
FMT(vowel/oo)
endphoneme

phoneme w#
vls glt apr // [h]
ipa ʍ

IF nextPh(isVowel) THEN
NextVowelStarts
VowelStart(w/w@)
VowelStart(w/wa)
VowelStart(w/we)
VowelStart(w/wi)
VowelStart(w/wo)
VowelStart(w/wu)
EndSwitch
ENDIF

WAV(h/hu, 70)
endphoneme


phoneme aE
vwl starttype #a endtype #e
length 270
FMT(vdiph/ae)
endphoneme

phoneme aI
vwl starttype #a endtype #i
length 240
FMT(vdiph/ai)
endphoneme

phoneme EI
vwl starttype #e endtype #i
length 230
FMT(vdiph/eei)
endphoneme

phoneme uI
vwl starttype #u endtype #i
length 290
lng
FMT(vdiph/ui)
endphoneme

+ 6
- 0
phsource/phonemes View File

@@ -1920,6 +1920,12 @@ include ph_lojban
phonemetable py eo
include ph_pyash

phonemetable qya la
include ph_quenya

phonemetable sjn la
include ph_sindarin

phonemetable es-la es
include ph_spanish_la


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

@@ -186,6 +186,7 @@ S'a
'OksidU
p'or-
z'&~Ng&U~_:_: ,E*&U~ p,&l'avR&Z dU p,u*@-tug'es#" "Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português." "Latn"
test_phon qya ",aInul'Indal,E ald'INga aNk'alIm,a and'u:RIl at'akwE k,alak'IRja k,uIvI;'e:nEn ,EaR'EndIl El'EndIl ,ElEnt'a:RI; El'EssaR 'ENkwI;,E E'OnwE ER'EssE,a h,ElkaR'aksE w#'Esta C'aRmEn Is'IlduR l'ap:a m'axtan nam'a:RI;,E n'at:IR,a n,u:mEn'o:RE 'OROm,E Ot'OkwE pEl'Ek:O pEl'o:RI s'aUROn tan'IkwEt,Il t,Elum'ECtaR t'ulkas tuR'ambaR und'o:mI;,El ut'umnO" "Ainulindalë aldinga ancalima Andúril ataquë Calacirya Cuiviénen Eärendil Elendil Elentári Elessar enquië Eönwe Eressëa Helcaraxë hwesta Hyarmen Isildur lappa Mahtan Namárië nattira Númenórë Orome otoquë pelecco Pelóri Sauron Taniquetil Telumehtar Tulkas Turambar Undómiel Utumno" "Quenya"
test_phon ro "m,uzikol'og@_! yn b'eZ v'ynd wh'iski Si tekw'ila
p@-*'ets f'iks" "Muzicologă în bej vând whisky și tequila, preț fix." "Latn"
test_phon ru "Syr'okVja E#l;ikt@-r;if;ik'Atsyja 'juZnyx gub;'ern;ij d'Ast m'oS;nyj tVltS;'ok pVdj'8mu s;'elskVvV xVz;'Ajstva#" "Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства." "Cyrl"
@@ -193,6 +194,7 @@ test_phon sd "s'Indhi b'o:li; 'Ind.o: jo:R'Vpi xa:nd'a:n s'a~: t[a:l'Vq R,@k#@nd
J'Vnhn t['e: ,aRb'i: bo:l'i:;a J'o: b'I t[@m'a:m v'Vd.o: as'VR ,a:he:
h'Ina v'aqt s'Indhi b'o:li s'Indh J'e: m'Vk# b'o:li_! 'ae~ d,@f@t['VRi z@b'a:n ,a:he:" "سنڌي ٻولي انڊو يورپي خاندان سان تعلق رکندڙ آريائي ٻولي آھي، جنھن تي عربي ٻوليءَ جو بہ تمام وڏو اثر آهي. هن وقت سنڌي ٻولي سنڌ جي مک ٻولي ۽ دفتري زبان آھي." "Arab"
test_phon si "t'aw@t st#'a:n@ k'i:p@j,@kin w'a:rta: w'u: s'ul.u p'ipiri:m s'ah@ d'e:s@p,a:l@n@ p'akS@ k r'ija:k,a:ri:n 'at@r@ '&tiwu: g'&t.um h'e:tuwen 'ek 'ajeku m'ij@gos k'i:p@ d'eneku t'uwa:l@ l'aba: t'ibe:" "තවත් ස්ථාන කීපයකින් වාර්තා වූ සුළු පිපිරීම් සහ දේශපාලන පක්ෂ ක්‍රියාකාරීන් අතර ඇතිවූ ගැටුම් හේතුවෙන් එක් අයෙකු මියගොස් කීප දෙනෙකු තුවාල ලබා තිබේ." "Sinh"
test_phon sjn "'alf 'aman 'amaRT 'amOn 'aRag,ORn aRn'OIdI;,ad 'aRvEd,uI bEl'ERI;,and b'OROm,IR bRag'OllaX bR'ETIl bRIT'OmbaR bR'uInEn k'aIR kaR'aDRas k,ElEbR'i:an kRIss'aEgRIm d'EnET,OR dR'ENgIst d'u::n EkT'ElI;,On 'Emyn ER'I;ad,OR f'Ean,OR fInd'uIlas f'INgOn fINg'OlfIn fIn'aRfIn f'OROX,El g'alaD,On gal'adRI;,El gR'Ond gw'aIhIR w#'and j'aRwaIn 'ImladR,Is j'ORET IT'IlI;,En l#'u::n lOTl'O:RI;,En m'EnEgR,OT mIT'EITEl mITR'andIR mOR'annOn m'ORI;,a n'aRgOTR,Ond OR'OffIn Osg'IlI;,aT pal'anti:R p,alant'i:RI pEl'EnnOR p,ERI;'annaT hR'u::n sIl'IvREn TOR'OndOR" "alph Aman Amarth Amon Aragorn Arnoediad Arvedui Beleriand Boromir Bragollach Brethil Brithombar Bruinen Cair Caradhras Celebrían Crissaegrim Denethor Drengist dûn Ecthelion Emyn Eriador Fëanor Finduilas Fingon Fingolfin Finarfin Forochel Galadhon Galadriel Grond Gwaihir hwand Iarwain Imladris Ioreth Ithilien lhûn Lothlórien Menegroth Mitheithel Mithrandir Morannon Moria Nargothrond Orophin Osgiliath Palantír Palantíri Pelennor Periannath rhûn Silivren Thorondor" "Sindarin"
test_phon sk "k'r:d;el^ St;'astni:Q d;'atl^ow 'utSi: pR'i;u:st;i: v'a:hu m'l:kveho k'on^a 'ophRi:zat; k'uoRu_:_: a ZR'at; tS'eRstve: m'eso
p'et;ti:Zdn^,ove: v'l:tSata: n'eRvo:zn^e St;'ekaju: n'amu,ojho d;'atl^a_! v_ t'r:n^i:" "Kŕdeľ šťastných ďatľov učí pri ústí Váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso. Päťtýždňové vĺčatá nervózne štekajú na môjho ďatľa v tŕní." "Latn"
test_phon sl "xiSn'i:tSin bR'a:tEts uzg'a:ja p'o:wZE p'o:t fik'u:sOm" "Hišničin bratec vzgaja polže pod fikusom." "Latn"

Loading…
Cancel
Save