asterics / AsTeRICS-Grid

Free and simple to use app for augmentative and alternative communication (AAC) with offline support, flexible input methods and media access
https://grid.asterics.eu/
GNU Affero General Public License v3.0
55 stars 17 forks source link

Asterics Grid Voice menu (on iOS) only shows one language of three available on Accesibility Settings. #223

Closed arasaac-dga closed 1 year ago

arasaac-dga commented 1 year ago

On an iPad configured in Spanish, in Content Reading option inside Accessibility Settings, the system offer 3 languages for Spanish (Spain) and another three for Spanish (Mexico):  

configurar_voces_automatico_iOS_3

But in Asterics Grid, on Voice Menu you can only select one language in Spanish (Spain), Monica and one for Spanish (Mexico), Paulina:

configurar_voces_automatico_iOS_5

It could be neccesary to investigate why it shows only one and if it is or not possible to retrieve the three languages available on Accessibility options. 

klues commented 1 year ago

I now have a real iPad available for testing and found out the reason for this problem: iOS has many voices with the same name (e.g. "Eddy"). I have considered voice names to be unique and therefore discarded Eddy (es) after I've already added Eddy (en) - that's the reason some voices didn't show up for selection. I've now changed it and using the unique voiceURI for distinguising between voices.

Now there are many more voices like Eddy (es-ES) and Eddy (es-MX) - however for me they sound exaclty the same. But I think we should continue showing both since it's an error of iOS to offer two different voices which are actually the same.

Should be available for testing on grid.asterics.eu/latest/ in 10 minutes.

arasaac-dga commented 1 year ago

We have checked and if you set Spanish as content language only 2 voices are shown (one in ES-es Monica and antother ES-mx Paulina). So in Spanish is not solved.

configurar_voces_automatico_iOS_5

iOS in Accesibility options offer 3 voices for ES-ES and 3 for ES-MX

configurar_voces_automatico_iOS_3

klues commented 1 year ago

OK, for me it seems that there are much more voices available in the iOS settings: image

This is what the settings in AsTeRICS Grid look like for me now: image

Most of the voices available seem to come from "Eloquence" in the iOS settings menu, where these voices are listed. However the voice I've selected in iOS settings ("Carlos") also isn't shown in AsTeRICS Grid. But it's also not shown on any other web speech API demo page like this: https://eeejay.github.io/webspeechdemos/ So I'm afraid that for whatever reason Apple decided to make some voices available via Web Speech API and some not.

arasaac-dga commented 1 year ago

Perhaps we have different iOS versions? Our iPad is old (5 years ago). Perhaps it's the reason why we only have 3 voices and only ES-ES and ES-MX. Or perhaps is because we have the iOS on Spanish. We don't know the reason but as you see in screenshots we dont have so many voices avaiable. Where is the path you floow to see all the voices avaiable? Attach some screenshots in English. We will try to change the language to English and follow the steps to try and we tell you our iOS version. Thanks.

klues commented 1 year ago

We have an iPad Pro 12,9 inch, 3rd generation, with iOS 16. Maybe it's because it's the "pro" version.

I've switched my language to Spanish and this is the path in iOS settings to get to the voices (but I think it's the same you're using): Accesibilidad -> Contenido leido -> Voces -> Español

klues commented 1 year ago

In an email you've commented:

We have found an intermediate solution, fixing as predefined the male voice (for example Jorge) and set the voice as Automatic in Asterics Grid but it's a complex solution to users.

This isn't working for me, "automatic" just uses the first language of the list. However I've found another iOS bug, sometimes the voice says something like "speak - voice name apple eloquence ... " and only then the text it should speak. So for me it seems like Apple's implementation is quite buggy.

klues commented 1 year ago

I've posted the behaviour of missing voices at the Apple Developer forum. It's currently being reviewed and then should be available at this link: https://developer.apple.com/forums/thread/723503

Let's see if I get an answer.

arasaac-dga commented 1 year ago

Chapter 2. We had an Ipad Pro 9.5 with iOS 15.6. We have uploaded it to iOS 16. The result is, as you comment, that they have added new voices for different Spanish dialects and now is available the new "Eloquence" voice that offer different voices that are really really awful and with very poor quality. So, the new feature that you have added in latest, shows the new "Eloquence" voices but they are so poor that it's better to come back to the main version solution and offer only one per language. As a collateral effect, the trick that we use for setting the voice in Automatic (using the voice predefined in Accessibility) is lost. It worked with iOS 15 but not with iOS 16. So, we have lost more than we won with system updates. Hopefully, Apple responds to you and can reorientate this, because it's a pity not to have access to all the available voices through the API.

klues commented 1 year ago

Oh, that's really embarrassing that updating to a new version takes away functionality 😞 Unfortunately it seems to be intended by Apple, this is their answer:

Hey there, it is expected that with Web Speech APIs only the pre-installed voices are available. Optionally downloadable voices are not available

arasaac-dga commented 1 year ago

Can you come back in the the update you made yesterday in latest to restore the list of voices as is in manin version? The new "Eloquence" voices is better that are not show in the list because are awful. About Apple response they not clarify why Web Speech API only show one voice and not all pre-installed. Because in case of Spanish Jorge that is preinstalalled is not shown in the list of Asterics. Not working the trick of Automatic selection it would be neccesary that all pre-installed voices (3 in Spanish, Jorge, Monica,...) are listed. It's really a problem because users need one male voice at least to choose.

klues commented 1 year ago

I've commented to Apple that it's embarrassing that the iOS 16 update takes away some functionalities from the user and also that preinstalled voices like "Jorge" are not listed.

