TestsTested | ✗ |
LangLanguage | SwiftSwift |
License | MIT |
ReleasedLast Release | Nov 2016 |
SwiftSwift Version | 3.0 |
SPMSupports SPM | ✗ |
Maintained by ZaidPathan.
To run the example project, clone the repo, and run pod install
from the Example directory first.
XCode : 8.0 + iOS : 10.0 + Swift : 3.0 + Device : Real iOS device required
SpeechKitManager is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "SpeechKitManager"
Note : Add
NSMicrophoneUsageDescription
(For Live Speech to Text only) andNSSpeechRecognitionUsageDescription
toinfo.plist
.
fileprivate var speechKitManager:SpeechKitManager?
let audioPath = Bundle.main.path(forResource: "testAudio", ofType: "m4a") //For audio file to text
var audioURL:URL? //For audio file to text
override func viewDidLoad() {
super.viewDidLoad()
speechKitManager = SpeechKitManager()
}
speechKitManager?.requestSpeechRecognizerAuth { (authStatus) in
/*
The callback may not be called on the main thread. Add an
operation to the main queue to update the record button's state.
*/
OperationQueue.main.addOperation {
switch authStatus {
case .authorized:
self.recognizeAudio()
print("requestSpeechRecognizerAuth authorized")
case .denied:
print("requestSpeechRecognizerAuth denied")
case .restricted:
print("requestSpeechRecognizerAuth restricted")
case .notDetermined:
print("requestSpeechRecognizerAuth notDetermined")
}
}
}
fileprivate func recognizeAudio(){
if let path = self.audioPath{
self.speechKitManager?.recognizeAudio(atURL: URL(fileURLWithPath: path), resultHandler: { (result, error) in
if let result = result{
//Audio to Text fall here
debugPrint(result.bestTranscription.formattedString)
}else if let error = error{
debugPrint(error.localizedDescription)
}
})
}else{
debugPrint("no path found")
}
}
fileprivate func authorizeMicAccess(){
speechKitManager?.requestMicAuth({ (granted) in
if granted{
//Mic access granted start recognition
self.recognize()
}else{
debugPrint("Microphone permission required")
}
})
}
fileprivate func recognize(){
speechKitManager?.record(resultHandler: { (result, error) in
var isFinal = false
if let result = result {
//User speech will fall here to text
debugPrint(result.bestTranscription.formattedString)
isFinal = result.isFinal
}
if error != nil || isFinal {
self.speechKitManager?.stop()
}
})
}
Awesome
Zaid Pathan, [email protected]
SpeechKitManager is available under the MIT license. See the LICENSE file for more info.