रियलटाइम वॉइस बीटा में है और एक्सेस हर वर्कस्पेस के लिए सीमित है। रियलटाइम क्लाइंट SDK के सोर्स में हैं, लेकिन प्रकाशित पैकेज (
3.0.0, Rust 0.2.0) में नहीं; ये C++ को छोड़कर हर SDK की अगली रिलीज़ के साथ आएँगे।POST /v1/audio/realtime/sessions) के लिए connect करें, रिले WebSocket खोलें और relay.connected का इंतज़ार करें। फिर PCM16 ऑडियो अंदर स्ट्रीम करें, प्रदाता के इवेंट बाहर पढ़ें, और अंतिम बिल पाने के लिए कॉल ख़त्म करें। रिले प्रोटोकॉल, चेतावनियाँ और कारण कोड रियलटाइम वॉइस सत्र में बताए गए हैं।
आपकी भाषा को जो चाहिए, वह इंस्टॉल करें
- TypeScript
- Python
- Go
- C#
- PHP
- Ruby
- Java
- Rust
client.realtime.connect() आपकी API कुंजी भेजता है, इसलिए इसे सिर्फ़ अपने सर्वर पर कॉल करें। Node.js 22 या बाद के वर्ज़न में ग्लोबल WebSocket होता है; पुराने रनटाइम पर ws पैकेज इंस्टॉल करें या webSocket के रूप में अपना constructor दें।ब्राउज़र में चलने वाली कॉल के लिए, सत्र अपने सर्वर पर बनाएँ और ब्राउज़र में connectRealtimeSession() से सॉकेट खोलें। यह आपके सर्वर का बनाया सत्र लेता है, उसके client_secret समेत, जो सिर्फ़ उसी एक सत्र के लिए काम करता है, और इसे कभी API कुंजी की ज़रूरत नहीं होती। ब्राउज़र कॉल दोनों हिस्से दिखाता है।कॉल करें
हर इवेंट पढ़ें
हर इवेंट टाइप के लिए अलग से subscribe करने के बजाय सत्र पर iterate करें। सॉकेट बंद होने पर iteration रुक जाता है। Python में, पहले iterator कोconnect() लौटने के बाद से मिले इवेंट भी मिलते हैं, जिनकी शुरुआत relay.connected से होती है।
async with session: ब्लॉक से बाहर निकलने पर कॉल को end() से ख़त्म करता है, अगर वह पहले से ख़त्म नहीं हुई है।
ब्राउज़र कॉल
सिर्फ़ TypeScript। ब्राउज़र कोड में कभी Phaseo API कुंजी न रखें। अपने सर्वर परclient.realtime.createSession() से सत्र बनाएँ, जो connect() जैसे ही model, voice, instructions, provider और metadata विकल्प लेता है, और प्रतिक्रिया अपने पेज को लौटाएँ:
TypeScript
connectRealtimeSession() से सत्र में शामिल हों। यह सत्र के client_secret से रिले खोलता है और connect() जैसा ही सत्र ऑब्जेक्ट लौटाता है:
TypeScript
connectRealtimeSession(info, options) connect() की तरह webSocket और connectTimeoutMs स्वीकार करता है, साथ में baseUrl (डिफ़ॉल्ट https://api.phaseo.app/v1) भी, अगर आप कोई क्षेत्रीय एंडपॉइंट इस्तेमाल करते हैं।
Connect के विकल्प
हर SDK, सत्र बनाने वाले अनुरोध मेंmodel (ज़रूरी, उदाहरण के लिए openai/gpt-realtime-2) और वैकल्पिक voice, instructions, provider और metadata भेजता है, और डिफ़ॉल्ट रूप से relay.connected के लिए 30 सेकंड इंतज़ार करता है।
सत्र
TypeScript और Python:
बाकी SDK में भी यही ऑपरेशन हैं। ऑडियो PCM16 बाइट है, जिसे आपके लिए base64 में एन्कोड किया जाता है; प्रदाता के इवेंट हर भाषा के JSON टाइप के रूप में बिना बदले आगे जाते हैं;
end का डिफ़ॉल्ट टाइमआउट 60 सेकंड है।
त्रुटियाँ
अगरsession.ended के बिना सॉकेट बंद हो जाता है, या end() का टाइमआउट हो जाता है, तो कॉल ख़त्म करना closed-session त्रुटि के साथ विफल होता है। कॉल का बिल फिर भी बनता है। त्रुटि में अंतिम बिल का पाथ होता है, GET /v1/generations?id=realtime%3A<session_id>, जो सेटल होने के बाद अंतिम लागत लौटाता है।
अगर रिले कनेक्ट होने से पहले सत्र ख़त्म कर देता है, या
relay.connected समय पर नहीं आता, तो connect() विफल होता है (Python TimeoutError देता है; Rust RealtimeError::EndedBeforeConnecting या RealtimeError::ConnectTimeout लौटाता है)।