Ok I was able to resolve my confusion with SFSpeechRecognizer. What I found was:
SFSpeechRecognizer no longer works in simulator on iOS 17 at all. It works fine on iOS 16.4 simulator but in 17.0 it returns error 1107 and a nil transcript in the completion block of recognitionTask(with:resultHandler). This is regardless of whether requiresOnDeviceRecognition is set true or false.
SFSpeechRecognizer works fine on device in iOS 17, but emits spurious error 1101 messages in the console during the recognition process. These logs don't seem to negatively affect performance or the resulting transcript. Again, this is regardless of whether requiresOnDeviceRecognition is set true or false.
I think that the limitation of only working on-device is known by Apple ... the sample app described in https://developer.apple.com/documentation/speech/recognizing_speech_in_live_audio mentions this caveat: "The sample app doesn’t run in Simulator, so you need to run it on a physical device with iOS 17 or later, or iPadOS 17 or later." This is a little vague, but does add weight to the idea that simulator usage is not supported.
Topic:
Programming Languages
SubTopic:
Swift
Tags: