Commit Graph
4648 Commits
Author SHA1 Message Date
Lucas Werkmeister 4e6ebdbfb6 Velarize [n] to [ŋ] before velar stops in Elvish
I’m not aware of any statement by Tolkien to this effect, but it just
seems natural to me, and the [ŋ] is at least found in the Omikhleia
Sindarin dictionary [1] (e.g. entry tinc, [tˈiŋk]).

Based on a similar phoneme rule in ph_english.

[1]: https://www.jrrvf.com/hisweloke/sindar/index.html
2021-07-18 13:28:03 +02:00
Lucas Werkmeister ca2ca4c5cb Add Sindarin ⟨ae⟩, ⟨ai⟩, ⟨oe⟩, ⟨ui⟩ diphthongs
For ⟨ae⟩, we used to use the Latin [[aI]] phoneme, which sounds like
/ae/. Call that phoneme [[aE]] for us and introduce a separate [[aI]]
one, which sounds more like /ai/ (since Sindarin has both, and they’re
supposed to sound different, though Appendix E of The Lord of the Rings
notes that there is nothing closely corresponding to ⟨ae⟩ in English and
that it may be pronounced like ⟨ai⟩). Furthermore, for ⟨oe⟩, just remove
the TODO – the Latin phoneme is called [[OI]] but sounds more like /oe/
than /oi/, so it’s actually just fine for our purposes. Finally, the
⟨ui⟩ diphthong is copied from Finnish, just like in Quenya.
2021-07-18 13:28:02 +02:00
Lucas Werkmeister e8fb04bb44 Add Quenya ⟨iu⟩, ⟨ui⟩ diphthongs
Both are copied from the Finnish phonemes, since Finnish was a major
inspiration for Quenya. This means that the ⟨iu⟩ diphthong is a
“falling” one – according to Appendix E of The Lord of the Rings, this
is the original pronunciation, but by the Third Age (the time in which
The Lord of the Rings is set) it had become a “rising” one, so I may
change the phoneme later, not sure.
2021-07-18 13:27:37 +02:00
Lucas Werkmeister 0928b3a432 Add more Quenya test cases
I had left out test cases with ⟨qu⟩ and/or ⟨y⟩ earlier, but it looks
like there wasn’t actually any need to do that, they work just fine.
2021-07-18 13:27:26 +02:00
Lucas Werkmeister c6e6f60154 Make ph between vowels long in Elvish
According to Appendix E of The Lord of the Rings, ⟨ph⟩ stands for /f/
when final (because ⟨f⟩ is pronounced as /v/ in that position), and
otherwise is used instead of ⟨f⟩ either because it’s derived from ⟨p⟩
(in which case it’s presumably pronounced just like ⟨f⟩), or to
represent an especially long /f/. We can’t really tell which case we
have, but from the Omikhleia Sindarin dictionary [1], it appears that
all the long ⟨ph⟩’s are between two vowels, and all the short ones have
at least one adjacent consonant, so let’s use that as a rule and hope it
works out. (The Ambar Eldaron Quenya dictionary [2] is less easily
searchable, so I’m just hoping that this rule works reasonably well for
both languages.)

[1]: https://www.jrrvf.com/hisweloke/sindar/index.html
[2]: https://ambar-eldaron.com/telechargements/quenya-engl-A4.pdf
2021-07-18 13:27:26 +02:00
Lucas Werkmeister f25fda6cd8 Define some Elvish diphthongs
Not all of the diphthongs in Quenya and Sindarin are defined in the
Latin phonemes, and for now we’re sticking to those, so some diphthongs
just get TODOs for now. Also, we’re temporarily using the same phoneme
for ⟨ae⟩/⟨ai⟩ and ⟨oe⟩/⟨oi⟩, which should really be different (though
Appendix E of The Lord of the Rings notes that ⟨ae⟩ and ⟨oe⟩ don’t have
close English equivalents, and that they “may be pronounced as ai, oi”).
2021-07-18 13:27:26 +02:00
Lucas Werkmeister ee7e057821 Fix extra-long vowels in Elvish languages
A circumflex “specially prolonged” vowels; according to Appendix E of
The Lord of the Rings, only in Sindarin, but the Ambar Eldaron Quenya
Dictionary [1] also has some very few circumflex words (sû, lîs), so
let’s support the circumflex in Quenya as well. Marking extra-long
vowels with two colons seems to work well and is also done in several
other languages.

