2016-10-08 3 views
3

저는 음성 인식을 iOS에서 연구하고 있습니다. 그러나 [_recognitionRequest endAudio] 메서드를 호출 할 때마다 인식 TaskWithRequest에서 항상 오류가 발생합니다. 메시지가 맨 아래에 있습니다.음성 인식이 iOS에서 오류가 발생했습니다

-(void) stopRecording { 
if (_disableSpeechSW == YES) { 
    return; 
} 
if (_isAuthorization == NO) { 
    return; 
} 

NSLog(@"stopRecording"); 

if ([_audioEngine isRunning]) { 
    [_audioEngine stop]; 
    [_recognitionRequest endAudio]; 
} 

}

-(void) startRecording { 
.......... 
[_speechRecognizer recognitionTaskWithRequest:_recognitionRequest 
        resultHandler:^(SFSpeechRecognitionResult *result,NSError *error){ 
    if (error != nil) { 
    NSLog(@"%@",[error description]); 
    } 
    else { 
    .......... 
    } 
}];} 

[유틸리티] + [AFAggregator logDictationFailedWithError :] 오류 도메인 = kAFAssistantErrorDomain 코드 = 203 "재시도"사용자 정보 = {NSLocalizedDescription = 재시 NSUnderlyingError = 0x17424c690 {오류 도메인 = SiriSpeechErrorDomain 코드 = 1 "(null)"}}

+0

@Martylin 이봐, 당신은 U를이었다 답변을 볼 수있는 동일한 문제가 너무 다른 사람이 정답을 받아 들여야한다 고요한. [누군가이 질문에 대답 할 때 수행 할 작업에 관한이 도움말 항목] (http://stackoverflow.com/help/someone-answers)을 읽어보십시오. 받아 들여지지 않는 다른 질문들도 따라 가십시오. – Bart

답변

3

나는 "endAudio"가 직접 "[self stopRecording]"을 호출하면 인식 TaskWithRequest 블록 외부에서 호출을 허용하지 않는다는 것을 알아 냈습니다. 그러면 블록이 응답합니다 오류 "kAFAssista ntErrorDomain Code = 203 "즉시. 여기

이 stopRecord 내 코드의 4 부분이다

1, 2

3, 4 오류 괜찮

1.from 블록 → detecedVoice → withVoiceControl → stopRecord → 확인

2. 블록 오류 → stopRecord → startRecord → ok

3.button 탭 → stopRecord → kAFAssistantErrorDomain 코드 = 203

4.timer 40 대 → stopRecord → startRecord → 포스트 참조 시리 음성 제한에 대한 자세한 설명이 들어 kAFAssistantErrorDomain 코드 = 203

+2

그럼 내가 viewAidTextWithRequest 외부에서 .endAudio를 호출해야 할 경우, 대신 viewDidDisappear()에서 무엇을 대체 할 수 있습니까? – Josh

+0

원래 Apple의 SpeakToMe 샘플 프로젝트를 사용해 보셨습니까? 내가 볼 수 있듯이이 코드에는 동일한 코드가 들어 있기 때문에 샘플에있는 다른 Apple 버그처럼 보이므로 모든 버그를 만들 수 있습니다. – lef

2

: Speech Recognition Limits for iOS 10

Use my function below to stop speech recognization. Hope its works. 

-(void)stopRecording{ 

    dispatch_async(dispatch_get_main_queue(), ^{ 

     if(audioEngine.isRunning){ 
      [inputNode removeTapOnBus:0]; 
      [inputNode reset]; 
      [audioEngine stop]; 
      [recognitionRequest endAudio]; 
      [recognitionTask cancel]; 
      recognitionTask = nil; 
      recognitionRequest = nil; 
     } 
    }); 
} 
+0

내 문제가 해결되었습니다. 감사합니다. 나는'Domain = kAFAssistantErrorDomain Code = 216 "(null)"' –