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)