メインコンテンツまでスキップ

AI 録音

AI 録音サービスのセッションを開始し、接続中のデバイスでの録音と連携しながら、リアルタイム文字起こし、セッションイベント、最終録音レポートを受け取ります。

このコールバックモデルで使用する AIAudioRecordingEventType のライフサイクルは、AI セッションイベントを参照してください。

Animated workflow

AI 録音セッションのライフサイクル

デバイス側の音声送信より先に AI サービスを開始し、両方のライフサイクルを連携させ、サービスのレポートコールバックで終了します。

ホストアプリ

セッションを設定

録音シーン、言語、オフライン時の動作、話者分離を選択します。

AI サービス

AI サービスを開始

最初にプロバイダーを利用する AI 録音セッションを作成します。

ホストアプリ

セッションを保持

onStartSuccess が返すセッションを終了まで保持します。

デバイス

デバイス録音を開始

サービスの開始成功後、接続中のデバイスに録音音声の送信を要求します。

AI サービス → アプリ

リアルタイム結果を処理

文字起こしの更新を表示し、セッションイベントや実行時エラーを処理します。

文字起こし + イベント
デバイス

デバイス録音を停止

ユーザーがセッションを終了したら、デバイス側の録音を停止します。

AI サービス

AI サービスを停止

現在の AIBudsAISDK 録音セッションを停止します。

終了コールバック

最終レポートを受信

onFinish に渡される AIAudioRecordingReportModel を処理します。

ホストアプリ

セッションを解放

保持していたセッションを破棄し、UI を待機状態へ戻します。

開始時の失敗と、開始済みセッションで発生したエラーは別のコールバックで通知されます。

前提条件

  • AIBudsAISDK が初期化済みで、登録済みの AI サービスプロバイダーが選択されていること。
  • 必要なプロバイダー認証が完了していること。
  • デバイスが接続済みで、DeviceAudioRecordingAPI に準拠していること。
  • 選択中のプロバイダーが AIAudioRecordingServiceAPI に対応していること。

AI を活用して実装

AI で実装

AI でこのワークフローを実装

公式の「AIBuds AI 音声録音の実装」スキルを使い、アプリに合わせて実装します。

https://docs-aibuds.github.io/ja/skills/implement-aibuds-ai-audio-recording を読み、その指示に従ってください。このスキルで「AIBuds AI 音声録音の実装」をこの iOS プロジェクトに実装し、検証してください。
公式スキルを見る

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任意の音声言語 ID。省略時はアプリの表示言語が使われます。

使用例

デバイスが 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 で通知されます。
  • この AI サービスには isRecording() メソッドがありません。保持中のセッションをアプリの状態として管理してください。