Browse Source

Belarusian: improvements

- fixed/removed not working rules in be_list
- added stress to the words in be_list
- fixed multi thousand transcription
- removed not working rules in be_rules
- added rules of palatalization, phonemes lengthen
- fixed dropping of [a] at the end of words
- fixed message "Full dictionary is not installed for"
- added configuration in tr_languages.c
- fixed/added phonemes for `Q`, `ts`, `ts;`, `dz`, `dz.`, `;` etc
master
Sergei B 2 years ago
parent
commit
3199d7889b
6 changed files with 132 additions and 100 deletions
  1. 67
    68
      dictsource/be_list
  2. 12
    22
      dictsource/be_rules
  3. 1
    2
      espeak-ng-data/lang/zle/be
  4. 22
    8
      phsource/ph_belarusian
  5. 2
    0
      phsource/phonemes
  6. 28
    0
      src/libespeak-ng/tr_languages.c

+ 67
- 68
dictsource/be_list View File

// Spelling-to-phoneme words for Belarusian // Spelling-to-phoneme words for Belarusian


// Letter names // Letter names
а %a
_a a
_б bE
в vE
г QE
д dE
е jE
ё jO
ж z.E
з zE
і %i
_і i
_й i||n;Esklad'OvajE
к ka
л El
м Em
н En
о O
п pE
р ER
с Es
т tE
у u
_ў u||n;Esklad'OvajE
ф Ef
х xa
ц tsE
ч ts.E
ш s.a
ы i"
ь m;'ak;:i||zn'ak
э E
ю ju
я ja
' ap'OstRaf
а a $u
б bE $u
в vE $u
г QE $u
д dE $u
е jE $u
ё jO $u
ж z.E $u
з z $u
і i $u
й i||n;Esklad'OvajE
к ka $u
л El $u
м Em $u
н En $u
о O $u
п pE $u
р Er $u
с Es $u
т tE $u
у u $u
ў u||n;Esklad'OvajE
ф Ef $u
х xa $u
ц tsE $u
ч ts.E $u
ш s.a $u
ы i" $u
ь m;'ak;:i||znak
э E $u
ю ju $u
я ja $u


// Numbers // Numbers
_0 nul;
_1 ad;in
_2 dva
_3 tRi"
_4 ts.ati"Ri"
_5 p;ats;
_6 s.Es;ts;
_7 s;Em
_0 n'ul;
_1 adz;'in
_1f adna
_2 dv'a
_2f dz;v;'E
_3 tr'i"
_4 ts.at'i"ri"
_5 p;'ats;
_6 s.'Es;ts;
_7 s;'Em
_8 v'Os;Em _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;at
_7X s;Emdz;Es;at
_8X v'Os;Emdz;Es;at
_9X dz;Ev;an'Osta
_9 dz;'Ev;ats;
_10 dz;'Es;ats;
_11 adz;'inats:ats;
_12 dvan'ats:ats;
_13 tri"n'ats:ats;
_14 ts.at'i"rnats:ats;
_15 p;atn'ats:ats;
_16 s.asn'ats:ats;
_17 s;amn'ats:ats;
_18 vas;amn'ats:ats;
_19 dz;Ev;atn'ats:ats;
_2X dv'ats:ats;||
_3X tr'i"ts:ats;||
_4X s'Orak||
_5X p;adz;:Es;'at||
_6X s.Ezdz;:Es;'at||
_7X s;'Emdz;Es;at||
_8X v'Os;Emdz;Es;at||
_9X dz;Ev;an'Osta||
_0C st'O _0C st'O
_2C dz;v;Es;ts;E
_3C tRi"sta
_4C ts.ati"Ri"sta
_2C dz;v;'Es;ts;E
_3C tr'i"sta
_4C ts.at'i"ri"sta
_5C p;ats;s'Ot _5C p;ats;s'Ot
_6C s.Es;ts;s'Ot _6C s.Es;ts;s'Ot
_7C s;Ems'Ot _7C s;Ems'Ot
_8C v,Os;Ems'Ot _8C v,Os;Ems'Ot
_9C dz;Ev;ats;s'Ot _9C dz;Ev;ats;s'Ot
_1MA1 ti"s;ats.a
_0MA1 ti"s;ats.i"
_0M1 ti"s;ats.
_0MB1 t'i"s;ats.a
_0MA1 t'i"s;ats.i"
_0M1 t'i"s;ats. // NOTE: in 10k > appends `_!`

+ 12
- 22
dictsource/be_rules View File

// This file is UTF8 encoded // This file is UTF8 encoded
// Translation rules for Belarusian // Translation rules for Belarusian


// NOTE: LETTERGP_A doesn't work, L01 as replacement
//letter which can carry vowel phoneme //letter which can carry vowel phoneme
.L01 а е ё і о у ы э ю я .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

// This is more economic way to express assimilation by sibilation
.replace .replace
сш шш сш шш
сч шч сч шч
г Q // ɣ г Q // ɣ


.group д .group д
д d[
дз dz // d̻͡z̪
ддз dz:
дж dz. // ɖ͡ʐ
д d
дз dz
дж dz.


.group е .group е
е ;E // ʲɛ е ;E // ʲɛ
L01) е jE L01) е jE


.group ё .group ё
ё ;'O // ʲɔ
ё ;'O // ʲ'ɔ
_) ё j'O _) ё j'O
') ё j'O ') ё j'O
ь) ё j'O ь) ё j'O


