TrueFoundry AI Gateway के साथ Smallest AI वॉयस मॉडल्स को एकीकृत करना

TrueFoundry AI Gateway के साथ Smallest AI वॉयस मॉडल्स को एकीकृत करना

जानें कि कैसे Smallest AI के Lightning TTS और Pulse STT मॉडल, नेटिव पासथ्रू के जरिए, ऑथेंटिकेशन (auth) और ऑब्जर्वेबिलिटी (observability) के साथ TrueFoundry AI Gateway के साथ एकीकृत (integrate) होते हैं।

स्मॉलेस्ट एआई (Smallest AI) के टेक्स्ट टू स्पीच (text to speech) और स्पीच टू टेक्स्ट (speech to text) मॉडल नेटिव पासथ्रू (native passthrough) के ज़रिए ट्रूफाउंड्री एआई गेटवे (TrueFoundry AI Gateway) के साथ एकीकृत होते हैं। बैच सिंथेसिस और ट्रांसक्रिप्शन के लिए अनुरोध स्मॉलेस्ट एआई के रेस्ट (REST) एंडपॉइंट्स पर प्रवाहित होते हैं और चंक्ड (chunked) ऑडियो आउटपुट और लाइव ट्रांसक्रिप्शन के लिए संबंधित सर्वर सेंट इवेंट (server sent event) स्ट्रीम और वेबसॉकेट (WebSocket) एंडपॉइंट्स पर जाते हैं। गेटवे अपने क्रेडेंशियल स्टोर से स्मॉलेस्ट एआई बियरर (Bearer) टोकन को प्रतिस्थापित करता है और अनुरोध को प्रॉक्सी करने या वेबसॉकेट को अपग्रेड करने से पहले एक्सेस कंट्रोल लागू करता है और ओपनटेलीमेट्री (OpenTelemetry) स्पैन उत्सर्जित करता है।

यह पोस्ट टीटीएस (TTS) और एसटीटी (STT) श्रेणियों में स्मॉलेस्ट एआई एपीआई (API) सतह को कवर करती है। इसमें यह भी बताया गया है कि गेटवे प्लेन गैर-ओपनएआई संगत वॉइस एंडपॉइंट्स के लिए नेटिव पासथ्रू पाथ को कैसे संभालता है।





स्मॉलेस्ट एआई क्या उपलब्ध कराता है

स्मॉलेस्ट एआई (Smallest AI) दो मॉडल परिवार प्रदान करता है। लाइटनिंग (Lightning) टेक्स्ट टू स्पीच फैमिली है। पल्स (Pulse) स्पीच टू टेक्स्ट फैमिली है। दोनों बैच उपयोग के लिए रेस्ट (REST) एंडपॉइंट के रूप में और स्ट्रीमिंग उपयोग के लिए वेबसॉकेट (WebSocket) एंडपॉइंट के रूप में चलते हैं।

लाइटनिंग (Lightning) v3.1 एक 44 kHz टीटीएस मॉडल है जिसका पहला ऑडियो आने का समय (time to first audio) 100 मिलीसेकंड से कम है। यह हिंदी, तमिल, तेलुगु, मलयालम, कन्नड़, मराठी और गुजराती सहित मजबूत भारतीय भाषाओं के कवरेज के साथ 15 भाषाओं का समर्थन करता है, साथ ही अंग्रेजी, स्पेनिश, फ्रेंच, जर्मन, इतालवी, पुर्तगाली, स्वीडिश और डच भी शामिल हैं। यह मॉडल एक नॉन-ऑटोरेग्रेसिव आर्किटेक्चर का उपयोग करता है जो टोकन दर टोकन के बजाय समानांतर में संपूर्ण स्पीच सेगमेंट उत्पन्न करता है। यही कारण है कि यह इस लेटेंसी प्रोफाइल को उत्पन्न करता है और मॉडल को 1 जीबी से कम के वीरैम (VRAM) में चलने की अनुमति देता है, जिससे विनियमित वातावरण के लिए ऑन-प्रिमाइसेस परिनियोजन (on-premises deployment) व्यावहारिक हो जाता है।

यह मॉडल तीन एंडपॉइंट आकारों के माध्यम से प्रस्तुत किया जाता है।

