Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @IBAction func recordingButtonTapped(_ sender: AnyObject) {
- if audioEngine.isRunning {
- audioEngine.stop()
- recognitionRequest.endAudio()
- recognitionTask.cancel()
- recordingButton.setTitle("Start Recording", for: [])
- } else {
- recordingButton.setTitle("Stop Recording", for: [])
- do {
- let audioSession = AVAudioSession.sharedInstance()
- try audioSession.setCategory(AVAudioSessionCategoryRecord)
- try audioSession.setMode(AVAudioSessionModeMeasurement)
- try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
- if let inputNode = audioEngine.inputNode {
- recognitionRequest.shouldReportPartialResults = true
- recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
- if let result = result {
- self.textView.text = result.bestTranscription.formattedString
- if result.isFinal {
- self.audioEngine.stop()
- inputNode.removeTap(onBus: 0)
- self.recordingButton.setTitle("Start Recording", for: [])
- }
- }
- })
- let recordingFormat = inputNode.outputFormat(forBus: 0)
- inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat, block: { (buffer, when) in
- self.recognitionRequest.append(buffer)
- })
- audioEngine.prepare()
- try audioEngine.start()
- }
- } catch {
- // Handle errors
- }
- }//end of else
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement