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].
This commit is contained in:
Alaksiej Stankievič
2022-10-14 00:32:08 +03:00
committed by Alexander Epaneshnikov
parent a157abddbe
commit 68b9ca5d83
4 changed files with 134 additions and 69 deletions
+42 -40
View File
@@ -2,8 +2,9 @@
// Spelling-to-phoneme words for Belarusian // Spelling-to-phoneme words for Belarusian
// Letter names // Letter names
а a а %a
б bE _a a
_б bE
в vE в vE
г QE г QE
д dE д dE
@@ -11,69 +12,70 @@
ё jO ё jO
ж z.E ж z.E
з zE з zE
і i і %i
й i||n;EskladOvajE _і i
_й i||n;Esklad'OvajE
к ka к ka
л El л El
м Em м Em
н En н En
о O о O
п pE п pE
р Er р ER
с Es с Es
т tE т tE
у u у u
ў u||n;EskladOvajE _ў u||n;Esklad'OvajE
ф Ef ф Ef
х xa х xa
ц tsE ц tsE
ч ts.E ч ts.E
ш s.a ш s.a
ы i" ы i"
ь m;ak;:i||znak ь m;'ak;:i||zn'ak
э E э E
ю ju ю ju
я ja я ja
' apOstraf ' ap'OstRaf
// Numbers // Numbers
_0 nul; _0 nul;
_1 ad;in _1 ad;in
_2 dva _2 dva
_3 tri" _3 tRi"
_4 ts.ati"ri" _4 ts.ati"Ri"
_5 p;at; _5 p;ats;
_6 s.Es;t; _6 s.Es;ts;
_7 s;Em _7 s;Em
_8 vOs;E2m _8 v'Os;Em
_9 d;Ev;at; _9 dz;Ev;ats;
_10 d;Es;at; _10 dz;Es;ats;
_11 ad;inats:at; _11 adz;inats:ats;
_12 dvanats:at; _12 dvanats:ats;
_13 tri"nats:at; _13 tRi"nats:ats;
_14 ts.ati"rnats:at; _14 ts.ati"Rnats:ats;
_15 p;atnats:at; _15 p;atnats:ats;
_16 s.asnats:at; _16 s.asnats:ats;
_17 s;amnats:at; _17 s;amnats:ats;
_18 vas;amnats:at; _18 vas;amnats:ats;
_19 d;Ev;atnats:at; _19 dz;Ev;atnats:ats;
_2X dvats:at; _2X dvats:ats;
_3X tri"ts:at; _3X tRi"ts:ats;
_4X sorak _4X s'ORak
_5X p;adz;:Es;at _5X p;adz;:Es;at
_6X s.Ezdz;:Es;jat _6X s.Ezdz;:Es;at
_7X s;Emdz;Es;jat _7X s;Emdz;Es;at
_8X vos;Emdz;Es;at _8X v'Os;Emdz;Es;at
_9X d;Ev;anosta _9X dz;Ev;an'Osta
_0C stO _0C st'O
_2C d;v;Es;t;E _2C dz;v;Es;ts;E
_3C tri"sta _3C tRi"sta
_4C ts.ati"ri"sta _4C ts.ati"Ri"sta
_5C p;at;sot _5C p;ats;s'Ot
_6C s.Es;t;sot _6C s.Es;ts;s'Ot
_7C s;jEmsot _7C s;Ems'Ot
_8C vos;jEmsot _8C v,Os;Ems'Ot
_9C d;Ev;at;sot _9C dz;Ev;ats;s'Ot
_1MA1 ti"s;ats.a _1MA1 ti"s;ats.a
_0MA1 ti"s;ats.i" _0MA1 ti"s;ats.i"
_0M1 ti"s;ats. _0M1 ti"s;ats.
+56 -7
View File
@@ -1,6 +1,28 @@
// This file is UTF8 encoded // This file is UTF8 encoded
// Translation rules for Belarusian // 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 а .group а
а a а a
@@ -14,22 +36,35 @@
г Q // ɣ г Q // ɣ
.group д .group д
д d д d[
дз dz // d̻͡z̪
ддз dz:
дж dz. // ɖ͡ʐ
.group е .group е
е ;E // ʲɛ е ;E // ʲɛ
_) е jE
') е jE
ь) е jE
L01) е jE
.group ё .group ё
ё ;O // ʲɔ ё ;'O // ʲɔ
_) ё j'O
') ё j'O
ь) ё j'O
L01) ё j'O
.group ж .group ж
ж z. // ʐ ж z. // ʐ
жж z.:
.group з .group з
з z з z
.group і .group і
і i і i
L02) і ;i
.group й .group й
й j й j
@@ -39,27 +74,30 @@
.group л .group л
л l л l
лл l:
.group м .group м
м m м m
.group н .group н
н n н n
нн n:
.group о .group о
о o о 'O
.group п .group п
п p п p
.group р .group р
р r р R
.group с .group с
с s с s
сс s:
.group т .group т
т t т t[
.group у .group у
у u у u
@@ -74,13 +112,16 @@
х x х x
.group ц .group ц
ц ts // t̻͡s ц ts // t̻͡s̪
цц ts:
.group ч .group ч
ч ts. // ʈ͡ʂ ч ts. // ʈ͡ʂ
чч ts.:
.group ш .group ш
ш s. // ʂ ш s. // ʂ
шш s.:
.group ы .group ы
ы i" // (ɨ ы i" // (ɨ
@@ -93,9 +134,17 @@
.group ю .group ю
ю ;u // ʲu ю ;u // ʲu
_) ю ju
') ю ju
ь) ю ju
L01) ю ju
.group я .group я
я ;a // ʲa я ;a // ʲa
_) я ja
') я ja
ь) я ja
L01) я ja
.group ' .group '
' j '
+33 -17
View File
@@ -2,48 +2,64 @@
// Belarusian // Belarusian
//==================================================== //====================================================
phoneme a phoneme a
import_phoneme ru/a vwl starttype #a endtype #a
endphoneme ipa a
length 180
phoneme O FMT(vowel/a)
vwl starttype #o endtype #o
ipa ɔ
length 100
FMT(vwl_ru/8)
endphoneme endphoneme
phoneme i" phoneme i"
import_phoneme pl/y vwl starttype #i endtype #i
ipa ɨ
length 180
FMT(vowel/ii#_2)
endphoneme endphoneme
phoneme ts phoneme ts
import_phoneme consonants/ts CALL consonants/ts
ipa t̻͡s voicingswitch dz
ipa t̻͡s̪
endphoneme endphoneme
phoneme ts; phoneme ts;
import_phoneme pl/ts; CALL base1/tS;
voicingswitch dz;
ipa t̻͡s̪ʲ ipa t̻͡s̪ʲ
endphoneme endphoneme
phoneme ts. phoneme ts.
import_phoneme sr/tS vls pla afr sib
ipa ʈ͡ʂ ipa ʈ͡ʂ
lengthmod 2
voicingswitch dz.
Vowelin f1=0 f2=2300 200 400 f3=-100 80
WAV(ustop/tsh_sr, 50)
endphoneme endphoneme
phoneme dz phoneme dz
import_phoneme consonants/dz CALL consonants/dz
voicingswitch ts
ipa d̻͡z̪ ipa d̻͡z̪
endphoneme endphoneme
phoneme dz; phoneme dz;
import_phoneme pl/dz; CALL base1/dZ;
voicingswitch ts;
ipa d̻͡z̪ʲ ipa d̻͡z̪ʲ
endphoneme endphoneme
phoneme dz. phoneme dz.
import_phoneme sr/dZ vcd pla afr sib
ipa ɖ͡ʐ 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 endphoneme
+3 -5
View File
@@ -1819,6 +1819,9 @@ include ph_yue
// *** Tables extending base2 *** // *** Tables extending base2 ***
phonemetable be base2
include ph_belarusian
phonemetable chr base2 phonemetable chr base2
include ph_cherokee include ph_cherokee
@@ -2046,8 +2049,3 @@ include ph_uzbek
phonemetable qdb en phonemetable qdb en
include ph_langbelta include ph_langbelta
phonemetable be ru
include ph_belarusian
phonemetable ms id