मुख्य सामग्री पर जाएं

ऑडियो / वॉयस नोट्स — 2026-01-17

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

  • मीडिया समझ (ऑडियो): यदि ऑडियो समझ सक्षम है (या स्वतः‑पता चल जाती है), OpenClaw:
    1. पहले ऑडियो अटैचमेंट (लोकल पथ या URL) को खोजता है और आवश्यकता होने पर डाउनलोड करता है।
    2. प्रत्येक मॉडल एंट्री को भेजने से पहले maxBytes लागू करता है।
    3. क्रम में पहली पात्र मॉडल एंट्री (प्रदाता या CLI) चलाता है।
    4. यदि वह विफल होती है या स्किप होती है (आकार/टाइमआउट), तो अगली एंट्री आज़माता है।
    5. सफलता पर, Body को [Audio] ब्लॉक से बदलता है और {{Transcript}} सेट करता है।
  • कमांड पार्सिंग: जब ट्रांसक्रिप्शन सफल होता है, तो CommandBody/RawBody को ट्रांसक्रिप्ट पर सेट किया जाता है ताकि स्लैश कमांड्स काम करते रहें।
  • विस्तृत लॉगिंग: --verbose में, हम लॉग करते हैं कि ट्रांसक्रिप्शन कब चलता है और कब यह बॉडी को बदलता है।

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

यदि आप मॉडल कॉन्फ़िगर नहीं करते और tools.media.audio.enabled को false पर सेट नहीं किया गया है, तो OpenClaw निम्न क्रम में स्वतः‑पता लगाता है और पहली कार्यशील विकल्प पर रुक जाता है:
  1. लोकल CLI (यदि इंस्टॉल हों)
    • sherpa-onnx-offline (इसके लिए SHERPA_ONNX_MODEL_DIR आवश्यक है, जिसमें encoder/decoder/joiner/tokens हों)
    • whisper-cli (whisper-cpp से; WHISPER_CPP_MODEL या बंडल्ड tiny मॉडल का उपयोग करता है)
    • whisper (Python CLI; मॉडल स्वतः डाउनलोड करता है)
  2. Gemini CLI (gemini) का उपयोग read_many_files के साथ
  3. प्रदाता कुंजियाँ (OpenAI → Groq → Deepgram → Google)
Auto-detection को अक्षम करने के लिए, tools.media.audio.enabled: false सेट करें। Customize करने के लिए, tools.media.audio.models सेट करें। टिप्पणी: बाइनरी डिटेक्शन macOS/Linux/Windows पर best‑effort है; सुनिश्चित करें कि CLI PATH पर है (हम ~ का विस्तार करते हैं), या पूर्ण कमांड पथ के साथ एक स्पष्ट CLI मॉडल सेट करें।

विन्यास उदाहरण

प्रदाता + CLI फ़ॉलबैक (OpenAI + Whisper CLI)

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

स्कोप गेटिंग के साथ केवल‑प्रदाता

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

केवल‑प्रदाता (Deepgram)

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

नोट्स और सीमाएँ

  • प्रदाता प्रमाणीकरण मानक मॉडल प्रमाणीकरण क्रम का पालन करता है (auth प्रोफ़ाइल, env vars, models.providers.*.apiKey)।
  • Deepgram, जब provider: "deepgram" उपयोग किया जाता है, तो DEEPGRAM_API_KEY को ग्रहण करता है।
  • Deepgram सेटअप विवरण: Deepgram (ऑडियो ट्रांसक्रिप्शन)
  • ऑडियो प्रदाता tools.media.audio के माध्यम से baseUrl, headers, और providerOptions को ओवरराइड कर सकते हैं।
  • Default size cap 20MB है (tools.media.audio.maxBytes)। Oversize audio उस मॉडल के लिए छोड़ दिया जाता है और अगली प्रविष्टि आज़माई जाती है।
  • Audio के लिए default maxChars unset होता है (पूरा transcript)। आउटपुट ट्रिम करने के लिए tools.media.audio.maxChars या प्रति-प्रविष्टि maxChars सेट करें।
  • OpenAI का ऑटो डिफ़ॉल्ट gpt-4o-mini-transcribe है; अधिक सटीकता के लिए model: "gpt-4o-transcribe" सेट करें।
  • अनेक वॉयस नोट्स प्रोसेस करने के लिए tools.media.audio.attachments का उपयोग करें (mode: "all" + maxAttachments)।
  • ट्रांसक्रिप्ट टेम्पलेट्स में {{Transcript}} के रूप में उपलब्ध है।
  • CLI stdout सीमित है (5MB); CLI आउटपुट संक्षिप्त रखें।

सावधानियाँ

जब समूह चैट के लिए requireMention: true सेट किया जाता है, तो OpenClaw अब उल्लेखों की जाँच करने से पहले ऑडियो का ट्रांसक्रिप्शन करता है। इससे वॉइस नोट्स को प्रोसेस किया जा सकता है, भले ही उनमें उल्लेख शामिल हों। यह कैसे काम करता है:
  1. यदि किसी वॉइस संदेश में टेक्स्ट बॉडी नहीं है और समूह में उल्लेख आवश्यक है, तो OpenClaw “preflight” ट्रांसक्रिप्शन करता है।
  2. ट्रांसक्रिप्ट में उल्लेख पैटर्न (जैसे, @BotName, इमोजी ट्रिगर्स) की जाँच की जाती है।
  3. यदि कोई उल्लेख मिलता है, तो संदेश पूर्ण रिप्लाई पाइपलाइन से होकर गुजरता है।
  4. उल्लेख पहचान के लिए ट्रांसक्रिप्ट का उपयोग किया जाता है ताकि वॉइस नोट्स उल्लेख गेट को पार कर सकें।
फॉलबैक व्यवहार:
  • यदि preflight के दौरान ट्रांसक्रिप्शन विफल हो जाता है (टाइमआउट, API त्रुटि आदि), तो संदेश को केवल टेक्स्ट-आधारित उल्लेख पहचान के आधार पर प्रोसेस किया जाता है।
  • यह सुनिश्चित करता है कि मिश्रित संदेश (टेक्स्ट + ऑडियो) कभी भी गलत तरीके से ड्रॉप न हों।
उदाहरण: एक उपयोगकर्ता requireMention: true के साथ एक Telegram समूह में “Hey @Claude, what’s the weather?” कहते हुए एक वॉइस नोट भेजता है। वॉइस नोट का ट्रांसक्रिप्शन किया जाता है, मेंशन का पता लगाया जाता है, और एजेंट उत्तर देता है।

सावधानियाँ

  • Scope rules में first-match wins लागू होता है। chatType को direct, group, या room में normalize किया जाता है।
  • सुनिश्चित करें कि आपका CLI 0 के साथ बाहर निकलता है और सादा पाठ प्रिंट करता है; JSON को jq -r .text के माध्यम से समायोजित करना होगा।
  • उत्तर कतार को ब्लॉक होने से बचाने के लिए टाइमआउट उचित रखें (timeoutSeconds, डिफ़ॉल्ट 60s)।
  • Preflight ट्रांसक्रिप्शन मेंशन पहचान के लिए केवल पहले ऑडियो अटैचमेंट को प्रोसेस करता है। अतिरिक्त ऑडियो को मुख्य मीडिया समझ चरण के दौरान प्रोसेस किया जाता है।