Nodes and media

ऑडियो और वॉइस नोट्स

यह क्या करता है

जब ऑडियो समझ सक्षम होती है (या स्वतः पहचानी जाती है), OpenClaw:

  1. पहले ऑडियो अटैचमेंट (स्थानीय पथ या URL) का पता लगाता है और आवश्यकता होने पर उसे डाउनलोड करता है।
  2. प्रत्येक मॉडल प्रविष्टि को भेजने से पहले maxBytes लागू करता है।
  3. क्रम में पहली योग्य मॉडल प्रविष्टि (प्रोवाइडर या CLI) चलाता है; यदि कोई प्रविष्टि विफल होती है या छोड़ दी जाती है (आकार/टाइमआउट), तो अगली प्रविष्टि आज़माई जाती है।
  4. सफल होने पर, Body को एक [Audio] ब्लॉक से बदलता है और {{Transcript}} सेट करता है।

ट्रांसक्रिप्शन सफल होने पर, CommandBody/RawBody भी ट्रांसक्रिप्ट पर सेट किए जाते हैं, ताकि स्लैश कमांड काम करते रहें। --verbose के साथ, लॉग दिखाते हैं कि ट्रांसक्रिप्शन कब चलता है और कब वह बॉडी को बदलता है।

स्वतः पहचान (डिफ़ॉल्ट)

यदि आपने मॉडल कॉन्फ़िगर नहीं किए हैं और tools.media.audio.enabled, false नहीं है, तो OpenClaw इस क्रम में स्वतः पहचान करता है और पहले कार्यशील विकल्प पर रुक जाता है:

  1. सक्रिय उत्तर मॉडल, जब उसका प्रोवाइडर ऑडियो समझ का समर्थन करता है।
  2. कॉन्फ़िगर किया गया प्रोवाइडर प्रमाणीकरण — ऑडियो ट्रांसक्रिप्शन का समर्थन करने वाले किसी प्रोवाइडर के लिए उपलब्ध प्रमाणीकरण वाली कोई भी models.providers.* प्रविष्टि। इसकी जाँच स्थानीय CLI से पहले की जाती है, इसलिए कॉन्फ़िगर की गई API कुंजी हमेशा PATH पर स्थानीय बाइनरी से पहले चुनी जाती है। एकाधिक कॉन्फ़िगर होने पर प्रोवाइडर प्राथमिकता: Groq, OpenAI, xAI, Deepgram, Google, SenseAudio, ElevenLabs, Mistral।
  3. स्थानीय 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-mlx Apple 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.audio.models सेट करें।

ऑडियो ट्रांसक्राइब किए बिना स्थानीय चयन का निरीक्षण करें:

bash
openclaw capability audio providersopenclaw doctor --lint --only core/doctor/local-audio-acceleration --severity-min info

प्रोवाइडर इन्वेंटरी वैश्विक प्रोवाइडर चयन से अलग स्थानीय फ़ॉलबैक विजेता के साथ-साथ सक्षम, अनुरोधित और प्रेक्षित बैकएंड फ़ील्ड की रिपोर्ट करती है। ट्रांसक्रिप्शन चलने के बाद, /status मीडिया पंक्ति में अनुरोधित या प्रेक्षित बैकएंड की रिपोर्ट करता है। स्पष्ट tools.media.audio.models CLI प्रविष्टियाँ अब भी स्वतः चयन को बायपास करती हैं; उनके बैकएंड-विशिष्ट फ़्लैग का उपयोग करें, जैसे sherpa --provider=cuda या whisper.cpp --no-gpu/--device

कॉन्फ़िगरेशन उदाहरण

प्रोवाइडर + CLI फ़ॉलबैक (OpenAI + Whisper CLI)

json5
{  tools: {    media: {      audio: {        enabled: true,        maxBytes: 20971520,        models: [          { provider: "openai", model: "gpt-4o-transcribe" },          {            type: "cli",            command: "whisper",            args: ["--model", "base", "{{MediaPath}}"],            timeoutSeconds: 45,          },        ],      },    },  },}

स्कोप गेटिंग के साथ केवल प्रोवाइडर

json5
{  tools: {    media: {      audio: {        enabled: true,        scope: {          default: "allow",          rules: [{ action: "deny", match: { chatType: "group" } }],        },        models: [{ provider: "openai", model: "gpt-4o-transcribe" }],      },    },  },}

केवल प्रोवाइडर (Deepgram)

json5
{  tools: {    media: {      audio: {        enabled: true,        models: [{ provider: "deepgram", model: "nova-3" }],      },    },  },}

केवल प्रोवाइडर (Mistral Voxtral)