POST https://waves/v1/lightning-v3.1/get_speech. 

  1. यह एक सिंक्रोनस बैच एंडपॉइंट है जो रिस्पॉन्स बॉडी में पूरी ऑडियो फाइल वापस करता है। यह एमपी3 (MP3) या पीसीएम (PCM) या वेव (WAV) या म्यूलॉ (mulaw) या एलॉ (alaw) आउटपुट फॉर्मेट को स्वीकार करता है और 8000 हर्ट्ज़ से 44100 हर्ट्ज़ तक की सैंपल दरों का समर्थन करता है। 

  2. यह 0.5x और 2x के बीच एक वॉइस_आईडी (voice_id) पैरामीटर और एक स्पीड पैरामीटर को स्वीकार करता है, साथ ही कस्टम लेक्सिकॉन ओवरराइड के लिए एक वैकल्पिक प्रोनंसिएशन_डिक्ट्स (pronunciation_dicts) ऐरे को भी स्वीकार करता है। 

  3. यह सेशन_आईडी (session_id) और रिक्वेस्ट_आईडी (request_id) कोरिलेशन आइडेंटिफायर्स का भी समर्थन करता है जो रिस्पॉन्स हेडर्स में एक्स-एक्सटर्नल-सेशन-आईडी (X-External-Session-Id) और एक्स-एक्सटर्नल-रिक्वेस्ट-आईडी (X-External-Request-Id) के रूप में वापस मिलते हैं। ये बिना किसी बदलाव के गेटवे से गुजरते हैं जो एंड-टू-एंड ट्रेस कोरिलेशन के लिए उपयोगी है।



POST https://waves/v1/lightning-v3.1/get_speech/stream. 

  1. यह सर्वर सेंट इवेंट्स (server sent events) स्ट्रीम है जो मॉडल द्वारा उत्पन्न किए जाने के साथ-साथ प्रोग्रेसिव रूप से ऑडियो चंक्स उत्सर्जित करती है।

  1. WSS /waves/v1/lightning-v3.1/get_speech/stream. 


    1. यह लगातार बना रहने वाला वेबसॉकेट (WebSocket) कनेक्शन है जो ऑडियो चंक्स को उत्पन्न होते ही डिलीवर करता है। 

    2. कनेक्शन कई टीटीएस (TTS) अनुरोधों में पुन: प्रयोज्य है इसलिए कनेक्शन स्थापित करने की लागत कम हो जाती है। 

पल्स (Pulse) एसटीटी समकक्ष है। यह दो रूपों में चलता है।

POST /waves/v1/pulse/get_text बैच में पहले से रिकॉर्ड किए गए ऑडियो को संभालता है।

WSS /waves/v1/pulse/get_text लाइव स्ट्रीमिंग ट्रांसक्रिप्शन को संभालता है। स्ट्रीमिंग एंडपॉइंट डिफ़ॉल्ट एन्कोडिंग के रूप में linear16 के साथ 8000 या 16000 या 22050 or 24000 या 44100 या 48000 हर्ट्ज़ पर ऑडियो फ्रेम स्वीकार करता है। यह language=multi के माध्यम से सक्षम कोड स्विचिंग के साथ 36 भाषाओं का समर्थन करता है।

एक गेटवे के पीछे बैठे एक इंटीग्रेशन के लिए पल्स स्ट्रीमिंग प्रोटोकॉल के दिलचस्प हिस्से इनलाइन कंटेंट कंट्रोल्स (inline content controls) हैं। redact_pii=true स्मॉलेस्ट एआई को छोड़ने से पहले अंतिम रूप दिए गए ट्रांसक्रिप्ट से व्यक्तिगत रूप से पहचान योग्य जानकारी (PII) को हटा देता है। redact_pci=true कार्ड नंबर, सीवीवी कोड, जिप कोड और खाता नंबर सहित भुगतान कार्ड की जानकारी (PCI) को हटा देता है। diarize=true स्पीकर डायराइजेशन को सक्षम बनाता है। keywords विशिष्ट डोमेन शब्दावली जैसे उत्पाद के नाम या दवा के नामों की पहचान को बढ़ावा देने के लिए वैकल्पिक इंटेंसिफायर मानों के साथ वाक्यांशों की अल्पविराम से अलग की गई सूची को स्वीकार करता है। itn_normalize=true इनवर्स टेक्स्ट नॉर्मलाइजेशन (Inverse Text Normalization) को सक्षम करता है जो अंतिम रूप दिए गए ट्रांसक्रिप्ट में बोले गए अंकों, तारीखों और मुद्राओं को उनके लिखित रूप में परिवर्तित करता है। रिडक्शन पैरामीटर महत्वपूर्ण हैं क्योंकि वे गोपनीयता प्रवर्तन को मॉडल परत में धकेलते हैं, न कि बाद में ट्रांसक्रिप्ट को साफ करने के लिए डाउनस्ट्रीम सुरक्षा की आवश्यकता होती है।