[1]: https://ambar-eldaron.com/telechargements/quenya-engl-A4.pdf
2021-07-18 13:27:26 +02:00
Lucas Werkmeister db971c8201 Fix long vowels in Elvish languages
Long vowels, marked with an acute accent or a circumflex, are longer
than short vowels (duh) and always make a heavy syllable (i.e. we don’t
include the rules to move stress to the previous syllable). In Quenya,
⟨é⟩ and ⟨ó⟩ are “tenser and ‘closer’” than the short vowels, according
to Appendix E of The Lord of the Rings, while in Sindarin they’re
supposed to be the same; the phonemes we inherit from Latin seem to
reproduce this reasonably well for Quenya, and for now we use them for
Sindarin too, which works nicely for the most common Sindarin word with
a long o, “Lothlórien” (because Lórien is actually a Quenya name, and
therefore I assume *that* ⟨ó⟩ should actually be /o/ and not /ɔ/). I
might adjust the phonemes later (at which point Lothlórien will
presumably have to go in sjn_list).
2021-07-18 13:27:26 +02:00
Lucas Werkmeister d201e17418 Fix stress of Elvish ⟨ch⟩, ⟨dh⟩, ⟨th⟩
In Elvish languages, ⟨ch⟩, ⟨dh⟩, and ⟨th⟩ count as single consonants for
the purposes of stress, since they represent single letters in the
original scripts. The easiest way to implement this is to replace them
with single letters at the beginning – ⟨ð⟩ for ⟨dh⟩ and ⟨þ⟩ for ⟨th⟩ are
natural, and ⟨x⟩ for ⟨ch⟩ also makes some sense, though it means we need
to replace real ⟨x⟩ first (it’s not mentioned in Appendix E of The Lord
of the Rings, but does occur in some Quenya words, notably Helcaraxë).
Real ⟨x⟩ is pronounced like /ks/, but of course we need to spell that as
⟨cs⟩, since ⟨k⟩ does not occur in Elvish languages.
2021-07-18 13:27:26 +02:00
Lucas Werkmeister 35defe2c77 Add first tests for Elvish languages
This consists of the test cases from my Tolkien Stress Analyser [1],
minus the ones that aren’t properly handled yet for various reasons. I
expect to add more words here with most future commits for Elvish
languages.

[1]: https://github.com/lucaswerkmeister/tolkien-stress/blob/gh-pages/test/index.test.mjs
2021-07-18 13:27:26 +02:00
Lucas Werkmeister 3fa62f0ee3 Add basic stress rules for Quenya and Sindarin
The Elvish languages have the same general stress rule as Latin [1]:
stress falls on the penultimate syllable if that is heavy (contains a
long vowel, a diphthong, or a vowel followed by two or more consonants),
otherwise on the antepenultimate syllable. For Latin, espeak-ng
implements this by declaring “penultimate syllable” as the general
stress rule in espeak-ng-data/, and then adding rules in dictsource/
that match light syllables and move the primary stress to the previous
syllable, i.e. the antepenultimate one. We use the same basic principle
for the Elvish languages here (but using the terms “heavy” and “light”
rather than “weak” and “strong” like in the Latin files).

Note that this doesn’t fully implement the stress rules yet: we have no
concept of diphthongs, long vowels aren’t really properly handled yet,
and we also still count ⟨ch⟩, ⟨dh⟩, ⟨th⟩ as two consonants rather than
one as it should be. This will be improved separately (I prefer doing
this in small incremental steps).

