Голосовой ассистент на OpenClaw: настройка голоса, STT и TTS

Голосовой ассистент на OpenClaw — это три независимых слоя: распознавание речи (STT), синтез голоса (TTS) и режим живого разговора (Talk Mode). Настройка каждого слоя занимает 5–10 минут, а в итоге вы получаете ИИ-агента, которому можно говорить команды голосом и получать ответы вслух — в Telegram, WhatsApp или Discord.

Что такое голосовой ассистент в OpenClaw

Голосовой ассистент в OpenClaw — это функция, которая позволяет взаимодействовать с ИИ-агентом через речь вместо текста. Агент распознаёт ваши голосовые сообщения, выполняет команды и отвечает голосом. Работает через любой подключённый мессенджер: Telegram, WhatsApp, Discord, Feishu, Matrix.

В отличие от обычного голосового помощника вроде Siri или Алисы, OpenClaw выполняет реальные действия: запускает скрипты, управляет сервером, ищет в интернете, редактирует файлы. Голос — это просто способ передать команду, а функциональность остаётся той же, что и при текстовом вводе.

Какие бывают голосовые функции в OpenClaw

OpenClaw поддерживает три отдельных типа голосового взаимодействия. Важно понимать различия, потому что каждый настраивается independently.

STT — распознавание речи (входящие голосовые)

STT (Speech-to-Text) — это преобразование вашего голосового сообщения в текст. Когда вы отправляете аудио в чат, OpenClaw скачивает файл, отправляет его на распознавание и подставляет текст как тело сообщения. После этого агент обрабатывает команду так, будто вы её набрали.

STT — самая востребованная функция. Она работает автоматически: отправили голосовое — агент понял и ответил.

TTS — синтез голоса (исходящие ответы)

TTS (Text-to-Speech) — это преобразование текстового ответа агента в аудио. OpenClaw берёт текст ответа, отправляет его на синтез голоса и доставляет результат как голосовое сообщение или аудиофайл.

TTS выключен по умолчанию. Его нужно явно включить и выбрать провайдера.

Talk Mode — живой разговор

Talk Mode — это непрерывный диалог «говорю → слушаю → отвечаю». Работает через устройство с микрофоном и динамиком (Mac, iPhone, Android), которое подключается к gateway. Сервер остаётся headless, а аудио обрабатывается локально на устройстве.

Talk Mode требует отдельной настройки node-устройства и выходит за рамки базовой установки голоса.

Настройка распознавания речи (STT)

Автоматическое определение провайдера

