हमारी सीरीज़ ए फंडिंग (Series A Funding) की घोषणा

हमारी सीरीज़ ए फंडिंग (Series A Funding) की घोषणा

स्मॉलेस्ट एआई (Smallest AI) लाइवकिट (LiveKit) के प्लगइन इकोसिस्टम में शामिल हुआ- पल्स एसटीटी (Pulse STT) और लाइटनिंग टीटीएस (Lightning TTS) के साथ रियल-टाइम वॉयस एआई

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

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

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

Smallest AI अब एक नेटिव LiveKit प्लगइन है। अपने LiveKit वॉयस एजेंट पाइपलाइन में Pulse STT और Lightning TTS जोड़ें - 64ms ट्रांसक्रिप्शन, ~100ms सिंथेसिस, पूरी तरह से व्यवधान-योग्य (interruptible), केवल एक इंस्टॉल में।

livekit-plugins-smallestai पैकेज अब लाइव है। Pulse STT और Lightning TTS, LiveKit Agents में प्रथम श्रेणी के प्लगइन्स हैं, जो बिना किसी कस्टम एडेप्टर या एकीकरण ओवरहेड के रीयल-टाइम स्पीच-टू-टेक्स्ट और बेहद कम लेटेंसी वाले सिंथेसिस को आपके वॉयस पाइपलाइन में लाते हैं।

एक पैकेज। दोनों सेवाएं। पहले दिन से ही प्रोडक्शन-रेडी।

LiveKit Agents क्या है?

LiveKit Agents वेबआरटीसी (WebRTC) पर प्रोडक्शन-ग्रेड, रीयल-टाइम वॉयस एआई एजेंट्स बनाने के लिए एक ओपन-सोर्स पायथन फ्रेमवर्क है। यदि आपने वॉयस एजेंट परिदृश्य को देखा है और अधिकांश विकल्पों को या तो बहुत अधिक ओपिनियनेटेड या बहुत लो-लेवल पाया है, तो LiveKit वास्तव में एक उपयोगी मध्य मार्ग पर स्थित है — यह आपको हर हिस्से की अनिवार्यता तय किए बिना रीयल-टाइम वॉयस पाइपलाइन के बिल्डिंग ब्लॉक्स देता है।

इसका प्लगइन आर्किटेक्चर ही इसे निर्माण के योग्य बनाता है। STT, TTS, LLM, VAD — इनमें से प्रत्येक एक बदली जाने योग्य (swappable) घटक है। आप अपनी पसंद की सेवाएं चुनते हैं, उन्हें एक AgentSession में जोड़ते हैं, और फ्रेमवर्क बाकी सब कुछ संभाल लेता है। टर्न्स, रुकावटें (interruptions), WebRTC पर ऑडियो ट्रांसपोर्ट — सब कुछ अपने आप मैनेज हो जाता है।

हमने क्या शिप किया

livekit-plugins-smallestai पैकेज PyPI पर लाइव है। यह आपको दो सेवाएं देता है:

smallestai.STT — हमारे रीयल-टाइम स्पीच-टू-टेक्स्ट इंजन, Pulse द्वारा संचालित। ~64ms TTFT के साथ WebSocket पर स्ट्रीम करता है, ऑटोमैटिक डिटेक्शन, वर्ड-लेवल टाइमस्टैम्प और स्पीकर डायराइजेशन के साथ 39 भाषाओं का समर्थन करता है।

smallestai.TTS — Lightning v3.1, हमारे अल्ट्रा-लो-लेटेंसी TTS इंजन द्वारा संचालित। ~100ms की लेटेंसी, 80+ आवाज़ें, और आपके पाइपलाइन को जिस भी फॉर्मेट में आवश्यकता हो, उसमें आउटपुट देता है।

दोनों सीधे LiveKit के प्लगइन सिस्टम में प्लग हो जाते हैं। वे बिल्कुल किसी भी अन्य LiveKit प्लगइन की तरह व्यवहार करते हैं — जिसका अर्थ है कि इकोसिस्टम का हर हिस्सा जो LiveKit के साथ काम करता है, वह इनके साथ भी काम करता है।

यह कैसे काम करता है

इंस्टॉल करें

bash



अपना एनवायरनमेंट सेट अप करें



