Skip to content
UIButton subclass with push to talk recording, speech recognition and Siri-style waveform view.
Swift Ruby Objective-C
Branch: master
Clone or download
Latest commit 4c8cc80 Aug 15, 2019

README.md

SpeechRecognizerButton

Twitter Version License Platform Swift Build Status Carthage compatible Swift Package Manager Compatible

UIButton subclass with push to talk recording, speech recognition and Siri-style waveform view.

SpeechRecognizerButton

📲 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.

👨‍💻 Authors

alexruperez, contact@alexruperez.com

👮‍♂️ License

SpeechRecognizerButton is available under the MIT license. See the LICENSE file for more info.

You can’t perform that action at this time.