使用 AVAudioEngine 进行语音识别会在录制后阻止声音
Posted
技术标签:
【中文标题】使用 AVAudioEngine 进行语音识别会在录制后阻止声音【英文标题】:Speech Recognition with AVAudioEngine Blocks Sound After Recording 【发布时间】:2016-12-13 00:36:51 【问题描述】:我正在尝试运行来自their website here 的 Apple SpeakToMe: Using Speech Recognition with AVAudioEngine 示例。我的问题是,当您停止 AVAudioEngine 和 SpeechRecognizer 时,您将无法再使用系统声音。
如何释放 AVAudioEngine 和 SpeechRecognizer 以便在录音停止后声音可以再次工作?
复制这个:
下载示例代码 向情节提要添加 UITextField。 运行项目并在文本字段中输入(您会注意到您可以听到您的输入事件的声音)。 然后开始录制和停止录制 再次输入文本字段(现在不会有声音了)更新
这只发生在真实设备上 - 而不是在模拟器上。
【问题讨论】:
【参考方案1】:经过数小时的调试,我发现了导致问题的未发布对象。在他们的示例代码中,他们没有发布 AVAudiosession。这会导致声道被阻塞。
解决方法是让 AVAudioSession 成为一个属性:
private var audioSession : AVAudioSession?
然后在停止录制时将audioSession.active
设置为false:
if let audioSession = audioSession
do
try audioSession.setActive(false, with: .notifyOthersOnDeactivation)
catch
// handle error
【讨论】:
以上是关于使用 AVAudioEngine 进行语音识别会在录制后阻止声音的主要内容,如果未能解决你的问题,请参考以下文章
AvaudioEngine - 以特定采样率录制语音 AvaudioEngine for Analysis