> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Audio va ovozli eslatmalar

# Audio / Ovozli eslatmalar — 2026-01-17

## Nimalar ishlaydi

* **Media tushunish (audio)**: Agar audio tushunish yoqilgan bo‘lsa (yoki avtomatik aniqlansa), OpenClaw:
  1. Birinchi audio ilovani (mahalliy yo‘l yoki URL) topadi va kerak bo‘lsa yuklab oladi.
  2. Har bir model yozuviga yuborishdan oldin `maxBytes` ni majburiy qo‘llaydi.
  3. Mos keladigan birinchi model yozuvini tartib bo‘yicha ishga tushiradi (provider yoki CLI).
  4. Agar u muvaffaqiyatsiz bo‘lsa yoki o‘tkazib yuborilsa (hajm/timeout), keyingi yozuvni sinab ko‘radi.
  5. Muvaffaqiyatli bo‘lsa, `Body` ni `[Audio]` blokiga almashtiradi va `{{Transcript}}` ni o‘rnatadi.
* **Buyruqlarni tahlil qilish**: Transkripsiya muvaffaqiyatli bo‘lganda, slash buyruqlar ishlashi uchun `CommandBody`/`RawBody` transkriptga o‘rnatiladi.
* **Batafsil loglash**: `--verbose` rejimida transkripsiya qachon ishga tushgani va qachon body almashtirilgani log qilinadi.

## Avtomatik aniqlash (standart)

Agar siz **modellarni sozlamagan bo‘lsangiz** va `tools.media.audio.enabled` **`false` ga o‘rnatilmagan** bo‘lsa,
OpenClaw quyidagi tartibda avtomatik aniqlaydi va birinchi ishlaydigan variantda to‘xtaydi:

1. **Mahalliy CLI lar** (agar o‘rnatilgan bo‘lsa)
   * `sherpa-onnx-offline` (`SHERPA_ONNX_MODEL_DIR` encoder/decoder/joiner/tokens bilan talab etiladi)
   * `whisper-cli` (`whisper-cpp` dan; `WHISPER_CPP_MODEL` yoki biriktirilgan tiny modeldan foydalanadi)
   * `whisper` (Python CLI; modellarni avtomatik yuklab oladi)
2. **Gemini CLI** (`gemini`) `read_many_files` dan foydalanib
3. **Provider kalitlari** (OpenAI → Groq → Deepgram → Google)

Avtomatik aniqlashni o‘chirish uchun `tools.media.audio.enabled: false` ni o‘rnating.
Moslashtirish uchun `tools.media.audio.models` ni o‘rnating.
Eslatma: Binar aniqlash macOS/Linux/Windows bo‘ylab best-effort; CLI `PATH` da ekanini ta’minlang (`~` ni kengaytiramiz) yoki to‘liq buyruq yo‘li bilan aniq CLI modelini o‘rnating.

## Konfiguratsiya misollari

### Provayder + CLI zaxira varianti (OpenAI + Whisper CLI)

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  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,
          },
        ],
      },
    },
  },
}
```

### Provider-only, scope gating bilan

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

### Faqat provider (Deepgram)

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  tools: {
    media: {
      audio: {
        enabled: true,
        models: [{ provider: "deepgram", model: "nova-3" }],
      },
    },
  },
}
```

## Eslatmalar va cheklovlar

* Provider autentifikatsiyasi standart model autentifikatsiya tartibiga amal qiladi (auth profillar, env o‘zgaruvchilar, `models.providers.*.apiKey`).
* `provider: "deepgram"` ishlatilganda Deepgram `DEEPGRAM_API_KEY` ni oladi.
* Deepgram sozlash tafsilotlari: [Deepgram (audio transkripsiya)](/providers/deepgram).
* Audio providerlar `tools.media.audio` orqali `baseUrl`, `headers` va `providerOptions` ni bekor qilishi mumkin.
* Standart hajm cheklovi 20MB (`tools.media.audio.maxBytes`). Haddan katta audio shu model uchun o‘tkazib yuboriladi va keyingi yozuv sinab ko‘riladi.
* Audio uchun standart `maxChars` **o‘rnatilmagan** (to‘liq transkript). Chiqishni qisqartirish uchun `tools.media.audio.maxChars` yoki har bir yozuv uchun `maxChars` ni o‘rnating.
* OpenAI avtomatik standarti `gpt-4o-mini-transcribe`; yuqori aniqlik uchun `model: "gpt-4o-transcribe"` ni o‘rnating.
* Bir nechta ovozli eslatmalarni qayta ishlash uchun `tools.media.audio.attachments` dan foydalaning (`mode: "all"` + `maxAttachments`).
* Transkript shablonlar uchun `{{Transcript}}` sifatida mavjud.
* CLI stdout cheklangan (5MB); CLI chiqishini ixcham saqlang.

## Guruhlarda Mention aniqlash

Guruh chatida `requireMention: true` o‘rnatilganda, OpenClaw endi mentionlarni tekshirishdan **oldin** audioni transkripsiya qiladi. Bu mention mavjud bo‘lgan ovozli xabarlarni ham qayta ishlash imkonini beradi.

**Qanday ishlaydi:**

1. Agar ovozli xabarda matn bo‘lmasa va guruh mention talab qilsa, OpenClaw "preflight" transkripsiyani amalga oshiradi.
2. Transkript mention andozalari (masalan, `@BotName`, emoji triggerlar) uchun tekshiriladi.
3. Agar mention aniqlansa, xabar to‘liq javob pipeline orqali davom etadi.
4. Transkript mention aniqlash uchun ishlatiladi, shuning uchun ovozli xabarlar mention tekshiruvidan o‘ta oladi.

**Fallback xatti-harakat:**

* Agar preflight vaqtida transkripsiya muvaffaqiyatsiz tugasa (timeout, API xatosi va h.k.), xabar faqat matn asosidagi mention aniqlash bo‘yicha qayta ishlanadi.
* Bu aralash xabarlar (matn + audio) hech qachon noto‘g‘ri rad etilmasligini ta’minlaydi.

**Misol:** Foydalanuvchi `requireMention: true` o‘rnatilgan Telegram guruhida "Hey @Claude, what's the weather?" deb ovozli xabar yuboradi. Ovozli xabar transkripsiya qilinadi, mention aniqlanadi va agent javob beradi.

## Gotchas

* Scope rules use first-match wins. `chatType` is normalized to `direct`, `group`, or `room`.
* Ensure your CLI exits 0 and prints plain text; JSON needs to be massaged via `jq -r .text`.
* Keep timeouts reasonable (`timeoutSeconds`, default 60s) to avoid blocking the reply queue.
* Preflight transkripsiya mention aniqlash uchun faqat **birinchi** audio biriktirmani qayta ishlaydi. Qo‘shimcha audiolar asosiy media tushunish bosqichida qayta ishlanadi.
