You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS应用:麦克风语音识别时如何让后台音频持续播放?

解决iOS语音识别时后台音频被暂停的问题

你的问题核心在于音频会话类别设置错误:使用.record类别时,系统会默认独占音频输入通道,直接暂停后台播放的音频,哪怕去掉.duckOthers也无法改变这个行为。而Shazam这类应用能同时播放和录音,是因为它们用了支持双向音频的会话类别。

具体修改步骤:

  • 替换音频会话类别:把.record改成.playAndRecord,这个类别允许应用同时进行音频输入和输出,并且支持与其他音频应用共存。
  • 设置正确的选项:添加.mixWithOthers选项,明确告知系统允许后台音频继续播放;如果需要降低后台音频音量可以保留.duckOthers,不需要则直接移除。
  • 保持会话激活逻辑:保留.notifyOthersOnDeactivation选项,确保退出应用时通知其他音频应用恢复正常状态。

修改后的核心代码片段:

在startRecording方法的do块中,替换原来的音频会话设置代码:

do {
    audioSession = AVAudioSession.sharedInstance()
    // 改用支持同时录音和播放的会话类别
    try audioSession.setCategory(.playAndRecord, 
                                 mode: .spokenAudio, 
                                 options: [.mixWithOthers, .duckOthers])
    try audioSession.setActive(true, options: .notifyOthersOnDeactivation)
    try audioEngine.start()
} catch {
    handleError(withMessage: error.localizedDescription)
}

额外注意事项:

  • 确保Info.plist中已添加必要权限描述:
    • NSMicrophoneUsageDescription:麦克风权限使用说明
    • NSSpeechRecognitionUsageDescription:语音识别权限使用说明
  • 测试时先启动后台音频播放(如音乐APP),再打开你的应用进行语音识别,验证后台音频是否持续播放。

内容的提问来源于stack exchange,提问作者David Hopkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:25:24