2016-06-21 2 views
2

Наряду с iOS 10, Apple выпустила новую структуру, которая распознает речь. Данные могут быть переданы в эту структуру либо путем добавления AVAudioPCMBuffers, либо предоставления URL-адреса для m4a. В настоящее время распознавание речи работает с использованием первого, но это возможно только после того, как кто-то закончил и не находится в режиме реального времени. Вот код, который:Создание AVAudioPCMBuffer с AVAudioRecorder

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.

Thanks,

ответ

0

хорошая тема.

Привет B Person

здесь тема с раствором Tap Mic Input Using AVAudioEngine in Swift

лекция WWDC 2014 502 - AVAudioEngine в практике микрофон захвата => в 20 мин создать буфер водопроводную кода => в 21 .50

здесь скор 3 код

для остановки звука

func stopAudio() 
    { 

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

    } 
Смежные вопросы