
Cascaded vs Fused Models: Comparing the architectures behind conversational agents
A breakdown of the five main voice agent architectures and the tradeoffs between reasoning, control, and naturalness.
Scribe v2 Realtime लाइव ट्रांसलेशन और वॉइस ऐप्लिकेशन्स के लिए कम लेटेंसी ट्रांसक्रिप्शन कैसे देता है
Scribe v2 Realtime एक बेहद तेज़ स्पीच टू टेक्स्ट मॉडल है, जिसे लाइव ट्रांसक्रिप्शन के लिए इस्तेमाल किया जा सकता है। इसकी स्पीड और क्वालिटी के कॉम्बिनेशन से ऐसे यूज़ केस भी मुमकिन हो जाते हैं, जो पहले नहीं थे।
उदाहरण के लिए, हमने Scribe v2 Realtime और Chrome Translator API का इस्तेमाल करके यह रियल-टाइम लैंग्वेज ट्रांसलेटर बनाया।

अगर आप इस डेमो का स्टेप-बाय-स्टेप ट्यूटोरियल चाहते हैं, तो वह आपको यहाँ मिल जाएगा। यह गाइड Scribe v2 Realtime की हाई लेवल समझ और उसके काम करने के तरीके पर फोकस करेगा।
ElevenLabs ऑडियो ट्रांसक्राइब करने के लिए दो मॉडल्स देता है: Scribe v2 और Scribe v2 Realtime।
Scribe v2 उन ट्रांसक्रिप्शन के लिए बढ़िया है जो एसिंक्रोनस हो सकती हैं, जबकि Scribe v2 Realtime तब इस्तेमाल होता है जब आपको ट्रांसक्रिप्शन लाइव चाहिए।
लाइव लैंग्वेज ट्रांसलेशन ऐप्लिकेशन के लिए Scribe v2 Realtime सबसे सही विकल्प है।
इस मॉडल को इस्तेमाल करने के लिए आपको स्पीच टू टेक्स्ट API का इस्तेमाल करना होगा। शुरू करने के लिए आपको दो स्टेप्स पूरे करने होंगे:
आप API को जहाँ से कॉल कर रहे हैं, उसके हिसाब से इनिशियलाइज़ करने का तरीका अलग होगा। अगर आप इसे सर्वर-साइड कॉल कर रहे हैं, तो सीधे API की से इनिशियलाइज़ कर सकते हैं और फिर उसी इंस्टेंस से Scribe v2 Realtime से कनेक्ट कर सकते हैं।
लेकिन, API की को क्लाइंट पर एक्सपोज़ करना बड़ी सुरक्षा रिस्क है। इसलिए, अगर आप क्लाइंट-साइड से स्ट्रीमिंग कर रहे हैं, तो आपको सिंगल-यूज़ टोकन से इनिशियलाइज़ करना होगा।
यह टोकन API की को सुरक्षित रखने के लिए सर्वर-साइड जनरेट करना ज़रूरी है।
क्योंकि हम React ऐप बना रहे हैं, हम टोकन वाला तरीका अपनाएंगे। यह टोकन कनेक्शन के वक्त पास किया जाता है, जिससे Scribe इंस्टेंस बनाना बहुत आसान हो जाता है।
| 1 | import { useScribe } from "@elevenlabs/react"; |
| 2 | |
| 3 | function MyComponent() { |
| 4 | const scribe = useScribe({ |
| 5 | modelId: "scribe_v2_realtime", |
| 6 | }); |
| 7 | |
| 8 | //... |
| 9 | } |
एक बार सही तरीके से इनिशियलाइज़ करने के बाद, आप Scribe v2 Realtime से कनेक्ट कर सकते हैं। React लैंग्वेज ट्रांसलेशन प्रोजेक्ट में हमने क्लाइंट-साइड स्ट्रीमिंग का इस्तेमाल किया, इसलिए हमें बैकएंड से हर बार एक सिंगल-यूज़ टोकन चाहिए होता है। यह टोकन हर बार API से कनेक्ट करते समय जनरेट और पास करना होता है।
| 1 | const handleStart = async () => { |
| 2 | const token = await fetchTokenFromServer(); |
| 3 | |
| 4 | await scribe.connect({ |
| 5 | token, |
| 6 | microphone: { |
| 7 | echoCancellation: true, |
| 8 | noiseSuppression: true, |
| 9 | }, |
| 10 | }); |
| 11 | }; |
Scribe v2 Realtime के साथ काम करते समय दो तरह के ट्रांसक्रिप्ट्स होते हैं: पार्टियल और कमिटेड।
पार्टियल ट्रांसक्रिप्ट्स "लाइव ट्रांसक्रिप्ट्स" होते हैं। यह ट्रांसक्रिप्शन वेब्सॉकेट के ज़रिए होता है और जैसे-जैसे आप बोलते हैं, आपको मिलता जाता है। जैसे अगर आप बोलें "The cat is ...", तो ये शब्द आपको रियल-टाइम में दिखेंगे।
दूसरी तरह का ट्रांसक्रिप्ट कमिटेड ट्रांसक्रिप्ट होता है। ट्रांसक्रिप्शन सेगमेंट्स में काम करता है। आप कब और कैसे अपनी ट्रांसक्रिप्शन को कमिट करते हैं, इससे आपके ट्रांसक्रिप्ट के सेगमेंट्स तय होते हैं। इसके लिए आपको एक कमिट स्ट्रैटेजी तय करनी होती है।
कमिट स्ट्रैटेजी के लिए दो ऑप्शन हैं। पहला है मैन्युअल, जिसमें आप पूरी तरह कंट्रोल कर सकते हैं कि ट्रांसक्रिप्ट्स कब कमिट हों। इसका सबसे अच्छा तरीका है साइलेंस या किसी लॉजिकल पॉइंट (जैसे टर्न मॉडल) पर कमिट करना।
दूसरा ऑप्शन है Scribe v2 Realtime को खुद ही वॉइस एक्टिविटी डिटेक्शन (VAD) से क्वालिटी सेगमेंट्स तय करने देना। इसमें स्पीच और साइलेंस सेगमेंट्स ऑटोमैटिकली डिटेक्ट हो जाते हैं। जब साइलेंस थ्रेशोल्ड आ जाता है, तो ट्रांसक्रिप्शन इंजन खुद ही ट्रांसक्रिप्ट सेगमेंट कमिट कर देता है।
जब आप बोल रहे होते हैं, Scribe v2 Realtime हर शब्द ट्रांसक्राइब कर रहा होता है। जैसे अगर आप बोलें "I scream..." तो यह "Ice cream..." भी समझ सकता है। लेकिन जब पूरा सेगमेंट मिल जाता है, जैसे "I scream every time I see a spider in the bathroom," तो आउटपुट ज़्यादा सही होता है।
तो पार्टियल ट्रांसक्रिप्ट्स रियल टाइम में दिखाए जा सकते हैं, और कमिटेड ट्रांसक्रिप्ट्स बातचीत का ज़्यादा सटीक ट्रांसक्रिप्शन होते हैं।
Scribe v2 Realtime से कनेक्ट होने के बाद ट्रांसक्रिप्शन शुरू हो जाता है। आप partialTranscript और committedTranscripts प्रॉपर्टीज़ से ट्रांसक्रिप्ट्स एक्सेस कर सकते हैं।
| 1 | <div> |
| 2 | <button onClick={handleStart} disabled={scribe.isConnected}> |
| 3 | Start Recording |
| 4 | </button> |
| 5 | <button onClick={scribe.disconnect} disabled={!scribe.isConnected}> |
| 6 | Stop |
| 7 | </button> |
| 8 | |
| 9 | {scribe.partialTranscript && <p>Live: {scribe.partialTranscript}</p>} |
| 10 | |
| 11 | <div> |
| 12 | {scribe.committedTranscripts.map((t) => ( |
| 13 | <p key={t.id}>{t.text}</p> |
| 14 | ))} |
| 15 | </div> |
| 16 | </div> |
partialTranscript उस करंट सेगमेंट का रियल-टाइम ट्रांसक्रिप्ट है, जिसे ट्रांसक्राइब किया जा रहा है। committedTranscript बातचीत का हिस्ट्री है, जिसमें वे सेगमेंट्स होते हैं जो Scribe v2 Realtime से कनेक्ट रहते हुए कमिट किए गए हैं।
इतना ही करना है ताकि आपकी बातचीत के रियल-टाइम ट्रांसक्रिप्ट्स मिल सकें। अब आप इस ऐप को अच्छा UI दे सकते हैं या लाइव लैंग्वेज ट्रांसलेशन जैसी और भी फीचर्स जोड़ सकते हैं।
डेमो में रियल-टाइम लैंग्वेज ट्रांसलेटर बनाने के लिए, आप ट्रांसक्रिप्ट्स कोChrome AI Translator API में पास करें और आउटपुट रियल टाइम में दिखाएं।
पढ़ने के लिए धन्यवाद! ElevenLabs पर साइन अप करें और अपनी ऐप्लिकेशन्स बनाना शुरू करें!

A breakdown of the five main voice agent architectures and the tradeoffs between reasoning, control, and naturalness.
.webp&w=3840&q=95)
Not every student in Germany grows up with access to academic role models. InteGREATer e.V. was founded to change that.