सर्वर-साइड स्ट्रीमिंग

इस गाइड में बताया गया है कि ElevenLabs का इस्तेमाल करके सर्वर-साइड पर रियल टाइम में ऑडियो कैसे ट्रांसक्राइब करें।

कैसे करें गाइड · मानता है कि आपने स्पीच टू टेक्स्ट क्विकस्टार्ट पूरा कर लिया है।

खास जानकारी

ElevenLabs रियलटाइम स्पीच टू टेक्स्ट API, Scribe Realtime v2 मॉडल का इस्तेमाल करके बेहद कम लेटेंसी के साथ रियल टाइम में ऑडियो स्ट्रीम ट्रांसक्राइब करने देता है। चाहे आप वॉइस असिस्टेंट, ट्रांसक्रिप्शन सेवा या लाइव स्पीच रिकग्निशन की ज़रूरत वाले किसी भी ऐप्लिकेशन को बना रहे हों, यह WebSocket-आधारित API बोलते समय आंशिक ट्रांसक्रिप्ट और स्पीच सेगमेंट पूरा होने पर कमिट किए गए ट्रांसक्रिप्ट देता है।

Scribe v2 Realtime को सर्वर-साइड पर लागू करके रियल टाइम में ऑडियो ट्रांसक्राइब किया जा सकता है, चाहे वह URL, फ़ाइल या आपकी अपनी ऑडियो स्ट्रीम से हो।

सर्वर-साइड इंप्लीमेंटेशन, क्लाइंट-साइड से कुछ तरीकों से अलग है:

  • सिंगल-यूज़ टोकन की जगह ElevenLabs API कुंजी का इस्तेमाल करता है।
  • ऑडियो को मैन्युअल रूप से चंक्स में बांटने की ज़रूरत के बिना, सीधे URL से स्ट्रीमिंग सपोर्ट करता है।

माइक्रोफ़ोन से सीधे ऑडियो स्ट्रीम करने के लिए क्लाइंट-साइड स्ट्रीमिंग गाइड देखें।

क्विकस्टार्ट

यह गाइड मानती है कि आपने अपनी API कुंजी और SDK सेट अप कर ली है। अगर नहीं की है, तो पहले क्विकस्टार्ट पूरा करें।

1

SDK कॉन्फ़िगर करें

SDK रियल टाइम में ऑडियो ट्रांसक्राइब करने के दो तरीके देता है: URL से स्ट्रीमिंग या फ़ाइल अथवा अपनी ऑडियो स्ट्रीम से ऑडियो को मैन्युअल रूप से चंक्स में बांटना।

API द्वारा समर्थित सभी पैरामीटर और विकल्पों की सूची के लिए API रेफरेंस देखें।

यह उदाहरण आधिकारिक SDK का इस्तेमाल करके URL से ऑडियो फ़ाइल स्ट्रीम करने का तरीका दिखाता है।

URL से स्ट्रीमिंग करते समय ffmpeg टूल की ज़रूरत होती है। इंस्टॉलेशन निर्देशों के लिए उनकी वेबसाइट देखें।

अपनी चुनी हुई भाषा के अनुसार example.py या example.mts नाम की नई फ़ाइल बनाएं और उसमें यह कोड जोड़ें:

from dotenv import load_dotenv
import os
import asyncio
from elevenlabs import ElevenLabs, RealtimeEvents, RealtimeUrlOptions
load_dotenv()
async def main():
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
# Create an event to signal when to stop
stop_event = asyncio.Event()
# Connect to a streaming audio URL
connection = await elevenlabs.speech_to_text.realtime.connect(RealtimeUrlOptions(
model_id="scribe_v2_realtime",
url="https://npr-ice.streamguys1.com/live.mp3",
include_timestamps=True,
))
# Set up event handlers
def on_session_started(data):
print(f"Session started: {data}")
def on_partial_transcript(data):
print(f"Partial: {data.get('text', '')}")
def on_committed_transcript(data):
print(f"Committed: {data.get('text', '')}")
# Committed transcripts with word-level timestamps. Only received when include_timestamps is set to True.
def on_committed_transcript_with_timestamps(data):
print(f"Committed with timestamps: {data.get('words', '')}")
# Errors - will catch all errors, both server and websocket specific errors
def on_error(error):
print(f"Error: {error}")
# Signal to stop on error
stop_event.set()
def on_close():
print("Connection closed")
# Register event handlers
connection.on(RealtimeEvents.SESSION_STARTED, on_session_started)
connection.on(RealtimeEvents.PARTIAL_TRANSCRIPT, on_partial_transcript)
connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, on_committed_transcript)
connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS, on_committed_transcript_with_timestamps)
connection.on(RealtimeEvents.ERROR, on_error)
connection.on(RealtimeEvents.CLOSE, on_close)
print("Transcribing audio stream... (Press Ctrl+C to stop)")
try:
# Wait until error occurs or connection closes
await stop_event.wait()
except KeyboardInterrupt:
print("\nStopping transcription...")
finally:
await connection.close()
if __name__ == "__main__":
asyncio.run(main())
2

कोड चलाएं

python example.py

आपको कंसोल में ऑडियो फ़ाइल का ट्रांसक्रिप्शन आंशिक और कमिट किए गए ट्रांसक्रिप्ट के रूप में दिखेगा।

अगले चरण