如何以编程方式使用iOS语音合成器? (文字转语音)

时间:2012-03-30 08:38:38

标签: ios accessibility voice audio

iOS设备为Accessibility的VoiceOver功能嵌入了语音合成器。有没有办法可以通过编程方式使用这些合成器来生成基于文本的声音?

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

由于

[编辑:这个问题在iOS7之前被问过,所以你应该考虑投票的答案并忽略旧的答案,除非你是软件考古学家]

6 个答案:

答案 0 :(得分:62)

从iOS 7开始,Apple提供this API。

请参阅this回答。

<强>目标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)

答案 1 :(得分:11)

#import <AVFoundation/AVFoundation.h>

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

答案 2 :(得分:5)

这个代码适用于Simulator和iPhone 6上的Swift和iOS 8.我需要添加标准的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)
}

答案 3 :(得分:3)

不幸的是,iOS不公开用于以编程方式生成语音的公共API。

如果您没有提交到App Store,可以使用private API

否则,请参阅this question对您可以使用的许多第三方库的回复。

答案 4 :(得分:0)

你可以找到这个有用的Making Your iPhone Application Accessible

  

如“iPhone辅助功能API和工具”中所述,可自动访问标准UIKit控件和视图。如果您只使用标准的UIKit控件,则可能不需要做太多额外的工作来确保您的应用程序可以访问。在这种情况下,下一步是确保这些控件提供的默认属性信息在您的应用程序中有意义。要了解如何执行此操作,请参阅“提供准确且有用的属性信息。”

答案 5 :(得分:0)

您可以尝试使用这些第三方API:iSpeechOpenEars