Of course I could revert the update of AsTeRICS Grid, but it would mean that I'm restoring a bug, which isn't what I really want to do. Just because the voices aren't good, I don't think they should be removed, I think the users should be able to decide what they want to use. However if you really think that it's best to remove the voices, I maybe would only filter out the spanish "Eloquence" voices, not all. Maybe for some other language these voices are better or the only offline alternative?! I also could just sort the voices and display the "Eloquence" voices at the bottom.

arasaac-dga commented 1 year ago

Ok thanks for commenting on it to Apple. We understand that you comment to not to come back. Really it's not your problem and you make much more than Apple does. The main problem is not only the low quality of "Eloquence" voice but, above all, lose the possibility to use the Automatic option that on iOS 15 offers a good solution. So, leave as is at the moment and we wait for Apple's response. We thought about leaving as the last option or other solution. We will comment. Thanks as always!!!

arasaac-dga commented 1 year ago

We have tested un other languages like English and some voces luke bubbles or lsughing are a joke (but ver sadly). So please leave Eloquence voices at the end of the list in you can. Anyway we are stunning about this new voices. We don't understand coming from Apple but it's their problem. Thanks

klues commented 1 year ago

I've just updated to https://grid.asterics.eu/latest

I think this should be a good solution.

arasaac-dga commented 1 year ago

Ok, thanks. It's the best solution at the moment. We hope Apple gives a solution and it's possible to have access to all the other voices via Web Speech API (including Jorge or Monica) or recover the option to select them via Automatic selection on Asterics.

klues commented 1 year ago

released with https://github.com/asterics/AsTeRICS-Grid/releases/tag/release-2023-02-10-12.55%2F%2B0100

klues commented 1 year ago

I've just updated to iOS 17 and it looks like something has changed. For each language I now can select at least one higher quality voice, for German Anna and for Spanish (ES) Mónica and (MX) Paulina. Additionally I've noticed that in Safari only these higher quality voices are available now, while in Chrome also the voices with bad quality are still available (e.g. Eddy, Flo, Grandma, etc.).

So in total I think a very positive change. However of course it would be still better if we would have all voices that are listed in the system settings.

arasaac-dga commented 1 year ago

Yes. They are good news but not completely because at least in spanish we have a problem. There are no male voices and many users don't identify with female ones. We don't know how Apple doesn't consider something so basic as it's to offer almost one male and one female quality voice.

klues commented 1 year ago

Yes, it's the same in German, there is only female Anna.

klues commented 1 day ago

A new update - after updating my testing iPad to iOS 18, things got worse again (regarding the high-quality voices). The German voice "Anna" is completely gone, the Spanish "Monica" and "Paulina" where working shortly, but then also disappeared and now only for English there are "Karen", "Moira", "Rishi" and "Samantha". Another English voice was shortly existing, but then also disappeared. So currently people using AsTeRICS Grid on iPad should not update to iOS 18.

arasaac-dga commented 1 day ago

Ohhh noo!!. This have no sense!! We would like to know which is the objetive of Apple taking this kind of actions. Perhaps is related with the idea of not offer support for webapps? (that are not in its app store and not give money?).

klues commented 1 day ago

Maybe, but it seems very uncoordinated and buggy. In iOS 16 it was similar to now in iOS 18 and in iOS 17 it was better because at least single high quality languages were avaiable for webapps. And now in iOS some voices are shortly available and then disappear... Maybe things change to the better when there will be the "real" Chrome or Firefox available for iOS. Currently all iOS browsers are using the WebKit Engine of Safari in the background, but the EU has forced Apple to also open it to other browsers engines like Blink from Chrome: https://medium.com/@golisaikrupa.409/apple-unlocks-full-potential-of-chrome-and-firefox-on-iphone-for-eu-users-8a392c0f5ecd

However, it will still need some time until these new Chrome or Firefox versions are available. And maybe then iOS still doesn't give them access to the system API for the voices...

klues commented 1 day ago

I've added a new comment to the Apple Developer thread: https://developer.apple.com/forums/thread/723503?page=1#805333022

Some other people also have complained there, you could also register and do so. Maybe it helps at some time.

arasaac-dga commented 23 hours ago

Thanks for the explanation about the possible reasons for the problems with TTS Voices on the navigators. We don't know that Chrome and Firefox are obligated to use Webkit Engine. It could be a reason. Hopefully it will be solved in near future because this issue seriously compromises the accessibility not only of Asterics Grid but other web pages too.

klues commented 20 hours ago

Good news in the bad news: I found a way to get at least one high quality voice working on iOS 18. If I pass null (nothing) to the API for speech, it seems like the default system voice is used. This default system voice depends on the current language of the device.

Therefore I've added a new voice which can be selected named Default system voice (or defaultSystemVoice for Spanish, since it's currently not translated in crowdin). This causes to pass null to the API and therefore select the default system voice. I've tested to set my iPad to German and Spanish as device language and then Default system voice was a higher quality voice in this device language.

For the language of Default system voice the current browser language is shown (which will be the same as the device language is most cases).

The difference to the existing automatic voice: with automatic the first voice from the existing voices of the current language is used. This can be "default system voice" (if it's the only voice in this language) or another voice with a real name.

Maybe this new "default system voice" is also useful for other cases on other operating systems. It's released to "latest", so you can test.

arasaac-dga commented 21 minutes ago

Ok, thanks for discover this "solution" that is not the best but it's a solution. Hopefully the use of other navigator engines solve the problem in near future. We have translated in Crowdin. So you can launch it on main version of AG.