सहमति मॉडल (Concurrency model)स्मॉलेस्ट एआई (Smallest AI) एक असामान्य सहमति सतह प्रस्तुत करता है जिसे इसके विरुद्ध निर्माण करने से पहले समझना आवश्यक है। एक कॉनकरेंसी यूनिट एक सक्रिय टीटीएस अनुरोध से मेल खाती है जिसे किसी भी समय संसाधित किया जा सकता है। टीटीएस के लिए प्रति कॉनकरेंसी यूनिट में तीन वेबसॉकेट कनेक्शन स्थापित किए जा सकते हैं। इसलिए तीन कॉनकरेंसी यूनिट वाला एक टेनेंट नौ वेबसॉकेट कनेक्शन खोल सकता है लेकिन उनमें से केवल तीन में ही एक साथ सक्रिय जेनरेशन हो सकती है। कॉनकरेंसी सीमा पर रहते हुए किसी भी कनेक्शन के माध्यम से भेजे गए अतिरिक्त अनुरोधों को कतारबद्ध करने के बजाय त्रुटि के साथ अस्वीकार कर दिया जाता है। यह विशिष्ट टोकन प्रति मिनट या अनुरोध प्रति मिनट मॉडल से भिन्न है और इसका प्रभाव इस बात पर पड़ता है कि गेटवे के रेट लिमिटर को कैसे कॉन्फ़िगर किया जाना चाहिए। एसटीटी के लिए, एक कॉनकरेंसी यूनिट एक वेबसॉकेट कनेक्शन है।





गेटवे प्लेन के माध्यम से नेटिव पासथ्रू



ट्रूफाउंड्री एआई गेटवे (TrueFoundry AI Gateway) होनो (Hono) फ्रेमवर्क पर बनाया गया है और स्टेटलेस पॉड्स (stateless pods) के बेड़े के रूप में चलता है। 1 vCPU और 1 GB RAM पर एक अकेला पॉड लगभग 3 ms अतिरिक्त लेटेंसी के साथ 250 से अधिक आरपीएस (RPS) को संभालता है। कंट्रोल प्लेन पोस्टग्रेएसक्यूएल (PostgreSQL) और क्लिकहाउस (ClickHouse) में कॉन्फ़िगरेशन का प्रबंधन करता है और एनएटीएस (NATS) पर गेटवे पॉड्स में अपडेट प्रसारित करता है। गेटवे पॉड्स उस कॉन्फ़िगरेशन को मेमोरी में कैश करते हैं ताकि रिक्वेस्ट पाथ ऑथेंटिकेशन या ऑथराइजेशन या रूटिंग निर्णयों के लिए कोई बाहरी कॉल न करे।

ओपनएआई संगत प्रदाताओं के लिए गेटवे एक एडेप्टर के अंदर इनबाउंड ओपनएआई प्रारूप और प्रदाता के नेटिव प्रारूप के बीच अनुवाद करता है। स्मॉलेस्ट एआई उस अनुवाद में फिट नहीं बैठता है क्योंकि ओपनएआई ऑडियो एपीआई के पास स्मॉलेस्ट एआई के voice_id, pronunciation_dicts और session_id पैरामीटर के लिए कोई समकक्ष नहीं है और वेबसॉकेट स्ट्रीमिंग प्रोटोकॉल के लिए भी कोई समकक्ष नहीं है जो लाइटनिंग के चंक्ड ऑडियो आउटपुट को वितरित करता है। इसलिए गेटवे स्मॉलेस्ट एआई को नेटिव पासथ्रू के माध्यम से प्रस्तुत करता है।

