espeak-ng/espeak-ng-ios-app

Wrong characters pronunciation when using eSpeak in rotor language setting

sevapopov2 opened this issue · 11 comments

I don't even know how to title this issue, it's really strange and I will try to describe it as much as I can. I am not sure that it's eSpeak's issue, I have seen it with other synthesizers too, but the problem is that it's complicated to reproduce it.
The problem is that if you set Espeak's variant as voice in your language rotor setting and start typing in that language you will here strange namings of letters with their formatting.
Steps to reproduce:

  1. Add Russian, English, German or any language into your Rotor language VoiceOver setting.
  2. Choose any espeak variant for this language, for example Max.
  3. Add the keyboard of the language that you previously added in VoiceOver settings to keyboards list.
  4. Open an edit field.
  5. Switch to previously added keyboard.
  6. Start navigating by letters.
    Expected result:
    ESpeak should pronounce the letter as usual: Cap I, Cap G and etc.
    Actual result:
    ESpeak pronounces the letter's formatting and something else that sounds really strange:
    For example:
    Backslash t backslash n backslash normal equals letter backslash, such gibberish.
    I don't know if it can be fixed, but this bug is really a stopper for me when using eSpeak with several languages.
    I think that's also a VoiceOver bug that I don't know how to report to Apple Accessibility.
    If you have any idea, that will be really helpful.

This appears to be some kind of undocumented VoiceOver-specific markup to send commands to the synthesizer. Here's an example (the output when touching X on the keyboard):
\tn=raw\X\tn=normal\

Yes, exactly that! What's even more strange, when you enter space or a punctuation symbol, typed symbol is pronounced not by eSpeak, but by another voice that isn't set in rotor language setting!

Expected result:
ESpeak should pronounce the letter as usual: Cap I, Cap G and etc.

Sorry, I can't reproduce that issue - it works on my device as expected. I'm not familiar with VoiceOver behavior, but I want to help you... unfortunately still don't know how.

For some reason I can only reproduce the issue when the rotor language is set to Russian.
Please try to do the following, assuming the primary language of your device is English (United States):

  • Go to Settings/Accessibility/VoiceOver/Speech
  • Under Rotor languages, click the "Add new language" button and choose Russian (Russia) from the list
  • Back on the Speech screen, click on Russian and choose any ESpeak variant for the voice
  • Make sure that the Russian keyboard is installed on the device
  • Go to any app where the keyboard is available
  • Turn the rotor to language and flick down to change the VoiceOver language to Russian
  • Tap any letter on the keyboard. You should now be able to observe the incorrect behavior.

The gestures for turning the rotor can be fairly unintuitive at first. If they give you trubble, you can remap them in Settings/Accessibility/VoiceOver/Commands.

Can you check that 1.0(6) has same behavior?

Can you check that 1.0(6) has same behavior?

It does.

I can also confirm that problem still exists. I have a feeling that it's also a VO bug.

The other way to reproduce this issue which is even simpler than mentioned above is:

  1. Add Russian language to rotor languages list.
  2. Switch to this language with rotor language setting.
  3. Choose characters option with VoiceOver rotor.
  4. Swipe down to read the line by characters. You will hear the wrong characters pronunciation.

Looks like it is improved in latest version.
Please make sure that Russian is also in system language preference, it may be important.

Yes, I wanted to tell that it seems like that bug was fixed, which is extremely cool if it is like that. I will switch the system to English and check again. At least now all characters are reported correctly.

I have just switched the phone to English and yeah, the issue is fixed for me! Thank you a lot for fixing it and of course for bringing eSpeak to iOS for us!