iOS Text To Speech Api

纵饮孤独 提交于 2019-11-26 18:47:50

问题


I can't seem to find anything on this. Are there any Siri classes or API's in iOS7 that let you do text to speech? All I am trying to do is something like the following:

[siriInstance say:@"This is a test"];

And then have Siri say it from my app.

It seems we should be capable of doing this, no? Seems like a trivial thing.


回答1:


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




回答2:


This is Ali ABBAS' answer for use in a playground:

import UIKit
import AVKit
import AVFoundation
import PlaygroundSupport

var str = "Hello, playground"

let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: str)
utterance.rate = 0.4
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")

//for playground only
let playerViewController = AVPlayerViewController()
PlaygroundPage.current.liveView = playerViewController.view
//

synthesizer.speak(utterance)    



回答3:


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.




回答4:


Here you will find a text to speech (TTS) sample app (Objective-C) based on this



来源:https://stackoverflow.com/questions/22561926/ios-text-to-speech-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!