跳到主要内容

AI 录音

启动 AI 音频录制服务会话,与已连接设备的录音过程协同工作,接收实时转写和会话事件,并获取最终录音报告。

有关该回调模型使用的 AIAudioRecordingEventType 生命周期,请参阅 AI 会话事件

Animated workflow

AI 录音会话生命周期

先启动 AI 服务,再启动设备端音频;保持两个生命周期协调一致,并通过服务报告回调结束会话。

宿主 App

配置会话

选择录音场景、语言、离线行为和说话人分离设置。

AI 服务

启动 AI 服务

首先创建由服务商提供的 AI 音频录制会话。

宿主 App

持有会话

在完整生命周期内保存 onStartSuccess 返回的会话。

设备

启动设备音频

服务启动成功后,请求已连接设备发送录音音频。

AI 服务 → App

处理实时结果

显示转写更新,并处理会话事件或运行时错误。

转写 + 事件
设备

停止设备音频

用户结束会话时停止设备端录音。

AI 服务

停止 AI 服务

停止当前 AIBudsAISDK 音频录制会话。

最终回调

接收最终报告

处理 onFinish 返回的 AIAudioRecordingReportModel。

宿主 App

释放会话

清除保存的会话,并让 UI 恢复空闲状态。

启动失败与会话运行后的错误由不同回调报告。

前置条件

使用 AI 辅助实现

使用 AI 开发

让 AI 帮助实现此工作流

使用官方“实现 AIBuds AI 音频录制”技能,根据你的 App 完成实现。

请阅读并遵循 https://docs-aibuds.github.io/zh-Hans/skills/implement-aibuds-ai-audio-recording,使用该技能在当前 iOS 项目中完成“实现 AIBuds AI 音频录制”,并验证结果。
查看官方技能

API 参考

框架

AIBudsAI.xcframework

导入

Swift
import AIBuds
import AIBudsAI
import AIBudsAIFoundation

声明

Swift
/// Starts an AI audio recording session.
/// - Parameters:
///   - config: The session configuration.
///   - onStartSuccess: Called with the started session.
///   - onStartFailure: Called when the session cannot start.
///   - onTranscript: Called when speech is transcribed.
///   - onEvent: Called for session-level events.
///   - onError: Called when the running session encounters an error.
///   - onFinish: Called with the completed session report.
public static func startAIAudioRecording(_ config: AIAudioRecordingSessionConfig = .default,
                                   onStartSuccess: ((_ session: AIAudioRecordingSessionConvertible) -> Void)? = nil,
                                   onStartFailure: ((_ error: Error) -> Void)? = nil,
                                     onTranscript: ((_ transcriptData: StreamSpeechASRModel) -> Void)? = nil,
                                          onEvent: ((_ event: AIAudioRecordingEventModel) -> Void)? = nil,
                                          onError: ((_ error: NSError) -> Void)? = nil,
                                         onFinish: ((_ report: AIAudioRecordingReportModel) -> Void)? = nil) -> Void

/// Stops the current AI audio recording service session.
public static func stopAIAudioRecording()

请参阅 startAIAudioRecordingstopAIAudioRecording

配置

AIAudioRecordingSessionConfig 提供以下属性:

属性说明
recordingScene录音场景,例如 .onSite
allowRecordingWhileOffline网络不可用时是否允许服务启动,默认为 false
enableSpeakerDiarization是否启用说话人分离,默认为 false
languageForSpeechInput可选的语音语言标识符。省略时,SDK 使用 App 的本地化语言。

使用示例

AI 服务会话应先于设备开始发送 AI 录音音频。用户结束录音或发生错误时,应同时停止两端。

Swift
let config = AIAudioRecordingSessionConfig(
    recordingScene: .onSite,
    allowRecordingWhileOffline: true,
    enableSpeakerDiarization: true,
    languageForSpeechInput: "en-US"
)

AIBudsAISDK.startAIAudioRecording(
    config,
    onStartSuccess: { session in
        currentSession = session

        guard let recordingDevice = device as? DeviceAudioRecordingAPI else {
            AIBudsAISDK.stopAIAudioRecording()
            return
        }

        recordingDevice.startAIAudioRecording(.onSite) { success, error in
            if !success {
                print(error?.localizedDescription ?? "Device recording failed")
                AIBudsAISDK.stopAIAudioRecording()
            }
        }
    },
    onStartFailure: { error in
        print("Session start failed: \(error)")
    },
    onTranscript: { transcript in
        print(transcript.transcript ?? "")
    },
    onEvent: { event in
        print(event)
    },
    onError: { error in
        print(error.localizedDescription)
    },
    onFinish: { report in
        currentSession = nil
        print(report)
    }
)

停止时,调用已连接设备的 stopAIAudioRecording(_:completion:),清除保存的会话,然后调用 AIBudsAISDK.stopAIAudioRecording()

注意事项

  • 最终回调返回 AIAudioRecordingReportModel,而不是本地录音文件路径。
  • 在操作期间持续持有 onStartSuccess 返回的会话。
  • onStartFailure 处理启动失败,onError 处理会话启动后发生的错误。
  • SDK 没有为该 AI 服务提供 isRecording() 方法。请在 App 状态中跟踪保存的会话。