---
read_when:
    - Реализация режима разговора в macOS/iOS/Android
    - Изменение поведения голоса, синтеза речи и прерывания
summary: 'Режим разговора: непрерывные голосовые диалоги с локальными STT/TTS и голосовым взаимодействием в реальном времени'
title: Режим разговора
x-i18n:
    generated_at: "2026-07-13T18:17:54Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: 4180dcbf7a62cd03e2d18f2c568ed2182c9cf2f80159154a7d261bcb9b3ebee0
    source_path: nodes/talk.md
    workflow: 16
---

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

- **Нативный режим разговора в 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` для субтитров и диктовки без голосового ответа ассистента. Однократно загружаемые голосовые заметки по-прежнему используют аудиоканал [анализа медиафайлов](/ru/nodes/media-understanding).

Нативный режим разговора представляет собой непрерывный цикл: ожидать речь, отправить расшифровку модели через активный сеанс, дождаться ответа, а затем озвучить его через настроенного поставщика режима разговора (`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)

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

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

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

```json
{ "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
{
  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`.

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

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