in SpeechRecognition/SpeechRecognition/ViewController.swift [79:105]
func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
btnStart.setTitle("Recognizing...", for: .normal)
if flag {
let url = NSURL.fileURL(withPath: _recorderFilePath)
let file = try! AVAudioFile(forReading: url)
let format = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: file.fileFormat.sampleRate, channels: 1, interleaved: false)
let buf = AVAudioPCMBuffer(pcmFormat: format!, frameCapacity: AVAudioFrameCount(file.length))
try! file.read(into: buf!)
var floatArray = Array(UnsafeBufferPointer(start: buf?.floatChannelData![0], count:Int(buf!.frameLength)))
DispatchQueue.global().async {
floatArray.withUnsafeMutableBytes {
let result = self.module.recognize($0.baseAddress!, bufLength: Int32(self.AUDIO_LEN_IN_SECOND * self.SAMPLE_RATE))
DispatchQueue.main.async {
self.tvResult.text = result
self.btnStart.setTitle("Start", for: .normal)
}
}
}
}
else {
tvResult.text = "Recording error"
}
}