Обязательное условие: false: IsFormatSampleRateAndChannelCountValid (формат) - PullRequest
0 голосов
/ 02 апреля 2020

iOS речевой комплект S SFSpeechRecognizer и AVAudioEngine работают вместе для распознавания речи, поэтому sh иногда, когда ми c используется другим прогрессом.

        self.audioEngine = [[AVAudioEngine alloc] init];
        AVAudioInputNode *inputNode = self.audioEngine.inputNode;
        AVAudioFormat *nativeAudioFormat = [inputNode outputFormatForBus:0];
        __weak typeof(self)weakSelf = self;
        [inputNode installTapOnBus:0 bufferSize:1024 format:nativeAudioFormat block:^(AVAudioPCMBuffer * _Nonnull buffer, AVAudioTime * _Nonnull when) {
            [weakSelf.recognitionRequest appendAudioPCMBuffer:buffer];
        }];
        [self.audioEngine prepare];
        [self.audioEngine startAndReturnError:&error];

Завершение работы приложения из-за невнимательности исключение 'com.apple.coreaudio.avfaudio', причина: 'обязательное условие ложно: IsFormatSampleRateAndChannelCountValid (format)'

1 Ответ

0 голосов
/ 20 апреля 2020

Как вы настраиваете AVAudioSession? Эта ошибка обычно возникает, когда она не установлена ​​должным образом.

То есть вам нужно вызывать приведенный ниже код (или аналогичный в соответствии с вашим вариантом использования) перед каждым использованием mi c для убедитесь, что аудио сеанс настроен правильно. Если это не так, например, вы используете категорию .playback и пытаетесь использовать микрофон, вы получите IsFormatSampleRateAndChannelCountValid (format) cra sh.

let audioSession = AVAudioSession.sharedInstance()
do {
  try audioSession.setCategory(.playAndRecord, options: .defaultToSpeaker)
  try audioSession.setActive(true, options: .notifyOthersOnDeactivation)
catch let error as NSError {
  print("ERROR:", error)
}
...