उपयोग कैसे करें
- Base64 ऑडियो को इनपुट बॉक्स में पेस्ट करें। data:audio/mpeg;base64,... जैसा पूरा data URI भी पेस्ट किया जा सकता है।
- पहचाना गया फ़ॉर्मैट जाँचें और ऑडियो प्लेयर में प्ले दबाएँ।
- फ़ाइल डाउनलोड करें। उसे पहचाने गए फ़ॉर्मैट से मेल खाता एक्सटेंशन मिलता है, जैसे .mp3 या .wav।
टेक्स्ट-टू-स्पीच आउटपुट को डिकोड करना
JSON में जवाब देने वाली टेक्स्ट-टू-स्पीच सेवाएँ रिस्पॉन्स में बाइनरी ऑडियो नहीं रख सकतीं, इसलिए वे उसे एनकोड करती हैं। उदाहरण के लिए, Google Cloud Text-to-Speech बोली गई आवाज़ को audioContent नाम के फ़ील्ड में Base64 स्ट्रिंग के रूप में लौटाता है, उसी एनकोडिंग में जो आपने माँगी थी, जैसे MP3 या OGG Opus। दूसरे वॉइस और चैटबॉट API audio, data या audio_base64 जैसे फ़ील्ड इस्तेमाल करते हैं।
आवाज़ों, बोलने की गति या प्रॉम्प्ट की तुलना करते समय परिणाम सुनने के लिए मान यहाँ पेस्ट करें। केवल उद्धरण चिह्नों के बीच की स्ट्रिंग कॉपी करें; पहले JSON पार्स कर लेने से उद्धरण चिह्न या \/ जैसे एस्केप किए गए अक्षर साथ में नहीं आते।
पहचाने जाने वाले ऑडियो फ़ॉर्मैट
फ़ॉर्मैट डिकोड किए गए डेटा के शुरुआती बाइट से पहचाना जाता है, इसलिए MIME टाइप गायब हो या ग़लत, इससे कोई फ़र्क़ नहीं पड़ता:
| फ़ॉर्मैट | सिग्नेचर | Base64 की शुरुआत |
|---|---|---|
| MP3 | ID3 टैग या MPEG फ़्रेम हेडर | SUQz या आमतौर पर // |
| WAV | RIFF ... WAVE | UklGR |
| OGG (Vorbis, Opus) | OggS | T2dnUw |
| FLAC | fLaC | ZkxhQ |
| M4A (AAC) | M4A ब्रांड वाला ftyp बॉक्स | अलग-अलग (एक साइज़ फ़ील्ड से शुरू होता है) |
रॉ PCM: जब ऑडियो न चले
कुछ वॉइस API, ख़ासकर रियलटाइम और स्ट्रीमिंग वाले, बिना किसी फ़ाइल हेडर के रॉ PCM सैंपल भेजते हैं, अक्सर 16 या 24 kHz पर 16-बिट मोनो। टेलीफ़ोनी स्ट्रीम भी इसी तरह बिना हेडर का 8 kHz μ-law ऑडियो भेजती हैं। हेडर के बिना बाइट में ऐसा कुछ नहीं होता जो बताए कि वे क्या हैं: फ़ॉर्मैट पहचाना नहीं जा सकता, ब्राउज़र डेटा नहीं चला सकते, और यह टूल सैंपल रेट या चैनल संख्या का अनुमान नहीं लगा सकता। आप फिर भी डिकोड किए गए बाइट डाउनलोड कर सकते हैं, लेकिन उन्हें सुनने के लिए API दस्तावेज़ में दिए गए पैरामीटर के साथ एक WAV हेडर जोड़ना होगा:
# FFmpeg: 16-बिट little-endian, 24 kHz, मोनो
ffmpeg -f s16le -ar 24000 -ac 1 -i speech.pcm speech.wav
# Python
import base64, wave
with wave.open('speech.wav', 'wb') as w:
w.setnchannels(1)
w.setsampwidth(2) # 16-बिट सैंपल
w.setframerate(24000)
w.writeframes(base64.b64decode(pcm_base64))
अगर परिणाम बहुत तेज़, बहुत धीमा या खरखराहट जैसा सुनाई दे, तो सैंपल रेट, सैंपल का आकार या बाइट क्रम डेटा से मेल नहीं खाता। ऑडियो चलने लगे, तो ज़रूरत पड़ने पर ऑडियो से Base64 WAV को फिर से स्ट्रिंग के रूप में एनकोड कर सकता है।
अक्सर पूछे जाने वाले प्रश्न
यह टूल मेरा ऑडियो क्यों नहीं चला पाता?
या तो डेटा बिना हेडर का रॉ PCM है (ऊपर देखें), या आपका ब्राउज़र उस कोडेक का समर्थन नहीं करता। दूसरी स्थिति में डाउनलोड की गई फ़ाइल फिर भी सही होती है और VLC जैसे मीडिया प्लेयर में खुल जाती है।
मेरा API ऑडियो को कई Base64 टुकड़ों में भेजता है। उन्हें कैसे जोड़ें?
हर टुकड़े को बाइट में डिकोड करें और उन्हें क्रम से जोड़ते जाएँ। Base64 स्ट्रिंग को पहले जोड़ना तभी काम करता है, जब आख़िरी टुकड़े को छोड़कर हर टुकड़ा 3 के गुणज जितने बाइट एनकोड करता हो, और आमतौर पर इस पर भरोसा नहीं किया जा सकता। यह टूल एक बार में एक ही स्ट्रिंग डिकोड करता है, इसलिए स्ट्रीम किए गए टुकड़ों को अपने कोड में जोड़ें।
क्या डिकोड किया गया ऑडियो मूल के बिल्कुल समान होता है?
हाँ। Base64 लॉसलेस है, इसलिए फ़ाइल में ठीक वही बाइट होते हैं जो एनकोड किए गए थे, उसी गुणवत्ता और बिटरेट के साथ। यह टूल ऑडियो को दोबारा एनकोड या कन्वर्ट नहीं करता।
क्या data URI पेस्ट किया जा सकता है?
data:audio/...;base64, स्ट्रिंग पेस्ट करें, या बिना प्रीफ़िक्स वाला रॉ Base64। दोनों ही स्थितियों में फ़ॉर्मैट डिकोड किए गए बाइट से पहचाना जाता है।क्या मेरा ऑडियो किसी सर्वर पर भेजा जाता है?
नहीं। डिकोडिंग, फ़ॉर्मैट की पहचान और प्लेबैक सब आपके ब्राउज़र में होते हैं।