Ana içeriğe geç

AI Sohbeti

Desteklenen aygıtın başlattığı AI sesli sohbet oturumunu çalıştırın, diyalog verilerini ve intent'leri alın; gerektiğinde kodu çözülmüş PCM sesini etkin servis sağlayıcı oturumuna yönlendirin.

AIChatEventType olaylarını yorumlamak için AI Oturum Olayları, algılanan eylemleri çalıştırmadan önce doğrulamak için AI Intent Tanımları sayfasını kullanın.

Animated workflow

Device-driven AI chat lifecycle

The device requests an AI chat and declares whether speech will arrive through Opus or an app-side SCO recording. Keep the device and AI session states coordinated until the final report arrives.

Device → app

Receive Device Request

The device requests a new AI chat and specifies SCO or Opus as the speech-input channel.

Host app

Prepare Requested Audio Input

Use the channel declared by the device: receive Opus packets from the device, or prepare app-side SCO recording.

AIBudsAISDK

Start AI Chat

Start the provider-backed session with the prepared configuration.

App ↔ device

Confirm Startup

Retain the session and report start success or failure to an Opus device when required.

Device → app → session

Capture or Forward Speech

SCO captures the device microphone through the app; Opus is sent by the device, decoded, and appended to the retained session.

live audio
AI service → app

Consume AI Results

Handle chat data, intents, voice data, VAD, and session events.

streaming callbacks
App + audio output

Deliver Response

Render text and allow configured AI voice playback over the selected output path.

App ↔ device

Coordinate Stop

Handle device terminate, state conflict, auto-end, explicit stop, or runtime failure.

Final callback

Finish and Release

Consume the final report, clear the retained session, and restore idle UI state.

On startup failure, report failure to an Opus device when required. On terminate, state conflict, auto-end, or an unrecoverable error, stop the active session and release it after the terminal callback.

Ön Koşullar

  • AIBudsAISDK başlatılmış, aygıt bilgileri yapılandırılmış ve kayıtlı bir servis sağlayıcı seçilip doğrulanmıştır.
  • Servis sağlayıcı AIChatServiceAPI desteği sunar.
  • Aygıt AI sohbet oturumu olaylarını iletir ve Opus girişi için DeviceAIChatAPI protokolüne uyar.
  • Ses kanalını uygulamada bağımsız seçmek yerine aygıt olayındaki istekten okuyun.

AI desteğiyle uygulayın

AI ile geliştirin

Bu iş akışını AI ile uygulayın

Resmî “AIBuds AI Sohbetini Uygulama” becerisini kullanarak iş akışını uygulamanıza uyarlayın.

https://docs-aibuds.github.io/tr/skills/implement-aibuds-ai-chat adresini okuyup yönergeleri izleyin. Bu beceriyle “AIBuds AI Sohbetini Uygulama” iş akışını iOS projesinde uygulayıp doğrulayın.
Resmî beceriyi görüntüle

API Reference

Framework

AIBudsAI.xcframework

Import

Swift
import AIBuds
import AIBudsAI
import AIBudsAIFoundation

Declaration

Swift
/// Starts an AI chat session.
/// - Parameters:
///   - config: The chat session configuration.
///   - onStartSuccess: Called with the active session.
///   - onStartFailure: Called when the session cannot start.
///   - onChatData: Called when new conversational data arrives.
///   - onIntent: Called when the provider detects an intent.
///   - onVoiceData: Called when voice data is produced.
///   - onEvent: Called for session-level events.
///   - onError: Called for runtime session errors.
///   - onFinish: Called with the final session report.
public static func startAIChat(_ config: AIChatSessionConfig = .default,
                         onStartSuccess: ((_ session: AIChatSessionConvertible) -> Void)? = nil,
                         onStartFailure: ((_ error: Error) -> Void)? = nil,
                             onChatData: ((_ chatData: AIChatDataModel) -> Void)? = nil,
                               onIntent: ((_ intent: AIChatIntentModel) -> Void)? = nil,
                            onVoiceData: ((_ voiceData: AIChatVoiceDataModel) -> Void)? = nil,
                                onEvent: ((_ event: AIChatEventModel) -> Void)? = nil,
                                onError: ((_ error: NSError) -> Void)? = nil,
                               onFinish: ((_ report: AIChatSessionReportModel) -> Void)? = nil) -> Void

/// Stops the active AI chat session. This is safe when no session is active.
public static func stopAIChat()

startAIChat ve stopAIChat başvurularına bakın.

Yapılandırma

AIChatSessionConfig, AIChatSettingsController tarafından kullanılan ayarları sunar:

