iOS 8 和 XCode 6 上的 AVFoundation 语音合成

Posted

技术标签:

【中文标题】iOS 8 和 XCode 6 上的 AVFoundation 语音合成【英文标题】:AVFoundation Speech Synthesis on iOS 8 and XCode 6 【发布时间】:2014-09-28 14:56:22 【问题描述】:

我在 ios 8.0.2 和 XCode 5 上使用 AVSpeechSynthesis 时遇到问题。我在模拟器上试了一下,得到“语音初始化错误:2147483665”。然后我在我的 iPhone 5 上试了一下,没有出错,但没有语音。

在我的 .h 文件中我导入

进口

并拥有@property(强,非原子)AVSpeechSynthesizer *synthesizer;

在我的 .m 文件中,我合成了合成器

我的框架中引用了 AVFoundation

在我的 viewDidLoad 中,我执行以下操作

self.synthesizer = [[AVSpeechSynthesizer alloc] init]; self.synthesizer.delegate = self;

稍后在我的代码中控制所说的内容我会执行以下操作

AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:dialog];
utterance.rate = AVSpeechUtteranceDefaultSpeechRate;
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"];
[self.synthesizer speakUtterance:utterance];

我的视图控制器中有 CCViewController : UIViewController。

有谁知道怎么回事? AVFoundation 可以在 iOS 8 中使用吗?

我在堆栈溢出上看到了一个类似的帖子,上面说要初始化我的讲话@“”,但这不起作用。

任何帮助将不胜感激。

谢谢, 格雷格

【问题讨论】:

8.1 模拟器不做 TTS。下载 7.1 模拟器并用于测试。 【参考方案1】:

我认为,您应该稍作调整(见下文),但只能在设备上而不是模拟器上工作。当我尝试运行您的代码或我在模拟器中使用 AVSpeachUtterance 的代码时,我复制了相同的错误消息。不确定这是错误还是模拟器的限制。要使事情正常进行,请尝试注释掉该行:

utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"];

那么它有效吗?如果没有这行代码,我在 iPhone 5 (8.0.2) 上应该可以正常工作,但是如果我使用此处显示的任何代码语言代码 (What are the BCP-47 voice codes available for iOS 7 AVSpeechSynthesisVoice?),则不会说出任何文字。当我明确设置语言时,我可以让事情正常工作的唯一方法是使用@“en-GB”,这也是手机在设置中配置的语言。如果我在设置中更改手机的语言,例如美国英语和@“en-US”,我可以使用其他语言代码。

作为一个仅供参考,需要初始位虚拟文本(即 @" " 才能使事情正常工作的错误似乎已在 8.0.2 中得到修复

【讨论】:

我尝试了这种注释掉声音的方法。但是,它没有用。

以上是关于iOS 8 和 XCode 6 上的 AVFoundation 语音合成的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6.0.1 仅限 iPhone 的应用程序的行为类似于 iPad 上的普通 iPad 应用程序 - iOS 8

总结iOS 8和Xcode 6的各种坑

带有 Xcode 6 的 iOS 8:PSCollectionView 不可滚动且单元格不可使用选项卡式应用程序选择

Xcode 6.3 不再打开仪器

转2Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结

转1Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结