LIVEKIT_API_KEY=...
LIVEKIT_API_SECRET=...
LIVEKIT_URL=...
OPENAI_API_KEY=...
SMALLEST_API_KEY=...
LIVEKIT_API_KEY=...
LIVEKIT_API_SECRET=...
LIVEKIT_URL=...
OPENAI_API_KEY=...
SMALLEST_API_KEY=...
LIVEKIT_API_KEY=...
LIVEKIT_API_SECRET=...
LIVEKIT_URL=...
OPENAI_API_KEY=...
SMALLEST_API_KEY=...

STT- Pulse, WebSocket पर स्ट्रीमिंग

python



from livekit.plugins import smallestai
<h1>English, streaming</h1>
<p>stt = smallestai.STT(language="en")</p>
<h1>Automatic detection across 39 languages</h1>
<p>stt = smallestai.STT(language="multi")</p>
<h1>With speaker diarization</h1

from livekit.plugins import smallestai
<h1>English, streaming</h1>
<p>stt = smallestai.STT(language="en")</p>
<h1>Automatic detection across 39 languages</h1>
<p>stt = smallestai.STT(language="multi")</p>
<h1>With speaker diarization</h1

from livekit.plugins import smallestai
<h1>English, streaming</h1>
<p>stt = smallestai.STT(language="en")</p>
<h1>Automatic detection across 39 languages</h1>
<p>stt = smallestai.STT(language="multi")</p>
<h1>With speaker diarization</h1

Pulse रीयल-टाइम स्ट्रीमिंग के लिए हमारे WebSocket एंडपॉइंट से जुड़ता है, जिसमें अंतरिम (interim) और अंतिम ट्रांसक्रिप्ट के लिए पूर्ण समर्थन शामिल है। वर्ड-लेवल टाइमस्टैम्प और कॉन्फिडेंस स्कोर इसमें शामिल हैं।



TTS- Lightning, सेंटेंस-स्ट्रीमड

python



from livekit.agents import tts, tokenize<br>from livekit.plugins import smallestai<p></p
from livekit.agents import tts, tokenize<br>from livekit.plugins import smallestai<p></p
from livekit.agents import tts, tokenize<br>from livekit.plugins import smallestai<p></p

एक बात जानने योग्य है: Lightning प्रति टोकन के बजाय प्रति अनुरोध ऑडियो को सिंथेसाइज करता है, इसलिए इसे SentenceTokenizer के साथ LiveKit के StreamAdapter में रैप करना सही कदम है। एडेप्टर LLM आउटपुट को वाक्य सीमाओं पर विभाजित करता है और प्रत्येक टुकड़े के लिए सिंथेसिस शुरू करता है — जिससे एक भी शब्द चलने से पहले पूरे LLM रिस्पॉन्स के पूरा होने का इंतजार किए बिना फर्स्ट-ऑडियो लेटेंसी कम रहती है।

एक ही फ़ाइल में पूरा एजेंट

यहाँ STT और TTS दोनों के लिए Smallest AI का उपयोग करने वाला एक पूर्ण, प्रोडक्शन-रेडी वॉयस एजेंट दिया गया है:



python

import logging<br>from dotenv import load_dotenv<br>from livekit.agents import (<br>Agent, AgentSession, JobContext, JobProcess,<br>RoomInputOptions, RoomOutputOptions, WorkerOptions, cli, tts, tokenize,<br>)<br>from livekit.plugins import openai, silero, smallestai<p></p>
<p>logger = logging.getLogger("voice-agent")<br>load_dotenv()</p>
<p>class MyAgent(Agent):<br>def <strong>init</strong>(self) -> None:<br>super().<strong>init</strong>(<br>instructions="You are a helpful voice assistant built by Smallest AI.",<br>)</p>
<pre><code>async def on_enter(self):
    self.session.generate_reply()
</code></pre>
<p>def prewarm(proc: JobProcess):<br>proc.userdata["vad"] = silero.VAD.load()</p>
<p>async def entrypoint(ctx: JobContext):<br>session = AgentSession(<br>vad=ctx.proc.userdata["vad"],<br>stt=smallestai.STT(language="en"),<br>llm=openai.LLM(model="gpt-4o-mini"),<br>tts=tts.StreamAdapter(<br>tts=smallestai.TTS(),<br>sentence_tokenizer=tokenize.basic.SentenceTokenizer(),<br>),<br>)<br>await session.start(<br>agent=MyAgent(),<br>room=ctx.room,<br>room_input_options=RoomInputOptions(),<br>room_output_options=RoomOutputOptions(transcription_enabled=True),<br>)</p

