supportsOnDeviceRecognition Returns False On All Devices

I am trying to test out the on-device speech recognition support in iOS 13. According to the presentation at WWDC, it should be available on all devices with an A9 or newer processor. I'm using one of the supported language variants (en_US). So far it has failed on an iPhone 8, iPad Mini 5, iPad Pro 10.5" and an iPad Pro 11" - all of which are running iOS 13.2 and have the requisite language loaded.


Here's a snippet of my code


        if #available(iOS 13, *) {
            if recognizer.supportsOnDeviceRecognition {
                recognitionRequest.requiresOnDeviceRecognition = true
            } else {
                print("Device does not support offline speech recognition.")
                return
            }
        }


In every case the call to supportsOnDeviceRecognition returns false. At first I assumed that it was a know bug (see the release notes) but I've tried waiting a few seconds and running it again but it still fails.


Any suggestions? Has anyone else had a similar issue?

Replies

Oh, small follow-up point on this: it appears that in some cases (I'm currently testing on the 11" iPad Pro) the device will do on-device recognition even if the supportsOnDeviceRecognition value is false and without setting the requiresOnDeviceRecognition flag. Weird.

Ok, nobody has responded to this for the past two weeks so either there aren't too many people using this feature or it's working ok for others. If you are using on-device recognition - successfully or unsuccessfully - please post a brief response.


Thanks!


Steve

Have you found any solution to this problem? I'm also running into similar situation where the ondevice speech recognition works on some devices and not on others (supportsOnDeviceRecognition returns false). All the devices are running iOS 13.3 or higher with A9 processor and above. I noticed a strange behaviour with iPhone X, where after upgrading to iOS 13.3, supportsOnDeviceRecognition is false. After couple of days, restarting the device, had supportsOnDeviceRecognition set to true (Though supportsOnDeviceRecognition is false, offline recognition was still working). Weird!

I have the same issue

I just tried to iterate through

[SFSpeechRecognizer supportedLocales]

creating a new SFSpeechRecognizer with a locale described:

SFSpeechRecognizer* recognizer = [[SFSpeechRecognizer alloc] initWithLocale:locale];

then I try to do this:

return [recognizer supportsOnDeviceRecognition];


But the only supported locales show up as

"en-US"

"en-CA"

"ar-SA"


That's 3 supported offline languages, 2 of which are English. Where's the other 7+? WWDC slides mentioned that the SFSpeechRecognizer should support 10+ languages in offline mode.


I'm using an Iphone 11 Pro Max, iOS 13.4.1



edit: ugh. just found this tweet, for anyone else looking for an answer:

https://twitter.com/Valzevul/status/1177241666593415168

Post not yet marked as solved Up vote reply of bcx Down vote reply of bcx