Topics

[espeak-ng:master] reported: issues with russian language #github

espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #728 issues with russian language
By valdisvi:

Wrong pronunciation for и comes from rule for phoneme I:

...
phoneme I
...
IF thisPh(isMaxStress) THEN
    IF prevPhW(j) THEN
      ChangePhoneme(a)
    ELSE
      ChangePhoneme(i)
    ENDIF
  ENDIF

which translates to English like If и comes after я (j) and is stressed, say it as a. I can't imagine where this rule should applied and in my opinion it should be just removed.

About numbers I don't know. I looked at ru_list file. It has proper entry for million and has undocumented entries _...MA... e.g. _1MA3, for which I can't find what it exactly does, but even without them, million is not spelled correctly, so error hides somewhere else.

espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #728 issues with russian language
By rhdunn:

For the MA, etc. numbers, see https://github.com/espeak-ng/espeak-ng/blob/master/src/libespeak-ng/numbers.c#L1143 and the NUM2_THOUSANDS_VAR defines. Looking at that code, it looks like it is only setting 0Mn and 1Mn for Russian. I don't know Russian to know if the MA entries should be removed or the code/translation flags updated.

The code should also be made better by using the defines in the code instead of numbers. I'll take a look at doing that.

espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #728 issues with russian language
By valdisvi:

@beqabeqa473, that changePhoneme(...) was introduced in huge commit 20f52f03 by Jonathan in 2009-12-20. I think, he was misled and that code can be safely removed.

git diff a7501374 20f52f03 ph_russian|grep -A15 "phoneme I$"
 phoneme I
-  vowel starttype (i) endtype (i)
-  length 80
-  formants vwl_ru/ii
+  vowel starttype #i endtype #i
+  Length 80
+
+  IF thisPh(isMaxStress) THEN
+    IF prevPhW(j) THEN
+      ChangePhoneme(a)
+    ELSE
+      ChangePhoneme(i)
+    ENDIF
+  ENDIF
+  FMT(vwl_ru/ii)
 endphoneme