[1]: https://menegroth.github.io/stress-in-sindarin.html
2021-07-18 13:27:26 +02:00
Lucas Werkmeister 74985f570f Fix rule for Sindarin initial ⟨i⟩
Sindarin ⟨i⟩ is only pronounced like ⟨j⟩ before another vowel and *at
the beginning of a word*. “Galadriel” does not have a /j/ sound.
2021-07-18 13:27:26 +02:00
Lucas Werkmeister b892a8b8c3 Add basic Quenya rules
Copied from Sindarin with only a few changes so far: initial ⟨i⟩ is not
special, ⟨qu⟩ exists, and ⟨y⟩ is a consonant.
2021-07-18 13:27:26 +02:00
Lucas Werkmeister a1c79f4c72 Add basic Sindarin rules
Also, inherit the Elvish phonemes from Latin, because Esperanto doesn’t
have /y/. (Quenya doesn’t need that – ⟨y⟩ is a consonant there – so
maybe I’ll separate their phonemes at some point. For now, Latin works
well enough for both as far as I can tell.)
2021-07-18 13:27:26 +02:00
Lucas Werkmeister beeac74300 Initial setup for Elvish languages
This prepares the languages of Quenya and Sindarin, setting up their
infrastructure without declaring a lot of rules yet – just enough for
“Eä” (a Quenya word, but I can’t think of a similarly simple one for
Sindarin). Phonemes are inherited from Esperanto for now.
2021-07-18 13:27:26 +02:00
Juho Hiltunen ed37d4533e fix a type in Changelog (Chuvash = cv, not cu) 2021-07-18 11:36:09 +03:00
jaacoppi 93f034a211 Merge pull request #980
Add missing phsource/ files to Makefile.am
2021-07-18 11:35:23 +03:00
Lucas Werkmeister c85d497e7f Add missing phsource/ files to Makefile.am
Found with the following script:

    for file in phsource/ph_*; do
        grep -qF "$file" Makefile.am || echo "$file missing!";
    done

I’ve left out one of the files highlighted by that script: ph_burmese
exists, but isn’t actually used by phsource/phonemes (there’s no
`include` directive for it).
2021-07-16 21:08:30 +02:00
jaacoppi 4c7d8a013a Merge pull request #978
smj: cleaned commented lines

Also closes #927.
2021-07-12 18:37:34 +03:00
katrihiovain 45b7b8cc37 cleaned commented lines to help with debugging 2021-07-12 17:53:59 +03:00
Juho Hiltunen 1a5db2f498 code cleanup: move dict_min_size handline in LoadVoice(). 2021-07-11 19:43:04 +03:00
Juho Hiltunen 0e7202f9a9 code cleanup: remove unused language option l_length_mods.
It is not used by any language. There is no need to check for it in
LoadVoice().
2021-07-11 19:09:44 +03:00
Juho Hiltunen 863655903a code cleanup: move SetLengthMods to setlengths.c 2021-07-11 17:05:00 +03:00
Juho Hiltunen 72434616b0 code cleanup: move voice->freq2 and voice->height2 handline in LoadVoice().
VoiceReset() now sets them initially. VoiceFormant() changes them if
"formant" option is used.
2021-07-11 16:30:17 +03:00
Valdis Vitolins 49930f48ed Update changelog 2021-07-09 12:59:29 +03:00
Valdis Vitolins f2346c44ed Merge pull request #968 2021-07-09 12:53:56 +03:00
Valdis Vitolins c8ab966138 Merge pull request #958 2021-07-09 12:41:28 +03:00
Valdis Vitolins 53cdca2928 Merge pull request #957 2021-07-09 12:33:49 +03:00
Valdis Vitolins 0f48665868 Exclude Android libraries from executable bit test 2021-07-09 12:33:37 +03:00
jaacoppi fc3cd5166a Merge pull request #976
en: Add English pronounciation of "Krzysztof" to en_dict
2021-07-03 13:43:59 +03:00
Krzysztof Drewniak a8a804fc59 Add English pronounciation of "Krzysztof" to en_dict
This commit adds the usual English pronunciation of my name to the English dictionary.

