- 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.`, `;` etcmaster
@@ -2,80 +2,79 @@ | |||
// Spelling-to-phoneme words for Belarusian | |||
// 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 | |||
_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 | |||
_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 | |||
_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 | |||
_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. | |||
_0MB1 t'i"s;ats.a | |||
_0MA1 t'i"s;ats.i" | |||
_0M1 t'i"s;ats. // NOTE: in 10k > appends `_!` |
@@ -1,16 +1,11 @@ | |||
// This file is UTF8 encoded | |||
// Translation rules for Belarusian | |||
// NOTE: LETTERGP_A doesn't work, L01 as replacement | |||
//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 | |||
// This is more economic way to express assimilation by sibilation | |||
.replace | |||
сш шш | |||
сч шч | |||
@@ -36,10 +31,9 @@ | |||
г Q // ɣ | |||
.group д | |||
д d[ | |||
дз dz // d̻͡z̪ | |||
ддз dz: | |||
дж dz. // ɖ͡ʐ | |||
д d | |||
дз dz | |||
дж dz. | |||
.group е | |||
е ;E // ʲɛ | |||
@@ -49,7 +43,7 @@ | |||
L01) е jE | |||
.group ё | |||
ё ;'O // ʲɔ | |||
ё ;'O // ʲ'ɔ | |||
_) ё j'O | |||
') ё j'O | |||
ь) ё j'O | |||
@@ -57,14 +51,13 @@ | |||
.group ж | |||
ж z. // ʐ | |||
жж z.: | |||
.group з | |||
з z | |||
.group і | |||
і i | |||
L02) і ;i | |||
C) і ;i | |||
.group й | |||
й j | |||
@@ -74,14 +67,12 @@ | |||
.group л | |||
л l | |||
лл l: | |||
.group м | |||
м m | |||
.group н | |||
н n | |||
нн n: | |||
.group о | |||
о 'O | |||
@@ -90,14 +81,13 @@ | |||
п p | |||
.group р | |||
р R | |||
р r | |||
.group с | |||
с s | |||
сс s: | |||
.group т | |||
т t[ | |||
т t | |||
.group у | |||
у u | |||
@@ -112,7 +102,7 @@ | |||
х x | |||
.group ц | |||
ц ts // t̻͡s̪ | |||
ц ts // t͡s | |||
цц ts: | |||
.group ч | |||
@@ -124,7 +114,7 @@ | |||
шш s.: | |||
.group ы | |||
ы i" // (ɨ | |||
ы i" // ɨ | |||
.group ь | |||
ь ; // ʲ |
@@ -1,5 +1,4 @@ | |||
name Belarusian | |||
language be | |||
replace 03 a a# | |||
dict_min 20000 | |||
dict_min 2000 | |||
speed 95 |
@@ -16,16 +16,21 @@ phoneme i" | |||
FMT(vowel/ii#_2) | |||
endphoneme | |||
phoneme Q | |||
import_phoneme base1/Q" | |||
ipa ɣ | |||
endphoneme | |||
phoneme ts | |||
CALL consonants/ts | |||
voicingswitch dz | |||
ipa t̻͡s̪ | |||
ipa t͡s | |||
endphoneme | |||
phoneme ts; | |||
CALL base1/tS; | |||
voicingswitch dz; | |||
ipa t̻͡s̪ʲ | |||
ipa t͡sʲ | |||
endphoneme | |||
phoneme ts. | |||
@@ -40,13 +45,14 @@ endphoneme | |||
phoneme dz | |||
CALL consonants/dz | |||
voicingswitch ts | |||
ipa d̻͡z̪ | |||
ipa d͡z | |||
endphoneme | |||
phoneme dz; | |||
import_phoneme pl/dz; | |||
CALL base1/dZ; | |||
voicingswitch ts; | |||
ipa d̻͡z̪ʲ | |||
ipa d͡zʲ | |||
endphoneme | |||
phoneme dz. | |||
@@ -56,10 +62,18 @@ phoneme dz. | |||
voicingswitch ts. | |||
Vowelin f1=2 f2=2300 200 400 f3=100 80 | |||
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 |
@@ -2049,3 +2049,5 @@ include ph_uzbek | |||
phonemetable qdb en | |||
include ph_langbelta | |||
phonemetable ms id |
@@ -538,6 +538,34 @@ Translator *SelectTranslator(const char *name) | |||
tr->encoding = ESPEAKNG_ENCODING_ISO_8859_6; | |||
SetArabicLetters(tr); | |||
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 | |||
{ | |||
SetCyrillicLetters(tr); |