有没有一种方法可以在离线模式下使用iOS语音识别?

26

您可以使用软键盘上的麦克风按钮将语音输入到textField和textView中。这在离线模式下也可以使用。不过请注意,它不支持解释语音命令。 - Magnas
@Magnas,你确定即使在离线模式下麦克风按钮也应该启用吗?我在四部不同的iPhone上进行了测试,但它都是禁用的... - Ahmad F
跟 @AhmadF 一样,当离线模式开启时,我的应用程序中也没有麦克风按钮可用。 (http://imgur.com/GHZ9I6x) - Danyl
嗯,我的默认已经开启了。我会再仔细检查一下。 - Magnas
2个回答

22

很抱歉,目前没有方法可以做到这一点(但请确保查看答案末尾的更新)。

Speech Framework官方文档所述:

  

为提供出色的用户体验而实施的最佳实践:

     

准备好处理可能由于达到语音识别极限而引起的故障。因为语音识别是基于网络的服务,因此会执行限制,   以便该服务可供所有应用程序免费使用。


从终端用户的角度来看,如果未连接到网络,则尝试获取Siri的帮助应显示类似以下屏幕:

enter image description here

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

enter image description here

原生iOS本身不会在检查网络连接之前启用此功能。我认为第三方开发者使用Speech Framework也是如此。


更新:

观看语音识别API会话(特别是03:00 - 03:25的部分)后,我得出结论:

语音识别API通常需要Internet连接,但有一些新设备始终支持此功能;您可能需要检查所提供的语言是否可用。

摘自SFSpeech​Recognizer文档:

请注意,支持的语音识别器与可用的语音识别器不同。例如,某些区域设置的识别器可能需要互联网连接。 您可以使用supported​Locales()方法获取受支持的区域设置列表,使用is​Available属性查找特定区域设置的识别器是否可用。


更多阅读:

这些主题可能相关:


@DanylS 老实说,我现在还不知道:D,一旦我得到相关信息,我会更新我的答案;问题是你应该先检查设备支持的语言环境,然后再检查是否有互联网连接。 - Ahmad F
@AhmadF 谢谢您提供这个有用的总结。它在英语环境下适用于 iPhone 6s。不确定其他设备是否支持。(也许支持 iPhone 6s 及以后的版本。) - Mohammad Zaid Pathan
1
@ZaidPathan 很高兴能帮忙,目前还没有关于此事的更新。不过,如果有更新的情况下,我可以在评论中提到你 :) - Ahmad F
在iPhone 6s上离线工作正常,但在iPhone 6上无法工作。 - Mohammad Zaid Pathan
@ZaidPathan 看起来这就是我在“更新”中提到的情况! - Ahmad F
显示剩余3条评论

21

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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接