iOS Reset Reset с другим языком - PullRequest
0 голосов
/ 23 мая 2018

У меня есть текущая запись распознавания речи, которая прекрасно работает - вы говорите, что хотели бы, и все получилось.Точно так же, как оно того стоит ...

Проблема У меня такая:

  • Если я попытаюсь изменить языки после остановки и запуска, происходит сбой со следующими ошибками

    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];

}

ОБНОВЛЕНИЕ:

Я обнаружил, что при сбросе дважды подряд(сохраняя тот же вновь выбранный язык), запись работает, как и ожидалось.

Но в настоящее время я не могу найти решение, которое позволило бы ей работать сначала сразу после смены языка ... странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...