2016-06-21 27 views
2

與iOS 10一起,蘋果發佈了一個識別語音的新框架。數據可以通過附加AVAudioPCMBuffers或給m4a的URL傳遞給這個框架。目前,語音識別使用前者,但只有在某人完成並且不是實時的情況下才可能。這裏是代碼爲:使用AVAudioRecorder生成AVAudioPCMBuffer

let audioSession = AVAudioSession.sharedInstance() 
var audioRecorder:AVAudioRecorder!; 
var soundURLGlobal:URL!; 

function setUp(){ 
    let recordSettings = [AVSampleRateKey : NSNumber(value: Float(44100.0)), 
          AVFormatIDKey : NSNumber(value: Int32(kAudioFormatMPEG4AAC)), 
          AVNumberOfChannelsKey : NSNumber(value: 1), 
          AVEncoderAudioQualityKey : NSNumber(value: Int32(AVAudioQuality.medium.rawValue))] 

    let fileManager = FileManager.default() 
    let urls = fileManager.urlsForDirectory(.documentDirectory, inDomains: .userDomainMask) 
    let documentDirectory = urls[0] as NSURL 
    let soundURL = documentDirectory.appendingPathComponent("sound.m4a") 
    soundURLGlobal=soundURL; 


    do { 
     try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord) 
     try audioRecorder = AVAudioRecorder(url: soundURL!, settings: recordSettings) 
     audioRecorder.prepareToRecord() 
    } catch {} 
} 

function start(){ 
    do { 
     try audioSession.setActive(true) 
     audioRecorder.record() 
    } catch {} 
} 

function stop(){ 
    audioRecorder.stop() 
    let request=SFSpeechURLRecognitionRequest(url: soundURLGlobal!) 
    let recognizer=SFSpeechRecognizer(); 
    recognizer?.recognitionTask(with: request, resultHandler: { (result, error) in 
     if(result!.isFinal){ 
      print(result?.bestTranscription.formattedString) 
     } 
    }) 

} 

我想轉換這個,但我找不到AVAudioPCMBuffer在哪裏。

謝謝,

回答

0

好主題。

您好乙人

這裏是與溶液主題 Tap Mic Input Using AVAudioEngine in Swift

見講演WWDC 2014 502 - AVAudioEngine的實踐 捕獲麥克風=>在20分鐘內 創建具有抽頭代碼=> 21緩衝0.50

這裏是SWIFT代碼3

停止音頻

func stopAudio() 
    { 

     let inputNode = audioEngine.inputNode 
     let bus = 0 
     inputNode?.removeTap(onBus: bus) 
     self.audioEngine.stop() 

    }