import logging<br>from dotenv import load_dotenv<br>from livekit.agents import (<br>Agent, AgentSession, JobContext, JobProcess,<br>RoomInputOptions, RoomOutputOptions, WorkerOptions, cli, tts, tokenize,<br>)<br>from livekit.plugins import openai, silero, smallestai<p></p>
<p>logger = logging.getLogger("voice-agent")<br>load_dotenv()</p>
<p>class MyAgent(Agent):<br>def <strong>init</strong>(self) -> None:<br>super().<strong>init</strong>(<br>instructions="You are a helpful voice assistant built by Smallest AI.",<br>)</p>
<pre><code>async def on_enter(self):
    self.session.generate_reply()
</code></pre>
<p>def prewarm(proc: JobProcess):<br>proc.userdata["vad"] = silero.VAD.load()</p>
<p>async def entrypoint(ctx: JobContext):<br>session = AgentSession(<br>vad=ctx.proc.userdata["vad"],<br>stt=smallestai.STT(language="en"),<br>llm=openai.LLM(model="gpt-4o-mini"),<br>tts=tts.StreamAdapter(<br>tts=smallestai.TTS(),<br>sentence_tokenizer=tokenize.basic.SentenceTokenizer(),<br>),<br>)<br>await session.start(<br>agent=MyAgent(),<br>room=ctx.room,<br>room_input_options=RoomInputOptions(),<br>room_output_options=RoomOutputOptions(transcription_enabled=True),<br>)</p

import logging<br>from dotenv import load_dotenv<br>from livekit.agents import (<br>Agent, AgentSession, JobContext, JobProcess,<br>RoomInputOptions, RoomOutputOptions, WorkerOptions, cli, tts, tokenize,<br>)<br>from livekit.plugins import openai, silero, smallestai<p></p>
<p>logger = logging.getLogger("voice-agent")<br>load_dotenv()</p>
<p>class MyAgent(Agent):<br>def <strong>init</strong>(self) -> None:<br>super().<strong>init</strong>(<br>instructions="You are a helpful voice assistant built by Smallest AI.",<br>)</p>
<pre><code>async def on_enter(self):
    self.session.generate_reply()
</code></pre>
<p>def prewarm(proc: JobProcess):<br>proc.userdata["vad"] = silero.VAD.load()</p>
<p>async def entrypoint(ctx: JobContext):<br>session = AgentSession(<br>vad=ctx.proc.userdata["vad"],<br>stt=smallestai.STT(language="en"),<br>llm=openai.LLM(model="gpt-4o-mini"),<br>tts=tts.StreamAdapter(<br>tts=smallestai.TTS(),<br>sentence_tokenizer=tokenize.basic.SentenceTokenizer(),<br>),<br>)<br>await session.start(<br>agent=MyAgent(),<br>room=ctx.room,<br>room_input_options=RoomInputOptions(),<br>room_output_options=RoomOutputOptions(transcription_enabled=True),<br>)</p


इसे चलाएं:

bash



LiveKit Agents Playground खोलें, अपने LiveKit क्रेडेंशियल्स दर्ज करें, और आपका एजेंट सेशन शुरू होते ही तुरंत आपका स्वागत करेगा।



यहाँ एक ऐसा परिदृश्य है जिससे आप शायद गुज़रे होंगे।

आप एक वॉयस बॉट बनाते हैं। डेमो अच्छा चलता है — आप इससे एक सवाल पूछते हैं, यह जवाब देता है, सब कुछ बहुत बढ़िया चलता है। फिर कोई इसे वाक्य के बीच में ही टोकने की कोशिश करता है। बॉट बोलता रहता है। वे फिर से कोशिश करते हैं। यह फिर भी चलता रहता है। जब तक यह आखिरकार रुकता है, तब तक यह उस जवाब के तीन वाक्य आगे बढ़ चुका होता है जिसे कोई सुनना ही नहीं चाहता था, और यह पूरा अनुभव ऐसा लगता है जैसे किसी लिफ्ट पर चिल्लाया जा रहा हो।