जब एक स्मॉलेस्ट एआई अनुरोध एक गेटवे पॉड पर पहुंचता है तो प्री-फॉरवर्डिंग पाइपलाइन उन्हीं जांचों को चलाती है जो चैट पूर्णता (chat completions) के लिए चलती हैं। अनुरोध पर प्रस्तुत जेडब्ल्यूटी (JWT) को बिना किसी बाहरी ऑथ कॉल के कैश्ड आईडीपी (IdP) सार्वजनिक कुंजियों के विरुद्ध सत्यापित किया जाता है। ऑथराइजेशन की जांच उपयोगकर्ताओं से मॉडल के इन-मेमोरी मैप के विरुद्ध की जाती है। मॉडल आइडेंटिफायर (lightning-v3.1 या pulse) को कॉन्फ़िगर किए गए स्मॉलेस्ट एआई खाते में रिज़ॉल्व किया जाता है। इनबाउंड ऑथराइजेशन हेडर को हटा दिया जाता है और क्रेडेंशियल स्टोर से प्राप्त बियरर टोकन से बदल दिया जाता है। फॉरवर्ड किया गया URL मैचिंग पाथ और मेथड के सुरक्षित रहने के साथ https://api.smallest.ai/... बन जाता है। बॉडी को बिना किसी बदलाव के स्ट्रीम किया जाता है। वेबसॉकेट एंडपॉइंट्स के लिए गेटवे स्मॉलेस्ट एआई वेबसॉकेट यूआरएल के विरुद्ध एक एचटीटीपी अपग्रेड हैंडशेक करता है। अपग्रेड सफल होने के बाद गेटवे दो वेबसॉकेट कनेक्शन रखता है (एक क्लाइंट के साथ और एक स्मॉलेस्ट एआई के साथ) और पेलोड की व्याख्या किए बिना दोनों दिशाओं में फ्रेम को प्रॉक्सी करता है। X-External-Session-Id और X-External-Request-Id इको हेडर्स कॉलर के पास सुरक्षित रूप से पहुंच जाते हैं।

अनुरोध पूरा होने के बाद गेटवे एनएटीएस (NATS) पर एक स्पैन प्रकाशित करता है जिसमें अवधि, स्थिति, रिज़ॉल्व किया गया मॉडल नाम और लागत मेटाडेटा शामिल होता है। ओटीईएल (OTEL) एक्सपोर्टर एसिंक पाथ से पढ़ता है और जीआरपीसी (gRPC) या एचटीटीपी (HTTP) पर कॉन्फ़िगर किए गए बैकएंड पर स्पैन फॉरवर्ड करता है। एग्रीगेटर सेवा प्रति उपयोगकर्ता, प्रति टीम और प्रति मॉडल लागत डेटा एकत्र करती है।



इंटीग्रेशन सतह





ट्रूफाउंड्री एआई गेटवे में स्मॉलेस्ट एआई को जोड़ना डैशबोर्ड में तीन चरण की प्रक्रिया है। एआई गेटवे पर जाएं और फिर मॉडल्स पर जाएं और स्मॉलेस्ट एआई चुनें। एक अद्वितीय खाता नाम और स्मॉलेस्ट एआई बियरर टोकन दर्ज करके एक खाता जोड़ें। टोकन कंट्रोल प्लेन में एन्क्रिप्टेड संग्रहीत होता है और सीधे गेटवे पॉड्स के सामने कभी उजागर नहीं होता है। वैकल्पिक रूप से कोलाबोरेटर्स जोड़ें जो यह नियंत्रित करता है कि कौन से उपयोगकर्ता और टीमें इस खाते के माध्यम से रूट कर सकती हैं। फिर एड मॉडल पर क्लिक करके और डिस्प्ले नाम, मॉडल आईडी और मॉडल प्रकार प्रदान करके एक या अधिक मॉडल पंजीकृत करें। मॉडल आईडी को स्मॉलेस्ट एआई मॉडल आइडेंटिफायर (lightning-v3.1 या lightning-v2 या pulse) से बिल्कुल मेल खाना चाहिए।

इन्फरेंस स्मॉलेस्ट एआई पायथन एसडीके या किसी भी एचटीटीपी क्लाइंट का उपयोग करता है जिसमें गेटवे यूआरएल को बेस यूआरएल के रूप में प्रतिस्थापित किया जाता है। एक पायथन क्लाइंट निम्नलिखित जैसा दिखता है।



import requests

