У меня есть текущая запись распознавания речи, которая прекрасно работает - вы говорите, что хотели бы, и все получилось.Точно так же, как оно того стоит ...
Проблема У меня такая:
Если я попытаюсь изменить языки после остановки и запуска, происходит сбой со следующими ошибками
2018-05-23 00:51:51.878921-0400 APP[1237:332833] Speech error: The operation couldn’t be completed. (kAFAssistantErrorDomain error 209.)
2018-05-23 00:51:51.922965-0400 APP[1237:332833] Speech error: Corrupt
Однако , если я остановлю запись и произойдет сброс с помощью оригинальный язык, он будет работать просто отлично.Например, даже начиная с корейского, каждый раз, когда я останавливаюсь, переключаюсь на ... корейский ... затем снова нажимаю старт, все работает.Независимо от того, сколько раз я делаю этот процесс.
Проблема, продолжая мой пример, если я переключаюсь на другой язык, ДАЖЕ английский, после , начиная с корейского, это выдает мне ошибку (котораясодержится в моем recognitionTaskWithRequest
FYI).
Похоже, что начальный язык не имеет отношения к тому, будет ли он работать, если я выбираю другой язык, он не работает, и когда я выбираю тот же начальный язык, он работает.
// Note: self.inputLanguageIdentifier is changed when you select a new language.
// I have tested to ensure this ID is correct each time.
// I.E. Korean prints ko-KR, English of course en-US, etc.
NSLocale *locale = [NSLocale alloc] initWithLocaleIdentifier:self.inputLanguageIdentifier]
speechRecognizer = [[SFSpeechRecognizer alloc] initWithLocale:locale];
speechRecognizer.delegate = self;
recognitionRequest = [[SFSpeechAudioBufferRecognitionRequest alloc] init];
AVAudioInputNode *inputNode = audioEngine.inputNode;
recognitionRequest.shouldReportPartialResults = YES;
recognitionTask = [speechRecognizer recognitionTaskWithRequest:recognitionRequest resultHandler:^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error) {
BOOL isFinal = NO;
if (result && !userDidTapCancel) {
// in the console.
NSLog(@"RESULT:%@", result.bestTranscription.formattedString);
[self updateTextForResult:result.bestTranscription.formattedString];
isFinal = !result.isFinal;
}
if (error) {
NSLog(@"Speech error: %@", error.localizedDescription);
[self stopListening];
}
}];
Мой stopListening
такой:
- (void)stopListening {
isListening = NO;
[audioEngine stop];
[recognitionRequest endAudio];
[recognitionTask cancel];
}
ОБНОВЛЕНИЕ:
Я обнаружил, что при сбросе дважды подряд(сохраняя тот же вновь выбранный язык), запись работает, как и ожидалось.
Но в настоящее время я не могу найти решение, которое позволило бы ей работать сначала сразу после смены языка ... странно.