मुख्य कंटेंट तक स्किप करें

AI संवाद

Supported डिवाइस द्वारा शुरू AI voice chat session चलाएँ, conversation data और intents पाएँ तथा आवश्यकता होने पर decoded PCM audio active provider session को भेजें।

AIChatEventType समझने के लिए AI Session Events और पहचाने गए actions चलाने से पहले validate करने के लिए AI Intents उपयोग करें।

Animated workflow

Device-driven AI संवाद lifecycle

डिवाइस AI chat request करके बताता है कि speech Opus से आएगी या app-side SCO recording से। Final report तक device और AI session states coordinate रखें।

डिवाइस → app

Device Request पाएँ

डिवाइस नया AI chat मांगता है और speech-input channel के लिए SCO या Opus बताता है।

Host app

मांगा गया Audio Input तैयार करें

डिवाइस का बताया channel उपयोग करें: Opus packets लें या app-side SCO recording तैयार करें।

AIBudsAISDK

AI Chat शुरू करें

तैयार configuration से provider-backed session शुरू करें।

App ↔ डिवाइस

Startup की पुष्टि करें

Session बनाए रखें और आवश्यकता पर Opus डिवाइस को start success/failure report करें।

डिवाइस → app → session

Speech Capture/Forward करें

SCO app से device microphone capture करता है; Opus डिवाइस से आता, decode होता और retained session में जुड़ता है।

live audio
AI service → app

AI Results लें

Chat data, intents, voice data, VAD और session events संभालें।

streaming callbacks
App + audio output

Response दें

Text दिखाएँ और चुने output path पर configured AI voice playback चलने दें।

App ↔ डिवाइस

Stop Coordinate करें

Device terminate, state conflict, auto-end, explicit stop या runtime failure संभालें।

अंतिम callback

पूरा और Release करें

Final report लें, retained session हटाएँ और idle UI state बहाल करें।

Startup failure पर आवश्यकता हो तो Opus डिवाइस को failure report करें। Terminate, state conflict, auto-end या unrecoverable error पर active session रोकें और terminal callback के बाद release करें।

आवश्यक शर्तें

  • AIBudsAISDK initialize हो, device information configure हो और registered provider चुना तथा authenticated हो।
  • Provider AIChatServiceAPI support करता हो।
  • डिवाइस AI chat session events देता हो और Opus input के लिए DeviceAIChatAPI को conform करता हो।
  • Channel को app में स्वतंत्र रूप से चुनने के बजाय device event से पढ़ें।

AI की सहायता से लागू करें

AI से बनाएँ

इस वर्कफ़्लो को AI से लागू करें

आधिकारिक “AIBuds AI चैट लागू करें” स्किल से वर्कफ़्लो को अपने ऐप के अनुसार लागू करें।

https://docs-aibuds.github.io/hi/skills/implement-aibuds-ai-chat को पढ़ें और निर्देशों का पालन करें। इस स्किल से “AIBuds AI चैट लागू करें” को इस iOS प्रोजेक्ट में लागू करें और परिणाम सत्यापित करें।
आधिकारिक स्किल देखें

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 और stopAIChat देखें।

कॉन्फ़िगरेशन

AIChatSessionConfig वे settings देता है जिन्हें AIChatSettingsController उपयोग करता है:

प्रॉपर्टीDefaultउद्देश्य
languageForSpeechInputApp languageचुने गए provider की supported hyphenated speech-input language, जैसे zh-CN
audioChannel.opusInA2dpOutChat session का audio transport। यह session शुरू करने वाले device event से मेल खाना चाहिए।
allowUserToInterruptAIResponsetrueUser input AI response, आमतौर पर voice playback, को रोक सकता है या नहीं।
maxPauseDurationBeforeAIResponds0.8 सेकंडAI के उत्तर से पहले अनुमत अधिकतम speech pause।
autoEndSessionAfterNoInputDuration15.0 सेकंडSession अपने आप समाप्त होने से पहले idle अवधि।
enableVoicePlaybacktrueGenerated voice playback चालू है या नहीं।
shouldSaveVoiceForDebuggingfalseDiagnostic voice data रखा जाए या नहीं। Policy स्पष्ट अनुमति न दे तो production में बंद रखें।
additionalOptions[:]Provider-specific agent, speaker, plan, prompt, intent या denoising options।
autoSelectAgentIfNotSpecifiedtrueProvider-specific agent न देने पर SDK agent चुनता है या नहीं।

Hard-coded provider option keys के बजाय public AdditionalOptionKey... constants उपयोग करें।

Chat Session कॉन्फ़िगर करें

Demo provider selection को session configuration से अलग रखता है। Provider बदलने पर पहले उसे चुनें, supported languages पूछें और chat शुरू करने से पहले app-initiated authentication पूरा करें। Agent IDs, speaker IDs, intent codes, usage plans और initial prompts provider देता है; इन्हें Demo से universal values मानकर copy न करें।

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 के लिए संबंधित AdditionalOptionKeyMltCloud... constants उपयोग करें। StarBurst usage plan या provider-specific identifier केवल तब set करें जब provider configuration मान्य value दे।

उपयोग के उदाहरण

डिवाइस सामान्यतः .initiateWithSCO या .initiateWithOpus से chat शुरू करता है। AI chat शुरू करने से पहले requested channel session configuration में copy करें। Opus में डिवाइस से मिला decoded PCM forward करें। SCO में .sco session शुरू करने पर device microphone के लिए app-side SCO recording बनती है।

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)
    }
)

डिवाइस Opus chat session के लिए decoded 16-bit PCM दे तो उसे retained session को भेजें:

Swift
currentSession?.appendInt16PCM?(decodedPCMData)

Session रोकें

डिवाइस termination मांगे तो device flow की आवश्यकता के अनुसार DeviceAIChatAPI से stopped state report करें, फिर call करें:

Swift
AIBudsAISDK.stopAIChat()
currentSession = nil

ध्यान देने योग्य बातें

  • यह audio-session API है, text sendMessage / message-history API नहीं।
  • AIChatSessionConvertible को onFinish, unrecoverable error या explicit stop तक बनाए रखें।
  • SCO sessions में AIBuds AI SDK app के SCO link से device microphone record करता है। Opus sessions में डिवाइस app को Opus भेजता है; decoded PCM को appendInt16PCM(_:) से forward करें।
  • Privacy और retention policies स्पष्ट अनुमति न दें तो production में shouldSaveVoiceForDebugging चालू न करें।