response = requests.post(
    "https://<your-gateway-host>/smallest/waves/v1/lightning-v3.1/get_speech",
    headers={
        "Accept": "audio/wav",
        "Authorization": f"Bearer {TFY_API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "text": "Welcome to the support line. Please describe your issue.",
        "voice_id": "daniel",
        "sample_rate": 24000,
        "speed": 1.0,
        "output_format": "wav",
        "language": "en",
    },
)

with open("response.wav", "wb") as f:
    f.write(response.content)
import requests

response = requests.post(
    "https://<your-gateway-host>/smallest/waves/v1/lightning-v3.1/get_speech",
    headers={
        "Accept": "audio/wav",
        "Authorization": f"Bearer {TFY_API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "text": "Welcome to the support line. Please describe your issue.",
        "voice_id": "daniel",
        "sample_rate": 24000,
        "speed": 1.0,
        "output_format": "wav",
        "language": "en",
    },
)

with open("response.wav", "wb") as f:
    f.write(response.content)
import requests

response = requests.post(
    "https://<your-gateway-host>/smallest/waves/v1/lightning-v3.1/get_speech",
    headers={
        "Accept": "audio/wav",
        "Authorization": f"Bearer {TFY_API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "text": "Welcome to the support line. Please describe your issue.",
        "voice_id": "daniel",
        "sample_rate": 24000,
        "speed": 1.0,
        "output_format": "wav",
        "language": "en",
    },
)

with open("response.wav", "wb") as f:
    f.write(response.content)

यही आकार एसएसई (SSE) एंडपॉइंट के लिए पाथ को बदलकर और प्रतिक्रिया को स्ट्रीम के रूप में पढ़कर काम करता है। वेबसॉकेट एंडपॉइंट wss स्कीम के साथ गेटवे यूआरएल की ओर इशारा करके किसी भी मानक वेबसॉकेट क्लाइंट के माध्यम से काम करता है। ट्रूफाउंड्री द्वारा जारी जेडब्ल्यूटी ऑथराइजेशन हेडर में स्मॉलेस्ट एआई बियरर टोकन की जगह लेता है। स्मॉलेस्ट एआई क्लाइंट को वही रिस्पॉन्स पेलोड और हेडर दिखाई देते हैं जो उसे सीधे स्मॉलेस्ट एआई से बात करने पर दिखाई देते क्योंकि गेटवे यूआरएल पाथ और एक्स-एक्सटर्नल-सेशन-आईडी और एक्स-एक्सटर्नल-रिक्वेस्ट-आईडी कोरिलेशन हेडर सहित रिस्पॉन्स शेप्स को सुरक्षित रखता है।



आर्किटेक्चर सारांश

एंड-टू-एंड डेटा प्रवाह सीधा है। एक क्लाइंट स्मॉलेस्ट एआई पायथन एसडीके या जेनेरिक एचटीटीपी और वेबसॉकेट क्लाइंट का उपयोग करके गेटवे यूआरएल के विरुद्ध एक एचटीटीपी अनुरोध या एक वेबसॉकेट खोलता है। गेटवे पॉड कैश्ड आईडीपी सार्वजनिक कुंजियों के विरुद्ध जेडब्ल्यूटी को प्रमाणित करता है और मॉडल आइडेंटिफायर को कॉन्फ़िगर किए गए स्मॉलेस्ट एआई खाते में रिज़ॉल्व करता है। यह इनबाउंड ऑथ हेडर को हटा देता है और क्रेडेंशियल स्टोर से बियरर टोकन को प्रतिस्थापित करता है। यह अनुरोध को https://api.smallest.ai पर फॉरवर्ड करता है या वेबसॉकेट को संबंधित wss:// यूआरएल पर अपग्रेड करता है। वेबसॉकेट सत्रों के लिए यह दोनों दिशाओं में तब तक फ्रेम को जोड़ता है जब तक कि कोई भी पक्ष कनेक्शन बंद नहीं कर देता। पूरा होने के बाद गेटवे एनएटीएस पर एक स्पैन प्रकाशित करता है जो ओटीईएल एक्सपोर्टर और कॉस्ट एग्रीगेटर को फीड करता है।

