From 031f34ac61f011bea46b4f699b16646bd1de93cc Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Thu, 21 Jun 2018 15:46:33 +0300 Subject: [PATCH] ru: create Russian (Latvia) accent --- CHANGELOG.md | 1 + Makefile.am | 1 + dictsource/ru_rules | 16 ++++++ espeak-ng-data/lang/zle/ru-LV | 16 ++++++ phsource/ph_russian_lv | 97 +++++++++++++++++++++++++++++++++++ phsource/phonemes | 3 ++ 6 files changed, 134 insertions(+) create mode 100644 espeak-ng-data/lang/zle/ru-LV create mode 100644 phsource/ph_russian_lv diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c162b27..8bc8d52f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ new languages: * hak (Hakka Chinese) -- Chen Chien-ting * ht (Haitian Creole) -- Valdis Vitolins +* ru-lv (Russian Latvia) -- Valdis Vitolins * shn (Shan Tay Yai) -- ronaldaug updated languages: diff --git a/Makefile.am b/Makefile.am index 238475fb..877abdea 100644 --- a/Makefile.am +++ b/Makefile.am @@ -367,6 +367,7 @@ phsource/phonemes.stamp: \ phsource/ph_punjabi \ phsource/ph_romanian \ phsource/ph_russian \ + phsource/ph_russian_lv \ phsource/ph_s_gaelic \ phsource/ph_serbian \ phsource/ph_setswana \ diff --git a/dictsource/ru_rules b/dictsource/ru_rules index c42e87a5..5a78d29b 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -30,6 +30,8 @@ // H hard consonant: ъ ж ц ш // Y iotated vowel, softsign: ь ю я ё +// Conditional rules +// ?2 Russian (Latvia) .group а а V @@ -39,6 +41,7 @@ .group б б b +?2 б (_ b б (Y b; б (_ p б (бY b; @@ -60,6 +63,7 @@ .group в в v +?2 в (_ v- в (_ f в (Y v; в (бY v; @@ -121,6 +125,7 @@ .group е е e +?2 A) е (_ ;e A) е je A) е (_ jI3 //second position бакт) е (р E% // бактериальный, антибактериальный, ... @@ -146,9 +151,12 @@ ж (хY S ж (хкY S жч S; +?2 жч SS .group з з z +?2 з (е z +?2 зч SS з (Y z; з (_ s з (дY z; @@ -203,10 +211,12 @@ .group л л l +?2 л (Y l^ л (Y l; .group м м m +?2 м (Y m м (Y m; м (бY m; м (вY m; @@ -216,6 +226,7 @@ .group н н n +?2 н (Y n^ н (Y n; биз) не (с nE% н (_ n_ @@ -251,6 +262,7 @@ .group с с s +?2 сч S с (Y s; с (б z с (г z @@ -390,6 +402,7 @@ .group щ щ S; +?2 щ SS щ (бY Z; щ (б Z; щ (бвY Z; @@ -405,12 +418,14 @@ .group ъ ъ (Y j +?2 ъ (Y _| .group ы ы y .group ь ь (Y j +?2 ь (Y _| .group э э E2 @@ -438,6 +453,7 @@ .group ё ё '8 +?2 A) ё 'j8 _) ё 'j8 ж) ё 'O ш) ё 'O diff --git a/espeak-ng-data/lang/zle/ru-LV b/espeak-ng-data/lang/zle/ru-LV new file mode 100644 index 00000000..ec8fa654 --- /dev/null +++ b/espeak-ng-data/lang/zle/ru-LV @@ -0,0 +1,16 @@ +name Russian (Latvia) +language ru-LV 2 + +maintainer Valdis Vitolins +status testing + +phonemes ru-lv +dictrules 2 +dict_min 20000 +speed 95 + +words 0 2 +tone 150 220 450 255 750 20 3500 255 +stressAmp 12 10 8 8 0 0 16 17 +stressLength 160 140 200 140 0 0 240 160 + diff --git a/phsource/ph_russian_lv b/phsource/ph_russian_lv new file mode 100644 index 00000000..76238278 --- /dev/null +++ b/phsource/ph_russian_lv @@ -0,0 +1,97 @@ +phoneme l + liquid + + IF nextPh(isNotVowel) THEN + PrevVowelEndings + VowelEnding(l/L1_@L) + VowelEnding(l/L1_aL) + VowelEnding(l/L1_eL) + VowelEnding(l/L1_iL) + VowelEnding(l/L1_oL) + VowelEnding(l/L1_uL) + EndSwitch + + FMT(l/l_) + RETURN + ENDIF + + CALL vowelstart_l + + IF prevPh(isVowel) THEN + VowelEnding(l/xl, 10) + ENDIF + + IF prevPh(isPause) THEN + FMT(l/_l) + ENDIF + + IF prevPh(t) THEN + FMT(l/tl) + ENDIF + + IF prevPh(l/) THEN + FMT(l/l_long) // double l, make it longer + ENDIF + + FMT(l/l) +endphoneme + +phoneme l^ // Latvian ļ, customized from standard l^ + liquid + ipa ʎ + lengthmod 7 + Vowelout len=60 lenadd rate + length 100 + + NextVowelStarts + VowelStart(l^/j2@) + VowelStart(l^/j2a) + VowelStart(l^/j2e) + VowelStart(l^/j2i) + VowelStart(l^/j2o) + VowelStart(l^/j2u) + EndSwitch + + IF prevPh(isPause) THEN + FMT(l^/_l^) + ELSEIF nextPh(isPause) THEN + FMT(l^/l^_) + ENDIF + + FMT(l^/l^) +endphoneme + +phoneme o + vwl starttype #o endtype #o + length 100 + IF thisPh(isUnstressed) THEN + FMT(vowel/aa_7) + ENDIF + FMT(vwl_ru/o) +endphoneme + +phoneme 8 + vwl starttype #o endtype #o + length 120 + ChangeIfNotStressed(V) + FMT(vwl_ru/8) +endphoneme + +phoneme e + vwl starttype #e endtype #e + length 100 + IF prevPh(Z) THEN + ChangeIfNotStressed(y) + ChangePhoneme(E) + ENDIF + IF prevPh(S) THEN + ChangeIfNotStressed(y) + ChangePhoneme(E) + ENDIF + IF prevPh(ts) THEN + ChangeIfNotStressed(y) + ChangePhoneme(E) + ENDIF + FMT(vwl_ru/ee) +endphoneme + diff --git a/phsource/phonemes b/phsource/phonemes index 337227d3..7483ecb8 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1809,6 +1809,9 @@ include ph_serbian phonemetable ru base1 include ph_russian +phonemetable ru-lv ru +include ph_russian_lv + phonemetable bg pl include ph_bulgarian