iOS文本到语音API

我似乎无法find任何东西。 在iOS7中有没有Siri类或API可以让你做文本到语音? 我所要做的就是如下所示:

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

然后让Siri从我的应用程序中说出来。

看来我们应该有能力做到这一点,不是吗? 看起来像一个微不足道的事情。

从iOS 7开始,你有了一个新的TTS Api。

在目标C中

 AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init]; AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"Some text"]; [utterance setRate:0.2f]; [synthesizer speakUtterance:utterance]; 

在Swift中

 let synthesizer = AVSpeechSynthesizer() let utterance = AVSpeechUtterance(string: "Some text") utterance.rate = 0.2 

你也可以像这样改变语音:

 utterance.voice = AVSpeechSynthesisVoice(language: "fr-FR") 

然后speek

  • 在Swift 2中 synthesizer.speakUtterance(utterance)

  • 在Swift 3中 synthesizer.speak(utterance)

不要忘记import AVFoundation

有用的方法

您可以使用以下两种方法停止或暂停所有语音:

 - (BOOL)pauseSpeakingAtBoundary:(AVSpeechBoundary)boundary; - (BOOL)stopSpeakingAtBoundary:(AVSpeechBoundary)boundary; 

AVSpeechBoundary表示应该暂停还是立即停止( AVSpeechBoundaryImmediate ),还是应该在当前正在说的单词之后暂停或停止( AVSpeechBoundaryWord )。

检查AVSpeechSynthesizer Doc

我从来没有专门与Siri做过任何工作。 我可能是错的,但我认为使用私有API很难与Siri集成。

我会看看IOS的openears框架。 在过去,我已经做了一些基本的工作,既有离线的语音识别,也有合成的语音/文本到语音

希望这可以帮助你。

这是阿里·阿巴斯在游乐场使用的答案:

 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) 

在这里,您将在此基础上find一个文本到语音(TTS)示例应用程序(Objective-C)