当AVSpeechUtterance使用Alex和属性字符串

时间:2018-10-20 11:08:35

标签: ios swift

经过更多测试以缩小问题范围(感谢OOPer)后更新。

我的应用使用文本进行语音转换,我使用的是AVSpeechUtterance(attributedString:,因此我可以使用AVSpeechSynthesisIPANotationAttribute指定特定单词的发音。

如果设置了Alex,应用程序将在设备上崩溃。

要复制:

1)下载Alex(设置/常规/辅助功能/语音/语音/英语/ Alex)-注意869Mb!

2)运行以下

    let anyString = NSMutableAttributedString(string: "Any string")
    let utterance = AVSpeechUtterance(attributedString: anyString)
    utterance.voice = AVSpeechSynthesisVoice(identifier: AVSpeechSynthesisVoiceIdentifierAlex)
    AVSpeechSynthesizer().speak(utterance)

错误是:

“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'***-[NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]:nil参数'“

注意:

Apple文档说Alex仅在美国销售,而我使用的是英国设备,但

1)您可以在英国下载Alex,AVSpeechSynthesisVoice.speechVoices()会退还给您。如果您枚举列表并将其选中(例如,说出自己想要第一个英语增强型语音,就像我一样),则该应用程序将崩溃。

2)即使您将语言环境设置为美国并将Alex设置为默认声音,也会发生崩溃。

3)我的问题是我的应用程序是全球性的,但是会说英语(如果可以的话),因此我需要从设备上可用的语言中选择一种特定的“ En”语言。不包括亚历克斯。

4)我没有在IOS 12.0(iPad)和12.0.1(6s)(均死机)上进行过测试,我没有任何具有IOS较早版本的设备。

我的问题:

1)美国的任何人都可以帮我看看这次崩溃是否发生在真正的美国设备上吗?

2)谁能想到不排除Alex的修复/变通办法?毕竟,用户可能已选择它作为他们的首选语音...

0 个答案:

没有答案
相关问题