We could, alternatively, add the native pronunciation, `kS'I2StOf` (or the closest approximation to it I could get out of the English synthesizer), but I'm not sure what the policy on that sort of thing is within the project.
2021-07-02 22:52:39 -05:00
Juho Hiltunen f269acf22c code cleanup: remove unneeded switch case for stress_rule = 10.
There are nolanguages that use stress_rule = 10.
2021-06-29 15:55:05 +03:00
Juho Hiltunen c6ef7061ca code cleanup: use #defines for stress positions.
The #defines should be renamed to better convey their meaning.
2021-06-29 15:54:45 +03:00
Juho Hiltunen 660f1403a2 Update changelog 2021-06-29 15:47:06 +03:00
Juho Hiltunen 38c0bae42f Merge pull request #973 2021-06-29 15:22:50 +03:00
Juho Hiltunen b74ad1777d eu: remove duplicate stress_rule from tr_languages.c
It's already set in espeak-ng-data/lang/eu
2021-06-29 15:14:46 +03:00
agonzalezd fa476bb239 eu: Updated intervocalic j phoneme in Basque 2021-06-29 15:14:43 +03:00
agonzalezd 1320bfe5f9 eu: Passed test/language-pronunciation.test, removed hardcoded stress_rule in Basque 2021-06-29 15:14:38 +03:00
agonzalezd 748ae2e69c eu: Updated rr and y for ES 2021-06-29 15:14:34 +03:00
agonzalezd 92c04bad3d eu: Added clarifying comment 2021-06-29 15:14:31 +03:00
agonzalezd 2fb981855b eu: Updated Basque phonetics and stress rule 2021-06-29 15:14:26 +03:00
Alexander Epaneshnikov 6dd5fad143 add cmn and yue to the .gitignore 2021-06-29 15:14:25 +03:00
jaacoppi ab11439b18 Merge pull request #959
add cmn and yue to the .gitignore
2021-06-19 06:42:12 +03:00
Minas Tirith Citizen 3dfd750bf6 removed another space
fix compilation error within the testsuite
2021-06-16 15:41:09 +02:00
Minas Tirith Citizen d44f6e0c99 remove space between -D and PATH_ESPEAK_DATA
fixed a wrong compilation parameter
2021-06-16 15:34:11 +02:00
Minas Tirith Citizen eaa553748e fix conditional for GRADLE
without this fix (assuming it does, what the original author intended to check for), the configure script spits out an error:

checking for ndk-build                                                                              no
checking for gradle                                                                                 no
${_source}/configure: line 13806: 0: command not found
checking if zsp-gcc supports C99 without any flags                                                  yes
checking if zsp-gcc supports C99 with the -std=c99 flag                                             yes

that's because the condition in AM_CONDITIONAL is expected to be a valid shell expression for an if-statement, not just plain value:

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gradle" >&5
printf %s "checking for gradle... " >&6; }
if test -e ${GRADLE} ; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GRADLE}" >&5
printf "%s\n" "${GRADLE}" >&6; }
     if 1; then
  HAVE_GRADLE_TRUE=
  HAVE_GRADLE_FALSE='#'
else
  HAVE_GRADLE_TRUE='#'
  HAVE_GRADLE_FALSE=
fi

else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
     if 0; then
  HAVE_GRADLE_TRUE=
  HAVE_GRADLE_FALSE='#'
else
  HAVE_GRADLE_TRUE='#'
  HAVE_GRADLE_FALSE=
fi

fi
2021-06-16 15:22:12 +02:00
Juho Hiltunen 4f9664af0a Merge pull request #965 2021-06-12 15:35:12 +03:00
Juho Hiltunen 48971d484c Update changelog 2021-06-12 13:06:52 +03:00
SeanTolstoyevski 2fe8a1898f tr: Update tr_listx
Some words have been added to the dictionary for street language. But Espeak really mispronounced them.

I removed the mispronounced words.
And I wrote a better pronunciation rule for the following words:
* bağışlamak ba:@@Sla'mak
* bağışlayın ba:@@S'laj@n

These words should be lengthened by 1.5 in the first letter "i", in a subtle tone. (letter "ğ" is the reason for this. Normally there is no such rule.)
Previously, the letter "ı" (305) here was ignored.
Although the street language for Turkish looks like this, it is not. Since we have a dynamic language, it is not possible to implement all of them.

Therefore, I request you to accept these changes.
The tests were done on Windows. Pronunciations improved.
2021-06-12 13:06:47 +03:00
Łukasz Golonka 289d9d865e Revert "code cleanup: change global int current_phoneme table to static"
This works around issue 915
2021-06-07 17:49:20 +03:00