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

# Режим разговора

Режим разговора охватывает пять вариантов среды выполнения:

* **Нативный режим разговора в macOS/iOS/Android**: локальное распознавание речи, чат через Gateway и TTS `talk.speak`. Узлы объявляют возможность `talk` и указывают, какие команды `talk.*` они поддерживают.
* **Режим разговора в iOS (реальное время)**: управляемый клиентом WebRTC для конфигураций OpenAI реального времени, в которых выбран транспорт `webrtc` или транспорт не указан. Явные конфигурации `gateway-relay`, `provider-websocket` и конфигурации реального времени не от OpenAI продолжают использовать ретранслятор под управлением Gateway; конфигурации не в реальном времени используют нативный речевой цикл.
* **Режим разговора в браузере**: `talk.client.create` для управляемых клиентом сеансов `webrtc`/`provider-websocket` или `talk.session.create` для управляемых Gateway сеансов `gateway-relay`. `managed-room` зарезервирован для передачи управления Gateway и комнат рации.
* **Режим разговора в Android (реальное время)**: включите его с помощью `talk.realtime.mode: "realtime"` и `talk.realtime.transport: "gateway-relay"`. В противном случае Android продолжает использовать нативное распознавание речи, чат через Gateway и `talk.speak`.
* **Клиенты только для транскрибирования**: `talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" })`, затем `talk.session.appendAudio`, `talk.session.cancelTurn` и `talk.session.close` для субтитров и диктовки без голосового ответа ассистента. Однократно загружаемые голосовые заметки по-прежнему используют аудиоканал [анализа медиафайлов](https://docs2.openclaw.ai/ru/nodes/media-understanding.md).

Нативный режим разговора представляет собой непрерывный цикл: ожидать речь, отправить расшифровку модели через активный сеанс, дождаться ответа, а затем озвучить его через настроенного поставщика режима разговора (`talk.speak`).

Управляемый клиентом режим разговора в реальном времени перенаправляет вызовы инструментов поставщика через `talk.client.toolCall`, а не вызывает `chat.send` напрямую. Пока активна консультация в реальном времени, клиенты могут вызывать `talk.client.steer` или `talk.session.steer`, чтобы классифицировать голосовой ввод как `status`, `steer`, `cancel` или `followup`. Принятое управляющее указание добавляется в очередь активного встроенного запуска; при отклонении возвращается причина, например `no_active_run`, `not_streaming` или `compacting`.

Режим разговора только для транскрибирования создаёт такую же оболочку событий режима разговора, как сеансы реального времени и STT/TTS, но использует `mode: "transcription"` и `brain: "none"`. Все сеансы режима разговора транслируют события в канале `talk.event`; клиенты подписываются на него для получения промежуточных и окончательных обновлений расшифровки (`transcript.delta`/`transcript.done`) и других телеметрических данных сеанса.

## Поведение (macOS)

* Постоянно отображаемая панель, пока включён режим разговора.
* Переходы между фазами **Прослушивание → Обдумывание → Озвучивание**.
* После короткой паузы (интервала тишины) отправляется текущая расшифровка.
* Ответы записываются в WebChat (как при вводе с клавиатуры).
* **Прерывание при обнаружении речи** (включено по умолчанию): если пользователь начинает говорить, пока ассистент озвучивает ответ, воспроизведение останавливается, а временная метка прерывания сохраняется для следующего запроса.

## Голосовые директивы в ответах

Ассистент может добавить в начало ответа одну строку JSON для управления голосом:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{ "voice": "<voice-id>", "once": true }
```

Правила:

* Только первая непустая строка; строка JSON удаляется перед воспроизведением TTS.
* Неизвестные ключи игнорируются.
* `once: true` применяется только к текущему ответу; без него голос становится новым голосом режима разговора по умолчанию.

Поддерживаемые ключи: `voice` / `voice_id` / `voiceId`, `model` / `model_id` / `modelId`, `speed`, `rate` (слов в минуту), `stability`, `similarity`, `style`, `speakerBoost`, `seed`, `normalize`, `lang`, `output_format`, `latency_tier`, `once`.

## Конфигурация (`~/.openclaw/openclaw.json`)

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  talk: {
    provider: "elevenlabs",
    providers: {
      elevenlabs: {
        voiceId: "elevenlabs_voice_id",
        modelId: "eleven_v3",
        outputFormat: "mp3_44100_128",
        apiKey: "elevenlabs_api_key",
      },
      mlx: {
        modelId: "mlx-community/Soprano-80M-bf16",
      },
      system: {},
    },
    speechLocale: "ru-RU",
    silenceTimeoutMs: 1500,
    interruptOnSpeech: true,
    realtime: {
      provider: "openai",
      providers: {
        openai: {
          apiKey: "openai_api_key",
          model: "gpt-realtime-2.1",
          speakerVoice: "cedar",
        },
      },
      instructions: "Speak warmly and keep answers brief.",
      mode: "realtime",
      transport: "webrtc",
      brain: "agent-consult",
    },
  },
}
```

| Ключ | По умолчанию | Примечания |
| - | - | - |
| `provider` | - | Активный поставщик TTS для режима разговора. Используйте `elevenlabs`, `mlx` или `system` для путей локального воспроизведения в macOS. |
| `providers.<id>.voiceId` | - | ElevenLabs использует резервный вариант `ELEVENLABS_VOICE_ID` / `SAG_VOICE_ID` либо первый доступный голос при наличии ключа API. |
| `providers.elevenlabs.modelId` | `eleven_v3` | |
| `providers.mlx.modelId` | `mlx-community/Soprano-80M-bf16` | |
| `providers.elevenlabs.apiKey` | - | В качестве резервного варианта используется `ELEVENLABS_API_KEY` (либо профиль оболочки Gateway, если он доступен). |
| `speechLocale` | значение устройства по умолчанию | Идентификатор локали BCP 47 для локального распознавания речи режима разговора на iOS/macOS. |
| `silenceTimeoutMs` | `700` мс в macOS/Android, `900` мс в iOS | Интервал паузы перед отправкой расшифровки режимом разговора. |
| `interruptOnSpeech` | `true` | |
| `outputFormat` | `pcm_44100` в macOS/iOS, `pcm_24000` в Android | Установите `mp3_*`, чтобы принудительно включить потоковую передачу MP3. |
| `consultThinkingLevel` | не задано | Переопределение уровня обдумывания для запуска агента, обслуживающего вызовы `openclaw_agent_consult` в реальном времени. |
| `consultFastMode` | не задано | Переопределение быстрого режима для вызовов `openclaw_agent_consult` в реальном времени. |
| `realtime.provider` | - | `openai` для WebRTC, `google` для WebSocket поставщика или поставщик, работающий только через мост с ретрансляцией посредством Gateway. |
| `realtime.providers.<id>` | - | Управляемая поставщиком конфигурация реального времени. Браузеры получают только временные или ограниченные учётные данные сеанса, но никогда не получают стандартный ключ API. |
| `realtime.providers.openai.speakerVoice` | `alloy` | Встроенный идентификатор голоса OpenAI Realtime (старый ключ `voice` по-прежнему работает, но считается устаревшим). Текущие голоса `gpt-realtime-2.1`: `alloy`, `ash`, `ballad`, `cedar`, `coral`, `echo`, `marin`, `sage`, `shimmer`, `verse`; для наилучшего качества рекомендуются `marin` и `cedar`. |
| `realtime.transport` | - | `webrtc`: управляемый клиентом OpenAI WebRTC в iOS и браузере. `provider-websocket`: управляется браузером, а в iOS продолжает использовать ретранслятор Gateway. `gateway-relay`: оставляет обработку звука поставщика на Gateway; Android использует режим реального времени только с этим транспортом. |
| `realtime.brain` | - | `agent-consult` направляет вызовы инструментов реального времени через политику Gateway; `direct-tools` обеспечивает устаревшую совместимость с прямыми вызовами инструментов; `none` предназначен для транскрибирования и внешней оркестрации. |
| `realtime.consultRouting` | - | `provider-direct` сохраняет прямой ответ поставщика, когда тот пропускает `openclaw_agent_consult`; `force-agent-consult` вместо этого направляет окончательные расшифровки речи пользователя через OpenClaw. |
| `realtime.instructions` | - | Добавляет предназначенные для поставщика системные инструкции к встроенному запросу OpenClaw для режима реального времени (стиль и тон голоса); стандартные указания `openclaw_agent_consult` сохраняются. |

`talk.catalog` предоставляет канонические идентификаторы провайдеров и псевдонимы реестра, допустимые режимы, транспорты, стратегии мозга, форматы звука в реальном времени и флаги возможностей каждого провайдера, а также выбранный средой выполнения результат готовности. Собственные клиенты Talk должны считывать этот каталог, а не поддерживать псевдонимы провайдеров локально; если более старая версия Gateway не сообщает о готовности группы, считайте её непроверенной, а не однозначно ненастроенной. Провайдеры потоковой транскрипции обнаруживаются через `talk.catalog.transcription`; текущий ретранслятор Gateway использует конфигурацию потокового провайдера Voice Call до появления отдельной конфигурации транскрипции Talk.

## Интерфейс macOS

* Переключатель в строке меню: **Talk**
* Вкладка конфигурации: группа **Talk Mode** (идентификатор голоса и переключатель прерывания)
* Оверлей: сфера отображает универсальную звуковую волну разговора (общую для iOS, watchOS и Android). В режиме прослушивания она следует за текущим уровнем микрофона, в режиме речи — за фактической огибающей воспроизведения TTS, а в режиме размышления мягко пульсирует. Нажмите сферу, чтобы приостановить или возобновить работу, дважды нажмите, чтобы остановить речь, или нажмите X, чтобы выйти из режима Talk.

## Интерфейс Android

* Переключатель на вкладке Voice: **Talk**
* Ручные режимы **Mic** и **Talk** являются взаимоисключающими режимами захвата звука.
* Ручной режим Mic и режим Talk в реальном времени предпочитают микрофон подключённой гарнитуры Bluetooth Classic или BLE; если она отключается, приложение запрашивает другой вход гарнитуры или переключается на микрофон по умолчанию, восстанавливая предпочтение по умолчанию после прекращения захвата.
* Ручной режим Mic прекращает работу, когда приложение уходит из активного режима или пользователь покидает вкладку Voice.
* Talk Mode продолжает работать, пока его не отключат переключателем или пока Node не отключится, используя во время работы тип службы переднего плана Android для микрофона.
* Android поддерживает выходные форматы `pcm_16000`, `pcm_22050`, `pcm_24000` и `pcm_44100` для потоковой передачи `AudioTrack` с низкой задержкой.

## Примечания

* Требуются разрешения на распознавание речи и доступ к микрофону.
* Нативный режим Talk использует активный сеанс Gateway и переключается на опрос истории только при недоступности событий ответа.
* Gateway разрешает воспроизведение Talk через `talk.speak`, используя активного провайдера Talk. Android переключается на локальный системный TTS только при недоступности этого RPC.
* Локальное воспроизведение MLX в macOS использует встроенный вспомогательный инструмент `openclaw-mlx-tts`, если он доступен, либо исполняемый файл из `PATH`. Во время разработки задайте `OPENCLAW_MLX_TTS_BIN`, чтобы указать путь к пользовательскому исполняемому файлу вспомогательного инструмента.
* Диапазоны значений голосовых директив (ElevenLabs): `stability`, `similarity` и `style` принимают `0..1`; `speed` принимает `0.5..2`; `latency_tier` принимает `0..4`.

## Связанные материалы

* [Голосовая активация](https://docs2.openclaw.ai/ru/nodes/voicewake.md)
* [Аудио и голосовые заметки](https://docs2.openclaw.ai/ru/nodes/audio.md)
* [Распознавание медиаданных](https://docs2.openclaw.ai/ru/nodes/media-understanding.md)
