SpeechRecognizerButton
UIButton subclass with push to talk recording, speech recognition and Siri-style waveform view.
๐ฒ Installation
SpeechRecognizerButton is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'SpeechRecognizerButton'Or you can install it with Carthage:
github "alexruperez/SpeechRecognizerButton"
Or install it with Swift Package Manager:
dependencies: [
.package(url: "https://github.com/alexruperez/SpeechRecognizerButton.git")
]๐ Usage
Configuration:
Add NSMicrophoneUsageDescription and NSSpeechRecognitionUsageDescription keys to your Info.plist file containing a description of how your app will use the voice recording and speech recognition.
Handling authorization:
Automatically opening Settings when denying permission:
button.authorizationErrorHandling = .openSettings(completion: ...)Custom handling:
button.authorizationErrorHandling = .custom(handler: { error in
// TODO: Your code here!
})Handling results:
button.resultHandler = { recordURL, speechRecognitionResult in
// TODO: Your code here!
}Handling errors:
button.errorHandler = { error in
// TODO: Your code here!
}Assigning waveform view:
Just set weak var waveformView: SFWaveformView? property or use the Interface Builder outlet.
Assigning activity indicator view:
Just set weak var activityIndicatorView: UIActivityIndicatorView? property or use the Interface Builder outlet.
Customizing SFButton configuration:
Just set the following properties by code or use the Interface Builder inspectables.
button.audioSession...
button.recordURL = ...
button.audioFormatSettings = [AV...Key: ...]
button.maxDuration = ...
button.locale = Locale....
button.taskHint = SFSpeechRecognitionTaskHint....
button.queue = OperationQueue....
button.contextualStrings = ["..."]
button.interactionIdentifier = "..."
button.animationDuration = ...
button.shouldVibrate = ...
button.shouldSound = ...
button.pushToTalk = ...
button.speechRecognition = ...
button.cancelOnDrag = ...
button.shouldHideWaveform = ...
button.cornerRadius = ...
button.borderColor = ...
button.borderWidth = ...
button.selectedColor = ...
button.highlightedColor = ...
button.disabledColor = ...
button.highlightedAlpha = ...Customizing SFWaveformView configuration:
Just set the following properties by code or use the Interface Builder inspectables.
waveformView.waveColor = ...
waveformView.numberOfWaves = ...
waveformView.primaryWaveLineWidth = ...
waveformView.secondaryWaveLineWidth = ...
waveformView.idleAmplitude = ...
waveformView.frequency = ...
waveformView.density = ...
waveformView.phaseShift = ...
waveformView.amplitude = ...โค๏ธ Etc.
- SFWaveformView based on jyunderwood/WaveformView-iOS, thanks!
- Contributions are very welcome.
- Attribution is appreciated (let's spread the word!), but not mandatory.
๐จโ๐ป Authors
alexruperez, contact@alexruperez.com
๐ฎโโ๏ธ License
SpeechRecognizerButton is available under the MIT license. See the LICENSE file for more info.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.

