我的AVSpeechSynthesizer代码不能在设备上工作(iOS 10),但它在iOS 9.x上工作,现在在模拟器中工作。
let str = self.audioOutput //just some string here, this string exists, and it's in english
let synth = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: str)
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
let lang = "en-US"
utterance.voice = AVSpeechSynthesisVoice(language: lang)
synth.speakUtterance(utterance)
我得到这个错误:
MobileAssetError:1] Unable to copy asset attributes
Could not get attribute 'LocalURL': Error Domain=MobileAssetError Code=1 "Unable to copy asset attributes"
UserInfo={NSDescription=Unable to copy asset attributes}
0x1741495e0 Copy assets attributes reply: XPC_TYPE_DICTIONARY <dictionary: 0x1741495e0> { count = 1, transaction: 0, voucher = 0x0, contents =
"Result" => <int64: 0x1744203a0>: 1}
在此之前,有这样的错误消息:
Unable to copy asset information from https://mesu.apple.com/assets/ for asset type
有人知道如何解决这个问题吗?我知道有一些变通方法(例如,用户必须转到设置->通用并切换说话选择),但我不认为这是一个真实的的解决方案。
**更新:**我创建了一个新项目(XCode 8/Swift 3/没有其他pod/frameworks等)。它在模拟器中工作,但在我的设备上给我同样的错误。
**更新2:**可在设备上运行。我也有类似的错误消息(无法复制资产属性等),但它现在有效。我不知道那是什么
7条答案
按热度按时间cidc1ykv1#
关闭静音模式(物理开关)。在我的情况下它工作。
ctehm74n2#
我刚刚在iPad Mini 4上遇到了同样的问题。此版本没有物理交换机。但是如果你打开控制中心(向上滑动),有一个静音按钮。关闭此功能,问题会自行修复。
6uxekuva3#
在我的项目中,虽然我在初始化后合成第一句话时遇到了麻烦,但我能够通过重新排列代码来解决这个问题。但是,当AVSpeechSynthesizer初始化时,以及当它的第一句话产生时,我仍然有几十行垃圾被吐到控制台。下面是一个小例子:
我在一个small demo project中复制了这个,但找不到解决方法。不幸的是,恐怕这个问题的正确答案是file a bug,其中I just did:(
e7arh2l64#
在我的场景中,我可以通过在iPhone中启用Internet连接来解决这个问题。
语音识别器只能识别一种语言。使用默认初始值设定项时,如果设备的当前区域设置支持识别器,则会获得该区域设置的语音识别器。请注意,支持的语音识别器与可用的语音识别器不同;例如,某些地区的识别器可能需要因特网连接。可以使用supportedLocales()方法获取支持的区域设置列表,使用isAvailable属性查看特定区域设置的识别器是否可用。
Source
vsnjm48y5#
我已经尝试你的代码只有一个变化和它的工作。试试这个
我的整个代码就像
xfb7svmp6#
对我来说,一个类似的问题通过将语言改为“es”(我的设备是西班牙语的)得到了解决,然后它就工作了。但我想要的是英语的声音,它没有英国口音。事实证明,在我的设备中,我在首选项/可访问性/画外音/转子语言中选择了Niky的语音,但没有下载(可能在很长一段时间不使用它后自动删除)。我选择了亚历克斯,默认的一个,它的工作。
kiayqfof7#
试试这个