From 68b9ca5d83689e357e11472be38830c9822bd601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alaksiej=20Stankievi=C4=8D?= Date: Fri, 27 May 2022 18:12:46 +0200 Subject: [PATCH] Rework rules for Belarusian and update phonemes This patch strip out dependency on Russian, as its complicated relationship between spelling and pronunciation overburden rules for Belarusian. The rules themselves are also added. They don't have devoicing at the end of the words for now. Also, gemination of consonants doesn't work as expected, as it seems on the top of this rule some other rules apply. This after-processing is responsible also for the strange behaviour of ending [a]. --- dictsource/be_list | 82 +++++++++++++++++++++--------------------- dictsource/be_rules | 63 ++++++++++++++++++++++++++++---- phsource/ph_belarusian | 50 +++++++++++++++++--------- phsource/phonemes | 8 ++--- 4 files changed, 134 insertions(+), 69 deletions(-) diff --git a/dictsource/be_list b/dictsource/be_list index 2f4eae30..de599ebe 100644 --- a/dictsource/be_list +++ b/dictsource/be_list @@ -2,8 +2,9 @@ // Spelling-to-phoneme words for Belarusian // Letter names -а a -б bE +а %a +_a a +_б bE в vE г QE д dE @@ -11,69 +12,70 @@ ё jO ж z.E з zE -і i -й i||n;EskladOvajE +і %i +_і i +_й i||n;Esklad'OvajE к ka л El м Em н En о O п pE -р Er +р ER с Es т tE у u -ў u||n;EskladOvajE +_ў u||n;Esklad'OvajE ф Ef х xa ц tsE ч ts.E ш s.a ы i" -ь m;ak;:i||znak +ь m;'ak;:i||zn'ak э E ю ju я ja -' apOstraf +' ap'OstRaf // Numbers _0 nul; _1 ad;in _2 dva -_3 tri" -_4 ts.ati"ri" -_5 p;at; -_6 s.Es;t; +_3 tRi" +_4 ts.ati"Ri" +_5 p;ats; +_6 s.Es;ts; _7 s;Em -_8 vOs;E2m -_9 d;Ev;at; -_10 d;Es;at; -_11 ad;inats:at; -_12 dvanats:at; -_13 tri"nats:at; -_14 ts.ati"rnats:at; -_15 p;atnats:at; -_16 s.asnats:at; -_17 s;amnats:at; -_18 vas;amnats:at; -_19 d;Ev;atnats:at; -_2X dvats:at; -_3X tri"ts:at; -_4X sorak +_8 v'Os;Em +_9 dz;Ev;ats; +_10 dz;Es;ats; +_11 adz;inats:ats; +_12 dvanats:ats; +_13 tRi"nats:ats; +_14 ts.ati"Rnats:ats; +_15 p;atnats:ats; +_16 s.asnats:ats; +_17 s;amnats:ats; +_18 vas;amnats:ats; +_19 dz;Ev;atnats:ats; +_2X dvats:ats; +_3X tRi"ts:ats; +_4X s'ORak _5X p;adz;:Es;at -_6X s.Ezdz;:Es;jat -_7X s;Emdz;Es;jat -_8X vos;Emdz;Es;at -_9X d;Ev;anosta -_0C stO -_2C d;v;Es;t;E -_3C tri"sta -_4C ts.ati"ri"sta -_5C p;at;sot -_6C s.Es;t;sot -_7C s;jEmsot -_8C vos;jEmsot -_9C d;Ev;at;sot +_6X s.Ezdz;:Es;at +_7X s;Emdz;Es;at +_8X v'Os;Emdz;Es;at +_9X dz;Ev;an'Osta +_0C st'O +_2C dz;v;Es;ts;E +_3C tRi"sta +_4C ts.ati"Ri"sta +_5C p;ats;s'Ot +_6C s.Es;ts;s'Ot +_7C s;Ems'Ot +_8C v,Os;Ems'Ot +_9C dz;Ev;ats;s'Ot _1MA1 ti"s;ats.a _0MA1 ti"s;ats.i" _0M1 ti"s;ats. diff --git a/dictsource/be_rules b/dictsource/be_rules index 2d6f1407..54cf32f8 100644 --- a/dictsource/be_rules +++ b/dictsource/be_rules @@ -1,6 +1,28 @@ // This file is UTF8 encoded // Translation rules for Belarusian +//letter which can carry vowel phoneme +.L01 а е ё і о у ы э ю я +//letter which can carry consonant phoneme +.L02 б в г д ж з й к л м н нн п р с сс т ф х ц ч ш +//letter which can carry forward sibilant (like с) +//.L03 з дз с ц +//letter which can carry backward sibilant (like ш) +//.L04 ж дж ш ч + +// This is more economic way to express assimilation by sibilation than using L03 and L04 +.replace + сш шш + сч шч + цч чч + шс сс + шц сц + чц цц + зж жж + здж ждж + жз зз + ждз здз + .group а а a @@ -14,22 +36,35 @@ г Q // ɣ .group д - д d + д d[ + дз dz // d̻͡z̪ + ддз dz: + дж dz. // ɖ͡ʐ .group е е ;E // ʲɛ + _) е jE + ') е jE + ь) е jE + L01) е jE .group ё - ё ;O // ʲɔ + ё ;'O // ʲɔ + _) ё j'O + ') ё j'O + ь) ё j'O + L01) ё j'O .group ж ж z. // ʐ + жж z.: .group з з z .group і і i + L02) і ;i .group й й j @@ -39,27 +74,30 @@ .group л л l + лл l: .group м м m .group н н n + нн n: .group о - о o + о 'O .group п п p .group р - р r + р R .group с с s + сс s: .group т - т t + т t[ .group у у u @@ -74,13 +112,16 @@ х x .group ц - ц ts // t̻͡s + ц ts // t̻͡s̪ + цц ts: .group ч ч ts. // ʈ͡ʂ + чч ts.: .group ш ш s. // ʂ + шш s.: .group ы ы i" // (ɨ @@ -93,9 +134,17 @@ .group ю ю ;u // ʲu + _) ю ju + ') ю ju + ь) ю ju + L01) ю ju .group я я ;a // ʲa + _) я ja + ') я ja + ь) я ja + L01) я ja .group ' - ' j + ' diff --git a/phsource/ph_belarusian b/phsource/ph_belarusian index 3efcf5c9..80645bac 100644 --- a/phsource/ph_belarusian +++ b/phsource/ph_belarusian @@ -2,48 +2,64 @@ // Belarusian //==================================================== - phoneme a - import_phoneme ru/a -endphoneme - -phoneme O - vwl starttype #o endtype #o - ipa ɔ - length 100 - FMT(vwl_ru/8) + vwl starttype #a endtype #a + ipa a + length 180 + FMT(vowel/a) endphoneme phoneme i" - import_phoneme pl/y + vwl starttype #i endtype #i + ipa ɨ + length 180 + FMT(vowel/ii#_2) endphoneme phoneme ts - import_phoneme consonants/ts - ipa t̻͡s + CALL consonants/ts + voicingswitch dz + ipa t̻͡s̪ endphoneme phoneme ts; - import_phoneme pl/ts; + CALL base1/tS; + voicingswitch dz; ipa t̻͡s̪ʲ endphoneme phoneme ts. - import_phoneme sr/tS + vls pla afr sib ipa ʈ͡ʂ + lengthmod 2 + voicingswitch dz. + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + WAV(ustop/tsh_sr, 50) endphoneme phoneme dz - import_phoneme consonants/dz + CALL consonants/dz + voicingswitch ts ipa d̻͡z̪ endphoneme phoneme dz; - import_phoneme pl/dz; + CALL base1/dZ; + voicingswitch ts; ipa d̻͡z̪ʲ endphoneme phoneme dz. - import_phoneme sr/dZ + vcd pla afr sib ipa ɖ͡ʐ + lengthmod 5 + voicingswitch ts. + Vowelin f1=2 f2=2300 200 400 f3=100 80 + Vowelout f1=2 f2=2300 250 300 f3=100 80 brk + + IF PreVoicing THEN + FMT(dzh/xdzh) + ENDIF + + FMT(dzh/dzh) addWav(ufric/sh_pzd2) endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 237ef897..4a910405 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1819,6 +1819,9 @@ include ph_yue // *** Tables extending base2 *** +phonemetable be base2 +include ph_belarusian + phonemetable chr base2 include ph_cherokee @@ -2046,8 +2049,3 @@ include ph_uzbek phonemetable qdb en include ph_langbelta - -phonemetable be ru -include ph_belarusian - -phonemetable ms id