क्या आवश्यक नहीं है, वह महत्वपूर्ण है। कोई स्मॉलेस्ट एआई एसडीके फोर्क नहीं है। ओपनएआई ऑडियो शेप और स्मॉलेस्ट एआई के voice_id और pronunciation_dicts पैरामीटर के बीच कोई अनुवाद परत नहीं है जो सीमा पर जानकारी खो देगी। चैट ट्रैफिक पाइपलाइन से अलग वॉयस ट्रैफिक के लिए कोई शैडो ट्रेसिंग पाइपलाइन नहीं है। एप्लिकेशन कोड या कुबेरनेट्स सीक्रेट्स में वितरित प्रति सेवा कोई बियरर टोकन नहीं है। कोई अलग वेबसॉकेट टर्मिनेटर नहीं है जिसे स्ट्रीमिंग एंडपॉइंट्स पर एक्सेस कंट्रोल लागू करने के लिए गेटवे के साथ तैनात किया जाना है। पल्स पीआईआई और पीसीआई रिडक्शन पैरामीटर गेटवे के माध्यम से अछूते यात्रा करते हैं जो गोपनीयता प्रवर्तन को मॉडल परत पर रखता है जहां स्मॉलेस्ट एआई की रिडक्शन पाइपलाइन चलती है, न कि इसे डाउनस्ट्रीम सुरक्षा के तहत खंडित करती है।

आर्किटेक्चरल सिद्धांत प्रोटोकॉल शब्दार्थ और शासन शब्दार्थ के बीच पृथक्करण है। लाइटनिंग की चंक्ड ऑडियो स्ट्रीमिंग और इनलाइन रिडक्शन के साथ पल्स की स्ट्रीमिंग ट्रांसक्रिप्शन वॉयस डोमेन अर्थ ले जाते हैं जो अन्य प्रदाताओं के लिए सामान्य नहीं हैं। गवर्नेंस लेयर (प्रमाणीकरण और प्राधिकरण और क्रेडेंशियल इंजेक्शन और ऑब्जर्वेबिलिटी और कॉस्ट रोलअप और टीम सीमा पर रेट लिमिटिंग) प्रदाता अज्ञेयवादी है और पेलोड का निरीक्षण किए बिना किसी भी एचटीटीपी या वेबसॉकेट ओरिजिन के सामने चलती है। नेटिव पासथ्रू दूसरे को लागू करते हुए पहले को सुरक्षित रखता है। इसका परिणाम यह है कि स्मॉलेस्ट एआई की संपूर्ण फीचर सतह (लाइटनिंग का 15 भाषा कवरेज और भारतीय आवाजें और पल्स का पीसीआई रिडक्शन और स्पष्ट कॉनकरेंसी मॉडल) ग्राहकों के लिए उपलब्ध है, जबकि परिचालन गारंटी जो कि एआई गेटवे चैट ट्रैफिक के लिए प्रदान करता है, उसी गेटवे पॉड्स पर उसी कंट्रोल प्लेन और उसी ट्रेस और कॉस्ट बैकएंड के साथ वॉयस ट्रैफिक पर लागू होती है।

हमारे साथ अपने संपर्क केंद्रों (Contact Centers) को स्वचालित करें

तेज़ लेटेंसी, मजबूत सुरक्षा और असीमित स्पीच जनरेशन का अनुभव करें।

एआई (AI) के साथ सारांशित करें

हमारे साथ अपने संपर्क केंद्रों (Contact Centers) को स्वचालित करें

तेज़ लेटेंसी, मजबूत सुरक्षा और असीमित स्पीच जनरेशन का अनुभव करें।

लेख सुनें
2:00
लेख सुनें
2:00

एआई (AI) के साथ सारांशित करें

हमारे साथ अपने संपर्क केंद्रों (Contact Centers) को स्वचालित करें

तेज़ लेटेंसी, मजबूत सुरक्षा और असीमित स्पीच जनरेशन का अनुभव करें।

वॉयस एजेंट ऑर्केस्ट्रेशन के भविष्य का निर्माण करें

311 कैलिफ़ोर्निया स्ट्रीट, सुइट 320
सैन फ्रांसिस्को, सीए 94104

वॉयस एजेंट ऑर्केस्ट्रेशन के भविष्य का निर्माण करें

311 कैलिफ़ोर्निया स्ट्रीट, सुइट 320
सैन फ्रांसिस्को, सीए 94104

वॉयस एजेंट ऑर्केस्ट्रेशन के भविष्य का निर्माण करें

311 कैलिफ़ोर्निया स्ट्रीट, सुइट 320
सैन फ्रांसिस्को, सीए 94104