यह कोई मामूली समस्या नहीं है। यह वही चीज है जो एक सामान्य वॉयस बॉट को एक वास्तविक वॉयस कन्वर्सेशन (बातचीत) से अलग करती है। और इसे सही तरीके से करना वास्तव में कठिन है — इसलिए नहीं कि कॉन्सेप्ट जटिल है, बल्कि इसलिए कि रीयल-टाइम ऑडियो बिल्कुल भी देरी बर्दाश्त नहीं करता। यूजर के बोलना शुरू करने और पाइपलाइन द्वारा उस पर प्रतिक्रिया देने के बीच के किसी भी अंतर को तुरंत महसूस किया जा सकता है। इसे छिपाने का कोई तरीका नहीं है।

LiveKit इसे Silero VAD का उपयोग करके फ्रेमवर्क स्तर पर संभालता है — लगातार वॉयस एक्टिविटी डिटेक्शन जो आपके पाइपलाइन के साथ चलता है और जैसे ही भाषण का पता चलता है, तुरंत एक व्यवधान (interruption) इवेंट शुरू कर देता है। ऑडियो तुरंत रुक जाता है। एजेंट फिर से जुड़ जाता है। बातचीत बिना किसी रुकावट के जारी रहती है।

एक बात ध्यान में रखने योग्य है: eou_timeout_ms को इसके डिफ़ॉल्ट मान 0 पर ही छोड़ दें। यह Pulse की तरफ से सर्वर-साइड एंड-ऑफ-अटरेंस डिटेक्शन को निष्क्रिय कर देता है और LiveKit के अपने टर्न डिटेक्शन को समय संभालने देता है। दोनों को एक साथ इस्तेमाल करने से प्रत्येक टर्न के अंत में अनावश्यक लेटेंसी बढ़ जाएगी।



यह इंटीग्रेशन क्यों अस्तित्व में है

आज वॉयस एआई को पावर देने वाले मॉडल वास्तव में सक्षम हैं। जो संभव है और जो टीमें वास्तव में शिप करती हैं, उसके बीच का अंतर एआई नहीं है — बल्कि उसके आस-पास का इंफ्रास्ट्रक्चर है। प्रत्येक इंटीग्रेशन बाउंड्री पर लेटेंसी जमा होती है। इंटरप्शन हैंडलिंग जो स्टेजिंग में काम करती है, प्रोडक्शन में खराब हो जाती है। WebSocket कनेक्शन टूट जाते हैं। ऑडियो बफर होने लगता है। हफ़्ते उन समस्याओं को सुलझाने में चले जाते हैं जिनका बनाए जा रहे प्रोडक्ट से कोई लेना-देना नहीं होता।

Pulse 64ms TTFT पर ट्रांसक्रिप्शन प्रदान करता है। Lightning ~100ms में ऑडियो सिंथेसाइज और स्ट्रीम करता है। ये केवल बेंचमार्क नंबर नहीं हैं — ये लेटेंसी की वे सीमाएं हैं जो वॉयस कन्वर्सेशन को मैकेनिकल के बजाय नेचुरल महसूस कराती हैं। LiveKit इन्हें प्रोडक्शन में भरोसेमंद रूप से चलाने के लिए WebRTC ट्रांसपोर्ट और टर्न-डिटेक्शन इंफ्रास्ट्रक्चर प्रदान करता है।

यह इंटीग्रेशन इसी अंतर को पाटने के लिए है। सारी जटिलताओं को संभाल लिया गया है। अब अपना प्रोडक्ट शिप करें।

शुरू करें

दस्तावेज़ (Docs)docs.smallest.ai

पूरा उदाहरणSmallest AI × LiveKit कुकबुक

PyPIlivekit-plugins-smallestai

सवाल हैं? हमसे Discord पर मिलें या कुकबुक रेपो में एक समस्या (issue) खोलें।

Smallest AI इंटरनेट पर सबसे तेज़ स्पीच इंफ्रास्ट्रक्चर बनाता है। Lightning TTS और Pulse STT आज एपीआई के ज़रिए उपलब्ध हैं।


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