AVAudioEngine导致iOS 13上的AUGraphParser::InitializeActiveNodesInInputChain错误
我正在使用AVAudioEngine导致iOS 13上的AUGraphParser::InitializeActiveNodesInInputChain错误,ios,objective-c,audiokit,Ios,Objective C,Audiokit,我正在使用SFSpeechRecognizer,并注意到iOS>=13上显示了此错误 这是我启动识别过程的代码: -(void)开始记录:(BOOL)collectPartialResults{ n错误*错误; AVAudioSession*audioSession=[AVAudioSession sharedInstance]; [audioSession setCategory:AvaudioSessionCategory播放和记录错误:&错误]; [audioSession设置模式:Ava
SFSpeechRecognizer
,并注意到iOS>=13上显示了此错误
这是我启动识别过程的代码:
-(void)开始记录:(BOOL)collectPartialResults{
n错误*错误;
AVAudioSession*audioSession=[AVAudioSession sharedInstance];
[audioSession setCategory:AvaudioSessionCategory播放和记录错误:&错误];
[audioSession设置模式:AvaudioSessionMode测量错误:&错误];
[audioSession setActive:是错误:&错误];
AVAudioInputNode*inputNode=\u audioEngine.inputNode;
_recognitionRequest=[SFSpeechAudioBufferRecognitionRequest新建];
_recognitionRequest.shouldReportPartialResults=collectPartialResults;
_识别任务=[\u内部识别器识别任务WithRequest:\u识别请求结果处理程序:^(SFSpeechRecognitionResult*\u可空结果,NSError*\u可空错误){
// ...
}];
AVAudioFormat*格式=[inputNode outputFormatForBus:0];
@试一试{
[inputNode installTapOnBus:0 bufferSize:1024格式:格式块:^(AVAudioPCMBuffer*\u非空缓冲区,AVAudioTime*\u非空时){
[_recognitionrequestappendaudiopcmbuffer:buffer];
}];
}
@捕获(NSException*异常){
NSLog(@“%@”,exception.userInfo);
[self-sendStartRecordingErrorMessage:[NSString stringWithFormat:@“%@”,exception.userInfo]];
返回;
}
N错误*启动器错误;
[_AudioEngineStartAndReturnError:&startError];
如果(启动器错误!=零){
[self-sendStartRecordingErrorMessage:[NSString stringWithFormat:@“%@”,startError.userInfo]];
}
}
这会运行一两次,但最终会导致此错误:
AVAEInternal.h:109 [AVAudioEngineGraph.mm:1397:Initialize: (err = AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())): error -10851
由此行引起:[\u audioEngine startAndReturnError:&startError]代码>
我不知道这个错误是什么意思。我的代码几乎与相同
我尝试过以下几种方法:
- 使用
outputFormatForBus
而不是inputFormatForBus
installTapOnBus
- 使用不同的
audioSession
模式(AVAudioSessionModeVoicePrompt
)
- 在开始重新编码过程之前调用
[audioEngine reset]
我也有同样的问题。对我来说,解决办法是每次录音都使用一台新的AVAudioEngine
在您的示例中:
- (void)startRecording:(BOOL)collectPartialResults {
_audioEngine = [[AVAudioEngine alloc] init];
// ...
}
你能给我看一下整个过程的确切代码吗?现在它给了我一个非常明确的错误:+[AFAggregator logDictationFailedWithError:]错误域=kAFAssistantErrorDomain代码=209“(null)”对不起,不能共享我的代码。但是kAFAssistantErrorDomain
看起来像是Speech
框架的一部分,而不是AVFoundation
的一部分。所以这可能是一个无关的错误。我做了一些发现-似乎你不应该开始录制,除非上一个没有返回最终结果。如果我这样做,我不会遇到这个错误。