4

I have a question about understanding event changes in iOS when VoiceOver is enabled. I'm developing some app for blind people.

Unfortunately there is not TTS support on iOS, differently from the Mac OS SDK where you can use NSSpeechSynthesizer objects.

I found VoiceService the is not public. So, in conclusione it seems that no API for speak text is available on iOS.

The question is: How can I notify the user about data processing end?

Here is a user case: User push button, the app make some calculus/process, than should return the result. In Mac this is easy you use speakString:@"Result".

But how can I tell VoiceOver to announce the result??

Excuse me if I was too contort :-)

Thank you very much...

Altair Jones
  • 834
  • 1
  • 7
  • 20

2 Answers2

3

You could use this

if (UIAccessibilityIsVoiceOverRunning()) {
   UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
                                   @"Result has been computed.");
}
Mike
  • 46
  • 2
2

VSSpeechSynthesizer is available for the iOS - but it is a private API and as such will likely be rejected from the app store. However you can still make apps for private consumption.

I consider it being a Private API a bug as it makes creating accessible apps for the partially sighted for instance, harder. I have filed Bug ID #: 9451650 Bug Title: VSSpeechSynthesizer is Private

You can use FliteTTS which is free and reasonably simple to integrate, and still working in iOS5+.

You could also record a generic message 'Results available' as a wav file and play that. If your message is static (or is from a short list of possible results) you do not need TTS.

iOS6 VoiceOver / Accessibility was mentioned in the WWDC2012 keynote.

See previous answers here (which I have reiterated above)

Community
  • 1
  • 1
artaxerxes
  • 71
  • 1
  • 4
  • Thank you very much. I notice that Flite is english. I'm an italian research and I'd like to make app for italians low-sighted people too. Do you know if we could find Flite in other languages than english? – Altair Jones Jul 09 '12 at 08:55
  • The Italian version of the desktop version of FLITE is here. http://www2.pd.istc.cnr.it/FESTIVAL/home/IT-Flite.htm#Top From the description of FLITE on bitbucket, FLITE for iOS it include these voices cmu_us_kal cmu_us_kal16 cmu_us_awb et cetera I imagine if you could determine the way these are packaged you could add one of the italian voices i.e. [fliteEngine setVoice:@"cmu_it_example"]; I would suggest contacting filbattaglia@libero.it for some tips! – artaxerxes Jul 09 '12 at 10:07