ÖzellikVarsayılanAmaç
languageForSpeechInputUygulama diliSeçilen sağlayıcının desteklediği, zh-CN gibi tireli konuşma giriş dili.
audioChannel.opusInA2dpOutSohbet oturumunun ses aktarımı. Oturumu başlatan aygıt olayıyla eşleşmelidir.
allowUserToInterruptAIResponsetrueKullanıcı girişinin AI yanıtını, genellikle ses oynatımını, kesip kesemeyeceği.
maxPauseDurationBeforeAIResponds0.8 saniyeAI yanıt vermeden önce izin verilen en uzun konuşma duraklaması.
autoEndSessionAfterNoInputDuration15.0 saniyeOturum otomatik bitmeden önceki boşta kalma süresi.
enableVoicePlaybacktrueOluşturulan sesin oynatılıp oynatılmayacağı.
shouldSaveVoiceForDebuggingfalseTanılama ses verisinin saklanıp saklanmayacağı. Politika açıkça izin vermiyorsa üretimde kapalı tutun.
additionalOptions[:]Sağlayıcıya özgü araç, konuşmacı, plan, istem, intent veya gürültü azaltma seçenekleri.
autoSelectAgentIfNotSpecifiedtrueSağlayıcıya özgü araç verilmediğinde SDK'nın araç seçip seçmeyeceği.

Sabit kodlanmış sağlayıcı seçenek anahtarları yerine genel AdditionalOptionKey... sabitlerini kullanın.

Sohbet Oturumunu Yapılandırma

Demo, servis sağlayıcı seçimini oturum yapılandırmasından ayrı tutar. Kullanıcı sağlayıcıyı değiştirdiğinde önce onu seçin, desteklenen dilleri sorgulayın ve sohbeti başlatmadan önce uygulama tarafından başlatılan kimlik doğrulamayı tamamlayın. Araç ve konuşmacı kimlikleri, intent kodları, kullanım planları ve başlangıç istemleri sağlayıcı tarafından verilir; Demo'dan evrensel değerler gibi kopyalanmamalıdır.

Swift
let vendor: AIServiceVendor = .starBurst
AIBudsAISDK.setAIServiceVendor(vendor)

let supportedLanguages = AIBudsAISDK.allSupportedLanguages(for: vendor)
let language = supportedLanguages.first?.languageCode

var options: [String: Any] = [:]
if let agentID = providerAgentID {
    options[AIChatSessionConfig.AdditionalOptionKeyStarburstAgentId] = agentID
}
if let speakerID = providerSpeakerID {
    options[AIChatSessionConfig.AdditionalOptionKeyStarburstSpeakerId] = speakerID
}

let config = AIChatSessionConfig(
    languageForSpeechInput: language,
    audioChannel: .opusInA2dpOut,
    allowUserToInterruptAIResponse: true,
    maxPauseDurationBeforeAIResponds: 0.8,
    autoEndSessionAfterNoInputDuration: 15,
    enableVoicePlayback: true,
    shouldSaveVoiceForDebugging: false,
    additionalOptions: options
)
config.autoSelectAgentIfNotSpecified = providerAgentID == nil

.mltcloud için karşılık gelen AdditionalOptionKeyMltCloud... sabitlerini kullanın. StarBurst kullanım planını veya sağlayıcıya özgü tanımlayıcıyı yalnızca sağlayıcı yapılandırmanız geçerli değer veriyorsa ayarlayın.

Kullanım Örnekleri

Aygıt sohbeti genellikle .initiateWithSCO veya .initiateWithOpus ile başlatır. AI sohbetini başlatmadan önce istenen kanalı oturum yapılandırmasına kopyalayın. Opus'ta aygıttan alınan kodu çözülmüş PCM'yi iletin. SCO'da .sco oturumu başlatıldığında aygıt mikrofonu için uygulama tarafındaki SCO kaydı kurulur.

Swift
let config = AIChatSessionConfig.default
config.audioChannel = .opusInA2dpOut
config.languageForSpeechInput = "en-US"

AIBudsAISDK.startAIChat(
    config,
    onStartSuccess: { session in
        currentSession = session
    },
    onStartFailure: { error in
        print("Chat start failed: \(error)")
    },
    onChatData: { chatData in
        conversation.append(chatData)
    },
    onIntent: { intent in
        handle(intent)
    },
    onVoiceData: { voiceData in
        handle(voiceData)
    },
    onEvent: { event in
        handle(event)
    },
    onError: { error in
        print(error.localizedDescription)
    },
    onFinish: { report in
        currentSession = nil
        save(report)
    }
)

Aygıt Opus sohbeti için kodu çözülmüş 16 bit PCM sağladığında saklanan oturuma iletin:

Swift
currentSession?.appendInt16PCM?(decodedPCMData)

Oturumu Durdurma

Aygıt sonlandırma istediğinde aygıt akışı gerektiriyorsa durdu durumunu DeviceAIChatAPI üzerinden bildirin ve ardından şu çağrıyı yapın:

Swift
AIBudsAISDK.stopAIChat()
currentSession = nil

Notlar

  • Bu bir ses oturumu API'sidir; metin sendMessage veya ileti geçmişi API'si değildir.
  • AIChatSessionConvertible öğesini onFinish, kurtarılamayan hata veya açık durdurmaya kadar saklayın.
  • SCO oturumlarında AIBuds AI SDK, aygıt mikrofonunu uygulamanın SCO bağlantısı üzerinden kaydeder. Opus oturumlarında aygıt Opus'u uygulamaya gönderir; kodu çözülmüş PCM'yi appendInt16PCM(_:) ile iletin.
  • Gizlilik ve saklama politikalarınız açıkça izin vermiyorsa üretimde shouldSaveVoiceForDebugging öğesini etkinleştirmeyin.