我正在使用Nuance的SpeechKit来记录视频中的文字。但是,当SpeechKit处于活动状态时,AVAudioSession会生成以下错误:
AVAudioSession.mm:646: -[AVAudioSession setActive:withOptions:error:]: Deactivating an audio session that has running I/O. All I/O should be stopped or paused prior to deactivating the audio session.
禁用SpeechKit可让我录制和预览视频。启用它会生成转录文本,但不会录制视频。
我已将一个示例项目放在网上:
https://github.com/jeffreality/iOSVideoTranscriber
我的目标是用视频保存视频,并进行转录。
答案 0 :(得分:2)
您可以将以下行移至viewDidLoad:
#if ENABLE_TRANSCRIPTION
[SpeechKit setupWithID:@"Your ID"
host:@"dfo.nmdp.nuancemobility.net"
port:443
useSSL:NO
delegate:nil];
#endif
这确保在viewDidAppear中创建自己的捕获会话时已经设置了speechKit。
当识别器停止录制音频时,将调用SpeechKit委托方法recognizerDidFinishRecording
。检测到静音时会自动调用它,或者在执行[voiceSearch stopRecording]
时手动调用。发生这种情况时,您自己的录音尚未完成,需要时间将音频文件保存到磁盘,并且错误消息显示所有I / O应在停用音频会话之前停止。您可以通过sdk release audio session 1
查看日志,我认为这是停用会话并释放它。所以我认为你应该在上面的方法中添加它。
[[self.session.outputs[1] connectionWithMediaType:AVMediaTypeAudio] setEnabled:NO];
您之前设置的输出为AVCaptureMovieFileOutput
,连接是音频连接,这样做似乎会使错误消失。