Skip to content

Integrate Speech framework and WaveformView(by jyunderwood)

License

Notifications You must be signed in to change notification settings

jack45j/BSSpeechRecognizer

Repository files navigation

BSSpeechRecognizer

Language SPM compatible

Integrate Speech framework and WaveformView(by jyunderwood)

Important!!! This project is currently pre-release. Some features or api interface may change frequently

Installation

Swift Package Manager

Note: Instructions below are for using SwiftPM without the Xcode UI. It's the easiest to go to your Project Settings -> Swift Packages and add BSSpeechRecognizer from there.

To integrate using Apple's Swift package manager, without Xcode integration, add the following as a dependency to your Package.swift:

.package(url: "https://github.com/jack45j/BSSpeechRecognizer.git", .upToNextMajor(from: "0.1.0"))

Requirements

  • iOS 11
  • add the “Privacy - Speech Recognition Usage Description” key (NSSpeechRecognitionUsageDescription) to your app’s Info.plist file
  • add the “Privacy - Microphone Usage Description” key (NSMicrophoneUsageDescription) to your app’s Info.plist file

Usage

  • Initialize a BSSpeechRecognizer
    • resourceView should conform to BSSpeechDisplayView and will be use to handle the results of recognition
    • waveView should conform to BSSpeechWaveView and will be use to handle the changes of audio level (0~1)
      • There has a implemented waveView called BSWaveVisualizeView based on WaveformView-iOS by jyunderwood
    • errorView should conform to BSSpeechErrorView and will be use to handle the Errors
    • stateView should conform to BSSpeechStateView and will be use to handle the changes of recognizer available state
let recognizer = BSSpeechRecognizer(
        presenter: BSSpeechRecognizeWaveViewPresenter(
            resourceView: self,
            waveView: waveView,
            errorView: self,
            stateView: self)
    )
@IBOutlet weak var waveView: BSWaveVisualizeView!

To Start recognize

recognizer.start()

System will ask Microphone and SpeechRecognition permissions when the first time start recoginzer.

Implement protocols

BSSpeechDisplayView

func display(_ viewModel: BSSpeechDisplayViewModel)

struct BSSpeechDisplayViewModel {
    var result: String
    var isFinal: Bool
}

BSSpeechWaveView

func updateWithLevel(_ level: CGFloat)    
func display(_ viewModel: BSSpeechWaveViewModel)

struct BSSpeechWaveViewModel {
    var duration: TimeInterval
    var isShow: Bool
}

BSSpeechErrorView

func display(_ viewModel: BSSpeechErrorViewModel)

struct BSSpeechErrorViewModel {
    let message: String?
}

BSSpeechStateView

func display(_ viewModel: BSSpeechStateViewModel)

struct BSSpeechStateViewModel {
    let isRecognizing: Bool
}

License

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

About

Integrate Speech framework and WaveformView(by jyunderwood)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published