I'd like to add text to speech on the iOS, but noticed that NSSpeechSynthesizer seems to be missing from Cocoa-Touch.
Are there any third party, commercial or FOSS, libraries that you would recommend? Will Apple reject an app that contains a third party library?
I've heard that OpenEars is good, but I don't really know too much about it. As for Apple accepting an app with third-party libraries, it all depends on whether or not the third-party library uses private frameworks or not. I'm sure that information is available on the OpenEars website.
How to programmatically use iOS voice synthesizers? (text to speech)
Starting from iOS 7 Apple provides the following API...
https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVSpeechSynthesizer_Ref/Reference/Reference.html
#import <AVFoundation/AVFoundation.h>
…
AVSpeechUtterance *utterance = [AVSpeechUtterance
speechUtteranceWithString:@"Hello world"];
AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];
[synth speakUtterance:utterance];
Have a look a CMU's Flite TTS engine.
There are a few iOS ports of Flite, for example
- https://github.com/KingOfBrian/VocalKit
- https://github.com/jonbarlo/iPhoneTTSSampleApp
- https://bitbucket.org/sfoster/iphone-tts/ (not working)
- http://wiki.monotouch.net/HowTo/Interop/Interopping_with_Open_Source_Text-to-Speech_(TTS)_C_libraries__for_iPhone.
If you are not releasing your app on the App store, I recommend VoiceService API. It is a private API. But it is easy to use and outputs high quality sounds.