From ecd0902a10ce92180dd1ebc5a88d4882d37f58b7 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 21 Dec 2017 21:58:46 +0000 Subject: [PATCH] Revert "Move most stress rule definitions from tr_languages.c to language files" This reverts commit 0f5520452227f2c6de25b1f4cd87ca35fac67fb5. This breaks using voice files like mb-de5-en. It could also use named values for the stress rules (e.g. 'first-syllable'). --- docs/voices.md | 3 +- espeak-ng-data/lang/aav/vi | 1 - espeak-ng-data/lang/art/eo | 1 - espeak-ng-data/lang/art/ia | 1 - espeak-ng-data/lang/art/jbo | 1 - espeak-ng-data/lang/bat/lt | 1 - espeak-ng-data/lang/bat/lv | 1 - espeak-ng-data/lang/bnt/sw | 1 - espeak-ng-data/lang/bnt/tn | 1 - espeak-ng-data/lang/ccs/ka | 1 - espeak-ng-data/lang/cel/cy | 1 - espeak-ng-data/lang/cel/ga | 1 - espeak-ng-data/lang/cel/gd | 1 - espeak-ng-data/lang/cus/om | 1 - espeak-ng-data/lang/dra/kn | 1 - espeak-ng-data/lang/dra/ml | 1 - espeak-ng-data/lang/dra/ta | 1 - espeak-ng-data/lang/dra/te | 1 - espeak-ng-data/lang/esx/kl | 1 - espeak-ng-data/lang/eu | 1 - espeak-ng-data/lang/gmq/da | 1 - espeak-ng-data/lang/gmq/is | 1 - espeak-ng-data/lang/gmq/nb | 1 - espeak-ng-data/lang/gmq/sv | 1 - espeak-ng-data/lang/gmw/af | 1 - espeak-ng-data/lang/gmw/de | 1 - espeak-ng-data/lang/gmw/en | 1 - espeak-ng-data/lang/gmw/nl | 1 - espeak-ng-data/lang/grk/el | 1 - espeak-ng-data/lang/grk/grc | 1 - espeak-ng-data/lang/inc/as | 2 -- espeak-ng-data/lang/inc/bn | 1 - espeak-ng-data/lang/inc/bpy | 1 - espeak-ng-data/lang/inc/gu | 1 - espeak-ng-data/lang/inc/hi | 1 - espeak-ng-data/lang/inc/mr | 1 - espeak-ng-data/lang/inc/ne | 1 - espeak-ng-data/lang/inc/or | 1 - espeak-ng-data/lang/inc/pa | 1 - espeak-ng-data/lang/inc/si | 1 - espeak-ng-data/lang/ine/hy | 1 - espeak-ng-data/lang/ine/sq | 2 +- espeak-ng-data/lang/ira/ku | 2 +- espeak-ng-data/lang/ko | 1 - espeak-ng-data/lang/poz/id | 2 +- espeak-ng-data/lang/poz/ms | 2 -- espeak-ng-data/lang/roa/an | 1 - espeak-ng-data/lang/roa/ca | 1 - espeak-ng-data/lang/roa/es | 1 - espeak-ng-data/lang/roa/fr | 1 - espeak-ng-data/lang/roa/it | 1 - espeak-ng-data/lang/roa/pap | 2 +- espeak-ng-data/lang/roa/pt | 1 - espeak-ng-data/lang/roa/pt-BR | 2 +- espeak-ng-data/lang/sai/gn | 1 - espeak-ng-data/lang/sem/am | 1 - espeak-ng-data/lang/sem/mt | 1 - espeak-ng-data/lang/trk/az | 1 - espeak-ng-data/lang/trk/tr | 1 - espeak-ng-data/lang/trk/tt | 1 - espeak-ng-data/lang/urj/fi | 1 - espeak-ng-data/lang/urj/hu | 2 +- espeak-ng-data/lang/zle/ru | 1 - espeak-ng-data/lang/zls/bg | 1 - espeak-ng-data/lang/zls/bs | 1 - espeak-ng-data/lang/zls/hr | 1 - espeak-ng-data/lang/zls/mk | 1 - espeak-ng-data/lang/zls/sl | 1 - espeak-ng-data/lang/zls/sr | 1 - espeak-ng-data/lang/zlw/cs | 1 - espeak-ng-data/lang/zlw/pl | 1 - espeak-ng-data/lang/zlw/sk | 1 - src/libespeak-ng/tr_languages.c | 55 +++++++++++++++++++++++++++++++++ 73 files changed, 63 insertions(+), 74 deletions(-) diff --git a/docs/voices.md b/docs/voices.md index 55c10438..bb16c752 100644 --- a/docs/voices.md +++ b/docs/voices.md @@ -384,7 +384,8 @@ Four integer parameters. These correspond to: 3. langopts->unstressed_wd1 (stress for $u word of 1 syllable) 4. langopts->unstressed_wd2 (stress for $u word of >1 syllable) -All parameters are not required. For example, "stressRule 2 1" is valid. +If a value is not given, it defaults to zero. For example: +"stressRule 2" is equal to "stressRule 2 0 0 0" ### stressLength diff --git a/espeak-ng-data/lang/aav/vi b/espeak-ng-data/lang/aav/vi index c11179b4..2ab8767c 100644 --- a/espeak-ng-data/lang/aav/vi +++ b/espeak-ng-data/lang/aav/vi @@ -3,4 +3,3 @@ language vi words 1 pitch 80 118 -stressRule 0 diff --git a/espeak-ng-data/lang/art/eo b/espeak-ng-data/lang/art/eo index fa832927..e47501fa 100644 --- a/espeak-ng-data/lang/art/eo +++ b/espeak-ng-data/lang/art/eo @@ -2,4 +2,3 @@ name Esperanto language eo apostrophe 2 -stressRule 2 diff --git a/espeak-ng-data/lang/art/ia b/espeak-ng-data/lang/art/ia index 0c1d1840..6a147287 100644 --- a/espeak-ng-data/lang/art/ia +++ b/espeak-ng-data/lang/art/ia @@ -1,3 +1,2 @@ name Interlingua language ia -stressRule 2 diff --git a/espeak-ng-data/lang/art/jbo b/espeak-ng-data/lang/art/jbo index 5e8d7dcd..70164f70 100644 --- a/espeak-ng-data/lang/art/jbo +++ b/espeak-ng-data/lang/art/jbo @@ -3,4 +3,3 @@ language jbo speed 80 // speed adjustment, percentage letterVowel y -stressRule 2 diff --git a/espeak-ng-data/lang/bat/lt b/espeak-ng-data/lang/bat/lt index a10c28c5..7cdb1930 100644 --- a/espeak-ng-data/lang/bat/lt +++ b/espeak-ng-data/lang/bat/lt @@ -1,3 +1,2 @@ name Lithuanian language lt -stressRule 2 diff --git a/espeak-ng-data/lang/bat/lv b/espeak-ng-data/lang/bat/lv index 3f272381..159d5433 100644 --- a/espeak-ng-data/lang/bat/lv +++ b/espeak-ng-data/lang/bat/lv @@ -11,4 +11,3 @@ formant 0 95 100 100 -5 tone 150 220 450 255 750 20 3500 255 stressAmp 12 10 8 8 0 0 18 15 stressLength 160 140 200 140 0 0 240 180 -stressRule 0 diff --git a/espeak-ng-data/lang/bnt/sw b/espeak-ng-data/lang/bnt/sw index 4130e071..d1a4db33 100644 --- a/espeak-ng-data/lang/bnt/sw +++ b/espeak-ng-data/lang/bnt/sw @@ -2,4 +2,3 @@ name Swahili language sw status testing -stressRule 2 diff --git a/espeak-ng-data/lang/bnt/tn b/espeak-ng-data/lang/bnt/tn index bb9e50cd..8b484e43 100644 --- a/espeak-ng-data/lang/bnt/tn +++ b/espeak-ng-data/lang/bnt/tn @@ -2,4 +2,3 @@ name Setswana language tn status testing -stressRule 2 diff --git a/espeak-ng-data/lang/ccs/ka b/espeak-ng-data/lang/ccs/ka index 65f85e3b..3a457c87 100644 --- a/espeak-ng-data/lang/ccs/ka +++ b/espeak-ng-data/lang/ccs/ka @@ -1,3 +1,2 @@ name Georgian language ka -stressRule 0 diff --git a/espeak-ng-data/lang/cel/cy b/espeak-ng-data/lang/cel/cy index 4ef03ddd..dc51c1e8 100644 --- a/espeak-ng-data/lang/cel/cy +++ b/espeak-ng-data/lang/cel/cy @@ -4,4 +4,3 @@ language cy intonation 4 letterVowel w letterVowel y -stressRule 2 diff --git a/espeak-ng-data/lang/cel/ga b/espeak-ng-data/lang/cel/ga index 3162aa18..9fea2ae7 100644 --- a/espeak-ng-data/lang/cel/ga +++ b/espeak-ng-data/lang/cel/ga @@ -2,4 +2,3 @@ name Gaelic (Irish) language ga dictrules 1 // fix for eclipsis -stressRule 0 diff --git a/espeak-ng-data/lang/cel/gd b/espeak-ng-data/lang/cel/gd index 4bf192fd..e416f6fa 100644 --- a/espeak-ng-data/lang/cel/gd +++ b/espeak-ng-data/lang/cel/gd @@ -2,4 +2,3 @@ name Gaelic (Scottish) language gd status testing -stressRule 0 diff --git a/espeak-ng-data/lang/cus/om b/espeak-ng-data/lang/cus/om index 0c738169..1d6b396d 100644 --- a/espeak-ng-data/lang/cus/om +++ b/espeak-ng-data/lang/cus/om @@ -2,4 +2,3 @@ name Oromo language om status testing -stressRule 2 diff --git a/espeak-ng-data/lang/dra/kn b/espeak-ng-data/lang/dra/kn index 2e596216..a32732c4 100644 --- a/espeak-ng-data/lang/dra/kn +++ b/espeak-ng-data/lang/dra/kn @@ -3,4 +3,3 @@ language kn intonation 2 //consonants 80 -stressRule 0 diff --git a/espeak-ng-data/lang/dra/ml b/espeak-ng-data/lang/dra/ml index 0a4e946e..92394bbc 100644 --- a/espeak-ng-data/lang/dra/ml +++ b/espeak-ng-data/lang/dra/ml @@ -3,4 +3,3 @@ language ml intonation 2 //consonants 80 -stressRule 13 diff --git a/espeak-ng-data/lang/dra/ta b/espeak-ng-data/lang/dra/ta index 261a593a..aae63348 100644 --- a/espeak-ng-data/lang/dra/ta +++ b/espeak-ng-data/lang/dra/ta @@ -3,4 +3,3 @@ language ta intonation 2 consonants 80 -stressRule 0 diff --git a/espeak-ng-data/lang/dra/te b/espeak-ng-data/lang/dra/te index 825ce49c..8acbb187 100644 --- a/espeak-ng-data/lang/dra/te +++ b/espeak-ng-data/lang/dra/te @@ -5,4 +5,3 @@ status testing intonation 2 //consonants 80 -stressRule 0 diff --git a/espeak-ng-data/lang/esx/kl b/espeak-ng-data/lang/esx/kl index 6750e9aa..e581b588 100644 --- a/espeak-ng-data/lang/esx/kl +++ b/espeak-ng-data/lang/esx/kl @@ -1,4 +1,3 @@ name Greenlandic language kl -stressRule 12 diff --git a/espeak-ng-data/lang/eu b/espeak-ng-data/lang/eu index 805d7c6c..09e8c18b 100644 --- a/espeak-ng-data/lang/eu +++ b/espeak-ng-data/lang/eu @@ -2,4 +2,3 @@ name Basque language eu status testing -stressRule 1 diff --git a/espeak-ng-data/lang/gmq/da b/espeak-ng-data/lang/gmq/da index f61b394a..fd77dbdb 100644 --- a/espeak-ng-data/lang/gmq/da +++ b/espeak-ng-data/lang/gmq/da @@ -3,4 +3,3 @@ language da tunes s2 c2 q2 e2 letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/gmq/is b/espeak-ng-data/lang/gmq/is index 058d2d97..938c9ec0 100644 --- a/espeak-ng-data/lang/gmq/is +++ b/espeak-ng-data/lang/gmq/is @@ -1,4 +1,3 @@ name Icelandic language is letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/gmq/nb b/espeak-ng-data/lang/gmq/nb index 17695a92..d2c78ac8 100644 --- a/espeak-ng-data/lang/gmq/nb +++ b/espeak-ng-data/lang/gmq/nb @@ -6,4 +6,3 @@ dictionary no intonation 4 letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/gmq/sv b/espeak-ng-data/lang/gmq/sv index 2961f105..1724c2e4 100644 --- a/espeak-ng-data/lang/gmq/sv +++ b/espeak-ng-data/lang/gmq/sv @@ -1,4 +1,3 @@ name Swedish language sv letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/gmw/af b/espeak-ng-data/lang/gmw/af index 7655f2bd..fb2ce120 100644 --- a/espeak-ng-data/lang/gmw/af +++ b/espeak-ng-data/lang/gmw/af @@ -7,4 +7,3 @@ status mature roughness 0 pitch 63 120 letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/gmw/de b/espeak-ng-data/lang/gmw/de index ea2da454..31a1dc23 100644 --- a/espeak-ng-data/lang/gmw/de +++ b/espeak-ng-data/lang/gmw/de @@ -2,4 +2,3 @@ name German language de letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/gmw/en b/espeak-ng-data/lang/gmw/en index 1668247a..f23fb531 100644 --- a/espeak-ng-data/lang/gmw/en +++ b/espeak-ng-data/lang/gmw/en @@ -6,4 +6,3 @@ maintainer Reece H. Dunn status mature tunes s1 c1 q1 e1 -stressRule 0 diff --git a/espeak-ng-data/lang/gmw/nl b/espeak-ng-data/lang/gmw/nl index af41e38c..b0711137 100644 --- a/espeak-ng-data/lang/gmw/nl +++ b/espeak-ng-data/lang/gmw/nl @@ -1,4 +1,3 @@ name Dutch language nl letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/grk/el b/espeak-ng-data/lang/grk/el index 0b6e540c..548a01bc 100644 --- a/espeak-ng-data/lang/grk/el +++ b/espeak-ng-data/lang/grk/el @@ -1,3 +1,2 @@ name Greek language el -stressRule 2 diff --git a/espeak-ng-data/lang/grk/grc b/espeak-ng-data/lang/grk/grc index f700818f..baa8b2c6 100644 --- a/espeak-ng-data/lang/grk/grc +++ b/espeak-ng-data/lang/grk/grc @@ -2,6 +2,5 @@ name Greek (Ancient) language grc stressLength 170 170 190 190 0 0 230 240 -stressRule 2 dictrules 1 words 3 diff --git a/espeak-ng-data/lang/inc/as b/espeak-ng-data/lang/inc/as index 552c6a7f..23991ad7 100644 --- a/espeak-ng-data/lang/inc/as +++ b/espeak-ng-data/lang/inc/as @@ -2,5 +2,3 @@ name Assamese language as status testing - -stressRule 0 diff --git a/espeak-ng-data/lang/inc/bn b/espeak-ng-data/lang/inc/bn index a48f5926..c7918026 100644 --- a/espeak-ng-data/lang/inc/bn +++ b/espeak-ng-data/lang/inc/bn @@ -1,3 +1,2 @@ name Bengali language bn -stressRule 0 diff --git a/espeak-ng-data/lang/inc/bpy b/espeak-ng-data/lang/inc/bpy index 9a8e9cf5..b63bc8d1 100644 --- a/espeak-ng-data/lang/inc/bpy +++ b/espeak-ng-data/lang/inc/bpy @@ -1,3 +1,2 @@ name Bishnupriya Manipuri language bpy -stressRule 0 diff --git a/espeak-ng-data/lang/inc/gu b/espeak-ng-data/lang/inc/gu index 4cf1353c..fcdacd21 100644 --- a/espeak-ng-data/lang/inc/gu +++ b/espeak-ng-data/lang/inc/gu @@ -2,4 +2,3 @@ name Gujarati language gu status testing -stressRule 2 diff --git a/espeak-ng-data/lang/inc/hi b/espeak-ng-data/lang/inc/hi index eff8e129..16ea3892 100644 --- a/espeak-ng-data/lang/inc/hi +++ b/espeak-ng-data/lang/inc/hi @@ -1,3 +1,2 @@ name Hindi language hi -stressRule 6 diff --git a/espeak-ng-data/lang/inc/mr b/espeak-ng-data/lang/inc/mr index 7d10f170..d9181f90 100644 --- a/espeak-ng-data/lang/inc/mr +++ b/espeak-ng-data/lang/inc/mr @@ -2,4 +2,3 @@ name Marathi language mr status testing -stressRule 6 diff --git a/espeak-ng-data/lang/inc/ne b/espeak-ng-data/lang/inc/ne index 2dcb43f6..4b64cc2b 100644 --- a/espeak-ng-data/lang/inc/ne +++ b/espeak-ng-data/lang/inc/ne @@ -2,4 +2,3 @@ name Nepali language ne dictrules 1 -stressRule 6 diff --git a/espeak-ng-data/lang/inc/or b/espeak-ng-data/lang/inc/or index aaca7deb..95a990ec 100644 --- a/espeak-ng-data/lang/inc/or +++ b/espeak-ng-data/lang/inc/or @@ -2,4 +2,3 @@ name Oriya language or status testing -stressRule 6 diff --git a/espeak-ng-data/lang/inc/pa b/espeak-ng-data/lang/inc/pa index 636f0c4f..0e9552d3 100644 --- a/espeak-ng-data/lang/inc/pa +++ b/espeak-ng-data/lang/inc/pa @@ -1,3 +1,2 @@ name Punjabi language pa -stressRule 6 diff --git a/espeak-ng-data/lang/inc/si b/espeak-ng-data/lang/inc/si index 5ddfad09..3f877191 100644 --- a/espeak-ng-data/lang/inc/si +++ b/espeak-ng-data/lang/inc/si @@ -4,4 +4,3 @@ language si status testing intonation 2 -stressRule 0 diff --git a/espeak-ng-data/lang/ine/hy b/espeak-ng-data/lang/ine/hy index 60199cd3..ee0be2fe 100644 --- a/espeak-ng-data/lang/ine/hy +++ b/espeak-ng-data/lang/ine/hy @@ -1,4 +1,3 @@ name Armenian (East Armenia) language hy language hy-arevela -stressRule 3 diff --git a/espeak-ng-data/lang/ine/sq b/espeak-ng-data/lang/ine/sq index 3723976c..3cd293d5 100644 --- a/espeak-ng-data/lang/ine/sq +++ b/espeak-ng-data/lang/ine/sq @@ -1,6 +1,6 @@ name Albanian language sq letterVowel y -stressRule 3 + // add this line to remove 'ë' at the end of words // replace 00 @/ NULL diff --git a/espeak-ng-data/lang/ira/ku b/espeak-ng-data/lang/ira/ku index 6d54248e..b26bca25 100644 --- a/espeak-ng-data/lang/ira/ku +++ b/espeak-ng-data/lang/ira/ku @@ -2,4 +2,4 @@ name Kurdish language ku //words 1 48 -stressRule 7 + diff --git a/espeak-ng-data/lang/ko b/espeak-ng-data/lang/ko index dda415fd..f03ba091 100644 --- a/espeak-ng-data/lang/ko +++ b/espeak-ng-data/lang/ko @@ -3,4 +3,3 @@ language ko pitch 80 118 intonation 2 -stressRule 8 diff --git a/espeak-ng-data/lang/poz/id b/espeak-ng-data/lang/poz/id index a7469d3d..d300372f 100644 --- a/espeak-ng-data/lang/poz/id +++ b/espeak-ng-data/lang/poz/id @@ -3,5 +3,5 @@ language id stressLength 160 200 180 180 0 0 220 240 stressAmp 16 18 18 18 0 0 22 21 -stressRule 2 + consonants 80 80 diff --git a/espeak-ng-data/lang/poz/ms b/espeak-ng-data/lang/poz/ms index 78fdb3ff..a90a18b1 100644 --- a/espeak-ng-data/lang/poz/ms +++ b/espeak-ng-data/lang/poz/ms @@ -7,7 +7,6 @@ translator id stressLength 160 200 180 180 0 0 220 240 stressAmp 16 18 18 18 0 0 22 21 -stressRule 2 intonation 3 // Less intonation, and comma does not raise the pitch. // Nuance - Peninsula Malaysia @@ -15,4 +14,3 @@ intonation 3 // Less intonation, and comma does not raise the pitch. // (only the last phoneme of a word, only in unstressed syllables) consonants 80 80 - diff --git a/espeak-ng-data/lang/roa/an b/espeak-ng-data/lang/roa/an index 43f1005e..dc75aa8e 100644 --- a/espeak-ng-data/lang/roa/an +++ b/espeak-ng-data/lang/roa/an @@ -1,3 +1,2 @@ name Aragonese language an -stressRule 2 diff --git a/espeak-ng-data/lang/roa/ca b/espeak-ng-data/lang/roa/ca index 331461b3..54af356f 100644 --- a/espeak-ng-data/lang/roa/ca +++ b/espeak-ng-data/lang/roa/ca @@ -1,3 +1,2 @@ name Catalan language ca -stressRule 2 diff --git a/espeak-ng-data/lang/roa/es b/espeak-ng-data/lang/roa/es index 747b66d4..dc90e41c 100644 --- a/espeak-ng-data/lang/roa/es +++ b/espeak-ng-data/lang/roa/es @@ -2,4 +2,3 @@ name Spanish (Spain) language es dictrules 1 tunes s6 c6 q6 e6 -stressRule 2 diff --git a/espeak-ng-data/lang/roa/fr b/espeak-ng-data/lang/roa/fr index 5e3e055f..e26c916d 100644 --- a/espeak-ng-data/lang/roa/fr +++ b/espeak-ng-data/lang/roa/fr @@ -5,4 +5,3 @@ language fr dictrules 1 tunes s3 c3 q3 e3 letterVowel y -stressRule 3 diff --git a/espeak-ng-data/lang/roa/it b/espeak-ng-data/lang/roa/it index 08dbd4a5..092aebe6 100644 --- a/espeak-ng-data/lang/roa/it +++ b/espeak-ng-data/lang/roa/it @@ -6,4 +6,3 @@ status mature tunes s4 c4 q4 e4 letterVowel y -stressRule 2 diff --git a/espeak-ng-data/lang/roa/pap b/espeak-ng-data/lang/roa/pap index 05c185a5..b9e07fe0 100644 --- a/espeak-ng-data/lang/roa/pap +++ b/espeak-ng-data/lang/roa/pap @@ -4,4 +4,4 @@ language pap status testing phonemes base2 -stressRule 3 + diff --git a/espeak-ng-data/lang/roa/pt b/espeak-ng-data/lang/roa/pt index 8ed17e6b..0a2f181c 100644 --- a/espeak-ng-data/lang/roa/pt +++ b/espeak-ng-data/lang/roa/pt @@ -6,4 +6,3 @@ phonemes pt-pt dictrules 1 intonation 2 letterVowel y -stressRule 3 diff --git a/espeak-ng-data/lang/roa/pt-BR b/espeak-ng-data/lang/roa/pt-BR index 4fe08497..52b850c3 100644 --- a/espeak-ng-data/lang/roa/pt-BR +++ b/espeak-ng-data/lang/roa/pt-BR @@ -4,4 +4,4 @@ language pt 6 dictrules 2 stressLength 200 115 230 230 0 0 250 270 -stressRule 3 + diff --git a/espeak-ng-data/lang/sai/gn b/espeak-ng-data/lang/sai/gn index 5e89b32c..6e183e5a 100644 --- a/espeak-ng-data/lang/sai/gn +++ b/espeak-ng-data/lang/sai/gn @@ -2,4 +2,3 @@ name Guarani language gn dictrules 1 words 0 1 -stressRule 3 diff --git a/espeak-ng-data/lang/sem/am b/espeak-ng-data/lang/sem/am index 41ff2248..87ed65a3 100644 --- a/espeak-ng-data/lang/sem/am +++ b/espeak-ng-data/lang/sem/am @@ -2,4 +2,3 @@ name Amharic language am status testing -stressRule 0 diff --git a/espeak-ng-data/lang/sem/mt b/espeak-ng-data/lang/sem/mt index 3ba8553b..ea8a3fce 100644 --- a/espeak-ng-data/lang/sem/mt +++ b/espeak-ng-data/lang/sem/mt @@ -2,4 +2,3 @@ name Maltese language mt status testing -stressRule 2 diff --git a/espeak-ng-data/lang/trk/az b/espeak-ng-data/lang/trk/az index bc981dbb..fd9e4f33 100644 --- a/espeak-ng-data/lang/trk/az +++ b/espeak-ng-data/lang/trk/az @@ -2,4 +2,3 @@ name Azerbaijani language az status testing -stressRule 7 diff --git a/espeak-ng-data/lang/trk/tr b/espeak-ng-data/lang/trk/tr index 37f844bc..1d5cbc49 100644 --- a/espeak-ng-data/lang/trk/tr +++ b/espeak-ng-data/lang/trk/tr @@ -1,3 +1,2 @@ name Turkish language tr -stressRule 7 diff --git a/espeak-ng-data/lang/trk/tt b/espeak-ng-data/lang/trk/tt index 640b084a..10ebba4c 100644 --- a/espeak-ng-data/lang/trk/tt +++ b/espeak-ng-data/lang/trk/tt @@ -1,3 +1,2 @@ name Tatar language tt -stressRule 3 diff --git a/espeak-ng-data/lang/urj/fi b/espeak-ng-data/lang/urj/fi index dbed868f..0a944a77 100644 --- a/espeak-ng-data/lang/urj/fi +++ b/espeak-ng-data/lang/urj/fi @@ -1,4 +1,3 @@ name Finnish language fi letterVowel y -stressRule 0 diff --git a/espeak-ng-data/lang/urj/hu b/espeak-ng-data/lang/urj/hu index 9a3b4427..adb35805 100644 --- a/espeak-ng-data/lang/urj/hu +++ b/espeak-ng-data/lang/urj/hu @@ -3,4 +3,4 @@ language hu option bracket 0 0 pitch 81 117 letterVowel y -stressRule 0 + diff --git a/espeak-ng-data/lang/zle/ru b/espeak-ng-data/lang/zle/ru index 39156e20..71a615b8 100644 --- a/espeak-ng-data/lang/zle/ru +++ b/espeak-ng-data/lang/zle/ru @@ -4,4 +4,3 @@ language ru replace 03 a a# dict_min 20000 -stressRule 5 diff --git a/espeak-ng-data/lang/zls/bg b/espeak-ng-data/lang/zls/bg index c2ed39bd..9efaa699 100644 --- a/espeak-ng-data/lang/zls/bg +++ b/espeak-ng-data/lang/zls/bg @@ -3,6 +3,5 @@ language bg stressAmp 13 12 17 17 20 22 22 21 stressLength 180 170 200 200 200 200 210 220 -stressRule 2 letterVowel 0x2a diff --git a/espeak-ng-data/lang/zls/bs b/espeak-ng-data/lang/zls/bs index 3e70df01..4dcaabcc 100644 --- a/espeak-ng-data/lang/zls/bs +++ b/espeak-ng-data/lang/zls/bs @@ -14,4 +14,3 @@ stressAdd 10 10 0 0 0 0 -30 -30 dictrules 3 4 letterVowel y letterVowel r -stressRule 0 diff --git a/espeak-ng-data/lang/zls/hr b/espeak-ng-data/lang/zls/hr index f5ad4af5..3d6214a7 100644 --- a/espeak-ng-data/lang/zls/hr +++ b/espeak-ng-data/lang/zls/hr @@ -15,4 +15,3 @@ stressAdd 10 10 0 0 0 0 -30 -30 dictrules 1 letterVowel y letterVowel r -stressRule 0 diff --git a/espeak-ng-data/lang/zls/mk b/espeak-ng-data/lang/zls/mk index 666104f0..380c20b6 100644 --- a/espeak-ng-data/lang/zls/mk +++ b/espeak-ng-data/lang/zls/mk @@ -1,3 +1,2 @@ name Macedonian language mk -stressRule 4 diff --git a/espeak-ng-data/lang/zls/sl b/espeak-ng-data/lang/zls/sl index 757e6c4b..b7bf01f2 100644 --- a/espeak-ng-data/lang/zls/sl +++ b/espeak-ng-data/lang/zls/sl @@ -2,4 +2,3 @@ name Slovenian language sl status testing -stressRule 2 diff --git a/espeak-ng-data/lang/zls/sr b/espeak-ng-data/lang/zls/sr index 7a3434fb..b9deeea3 100644 --- a/espeak-ng-data/lang/zls/sr +++ b/espeak-ng-data/lang/zls/sr @@ -14,4 +14,3 @@ dictrules 2 4 letterVowel y letterVowel r -stressRule 0 diff --git a/espeak-ng-data/lang/zlw/cs b/espeak-ng-data/lang/zlw/cs index dc418d72..6e2413a4 100644 --- a/espeak-ng-data/lang/zlw/cs +++ b/espeak-ng-data/lang/zlw/cs @@ -2,4 +2,3 @@ name Czech language cs letterVowel y letterVowel r -stressRule 0 diff --git a/espeak-ng-data/lang/zlw/pl b/espeak-ng-data/lang/zlw/pl index 56393b74..09a29334 100644 --- a/espeak-ng-data/lang/zlw/pl +++ b/espeak-ng-data/lang/zlw/pl @@ -3,4 +3,3 @@ language pl intonation 2 letterVowel y -stressRule 2 diff --git a/espeak-ng-data/lang/zlw/sk b/espeak-ng-data/lang/zlw/sk index 24e8e5ee..2db37b03 100644 --- a/espeak-ng-data/lang/zlw/sk +++ b/espeak-ng-data/lang/zlw/sk @@ -2,4 +2,3 @@ name Slovak language sk letterVowel y letterVowel r -stressRule 0 diff --git a/src/libespeak-ng/tr_languages.c b/src/libespeak-ng/tr_languages.c index f857008a..029389b3 100644 --- a/src/libespeak-ng/tr_languages.c +++ b/src/libespeak-ng/tr_languages.c @@ -474,6 +474,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_af[8] = { 170, 140, 220, 220, 0, 0, 250, 270 }; SetupTranslator(tr, stress_lengths_af, NULL); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.vowel_pause = 0x30; tr->langopts.param[LOPT_DIERESES] = 1; tr->langopts.param[LOPT_PREFIXES] = 1; @@ -486,6 +487,7 @@ Translator *SelectTranslator(const char *name) { SetupTranslator(tr, stress_lengths_fr, stress_amps_fr); tr->letter_bits_offset = OFFSET_ETHIOPIC; + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words @@ -508,6 +510,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v) tr->langopts.param[LOPT_REDUCE] = 2; + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_SINGLE_AND | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS; tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator } @@ -523,6 +526,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_bn, stress_amps_bn); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable tr->letter_bits_offset = OFFSET_BENGALI; SetIndicLetters(tr); // call this after setting OFFSET_BENGALI @@ -560,6 +564,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_cy, stress_amps_cy); tr->encoding = ESPEAKNG_ENCODING_ISO_8859_14; + tr->langopts.stress_rule = STRESSPOSN_2R; // 'diminished' is an unstressed final syllable tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; @@ -576,6 +581,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_da[8] = { 160, 140, 200, 200, 0, 0, 220, 230 }; SetupTranslator(tr, stress_lengths_da, NULL); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.param[LOPT_PREFIXES] = 1; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900 | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL; } @@ -585,6 +591,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_de[8] = { 150, 130, 200, 200, 0, 0, 270, 270 }; static const unsigned char stress_amps_de[] = { 20, 20, 20, 20, 20, 22, 22, 20 }; SetupTranslator(tr, stress_lengths_de, stress_amps_de); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.word_gap = 0x8; // don't use linking phonemes tr->langopts.vowel_pause = 0x30; tr->langopts.param[LOPT_PREFIXES] = 1; @@ -613,6 +620,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_en[8] = { 182, 140, 220, 220, 0, 0, 248, 275 }; SetupTranslator(tr, stress_lengths_en, NULL); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = 0x08; tr->langopts.numbers = NUM_HUNDRED_AND | NUM_ROMAN | NUM_1900; tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word @@ -648,6 +656,7 @@ Translator *SelectTranslator(const char *name) SetLetterBits(tr, LETTERGP_Y, el_fvowels); // front vowels: ε η ι υ _ tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; @@ -674,6 +683,7 @@ Translator *SelectTranslator(const char *name) tr->char_plus_apostrophe = eo_char_apostrophe; tr->langopts.vowel_pause = 2; + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.unstressed_wd2 = 2; @@ -693,6 +703,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_es, stress_amps_es); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_2R; // stress last syllable if it doesn't end in vowel or "s" or "n" // 'diminished' is an unstressed final syllable @@ -718,6 +729,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.roman_suffix = utf8_ordinal; } else if (name2 == L_pap) { // stress last syllable unless word ends with a vowel + tr->langopts.stress_rule = STRESSPOSN_1R; tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; } else tr->langopts.param[LOPT_UNPRONOUNCABLE] = 2; // use es_rules for unpronouncable rules @@ -728,6 +740,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_eu[8] = { 200, 200, 200, 200, 0, 0, 210, 230 }; // very weak stress static const unsigned char stress_amps_eu[8] = { 16, 16, 18, 18, 18, 18, 18, 18 }; SetupTranslator(tr, stress_lengths_eu, stress_amps_eu); + tr->langopts.stress_rule = STRESSPOSN_2L; // ?? second syllable, but not on a word-final vowel tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED; tr->langopts.param[LOPT_SUFFIX] = 1; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_VIGESIMAL; @@ -771,6 +784,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_fi, stress_amps_fi); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_2_TO_HEAVY; // move secondary stress from light to a following heavy syllable tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.long_stop = 130; @@ -783,6 +797,7 @@ Translator *SelectTranslator(const char *name) case L('f', 'r'): // french { SetupTranslator(tr, stress_lengths_fr, stress_amps_fr); + tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable @@ -822,6 +837,7 @@ Translator *SelectTranslator(const char *name) tr->encoding = ESPEAKNG_ENCODING_ISCII; tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable tr->langopts.numbers = NUM_SWAP_TENS; tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi @@ -832,6 +848,7 @@ Translator *SelectTranslator(const char *name) else if (name2 == L('g', 'u')) { SetupTranslator(tr, stress_lengths_equal, stress_amps_equal); tr->letter_bits_offset = OFFSET_GUJARATI; + tr->langopts.stress_rule = STRESSPOSN_2R; } else if (name2 == L('n', 'e')) { SetupTranslator(tr, stress_lengths_equal, stress_amps_equal); tr->langopts.break_numbers = 0x2aaaa8; @@ -858,6 +875,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_hr, stress_amps_hr); tr->encoding = ESPEAKNG_ENCODING_ISO_8859_2; + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_NO_2; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.max_initial_consonants = 5; @@ -885,6 +903,7 @@ Translator *SelectTranslator(const char *name) tr->encoding = ESPEAKNG_ENCODING_ISO_8859_2; tr->langopts.vowel_pause = 0x20; + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2 | 0x8000 | S_HYPEN_UNSTRESS; tr->langopts.unstressed_wd1 = 2; tr->langopts.param[LOPT_IT_DOUBLING] = 1; @@ -910,6 +929,7 @@ Translator *SelectTranslator(const char *name) static const char hy_consonants2[] = { 0x45, 0 }; SetupTranslator(tr, stress_lengths_hy, NULL); + tr->langopts.stress_rule = STRESSPOSN_1R; // default stress on final syllable tr->letter_bits_offset = OFFSET_ARMENIAN; memset(tr->letter_bits, 0, sizeof(tr->letter_bits)); @@ -929,6 +949,7 @@ Translator *SelectTranslator(const char *name) static const unsigned char stress_amps_id[8] = { 16, 18, 18, 18, 20, 22, 22, 21 }; SetupTranslator(tr, stress_lengths_id, stress_amps_id); + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.accents = 2; // "capital" after letter name @@ -940,6 +961,7 @@ Translator *SelectTranslator(const char *name) static const wchar_t is_lettergroup_B[] = { 'c', 'f', 'h', 'k', 'p', 't', 'x', 0xfe, 0 }; // voiceless conants, including 'þ' ?? 's' SetupTranslator(tr, stress_lengths_is, NULL); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_NO_2; tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels tr->langopts.param[LOPT_REDUCE] = 2; @@ -958,6 +980,7 @@ Translator *SelectTranslator(const char *name) static const unsigned char stress_amps_it[8] = { 17, 15, 18, 16, 20, 22, 22, 22 }; SetupTranslator(tr, stress_lengths_it, stress_amps_it); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM_ONLY | S_PRIORITY_STRESS; tr->langopts.vowel_pause = 1; tr->langopts.unstressed_wd1 = 0; @@ -979,6 +1002,7 @@ Translator *SelectTranslator(const char *name) static const wchar_t jbo_punct_within_word[] = { '.', ',', '\'', 0x2c8, 0 }; // allow period and comma within a word, also stress marker (from LOPT_CAPS_IN_WORD) SetupTranslator(tr, stress_lengths_jbo, NULL); + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.vowel_pause = 0x20c; // pause before a word which starts with a vowel, or after a word which ends in a consonant tr->punct_within_word = jbo_punct_within_word; tr->langopts.param[LOPT_CAPS_IN_WORD] = 2; // capitals indicate stressed syllables @@ -998,6 +1022,7 @@ Translator *SelectTranslator(const char *name) SetLetterBits(tr, LETTERGP_C, ka_consonants); SetLetterBits(tr, LETTERGP_VOWEL2, ka_vowels); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_NO_2; tr->letter_bits_offset = OFFSET_GEORGIAN; tr->langopts.max_initial_consonants = 7; @@ -1033,6 +1058,7 @@ Translator *SelectTranslator(const char *name) case L('k', 'l'): // Greenlandic { SetupTranslator(tr, stress_lengths_equal, stress_amps_equal); + tr->langopts.stress_rule = 12; tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900 | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL; } @@ -1049,6 +1075,7 @@ Translator *SelectTranslator(const char *name) SetLetterBits(tr, LETTERGP_Y, ko_ivowels); SetLetterBits(tr, LETTERGP_G, (const char *)ko_voiced); + tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.numbers = NUM_OMIT_1_HUNDRED; tr->langopts.numbers2 = NUM2_MYRIADS; @@ -1064,6 +1091,8 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_ku, stress_amps_ku); tr->encoding = ESPEAKNG_ENCODING_ISO_8859_9; + tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable + tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_AND_HUNDRED; tr->langopts.max_initial_consonants = 2; } @@ -1074,6 +1103,10 @@ Translator *SelectTranslator(const char *name) case L('l', 'a'): // Latin { tr->encoding = ESPEAKNG_ENCODING_ISO_8859_4; // includes a,e,i,o,u-macron + tr->langopts.stress_rule = STRESSPOSN_2R; + tr->langopts.stress_flags = S_NO_AUTO_2; + tr->langopts.unstressed_wd1 = 0; + tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_DIERESES] = 1; tr->langopts.numbers = NUM_ROMAN; tr->langopts.max_roman = 5000; @@ -1082,6 +1115,7 @@ Translator *SelectTranslator(const char *name) case L('l', 't'): // Lithuanian { tr->encoding = ESPEAKNG_ENCODING_ISO_8859_4; + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; @@ -1098,6 +1132,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_lv, stress_amps_lv); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.spelling_stress = 1; tr->encoding = ESPEAKNG_ENCODING_ISO_8859_4; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT; @@ -1119,6 +1154,7 @@ Translator *SelectTranslator(const char *name) tr->letter_groups[0] = tr->letter_groups[7] = vowels_cyrillic; tr->letter_bits_offset = OFFSET_CYRILLIC; + tr->langopts.stress_rule = STRESSPOSN_3R; // antipenultimate tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2; tr->langopts.numbers2 = 0x8a; // variant numbers before thousands,milliards } @@ -1127,6 +1163,7 @@ Translator *SelectTranslator(const char *name) { tr->encoding = ESPEAKNG_ENCODING_ISO_8859_3; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word + tr->langopts.stress_rule = STRESSPOSN_2R; // penultimate tr->langopts.numbers = 1; } break; @@ -1134,6 +1171,7 @@ Translator *SelectTranslator(const char *name) { static const short stress_lengths_nl[8] = { 160, 135, 210, 210, 0, 0, 260, 280 }; + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.vowel_pause = 0x30; // ?? tr->langopts.param[LOPT_DIERESES] = 1; tr->langopts.param[LOPT_PREFIXES] = 1; @@ -1150,6 +1188,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_no[8] = { 160, 140, 200, 200, 0, 0, 220, 230 }; SetupTranslator(tr, stress_lengths_no, NULL); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_ALLOW_SPACE | NUM_1900 | NUM_ORDINAL_DOT; } break; @@ -1159,6 +1198,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_om[8] = { 200, 200, 200, 200, 0, 0, 200, 200 }; SetupTranslator(tr, stress_lengths_om, stress_amps_om); + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | 0x80000; tr->langopts.numbers = NUM_OMIT_1_HUNDRED | NUM_HUNDRED_AND; tr->langopts.numbers2 = 0x200; // say "thousands" before its number @@ -1172,6 +1212,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_pl, stress_amps_pl); tr->encoding = ESPEAKNG_ENCODING_ISO_8859_2; + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) @@ -1188,6 +1229,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_pt, stress_amps_pt); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN_CAPITALS; tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS | NUM2_ORDINAL_NO_AND; @@ -1205,6 +1247,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_ro, stress_amps_ro); + tr->langopts.stress_rule = STRESSPOSN_1R; tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED | S_FINAL_DIM_ONLY; tr->encoding = ESPEAKNG_ENCODING_ISO_8859_2; @@ -1233,6 +1276,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_sk, stress_amps_sk); tr->encoding = ESPEAKNG_ENCODING_ISO_8859_2; + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.max_initial_consonants = 5; @@ -1256,6 +1300,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_ta, stress_amps_ta); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.spelling_stress = 1; @@ -1277,6 +1322,7 @@ Translator *SelectTranslator(const char *name) break; case L('s', 'l'): // Slovenian tr->encoding = ESPEAKNG_ENCODING_ISO_8859_2; + tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word @@ -1295,6 +1341,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_sq, stress_amps_sq); + tr->langopts.stress_rule = STRESSPOSN_1R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_VOWEL_UNSTRESSED; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; tr->langopts.accents = 2; // "capital" after letter name @@ -1306,6 +1353,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_sv[8] = { 160, 135, 220, 220, 0, 0, 250, 280 }; SetupTranslator(tr, stress_lengths_sv, stress_amps_sv); + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_1900; tr->langopts.accents = 1; } @@ -1320,6 +1368,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.vowel_pause = 1; + tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.max_initial_consonants = 4; // for example: mwngi @@ -1336,6 +1385,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_ta2, stress_amps_ta); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; // use 'diminished' for unstressed final syllable tr->langopts.spelling_stress = 1; tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 @@ -1352,6 +1402,7 @@ Translator *SelectTranslator(const char *name) tr->letter_bits_offset = OFFSET_MALAYALAM; tr->langopts.numbers = NUM_OMIT_1_THOUSAND | NUM_OMIT_1_HUNDRED; tr->langopts.numbers2 = NUM2_OMIT_1_HUNDRED_ONLY; + tr->langopts.stress_rule = 13; // 1st syllable, unless 1st vowel is short and 2nd is long } else if (name2 == L('k', 'n')) { tr->letter_bits_offset = OFFSET_KANNADA; tr->langopts.numbers = 0x1; @@ -1373,6 +1424,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_tr, stress_amps_tr); tr->encoding = ESPEAKNG_ENCODING_ISO_8859_9; + tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable tr->langopts.stress_flags = S_NO_AUTO_2; // no automatic secondary stress tr->langopts.dotless_i = 1; tr->langopts.param[LOPT_SUFFIX] = 1; @@ -1388,6 +1440,7 @@ Translator *SelectTranslator(const char *name) { SetCyrillicLetters(tr); SetupTranslator(tr, stress_lengths_fr, stress_amps_fr); + tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_flags = S_NO_AUTO_2; // no automatic secondary stress tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; } @@ -1430,6 +1483,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr, stress_lengths_vi, stress_amps_vi); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable + tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word tr->letter_groups[0] = tr->letter_groups[7] = vowels_vi; tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() @@ -1504,6 +1558,7 @@ static void Translator_Russian(Translator *tr) tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; tr->langopts.param[LOPT_REDUCE] = 2; + tr->langopts.stress_rule = 5; tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;