.group ж .group ж
ж z. // ʐ ж z. // ʐ
жж z.:


.group з .group з
з z з z


.group і .group і
і i і i
L02) і ;i
C) і ;i


.group й .group й
й j й j


.group л .group л
л l л l
лл l:


.group м .group м
м m м m


.group н .group н
н n н n
нн n:


.group о .group о
о 'O о 'O
п p п p


.group р .group р
р R
р r


.group с .group с
с s с s
сс s:


.group т .group т
т t[
т t


.group у .group у
у u у u
х x х x


.group ц .group ц
ц ts // t̻͡s̪
ц ts // t͡s
цц ts: цц ts:


.group ч .group ч
шш s.: шш s.:


.group ы .group ы
ы i" // (ɨ
ы i" // ɨ


.group ь .group ь
ь ; // ʲ ь ; // ʲ

+ 1
- 2
espeak-ng-data/lang/zle/be View File

name Belarusian name Belarusian
language be language be
replace 03 a a#
dict_min 20000
dict_min 2000
speed 95 speed 95

+ 22
- 8
phsource/ph_belarusian View File

FMT(vowel/ii#_2) FMT(vowel/ii#_2)
endphoneme endphoneme


phoneme Q
import_phoneme base1/Q"
ipa ɣ
endphoneme

phoneme ts phoneme ts
CALL consonants/ts CALL consonants/ts
voicingswitch dz voicingswitch dz
ipa t̻͡s̪
ipa t͡s
endphoneme endphoneme


phoneme ts; phoneme ts;
CALL base1/tS; CALL base1/tS;
voicingswitch dz; voicingswitch dz;
ipa t̻͡s̪ʲ
ipa t͡sʲ
endphoneme endphoneme


phoneme ts. phoneme ts.
phoneme dz phoneme dz
CALL consonants/dz CALL consonants/dz
voicingswitch ts voicingswitch ts
ipa d̻͡z̪
ipa d͡z
endphoneme endphoneme


phoneme dz; phoneme dz;
import_phoneme pl/dz;
CALL base1/dZ; CALL base1/dZ;
voicingswitch ts; voicingswitch ts;
ipa d̻͡z̪ʲ
ipa d͡zʲ
endphoneme endphoneme


phoneme dz. phoneme dz.
voicingswitch ts. voicingswitch ts.
Vowelin f1=2 f2=2300 200 400 f3=100 80 Vowelin f1=2 f2=2300 200 400 f3=100 80
Vowelout f1=2 f2=2300 250 300 f3=100 80 brk Vowelout f1=2 f2=2300 250 300 f3=100 80 brk
endphoneme


IF PreVoicing THEN
FMT(dzh/xdzh)
ENDIF
phoneme r
liquid trl
lengthmod 6
ipa r
length 80
FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65)
endphoneme


FMT(dzh/dzh) addWav(ufric/sh_pzd2)
phoneme ;
liquid pzd
lengthmod 0
ipa ʲ
endphoneme endphoneme

+ 2
- 0
phsource/phonemes View File



phonemetable qdb en phonemetable qdb en
include ph_langbelta include ph_langbelta

phonemetable ms id

+ 28
- 0
src/libespeak-ng/tr_languages.c View File

tr->encoding = ESPEAKNG_ENCODING_ISO_8859_6; tr->encoding = ESPEAKNG_ENCODING_ISO_8859_6;
SetArabicLetters(tr); SetArabicLetters(tr);
break; break;
case L('b', 'e'): // Belarusian
{
static const unsigned char stress_amps_be[8] = { 12, 10, 8, 8, 0, 0, 16, 17 };
static const short stress_lengths_be[8] = { 160, 140, 200, 140, 0, 0, 240, 160 };
static wchar_t vowels_be[] = { // offset by 0x420 -- а е ё о у ы э ю я і
0x10, 0x15, 0x31, 0x1e, 0x23, 0x2b, 0x2d, 0x2e, 0x2f, 0x36, 0
};
static const unsigned char consonants_be[] = { // б в г д ж з й к л м н п р с т ф х ц ч ш ў
0x11, 0x12, 0x13, 0x14, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x27, 0x28, 0x3e, 0
};

tr->langopts.stress_flags = S_NO_AUTO_2 | S_NO_DIM; // don't use secondary stress
tr->letter_bits_offset = OFFSET_CYRILLIC;
tr->transpose_min = 0x430; // convert cyrillic from unicode into range 0x01 to 0x2f
tr->transpose_max = 0x45e;
memset(tr->letter_bits, 0, sizeof(tr->letter_bits));
SetLetterBits(tr, LETTERGP_A, (char *)vowels_be);
SetLetterBits(tr, LETTERGP_C, (char *)consonants_be);
SetLetterBits(tr, LETTERGP_VOWEL2, (char *)vowels_be);

SetupTranslator(tr, stress_lengths_be, stress_amps_be);
tr->encoding = ESPEAKNG_ENCODING_ISO_8859_5;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_THOUSANDS | NUM2_THOUSANDS_VAR1; // variant numbers before thousands
}
break;
case L('b', 'g'): // Bulgarian case L('b', 'g'): // Bulgarian
{ {
SetCyrillicLetters(tr); SetCyrillicLetters(tr);

Loading…
Cancel
Save