espeak-ng / espeak-ng-ios-app

Other
30 stars 6 forks source link

Wrong characters pronunciation when using eSpeak in rotor language setting #11

Closed sevapopov2 closed 2 years ago

sevapopov2 commented 2 years ago

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.
antonshusharin commented 2 years ago

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\

sevapopov2 commented 2 years ago

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!

djphoenix commented 2 years ago

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.

antonshusharin commented 2 years ago

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):

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.

djphoenix commented 2 years ago

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

antonshusharin commented 2 years ago

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

It does.

sevapopov2 commented 2 years ago

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

sevapopov2 commented 2 years ago

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.
djphoenix commented 2 years ago

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

sevapopov2 commented 2 years ago

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.

sevapopov2 commented 2 years ago

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!