Some implemented use cases for SFSpeechRecognizer.
From Apple:
Add NSSpeechRecognitionUsageDescription to your project .plist file. This key is required if your app uses APIs that send user data to Apple’s speech recognition servers.
Also add NSMicrophoneUsageDescription to run in real devices. (This is optional for iOS Simulator.)
- Sample code: Recognizing speech in live audio
- Framework:Speech
- Article: Asking Permission to Use Speech Recognition
See Example app to learn how to use the library.
import bl_speech_recognizer
class YourClassViewModel: ObservableObject {
// ... your properties
private var speechRecognizer = ContinuousSpeechRecognizer()
@MainActor
func startRecording() {
isRecording = true
speechRecognizer.start(inputType: .microphone, locale: .current) { result in
switch result {
case .success(let text):
self.recognizedText = text
case .failure(let error):
self.showError(error.localizedDescription)
}
}
}
@MainActor
func stopRecording() {
isRecording = false
speechRecognizer.stop()
}
}You need to stop recognition by calling stop() on the recognizer.
import bl_speech_recognizer
class YourClassViewModel: ObservableObject {
// ... your properties
private var speechRecognizer = CommandSpeechRecognizer()
@MainActor
func startRecording() {
isRecording = true
speechRecognizer.start(inputType: .microphone, locale: .current) { result in
switch result {
case .success(let text):
self.recognizedText = text
self.isRecording = false
case .failure(let error):
self.showError(error.localizedDescription)
}
}
}
}You don't need to stop recognition, because the CommandSpeechRecognizer will do it. But you can add it to allow user to stop it.
sequenceDiagram
App->>bl-speech-recognizer: start()
actor User
User-->>bl-speech-recognizer: "Hello"
bl-speech-recognizer->>App: recognized("Hello")
User-->>bl-speech-recognizer: "how"
bl-speech-recognizer->>App: recognized("Hello how")
User-->>bl-speech-recognizer: "are"
bl-speech-recognizer->>App: recognized("Hello how are")
User-->>bl-speech-recognizer: "you"
bl-speech-recognizer->>App: recognized("Hello how are you")
App->>bl-speech-recognizer: stop()
sequenceDiagram
App->>bl-speech-recognizer: start()
actor User
User-->>bl-speech-recognizer: "Delete"
User-->>bl-speech-recognizer: "all"
User-->>bl-speech-recognizer: "files"
User-->>bl-speech-recognizer: (One second without speech)
bl-speech-recognizer->>App: recognized("Delete all files")
bl-speech-recognizer->>bl-speech-recognizer: stop()
sequenceDiagram
App->>bl-speech-recognizer: start()
App->>bl-speech-recognizer: synthesize("My name is Chatbot)
actor User
bl-speech-recognizer-->>User: "My"
bl-speech-recognizer-->>User: "name"
User-->>bl-speech-recognizer: "Delete"
bl-speech-recognizer->>bl-speech-recognizer:stopSynthesizing()
User-->>bl-speech-recognizer: "all"
User-->>bl-speech-recognizer: "files"
bl-speech-recognizer->>App: recognized("Delete all files", isFinal: true)
- !!! "Domain=kAFAssistantErrorDomain Code=1101" while setting SFSpeechAudioBufferRecognitionRequest.requiresOnDeviceRecognition = true
- How can I specify the format of AVAudioEngine Mic-Input?
- ios speech recognition Error Domain=kAFAssistantErrorDomain Code=216 "(null)"
- Is there a way to use iOS speech recognition in offline mode?
- Speech Recognition got an error on iOS
- iOS 10.0 Speech Recognition Error kAFAssistantErrorDomain
- SFSpeechRecognizer on MacOS not available despite successful authorization
- SFSpeechRecognizer is not available
- SFspeechRecognizer recognize speech more than one minutes in ios 15?
- SFSpeechRecognizer isn't working properly in IOS 13.2
- How to increase speed of Speech-to-text transcription in iOS App?
- SFSpeechRecognizer - detect end of utterance
