SFSpeechRecognizer kAFAssistantErrorDomain Code=203 "重试"
Posted
技术标签:
【中文标题】SFSpeechRecognizer kAFAssistantErrorDomain Code=203 "重试"【英文标题】:SFSpeechRecognizer kAFAssistantErrorDomain Code=203 "Retry" 【发布时间】:2018-01-08 03:35:42 【问题描述】:我使用SFSpeechRecognizer,基本上是为了工作。
1.但有时会出现以下错误。
主要是在我没有执行avStop()
之前。
[实用程序] +[AFAggregator logDictationFailedWithError:] 错误 Domain=kAFAssistantErrorDomain Code=203 "重试" UserInfo=NSLocalizedDescription=重试,NSUnderlyingError=0x1c464b880 错误域=SiriSpeechErrorDomain Code=1 "(null)"
2.并且完全无法在后台工作,会产生如下错误。
[Utility] +[AFAggregator logDictationFailedWithError:] 错误域=kAFAssistantErrorDomain Code=1700 "(null)"
class MySpeech:NSObject
private var iosRecognizer: SFSpeechRecognizer?
private var iosRequest: SFSpeechAudioBufferRecognitionRequest?
private var iosTask: SFSpeechRecognitionTask?
private let iosAVE = AVAudioEngine()
private let avSession = AVAudioSession.sharedInstance()
func avINIT()
try? avSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: [.allowBluetooth])
try? avSession.setMode(AVAudioSessionModeMeasurement)
try? avSession.setActive(true, with: .notifyOthersOnDeactivation)
func switchHFP()
do
//try avSession.setActive(false)
try avSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: [.allowBluetooth])
try avSession.setActive(true, with: .notifyOthersOnDeactivation)
catch
debugPrint("HFP error: \(error.localizedDescription)")
func avStart(_ sLNG:NSString)
if let iosTask = iosTask
iosTask.cancel()
self.iosTask = nil
iosRecognizer=SFSpeechRecognizer(locale: Locale(identifier:sLNG as String))!
iosRequest = SFSpeechAudioBufferRecognitionRequest()
guard let inputNode = iosAVE.inputNode else fatalError("Audio engine has no input node")
guard let recognitionRequest = iosRequest else fatalError("Unable to created a SFSpeechAudioBufferRecognitionRequest object")
recognitionRequest.shouldReportPartialResults = false
iosTask = iosRecognizer?.recognitionTask(with: recognitionRequest) result, error in
if let result = result
if result.isFinal
self.iosAVE.stop()
inputNode.removeTap(onBus: 0)
self.iosRequest = nil
self.iosTask = nil
self.textView.text = result.bestTranscription.formattedString
else if error != nil
self.iosAVE.stop()
inputNode.removeTap(onBus: 0)
self.iosRequest = nil
self.iosTask = nil
self.textView.text = error?.localizedDescription ?? "(NULL)"
let recordingFormat = iosAVE.inputNode?.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) (buffer: AVAudioPCMBuffer, when: AVAudioTime) in
self.iosRequest?.append(buffer)
iosAVE.prepare()
do
try iosAVE.start()
catch print("Error: Start Record")
func avStop()
iosTask?.finish()
iosRequest?.endAudio()
【问题讨论】:
【参考方案1】:kAFAssistantErrorDomain 203 是当您完成或取消SFSpeechRecognitionTask
时SFSpeechRecognizer
无法检测到任何结果。也许你调用了两次avStart(_)
,导致取消第一个任务而没有结果。
关于 kAFAssistantErrorDomain 1700 直到现在我还不知道是什么导致了这个问题。但只发生在我越狱的 iPhone 身上。
【讨论】:
为什么“完成”被删除了?即使我完成了请求,我也会收到此错误。 我的错。我写的第一个答案包括取消或完成识别任务的代码,但原始代码已经有finish()
的功能,所以我编辑它只包括cancel()
。也许我应该在括号内重写它。更糟糕的是,我意识到我的答案很糟糕,我混淆了变量和方法。我不知道我在想什么。我会改正的。
我在合法电话上看到了错误 1700。但不确定是什么原因造成的。
这个答案是猜测还是有任何官方文档支持它?
纯属猜测。但是不知道有没有官方文档,至少我没有找到。以上是关于SFSpeechRecognizer kAFAssistantErrorDomain Code=203 "重试"的主要内容,如果未能解决你的问题,请参考以下文章
iOS 应用程序上的 SFSpeechRecognizer(Siri 转录)超时错误
在 AVSpeechUtterance 之后使用 SFSpeechRecognizer 时出现 AVAudioSession 问题
Swift SFSpeechRecognizer 附加现有的 UITextView 内容