Nodes and media
ऑडियो और वॉइस नोट्स
यह क्या करता है
जब ऑडियो समझ सक्षम (या स्वतः पहचानी गई) होती है, तो OpenClaw:
- पहले ऑडियो अटैचमेंट (स्थानीय पथ या URL) का पता लगाता है और आवश्यकता होने पर उसे डाउनलोड करता है।
- प्रत्येक मॉडल प्रविष्टि को भेजने से पहले
maxBytesलागू करता है। - क्रम में पहली योग्य मॉडल प्रविष्टि (प्रदाता या CLI) चलाता है; यदि कोई प्रविष्टि विफल होती है या छोड़ दी जाती है (आकार/समय-सीमा), तो अगली प्रविष्टि आज़माई जाती है।
- सफलता मिलने पर,
Bodyको[Audio]ब्लॉक से बदलता है और{{Transcript}}सेट करता है।
ट्रांसक्रिप्शन सफल होने पर, CommandBody/RawBody को भी ट्रांसक्रिप्ट पर सेट किया जाता है, ताकि स्लैश कमांड काम करते रहें। --verbose के साथ, लॉग दिखाते हैं कि ट्रांसक्रिप्शन कब चलता है और कब वह मुख्य सामग्री को बदलता है।
स्वतः पहचान (डिफ़ॉल्ट)
यदि आपने मॉडल कॉन्फ़िगर नहीं किए हैं और tools.media.audio.enabled, false नहीं है, तो OpenClaw इस क्रम में स्वतः पहचान करता है और पहले कार्यशील विकल्प पर रुक जाता है:
- सक्रिय उत्तर मॉडल, जब उसका प्रदाता ऑडियो समझ का समर्थन करता है।
- कॉन्फ़िगर किया गया प्रदाता प्रमाणीकरण — ऑडियो ट्रांसक्रिप्शन का समर्थन करने वाले प्रदाता के लिए उपलब्ध प्रमाणीकरण वाली कोई भी
models.providers.*प्रविष्टि। इसकी जाँच स्थानीय CLI से पहले की जाती है, इसलिए कॉन्फ़िगर की गई API कुंजी हमेशाPATHपर स्थानीय बाइनरी से अधिक प्राथमिकता पाती है। एकाधिक प्रदाता कॉन्फ़िगर होने पर उनकी प्राथमिकता: Groq, OpenAI, xAI, Deepgram, Google, SenseAudio, ElevenLabs, Mistral। - स्थानीय CLI (केवल तब, जब कोई प्रदाता प्रमाणीकरण हल न हुआ हो)। OpenClaw एक क्रमबद्ध फ़ॉलबैक सूची बनाता है:
whisper-cli, CPU डिफ़ॉल्ट से पहले केवल तब, जब मौजूदा प्रक्रिया में पहले हुए मॉडल आह्वान ने Metal या CUDA देखा होsherpa-onnx-offlineअपने डिफ़ॉल्ट CPU प्रदाता पर (tokens.txt,encoder.onnx,decoder.onnx, औरjoiner.onnxके साथSHERPA_ONNX_MODEL_DIRआवश्यक है)whisper-cli, जब Metal/CUDA केवल बिल्ड-सक्षम हो या चुना गया बैकएंड अन्यथा देखा न गया होparakeet-mlxApple Silicon पर (MLX-सक्षम; डिवाइस का उपयोग अब भी अप्रेक्षित रहता है)whisper(Python CLI; मॉडल स्वचालित रूप से डाउनलोड करता है)
इंस्टॉल/लिंक का स्रोत क्षमता का प्रमाण है, निष्पादन का नहीं। यह अपने आप किसी उम्मीदवार को CPU sherpa से आगे कभी नहीं ले जाता। OpenClaw केवल बैकएंड की जाँच करने के लिए सेटअप या स्थिति जाँच के दौरान मॉडल लोड नहीं करता।
स्वतः पहचाना गया whisper.cpp अपने सामान्य मॉडल-रन लॉग सक्षम रखता है, ताकि OpenClaw अपस्ट्रीम using … backend पंक्ति रिकॉर्ड कर सके। स्पष्ट CLI प्रविष्टियाँ अपने कॉन्फ़िगर किए गए आउटपुट फ़्लैग बनाए रखती हैं।
मीडिया समझ के लिए Gemini CLI की स्वतः पहचान को इमेज/वीडियो हेतु सैंडबॉक्स किए गए Antigravity CLI (agy) फ़ॉलबैक से बदल दिया गया था; ऑडियो ऊपर दी गई स्थानीय बाइनरी के अतिरिक्त किसी CLI फ़ॉलबैक का उपयोग नहीं करता।
स्वतः पहचान अक्षम करने के लिए, tools.media.audio.enabled: false सेट करें। अनुकूलित करने के लिए, tools.media.models में क्षमता-टैग वाली प्रविष्टियाँ जोड़ें।
ऑडियो का ट्रांसक्रिप्शन किए बिना स्थानीय चयन की जाँच करें:
openclaw capability audio providersopenclaw doctor --lint --only core/doctor/local-audio-acceleration --severity-min infoप्रदाता सूची वैश्विक प्रदाता चयन से अलग स्थानीय फ़ॉलबैक विजेता के साथ-साथ सक्षम, अनुरोधित और देखे गए बैकएंड फ़ील्ड की रिपोर्ट करती है। ट्रांसक्रिप्शन चलने के बाद, /status मीडिया पंक्ति में अनुरोधित या देखा गया बैकएंड रिपोर्ट करता है। स्पष्ट ऑडियो-सक्षम tools.media.models CLI प्रविष्टियाँ अब भी स्वतः चयन को बायपास करती हैं; उनके बैकएंड-विशिष्ट फ़्लैग का उपयोग करें, जैसे sherpa --provider=cuda या whisper.cpp --no-gpu/--device।
कॉन्फ़िगरेशन उदाहरण
प्रदाता + CLI फ़ॉलबैक (OpenAI + Whisper CLI)
{ tools: { media: { models: [ { provider: "openai", model: "gpt-4o-transcribe", capabilities: ["audio"] }, { type: "cli", command: "whisper", args: ["--model", "base", "{{AttachmentPath}}"], timeoutSeconds: 45, capabilities: ["audio"], }, ], audio: { enabled: true, preferredModel: "openai/gpt-4o-transcribe" }, }, },}केवल प्रदाता (Deepgram)
{ tools: { media: { models: [{ provider: "deepgram", model: "nova-3", capabilities: ["audio"] }], audio: { enabled: true }, }, },}केवल प्रदाता (Mistral Voxtral)
{ tools: { media: { models: [{ provider: "mistral", model: "voxtral-mini-latest", capabilities: ["audio"] }], audio: { enabled: true }, }, },}केवल प्रदाता (SenseAudio)
{ tools: { media: { models: [ { provider: "senseaudio", model: "senseaudio-asr-pro-1.5-260319", capabilities: ["audio"], }, ], audio: { enabled: true }, }, },}ट्रांसक्रिप्ट को चैट में दोहराएँ (सहमति-आधारित)
{ tools: { media: { audio: { enabled: true, echoTranscript: true, echoFormat: '📝 "{transcript}"', }, }, },}टिप्पणियाँ और सीमाएँ
- प्रदाता प्रमाणीकरण मानक मॉडल प्रमाणीकरण क्रम (प्रमाणीकरण प्रोफ़ाइल, परिवेश चर,
models.providers.*.apiKey) का पालन करता है। - Groq सेटअप विवरण: Groq।
provider: "deepgram"का उपयोग होने पर Deepgram,DEEPGRAM_API_KEYको प्राप्त करता है। सेटअप विवरण: Deepgram।- Mistral सेटअप विवरण: Mistral।
provider: "senseaudio"का उपयोग होने पर SenseAudio,SENSEAUDIO_API_KEYको प्राप्त करता है। सेटअप विवरण: SenseAudio।- ऑडियो प्रदाता
tools.media.audioके अंतर्गत डिफ़ॉल्ट का उपयोग कर सकते हैं या अपनीtools.media.models[]प्रविष्टि परbaseUrl,headers,providerOptions, और सीमाओं को ओवरराइड कर सकते हैं। - अंतर्निहित ऑडियो आकार सीमा 20MB है। प्रविष्टि-स्तरीय
maxBytesओवरराइड इसे बदल सकता है; उस मॉडल के लिए सीमा से बड़ा ऑडियो छोड़ दिया जाता है और अगली प्रविष्टि आज़माई जाती है। - 1024 बाइट से छोटी ऑडियो फ़ाइलें प्रदाता/CLI ट्रांसक्रिप्शन से पहले छोड़ दी जाती हैं।
- ऑडियो के लिए डिफ़ॉल्ट
maxCharsसेट नहीं है (पूर्ण ट्रांसक्रिप्ट)। आउटपुट छोटा करने के लिएtools.media.audio.maxCharsया प्रति-प्रविष्टिmaxCharsसेट करें। - OpenAI स्वतः पहचान का डिफ़ॉल्ट
gpt-4o-transcribeहै; सस्ते/तेज़ विकल्प के लिएmodel: "gpt-4o-mini-transcribe"सेट करें। - ट्रांसक्रिप्ट टेम्पलेट में
{{Transcript}}के रूप में उपलब्ध है। tools.media.audio.echoTranscriptडिफ़ॉल्ट रूप से बंद है;echoFormat,{transcript}प्लेसहोल्डर स्वीकार करता है।- CLI stdout की सीमा 5MB है; CLI आउटपुट संक्षिप्त रखें।
- CLI
argsको स्थानीय ऑडियो फ़ाइल पथ के लिए{{AttachmentPath}}का उपयोग करना चाहिए। पुरानेaudio.transcription.commandकॉन्फ़िगरेशन से अप्रचलित{input}प्लेसहोल्डर माइग्रेट करने के लिएopenclaw doctor --fixचलाएँ (सेवानिवृत्त कुंजी:audio.transcription, जिसेtools.media.modelsने प्रतिस्थापित किया है)।{{MediaPath}}एक अप्रचलित संगतता उपनाम बना हुआ है। tools.media.concurrencyमीडिया कार्यों को सीमित करता है; यह GPU शेड्यूलर नहीं है।
स्थायी स्थानीय STT
स्वतः पहचाना गया स्थानीय STT प्रति अनुरोध अलग प्रक्रिया के रूप में चलता रहता है। OpenClaw वर्तमान में स्थायी whisper.cpp सर्वर प्रबंधित नहीं करता, क्योंकि मानक Homebrew whisper-cpp पैकेज उस सर्वर को अक्षम करता है, जबकि अपस्ट्रीम उदाहरण में कोई कॉन्फ़िगर की गई सीमित प्रवेश कतार नहीं है। सुरक्षित रूप से सक्षम किए जाने से पहले Plugin के स्वामित्व वाले स्थायी जीवनचक्र को स्वास्थ्य/स्टार्टअप, मॉडल रेज़िडेंसी, सीमित कतारबद्धता, रद्दीकरण/समय-सीमा, केवल लूपबैक बिना-प्रमाणीकरण संचालन, और बिना क्लाउड फ़ॉलबैक वाला अनुरक्षित पैकेज्ड वर्कर चाहिए।
प्रॉक्सी परिवेश समर्थन
प्रदाता-आधारित ऑडियो ट्रांसक्रिप्शन undici के EnvHttpProxyAgent अर्थविज्ञान से मेल खाते हुए मानक आउटबाउंड प्रॉक्सी परिवेश चर का पालन करता है:
HTTPS_PROXY/https_proxyHTTP_PROXY/http_proxyALL_PROXY/all_proxy
लोअरकेस चर अपरकेस पर प्राथमिकता पाते हैं; NO_PROXY/no_proxy प्रविष्टियाँ (होस्टनाम, *.suffix, या host:port) प्रॉक्सी को बायपास करती हैं। यदि कोई प्रॉक्सी परिवेश चर सेट नहीं है, तो सीधे इग्रेस का उपयोग किया जाता है। यदि प्रॉक्सी सेटअप विफल होता है (विकृत URL), तो OpenClaw चेतावनी लॉग करता है और सीधे फ़ेच पर वापस लौटता है।
समूहों में उल्लेख पहचान
ऑडियो प्रीफ़्लाइट का समर्थन करने वाले चैनलों पर, समूह चैट के लिए requireMention: true सेट होने पर OpenClaw उल्लेखों की जाँच से पहले ऑडियो का ट्रांसक्रिप्शन करता है। इससे कैप्शन-रहित वॉइस नोट उल्लेख गेट से गुजर सकता है, जब उसके ट्रांसक्रिप्ट में कॉन्फ़िगर किया गया उल्लेख पैटर्न हो। चैनल-विशिष्ट दस्तावेज़ उन ट्रांसपोर्ट का वर्णन करते हैं जिन्हें टाइप किया हुआ उल्लेख चाहिए।
यह कैसे काम करता है:
- यदि किसी वॉइस संदेश में कोई टेक्स्ट मुख्य सामग्री नहीं है और समूह में उल्लेख आवश्यक हैं, तो OpenClaw पहले ऑडियो अटैचमेंट का प्रीफ़्लाइट ट्रांसक्रिप्शन करता है।
- उल्लेख पैटर्न (उदाहरण के लिए
@BotName, इमोजी ट्रिगर) के लिए ट्रांसक्रिप्ट की जाँच की जाती है। - यदि कोई उल्लेख मिलता है, तो संदेश पूर्ण उत्तर पाइपलाइन से आगे बढ़ता है।
फ़ॉलबैक व्यवहार: यदि प्रीफ़्लाइट ट्रांसक्रिप्शन विफल होता है (समय-सीमा, API त्रुटि आदि), तो संदेश केवल-टेक्स्ट उल्लेख पहचान पर वापस लौटता है, ताकि मिश्रित संदेश (टेक्स्ट + ऑडियो) कभी छोड़े न जाएँ।
प्रति Telegram समूह/विषय से बाहर निकलना:
- उस समूह के लिए प्रीफ़्लाइट ट्रांसक्रिप्ट उल्लेख जाँच छोड़ने हेतु
channels.telegram.groups.<chatId>.disableAudioPreflight: trueसेट करें। - प्रति-विषय ओवरराइड करने के लिए
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflightसेट करें (छोड़ने के लिएtrue, बलपूर्वक सक्षम करने के लिएfalse)। - डिफ़ॉल्ट
falseहै (उल्लेख-गेट की शर्तें मेल खाने पर प्रीफ़्लाइट सक्षम होता है)।
उदाहरण: कोई उपयोगकर्ता requireMention: true वाले Telegram समूह में "नमस्ते @Claude, मौसम कैसा है?" कहते हुए वॉइस नोट भेजता है। वॉइस नोट का ट्रांसक्रिप्शन होता है, उल्लेख पहचाना जाता है और एजेंट उत्तर देता है।
ध्यान रखने योग्य बातें
- दायरा नियम पहले-मेल-की-जीत का उपयोग करते हैं;
chatTypeकोdirect,group, याchannelमें सामान्यीकृत किया जाता है। - सुनिश्चित करें कि आपका CLI 0 के साथ बाहर निकले और सादा टेक्स्ट प्रिंट करे; JSON आउटपुट को
jq -r .textके माध्यम से रूपांतरित करने की आवश्यकता है। - ज्ञात फ़ाइल-आउटपुट मोड प्रामाणिक हैं: खाली या अनुपलब्ध अनुमानित ट्रांसक्रिप्ट फ़ाइल CLI प्रगति आउटपुट पर वापस लौटने के बजाय कोई ट्रांसक्रिप्ट नहीं बनाती।
parakeet-mlxके लिए,--output-dirऔर डिफ़ॉल्ट{filename}आउटपुट टेम्पलेट के साथ--output-format txt(याall) का उपयोग करें। अपस्ट्रीमPARAKEET_OUTPUT_FORMATऔरPARAKEET_OUTPUT_TEMPLATEपरिवेश चर का भी पालन किया जाता है। OpenClaw,<output-dir>/<media-basename>.txtपढ़ता है; डिफ़ॉल्टsrtप्रारूप, अन्य प्रारूप और कस्टम आउटपुट टेम्पलेट stdout का उपयोग जारी रखते हैं।- उत्तर कतार अवरुद्ध होने से बचाने के लिए समय-सीमाएँ उचित रखें (
timeoutSeconds, डिफ़ॉल्ट 60s)। - प्रीफ़्लाइट ट्रांसक्रिप्शन उल्लेख पहचान के लिए केवल पहले ऑडियो अटैचमेंट को संसाधित करता है। अतिरिक्त ऑडियो अटैचमेंट मुख्य मीडिया-समझ चरण के दौरान संसाधित होते हैं।