https://github.com/madcato/bl-speech-recognizer
Some implemented use cases for SFSpeechRecognizer
https://github.com/madcato/bl-speech-recognizer
sfspeechrecognizer speech speech-recognition speech-to-text swift xcode
Last synced: 8 months ago
JSON representation
Some implemented use cases for SFSpeechRecognizer
- Host: GitHub
- URL: https://github.com/madcato/bl-speech-recognizer
- Owner: madcato
- License: mit
- Created: 2024-12-31T10:15:25.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-03-24T14:13:20.000Z (12 months ago)
- Last Synced: 2025-03-24T15:27:00.859Z (12 months ago)
- Topics: sfspeechrecognizer, speech, speech-recognition, speech-to-text, swift, xcode
- Language: Swift
- Homepage:
- Size: 488 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# bl-speech-recognizer
Some implemented use cases for SFSpeechRecognizer.
## IMPORTANT
From [Apple](https://developer.apple.com/documentation/speech/asking-permission-to-use-speech-recognition):

Add [NSSpeechRecognitionUsageDescription](https://developer.apple.com/documentation/BundleResources/Information-Property-List/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](https://developer.apple.com/documentation/BundleResources/Information-Property-List/NSMicrophoneUsageDescription) to run in real devices. (This is optional for iOS Simulator.)
## Apple documentation
- Sample code: [Recognizing speech in live audio](https://developer.apple.com/documentation/speech/recognizing-speech-in-live-audio)
- Framework:[Speech](https://developer.apple.com/documentation/speech)
- Article: [Asking Permission to Use Speech Recognition](https://developer.apple.com/documentation/speech/asking-permission-to-use-speech-recognition)
## Sample usage
See [Example app](./examples) to learn how to use the library.
### Continouos speech recognition
```swift
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.
### Command speech recognition
```swift
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.
## Use cases sequence diagrams
### Continuous recognition
```mermaid
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()
```
### Command recognition
```mermaid
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()
```
### Interruptible chat
```mermaid
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)
```
## StackOverflow useful links
- !!! ["Domain=kAFAssistantErrorDomain Code=1101" while setting SFSpeechAudioBufferRecognitionRequest.requiresOnDeviceRecognition = true](https://stackoverflow.com/questions/75511637/receiving-error-domain-kafassistanterrordomain-code-1101-while-setting-sfspeec)
- [How can I specify the format of AVAudioEngine Mic-Input?](https://stackoverflow.com/questions/33484140/how-can-i-specify-the-format-of-avaudioengine-mic-input)
- [ios speech recognition Error Domain=kAFAssistantErrorDomain Code=216 "(null)"](https://stackoverflow.com/questions/44767316/ios-speech-recognition-error-domain-kafassistanterrordomain-code-216-null)
- [Is there a way to use iOS speech recognition in offline mode?](https://stackoverflow.com/questions/42900254/is-there-a-way-to-use-ios-speech-recognition-in-offline-mode)
- [Speech Recognition got an error on iOS](https://stackoverflow.com/questions/39927727/speech-recognition-got-an-error-on-ios)
- [iOS 10.0 Speech Recognition Error kAFAssistantErrorDomain](https://stackoverflow.com/questions/37805891/ios-10-0-speech-recognition-error-kafassistanterrordomain)
- [SFSpeechRecognizer on MacOS not available despite successful authorization](https://stackoverflow.com/questions/59920660/sfspeechrecognizer-on-macos-not-available-despite-successful-authorization/76836073#76836073)
- [SFSpeechRecognizer is not available](https://stackoverflow.com/questions/39741938/sfspeechrecognizer-is-not-available)
- [SFspeechRecognizer recognize speech more than one minutes in ios 15?](https://stackoverflow.com/questions/72306390/sfspeechrecognizer-recognize-speech-more-than-one-minutes-in-ios-15)
- [SFSpeechRecognizer isn't working properly in IOS 13.2](https://stackoverflow.com/questions/58673072/sfspeechrecognizer-isnt-working-properly-in-ios-13-2)
- [How to increase speed of Speech-to-text transcription in iOS App?](https://stackoverflow.com/questions/71767687/how-to-increase-speed-of-speech-to-text-transcription-in-ios-app)
- [SFSpeechRecognizer - detect end of utterance](https://stackoverflow.com/questions/42530634/sfspeechrecognizer-detect-end-of-utterance)