sto provando ad eseguire cont. riconoscimento vocale tramite AVCapture su iOS 10 beta. Ho installato captureOutput (...) per ottenere continuamente CMSampleBuffers. Ho messo questi buffer direttamente nel SFSpeechAudioBufferRecognitionRequest che ho creato in precedenza in questo modo:Riconoscimento vocale continuo. con SFSpeechRecognizer (ios10-beta)
... do some setup
SFSpeechRecognizer.requestAuthorization { authStatus in
if authStatus == SFSpeechRecognizerAuthorizationStatus.authorized {
self.m_recognizer = SFSpeechRecognizer()
self.m_recognRequest = SFSpeechAudioBufferRecognitionRequest()
self.m_recognRequest?.shouldReportPartialResults = false
self.m_isRecording = true
} else {
print("not authorized")
}
}
.... do further setup
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) {
if(!m_AV_initialized) {
print("captureOutput(...): not initialized !")
return
}
if(!m_isRecording) {
return
}
let formatDesc = CMSampleBufferGetFormatDescription(sampleBuffer)
let mediaType = CMFormatDescriptionGetMediaType(formatDesc!)
if (mediaType == kCMMediaType_Audio) {
// process audio here
m_recognRequest?.appendAudioSampleBuffer(sampleBuffer)
}
return
}
Le cose intere lavora per alcuni secondi. Quindi captureOutput non viene più chiamato. Se commento la riga appendAudioSampleBuffer (sampleBuffer), allora captureOutput viene chiamato fintanto che l'app viene eseguita (come previsto). Ovviamente l'inserimento dei buffer di esempio nel motore di riconoscimento vocale blocca in qualche modo ulteriori esecuzioni. Immagino che i Buffer disponibili vengano consumati dopo un po 'di tempo e il processo si fermi in qualche modo perché non può ottenere più buffer ???
Devo dire che tutto ciò che viene registrato durante i primi 2 secondi porta a correggere i riconoscimenti. Non so esattamente come funzioni esattamente l'API SFSpeech dal momento che Apple non ha inserito alcun testo nei documenti beta. BTW: Come usare SFSpeechAudioBufferRecognitionRequest.endAudio()?
Qualcuno sa qualcosa qui?
Grazie Chris
Partenza codice di esempio di Apple a https://developer.apple.com/library/prerelease/content/samplecode/SpeakToMe/Introduction/Intro.html, sembra fare il riconoscimento in tempo reale continuo –
@DavidWilliames, quel codice di esempio usa 'AVAudioEngine' e non' AVFoundation'. –
@chris stai usando il metodo delegate oi metodi di richiamata? –