SFSpeechRecognizer isn't working properly in IOS 13.2.

In IOS 13.1, everything worked just fine. Since 13.2, the SFSpeechRecognizer is giving me a hard time. The speech recognition takes way longer than before and the result.IsFinal bool is never true.


I am not just struggling with these errors in my app but also getting them in the official Sample Code Project ( https://developer.apple.com/documentation/speech/recognizing_speech_in_live_audio ).


Is anyone else facing similar problems??

Replies

I have tested this situation. When the user upgrades to 13.2, the online speech recognition time will be very long, which will make the user experience very bad. You can use this code ( SFSpeechAudioBufferRecognitionRequest.Requiresondevicerecognition = YES ) to make speech recognition only request local thesaurus, not online query, which will effectively solve this problem.


Unfortunately, I found that some devices such as 'iPod touch 7' and 'ipad Mini 4' are not supported for this kind of local query.


So if it's these special devices, I don't know how to solve it, because their online query is very slow, and they are not supported locally.


Today, I tested iOS 13.3 beta 3, which has fixed the problem of slow online speech recognition.


Two suggestions:

1. You can wait for 13.3 to release.

2. You can record the voice content as a file, and then identify the file to solve this problem, but this way will be slower.

I got the same problem. in the mean time to wait for Apple fixing, I need a solution for my app

Today Apple released new version for iOS, version 13.2.3 but not mention this issue

I recored the voice content as a file (soundFile) and then transcibe this file, but result is never final. So I have to finish the task with case of result becomes nil. This leads to the program run to slowly:


let recognizer = SFSpeechRecognizer()

let request = SFSpeechURLRecognitionRequest(url: soundFile)

recognizer!.recognitionTask(with: request){

(result, error) in

guard let result = result else{

// handle self.textForRecording here

return

}

self.textForRecording = result.bestTranscription.formattedString

print("result.bestTranscription.formattedString: \(result.bestTranscription.formattedString )")

if (result.isFinal) {

print("isFinal never true")

}

Wondering if Apple acknowledged the issue anywhere? I didn’t get a response to my bug/feedback report.

Same problem here. I'm glad I discovered this thread. My app is due for an update, I think I'll make a note to the users in the app, to notify them of the temporary problem. I hope it won't take too long for 13.3.

Test of the day:

iOS 13.3 developer beta 4 --> OK

Test of the day:


iOS 13.3 release --> OK


Problem solved !

  • OK, but... How ? I've the same problem with iOS > 13.3

Add a Comment

I just downloaded Xcode 11.3 and this is now working for me on the iPhone 11 Pro 13.3 simulator. However, it still doesn't work on my physical iPhone XS with iOS 13.3. Is this happening to anyone else or does anyone know how I can fix it on my physical iPhone? I have tried reinstalling, restarting etc with no luck.

I've tested 13.3 on a physical iPhone 8. It doesn't work unless Siri is activated.


So the user must have Siri activated in order for speech recognition to be available in my app.

I have quite a similar problem. I receive partial and final results with a huge delay. Sometimes it recognizes phrases spoken a long time ago (e.g. over 20-30 seconds). Was only able to reproduce this problem on very few devices (on an iPad Pro 3. gen with iOS 14.x for example). Also answers from Siri have a huge delay on that device sometimes. Has anyone yet found a solution for this?