2012-03-30 75 views
38

iOS设备为嵌入式语音合成器提供了辅助功能的VoiceOver功能。有没有一种方法可以通过编程方式使用这些合成器来生成基于文本的声音?如何以编程方式使用iOS语音合成器? (文本到语音)

我的问题是:我正在一个简单的应用程序,为孩子们学习颜色,而不是记录的颜色的名字在我想要支持的每种语言,并将其保存为音频文件,我宁愿生成在运行时发出一些文本到语音的功能。

感谢

[编辑:这个问题被问前iOS7所以你真的应该考虑表决的答案而忽略旧的,除非你是一个软件考古学家]

回答

61

从iOS的7起,苹果提供this API 。

this答案。

Objective-C的

#import <AVFoundation/AVFoundation.h> 
… 
AVSpeechUtterance *utterance = [AVSpeechUtterance 
          speechUtteranceWithString:@"Hello World!"]; 
AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init]; 
[synth speakUtterance:utterance]; 

斯威夫特

import AVFoundation 
… 
let utterance = AVSpeechUtterance(string: "Hello World!") 
let synth = AVSpeechSynthesizer() 
synth.speakUtterance(utterance) 
+0

我们可以将说出的声音保存为mp3文件吗? – 2016-07-01 10:51:18

+0

@Onato如何停止在文本到语音。? – ShreePool 2017-03-29 11:48:00

4

不幸的是iOS不公开一个用于编程生成语音的公共API。

有一个private API你可以使用,如果你不提交到App Store。

否则,看到一个数字,你可以使用第三方库来this question响应。

+7

让我们希望苹果的人都会过来这里看这是一个“请,让最API公开”的要求;) – 2012-03-30 09:10:43

+1

苹果并没有理会,甚至直接发布到他们的要求,所以我不会期望太多:( – MrTJ 2012-03-30 11:09:33

+7

事实上,苹果公司做到了。 :) – 2013-09-19 10:32:42

0

你能有所帮助Making Your iPhone Application Accessible

如表示:“iPhone辅助功能的API和工具,”标准的UIKit控件和视图自动访问。如果您仅使用标准的UIKit控件,则可能不需要做太多的额外工作来确保您的应用程序可访问。在这种情况下,下一步是确保这些控件提供的默认属性信息在您的应用程序中有意义。 “提供准确和有用的属性信息”要了解如何做到这一点,看到

11
#import <AVFoundation/AVFoundation.h> 

AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc] init]; 
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"Text to say"]; 
[av speakUtterance:utterance]; 
+0

我们可以将发音保存为mp3文件吗? – 2016-07-01 10:51:48

4

此代码为我工作用斯威夫特和iOS 8两个模拟器和iPhone 6.我需要添加标准AVFoundation库:

import AVFoundation 

// ... 

func onSayMeSomething() { 
    let utterance = AVSpeechUtterance(string: "Wow! I can speak!") 
    utterance.pitchMultiplier = 1.3 
    utterance.rate = AVSpeechUtteranceMinimumSpeechRate * 1.5 
    let synth = AVSpeechSynthesizer() 
    synth.speakUtterance(utterance) 
} 
相关问题