25

我想知道是否有办法在离线模式下使用 iOS 语音识别。根据文档(https://developer.apple.com/reference/speech),我没有看到任何关于它的信息。

4

2 回答 2

22

恐怕没有办法做到(不过,请务必检查答案末尾的更新)

语音框架官方文档中所述:

出色用户体验的最佳实践:

准备好处理因达到语音识别限制而可能导致的故障。 由于语音识别是一项基于网络的服务,因此会强制执行限制,以便该服务可以免费提供给所有应用程序。


从最终用户的角度来看,尝试在不连接网络的情况下获得Siri 的帮助应该会显示类似于以下内容的屏幕:

在此处输入图像描述

此外,例如,当您尝试发送按摩时,您会注意到如果设备未连接到网络,则应该禁用麦克风按钮。

在此处输入图像描述

iOS 本身在检查网络连接之前无法使用此功能,我认为第三方开发人员在使用语音框架时也是如此。


更新:

看完Speech Recognition API Session(尤其是 03:00 - 03:25 部分)后,我想出了:

Speech Recognition API通常需要互联网连接,但有一些新设备一直支持此功能;您可能想检查给定的语言是否可用。

改编自SFSpeech​Recognizer 文档

请注意,支持的语音识别器与可用的语音识别器不同;例如,某些语言环境的识别器可能需要 Internet 连接。您可以使用该 supported​Locales()方法获取支持的语言环境列表和 is​Available属性来确定特定语言环境的识别器是否可用。


延伸阅读:

这些主题可能相关:

于 2017-03-20T10:15:37.227 回答
20

离线转录将从 iOS 13 开始提供。您可以使用requiresOnDeviceRecognition.

示例代码(Swift 5):

// Create and configure the speech recognition request.
recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
guard let recognitionRequest = recognitionRequest else { fatalError("Unable to create a SFSpeechAudioBufferRecognitionRequest object") }
recognitionRequest.shouldReportPartialResults = true

// Keep speech recognition data on device
if #available(iOS 13, *) {
    recognitionRequest.requiresOnDeviceRecognition = true
}
于 2019-07-15T21:56:33.313 回答