json5
{  tools: {    media: {      audio: {        enabled: true,        models: [{ provider: "mistral", model: "voxtral-mini-latest" }],      },    },  },}

केवल प्रोवाइडर (SenseAudio)

json5
{  tools: {    media: {      audio: {        enabled: true,        models: [{ provider: "senseaudio", model: "senseaudio-asr-pro-1.5-260319" }],      },    },  },}

ट्रांसक्रिप्ट को चैट में प्रतिध्वनित करना (ऑप्ट-इन)

json5
{  tools: {    media: {      audio: {        enabled: true,        echoTranscript: true, // डिफ़ॉल्ट false है        echoFormat: '📝 "{transcript}"', // वैकल्पिक, {transcript} का समर्थन करता है        models: [{ provider: "openai", model: "gpt-4o-transcribe" }],      },    },  },}

टिप्पणियाँ और सीमाएँ

  • प्रोवाइडर प्रमाणीकरण मानक मॉडल प्रमाणीकरण क्रम (प्रमाणीकरण प्रोफ़ाइल, env vars, models.providers.*.apiKey) का पालन करता है।
  • Groq सेटअप विवरण: Groq
  • provider: "deepgram" का उपयोग होने पर Deepgram, DEEPGRAM_API_KEY ग्रहण करता है। सेटअप विवरण: Deepgram
  • Mistral सेटअप विवरण: Mistral
  • provider: "senseaudio" का उपयोग होने पर SenseAudio, SENSEAUDIO_API_KEY ग्रहण करता है। सेटअप विवरण: SenseAudio
  • ऑडियो प्रोवाइडर tools.media.audio के माध्यम से baseUrl, headers, और providerOptions को ओवरराइड कर सकते हैं।
  • डिफ़ॉल्ट आकार सीमा 20MB (tools.media.audio.maxBytes) है। उस मॉडल के लिए सीमा से बड़ा ऑडियो छोड़ दिया जाता है और अगली प्रविष्टि आज़माई जाती है।
  • 1024 बाइट से छोटी ऑडियो फ़ाइलें प्रोवाइडर/CLI ट्रांसक्रिप्शन से पहले छोड़ दी जाती हैं।
  • ऑडियो के लिए डिफ़ॉल्ट maxChars सेट नहीं है (पूर्ण ट्रांसक्रिप्ट)। आउटपुट छोटा करने के लिए tools.media.audio.maxChars या प्रति-प्रविष्टि maxChars सेट करें।
  • OpenAI की स्वतः पहचान का डिफ़ॉल्ट gpt-4o-transcribe है; कम लागत/तेज़ विकल्प के लिए model: "gpt-4o-mini-transcribe" सेट करें।
  • एकाधिक वॉइस नोट संसाधित करने के लिए tools.media.audio.attachments का उपयोग करें (mode: "all" के साथ maxAttachments, डिफ़ॉल्ट 1)।
  • ट्रांसक्रिप्ट टेम्पलेट में {{Transcript}} के रूप में उपलब्ध है।
  • tools.media.audio.echoTranscript डिफ़ॉल्ट रूप से बंद है; एजेंट प्रसंस्करण से पहले मूल चैट में ट्रांसक्रिप्ट की पुष्टि वापस भेजने के लिए इसे सक्षम करें।
  • tools.media.audio.echoFormat प्रतिध्वनि पाठ को अनुकूलित करता है (प्लेसहोल्डर: {transcript}; डिफ़ॉल्ट 📝 "{transcript}")।
  • CLI stdout की सीमा 5MB है; CLI आउटपुट संक्षिप्त रखें।
  • CLI args में स्थानीय ऑडियो फ़ाइल पथ के लिए {{MediaPath}} का उपयोग होना चाहिए। पुराने audio.transcription.command कॉन्फ़िगरेशन से अप्रचलित {input} प्लेसहोल्डर माइग्रेट करने के लिए openclaw doctor --fix चलाएँ (सेवानिवृत्त कुंजी: audio.transcription, जिसे tools.media.audio.models ने प्रतिस्थापित किया है)।
  • tools.media.concurrency मीडिया कार्यों की सीमा निर्धारित करता है; यह GPU शेड्यूलर नहीं है।

स्थायी स्थानीय STT

स्वतः पहचाना गया स्थानीय STT प्रत्येक अनुरोध के लिए अलग प्रोसेस बना रहता है। OpenClaw वर्तमान में स्थायी whisper.cpp सर्वर प्रबंधित नहीं करता, क्योंकि मानक Homebrew whisper-cpp पैकेज उस सर्वर को अक्षम करता है, जबकि अपस्ट्रीम उदाहरण में कोई कॉन्फ़िगर की गई सीमित प्रवेश कतार नहीं है। सुरक्षित रूप से सक्षम किए जाने से पहले Plugin-स्वामित्व वाले स्थायी जीवनचक्र को स्वास्थ्य/स्टार्टअप, मॉडल रेज़िडेंसी, सीमित कतारबद्धता, रद्दीकरण/टाइमआउट, केवल-लूपबैक बिना-प्रमाणीकरण संचालन और बिना क्लाउड फ़ॉलबैक वाला अनुरक्षित पैकेज्ड वर्कर चाहिए।

प्रॉक्सी परिवेश समर्थन

प्रोवाइडर-आधारित ऑडियो ट्रांसक्रिप्शन, undici के EnvHttpProxyAgent सिमेंटिक्स से मेल खाते हुए, मानक आउटबाउंड प्रॉक्सी env vars का पालन करता है:

  • HTTPS_PROXY / https_proxy
  • HTTP_PROXY / http_proxy
  • ALL_PROXY / all_proxy

लोअरकेस वेरिएबल अपरकेस पर प्राथमिकता लेते हैं; NO_PROXY/no_proxy प्रविष्टियाँ (होस्टनाम, *.suffix, या host:port) प्रॉक्सी को बायपास करती हैं। यदि कोई प्रॉक्सी env vars सेट नहीं है, तो सीधे निर्गमन का उपयोग किया जाता है। यदि प्रॉक्सी सेटअप विफल होता है (विकृत URL), तो OpenClaw चेतावनी लॉग करता है और सीधे फ़ेच पर फ़ॉलबैक करता है।

समूहों में उल्लेख पहचान

ऑडियो प्रीफ़्लाइट का समर्थन करने वाले चैनलों पर, समूह चैट के लिए requireMention: true सेट होने पर OpenClaw उल्लेखों की जाँच करने से पहले ऑडियो ट्रांसक्राइब करता है। इससे बिना कैप्शन वाला वॉइस नोट उल्लेख गेट से गुजर सकता है, जब उसके ट्रांसक्रिप्ट में कॉन्फ़िगर किया गया उल्लेख पैटर्न हो। चैनल-विशिष्ट दस्तावेज़ उन ट्रांसपोर्ट का वर्णन करते हैं जिन्हें टाइप किया हुआ उल्लेख आवश्यक होता है।

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

  1. यदि किसी वॉइस संदेश में टेक्स्ट बॉडी नहीं है और समूह में उल्लेख आवश्यक हैं, तो OpenClaw पहले ऑडियो अटैचमेंट का प्रीफ़्लाइट ट्रांसक्रिप्शन करता है।
  2. ट्रांसक्रिप्ट में उल्लेख पैटर्न (उदाहरण के लिए @BotName, इमोजी ट्रिगर) की जाँच की जाती है।
  3. यदि उल्लेख मिलता है, तो संदेश पूर्ण उत्तर पाइपलाइन से आगे बढ़ता है।

फ़ॉलबैक व्यवहार: यदि प्रीफ़्लाइट ट्रांसक्रिप्शन विफल होता है (टाइमआउट, API त्रुटि आदि), तो संदेश केवल-टेक्स्ट उल्लेख पहचान पर फ़ॉलबैक करता है, ताकि मिश्रित संदेश (टेक्स्ट + ऑडियो) कभी न छूटें।

प्रति Telegram समूह/टॉपिक ऑप्ट-आउट:

  • उस समूह के लिए प्रीफ़्लाइट ट्रांसक्रिप्ट उल्लेख जाँच छोड़ने हेतु channels.telegram.groups.<chatId>.disableAudioPreflight: true सेट करें।
  • प्रति-टॉपिक ओवरराइड करने के लिए channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflight सेट करें (छोड़ने के लिए true, बलपूर्वक सक्षम करने के लिए false)।
  • डिफ़ॉल्ट false है (उल्लेख-गेट की शर्तें मेल खाने पर प्रीफ़्लाइट सक्षम होता है)।

उदाहरण: कोई उपयोगकर्ता requireMention: true वाले Telegram समूह में "Hey @Claude, what's the weather?" कहते हुए वॉइस नोट भेजता है। वॉइस नोट ट्रांसक्राइब होता है, उल्लेख पहचाना जाता है और एजेंट उत्तर देता है।

ध्यान देने योग्य बातें

  • स्कोप नियम पहले-मेल-की-जीत का उपयोग करते हैं; 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)।
  • प्रीफ़्लाइट ट्रांसक्रिप्शन उल्लेख पहचान के लिए केवल पहले ऑडियो अटैचमेंट को संसाधित करता है। अतिरिक्त ऑडियो अटैचमेंट मुख्य मीडिया-समझ चरण के दौरान संसाधित होते हैं।

संबंधित

Was this useful?
On this page

On this page