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

オンデバイス音声アシスタントモードの取得と設定

現在のオンデバイス音声アシスタントモードを取得し、デバイスの Capability に対応するモードへの変更を要求します。

前提条件

  • デバイスが接続済みで、OnDeviceVoiceAssistantAPI に準拠していること。
  • onDeviceVoiceAssistantCapability.none ではないこと。
  • 設定先モードが通知された Capability に対応し、.unknown ではないこと。

API Reference

フレームワーク

AIBuds.xcframework

宣言

Swift
/// The protocol for the on-device voice assistant API.
protocol OnDeviceVoiceAssistantAPI: DeviceAPI {
    /// The current mode of the on-device voice assistant.
    var onDeviceVoiceAssistantMode: OnDeviceVoiceAssistantMode { get }

    /// Sets the mode of the on-device voice assistant.
    /// - Parameters:
    ///   - mode: The desired mode to set.
    ///   - completion: Called when the operation completes.
    ///     - success: `true` when the operation succeeds.
    ///     - error: Error details on failure; otherwise `nil`.
    func setOnDeviceVoiceAssistantMode(_ mode: OnDeviceVoiceAssistantMode,
                                   completion: AIBudsCompletionHandler?)
}

onDeviceVoiceAssistantModesetOnDeviceVoiceAssistantModeOnDeviceVoiceAssistantMode を参照してください。

対応するモード

Capability表示するモード
.noneモード選択 UI を表示しない
.keywordWakeup.disabled, .basic
.common.disabled, .basic, .advanced

使用例

Swift
guard let voiceAssistant = device as? OnDeviceVoiceAssistantAPI else {
    print("On-device voice assistant is not supported")
    return
}

print("Current mode: \(voiceAssistant.onDeviceVoiceAssistantMode)")

guard voiceAssistant.onDeviceVoiceAssistantCapability == .common else {
    print("Advanced mode is not supported")
    return
}

voiceAssistant.setOnDeviceVoiceAssistantMode(.advanced) { success, error in
    guard success else {
        print(error?.localizedDescription ?? "Unable to change mode")
        return
    }
    print("Mode changed to advanced")
}

注意事項

  • .unknown は現在値を取得できない状態を示すため、設定先モードとして送信しないでください。
  • 成功コールバックは要求が受理されたことを示します。デバイスプロパティまたはモード変更デリゲートコールバックから UI を更新してください。
  • .advanced には通話状態に応じた音声操作が含まれるため、.common Capability のデバイスにだけ表示してください。