Commit Graph
4641 Commits
Author SHA1 Message Date
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
Juho Hiltunen 4d0a4df86b Revert "code cleanup: remove unnecessary current_voice_id in readclause.c"
See #950.
2021-06-07 17:43:28 +03:00
Juho Hiltunen 16f30f6522 fi: small changes 2021-06-06 16:30:41 +03:00
Juho Hiltunen 92b797a0e1 fi: changes to abbreviations 2021-06-06 16:30:10 +03:00
Juho Hiltunen 67086dc1da fi: add exceptions to doubling with -sti 2021-06-06 16:18:10 +03:00
Juho Hiltunen b513534995 fi: remove the english pronunciation of some loan words 2021-06-06 16:18:10 +03:00
Alexander Epaneshnikov 66d7f0de9c add cmn and yue to the .gitignore 2021-06-02 20:32:25 +03:00
Peter Vágner 8003c0e478 Android: add all missing voice variants to the variant selection 2021-05-30 22:29:42 +02:00