Skip to content

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

License

Notifications You must be signed in to change notification settings

alexruperez/SpeechRecognizerButton

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4c8cc80 · Aug 15, 2019

History

31 Commits
Aug 15, 2019
Apr 4, 2018
Aug 15, 2019
Apr 3, 2018
Aug 15, 2019
Apr 6, 2018
Mar 5, 2018
Aug 15, 2019
Aug 15, 2019
Aug 15, 2019
Mar 5, 2018
Mar 5, 2018
Aug 15, 2019
Mar 5, 2018
Aug 15, 2019

Repository files navigation

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, [email protected]

👮‍♂️ License

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