iOS Text To Speech Api
Since iOS 7 you have a new TTS Api.
In Objective C
AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"Some text"];[utterance setRate:0.2f];[synthesizer speakUtterance:utterance];
In Swift
let synthesizer = AVSpeechSynthesizer()let utterance = AVSpeechUtterance(string: "Some text")utterance.rate = 0.2
You can also change the voice like this :
utterance.voice = AVSpeechSynthesisVoice(language: "fr-FR")
And then speek
In Swift 2
synthesizer.speakUtterance(utterance)
In Swift 3
synthesizer.speak(utterance)
Don't forget to import AVFoundation
Helpful methods
You can Stop or Pause all speech using these two methods :
- (BOOL)pauseSpeakingAtBoundary:(AVSpeechBoundary)boundary;- (BOOL)stopSpeakingAtBoundary:(AVSpeechBoundary)boundary;
The AVSpeechBoundary
indicates if the speech should pause or stop immediately (AVSpeechBoundaryImmediate
) or it should pause or stop after the word currently being spoken (AVSpeechBoundaryWord
).
Check the AVSpeechSynthesizer Doc
This is Ali ABBAS' answer for use in a playground:
import UIKitimport AVKitimport AVFoundationimport PlaygroundSupportvar str = "Hello, playground"let synthesizer = AVSpeechSynthesizer()let utterance = AVSpeechUtterance(string: str)utterance.rate = 0.4utterance.voice = AVSpeechSynthesisVoice(language: "en-US")//for playground onlylet playerViewController = AVPlayerViewController()PlaygroundPage.current.liveView = playerViewController.view//synthesizer.speak(utterance)
I have never done any work specifically with Siri. I may be wrong, but I think integrating with Siri is very difficult using private API's.
I would take a look at the openears framework for IOS. I have done some basic work with this in the past and it does both offline speech recognition and synthesized speech/text-to-speech
Hope this helps you.