根据苹果文档,
准备好处理由语音识别限制引起的故障。因为语音识别是基于网络的服务,所以限制是强制执行的,以便该服务可以保持对所有应用程序免费提供。每个设备每天可执行的识别数量可能会受到限制,每个应用程序可能会根据其每天发出的请求数量而全局限制。如果识别请求快速失败(在开始后一两秒内),请检查识别服务是否不可用。如果是这样,您可能需要要求用户稍后再试。 https://developer.apple.com/documentation/speech/sfspeechrecognizer 另一个文档说,每个设备每小时可以发送1000个请求。
当前设备每小时可以进行的SFSpeechRecognitionRequest调用次数的限制为1000次。请注意,此限制是设备可以发起的请求次数,而不是应用程序发起的请求次数。无论与请求相关联的音频长度如何,限制都是一样的。对于给定的SFSpeechRecognitionRequest,您可以在每个请求中允许最多一分钟的音频。现在我正在创建一个SFSpeechRecognizer,如下所示,并检查supportsOnDeviceRecognition属性,该属性指示语音识别器是否可以在没有网络访问的情况下运行。在我的安装了iOS 13.2.3的设备上,它返回true。
我尝试离线运行我的应用程序,没有网络连接也能正常工作。但是如果
SFSpeechRecognizer
可以发送的请求次数是有限制的。准备好处理由语音识别限制引起的故障。因为语音识别是基于网络的服务,所以限制是强制执行的,以便该服务可以保持对所有应用程序免费提供。每个设备每天可执行的识别数量可能会受到限制,每个应用程序可能会根据其每天发出的请求数量而全局限制。如果识别请求快速失败(在开始后一两秒内),请检查识别服务是否不可用。如果是这样,您可能需要要求用户稍后再试。 https://developer.apple.com/documentation/speech/sfspeechrecognizer 另一个文档说,每个设备每小时可以发送1000个请求。
当前设备每小时可以进行的SFSpeechRecognitionRequest调用次数的限制为1000次。请注意,此限制是设备可以发起的请求次数,而不是应用程序发起的请求次数。无论与请求相关联的音频长度如何,限制都是一样的。对于给定的SFSpeechRecognitionRequest,您可以在每个请求中允许最多一分钟的音频。现在我正在创建一个SFSpeechRecognizer,如下所示,并检查supportsOnDeviceRecognition属性,该属性指示语音识别器是否可以在没有网络访问的情况下运行。在我的安装了iOS 13.2.3的设备上,它返回true。
let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))!
print(speechRecognizer.supportsOnDeviceRecognition) //true
我尝试离线运行我的应用程序,没有网络连接也能正常工作。但是如果
supportsOnDeviceRecognition
为true,则不清楚是否仍有请求限制。在这种情况下,即使设备连接到互联网,SFSpeechRecognizer
可能也不会连接到苹果服务器,因为这是不必要的。速率限制仅在supportsOnDeviceRecognition
为true时吗?