По умолчанию OpenClaw автоматически определяет доступный STT-провайдер. Порядок приоритета:

  • Провайдер с API-ключом — если у вас настроен OpenAI, Groq, Deepgram или другой провайдер с ключом, OpenClaw использует его первым.
  • Локальный CLI — если ключей нет, OpenClaw ищет установленные локальные инструменты: whisper-cli, whisper (Python), sherpa-onnx-offline, parakeet-mlx (Apple Silicon).
  • Проверить, какие провайдеры доступны:

    openclaw capability audio providers
    

    Ручная настройка через openclaw.json

    Для точного контроля отредактируйте ~/.openclaw/openclaw.json. Конфиг STT находится в секции tools.media.audio и tools.media.models.

    Пример: OpenAI + локальный Whisper как fallback:

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

    В этой конфигурации OpenClaw сначала попытается использовать OpenAI API. Если запрос не пройдёт (таймаут, ошибка, лимит), автоматически переключится на локальный Whisper.

    Ограничение доступа к голосовому вводу

    Если ваш агент работает в групповых чатах, стоит ограничить, кто может отправлять голосовые. Иначе кто угодно в группе может расходовать ваш STT-бюджет:

    {
      "tools": {
        "media": {
          "audio": {
            "enabled": true,
            "scope": {
              "default": "deny",
              "rules": [
                { "action": "allow", "match": { "chatType": "private" } }
              ]
            }
          }
        }
      }
    }
    

    Эта конфигурация разрешает голосовой ввод только в личных сообщениях.

    Echo-транскрипт — показывать распознанный текст

    Чтобы видеть, что именно распознал агент, включите echoTranscript:

    {
      "tools": {
        "media": {
          "audio": {
            "enabled": true,
            "echoTranscript": true,
            "echoFormat": "📝 \"{transcript}\""
          }
        }
      }
    }
    

    После каждого голосового сообщения агент будет отправлять текст распознавания перед ответом.

    Настройка синтеза голоса (TTS)

    Выбор провайдера

    OpenClaw поддерживает 14 TTS-провайдеров. Вот основные:

    Провайдер Нужен ключ Бесплатно Примечание
    OpenAI Да Нет, $0.015/1K символов gpt-4o-mini-tts, поддержка persona
    ElevenLabs Да 10 000 символов/мес Клонирование голоса, мультиязычность
    Microsoft (Edge) Нет Да Нейронные голоса Edge TTS, без SLA
    Google Gemini Да Зависит от тарифа persona-aware синтез
    Xiaomi MiMo Да Зависит от тарифа mimo-v2.5-tts
    Local CLI Нет Да Любая локальная команда TTS

    Для быстрого старта подходит Microsoft Edge — не нужен API-ключ, голоса качественные. Для лучшего качества — ElevenLabs или OpenAI.

    Включение TTS в конфиге

    TTS настраивается в секции messages.tts (или просто tts) в ~/.openclaw/openclaw.json.

    Microsoft Edge (бесплатно, без ключа):

    {
      "tts": {
        "auto": "inbound",
        "provider": "microsoft",
        "providers": {
          "microsoft": {
            "enabled": true,
            "speakerVoice": "ru-RU-DmitryNeural",
            "lang": "ru-RU"
          }
        }
      }
    }
    

    OpenAI:

    {
      "tts": {
        "auto": "inbound",
        "provider": "openai",
        "providers": {
          "openai": {
            "apiKey": "${OPENAI_API_KEY}",
            "model": "gpt-4o-mini-tts",
            "speakerVoice": "alloy"
          }
        }
      }
    }
    

    ElevenLabs:

    {
      "tts": {
        "auto": "inbound",
        "provider": "elevenlabs",
        "providers": {
          "elevenlabs": {
            "apiKey": "${ELEVENLABS_API_KEY}",
            "model": "eleven_multilingual_v2",
            "speakerVoiceId": "EXAVITQu4vr4xnSDxMaL"
          }
        }
      }
    }
    

    Режимы автоматического TTS

    Поле tts.auto определяет, когда агент будет отвечать голосом:

    Режим Поведение
    `off` TTS выключен, только ручной вызов через `/tts`
    `inbound` Голосом только если пользователь отправил голосовое
    `tagged` Голосом только при явном указании
    `always` Каждый ответ — голосом

    Рекомендуемый режим — inbound. Он естественно работает: отправили голосовое — получили голосовой ответ. Набрали текстом — получили текстом.

    Ограничение длины

    Чтобы агент не озвучивал длинные логи и трейсбеки:

    {
      "tts": {
        "auto": "inbound",
        "provider": "microsoft",
        "maxTextLength": 4000,
        "timeoutMs": 30000
      }
    }
    

    Ответы длиннее maxTextLength символов будут доставлены текстом.

    Как пользоваться голосом в мессенджерах

    Telegram

    В Telegram голосовой ввод работает из коробки. Отправьте голосовое сообщение (зажмите микрофон) — агент распознает текст и ответит.

    Если включён TTS в режиме inbound, ответ придёт голосовым сообщением. Если TTS выключен — текстом.

    Для переключения модели на лету используйте /model прямо в голосовом сообщении.

    WhatsApp и Discord

    Принцип тот же: отправляете аудиофайл или голосовое сообщение — OpenClaw распознаёт и отвечает. Формат доставки зависит от канала: Telegram отправляет voice note, WhatsApp — аудиофайл, Discord — может воспроизводить через голосовые каналы.

    Групповые чаты

    В группах с включённым requireMention голосовое сообщение проходит preflight-транскрипцию. Если в распознанном тексте есть упоминание бота (например @MyBot), сообщение обрабатывается. Это позволяет использовать голосовые команды в группах без спама.

    Стоимость голосового ввода и вывода

    Компонент Провайдер Стоимость
    STT OpenAI Whisper $0.006 за минуту аудио
    STT Groq Whisper бесплатно (с лимитами)
    STT Локальный Whisper бесплатно
    TTS OpenAI ~$0.015 за 1K символов
    TTS ElevenLabs бесплатно 10K символов/мес, далее от $5/мес
    TTS Microsoft Edge бесплатно

    При 10 голосовых взаимодействиях в день (30 секунд ввода + 200 символов ответа) месячные расходы составляют примерно $2–5 при использовании OpenAI. С Microsoft Edge TTS и локальным Whisper — фактически бесплатно.

    Проблемы и решения

    Агент не реагирует на голосовые

    Причины:

  • STT не настроен или отключён (tools.media.audio.enabled: false)
  • Файл аудио превышает maxBytes (по умолчанию 20 МБ)
  • Нет доступных провайдеров STT (ни ключей, ни локальных CLI)
  • Проверка: openclaw capability audio providers — должен показать хотя бы один доступный провайдер.

    Голосовые ответы не приходят

    Причины:

  • TTS выключен (tts.auto: "off" или не указан провайдер)
  • API-ключ TTS-провайдера не задан или истёк
  • Ответ длиннее maxTextLength — агент переключился на текст
  • Плохое качество распознавания

  • Используйте шумоподавляющий микрофон
  • Говорите чётко, без сильного акцента
  • Для технических терминов начинайте фразу с простого предложения на том же языке
  • Высокая задержка ответов

  • Выберите TTS-провайдер ближе к вашему региону
  • Уменьшите timeoutMs в конфиге
  • Проверьте сетевое соединение с API
  • Частые вопросы

    Можно ли использовать голос без API-ключей?

    Да. Для STT установите локальный Whisper (pip install openai-whisper). Для TTS используйте Microsoft Edge — бесплатный нейронный синтез без ключа. Качество будет ниже, чем у OpenAI или ElevenLabs, но для повседневного использования достаточно.

    Как сменить голос TTS?

    Для Microsoft Edge: speakerVoice в конфиге (например ru-RU-SvetlanaNeural). Для ElevenLabs: speakerVoiceId — выберите на сайте ElevenLabs. Для OpenAI: speakerVoice (alloy, echo, fable, onyx, nova, shimmer).

    Работает ли голос в групповых чатах?

    Да, но по умолчанию OpenClaw может ограничить обработку аудио в группах. Настройте scope в tools.media.audio, чтобы разрешить голосовой ввод в нужных чатах.

    Какой провайдер STT самый точный для русского языка?

    OpenAI Whisper (gpt-4o-transcribe или gpt-4o-mini-transcribe) показывает стабильно высокое качество для русского. Groq с Whisper large-v3 тоже хорошо работает. Локальный Whisper base уступает облачным вариантам, но для коротких команд подходит.

    Можно ли сделать так, чтобы агент отвечал голосом всегда?

    Да, установите tts.auto: "always" в конфиге. Но учтите: каждый ответ будет озвучен, включая длинные логи и технические выводы. Лучше использовать inbound — голосом только в ответ на голосовые.