如何让 SpeechKit 和 AVCaptureDevice 协同工作
How to get SpeechKit and AVCaptureDevice to work with each other
我正在使用 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
我的目标是保存带有音频的视频,并进行转录。
您可以将以下行移动到 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
,connection是音频连接,这样做貌似错误消失了。
我正在使用 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
我的目标是保存带有音频的视频,并进行转录。
您可以将以下行移动到 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
,connection是音频连接,这样做貌似错误消失了。