- Нативный режим разговора macOS/iOS/Android использует локальное распознавание речи, чат Gateway и TTS
talk.speak. Узлы объявляют возможностьtalkи командыtalk.*, которые они поддерживают. - Браузерный режим разговора использует
talk.client.createдля принадлежащих клиенту сеансовwebrtcиprovider-websocketилиtalk.session.createдля принадлежащих Gateway сеансовgateway-relay.managed-roomзарезервирован для передачи управления Gateway и комнат рации. - Режим разговора Android может включать принадлежащие Gateway realtime-сеансы ретрансляции с
talk.realtime.mode: "realtime"иtalk.realtime.transport: "gateway-relay". В остальных случаях он остается на нативном распознавании речи, чате Gateway иtalk.speak. - Клиенты только для транскрибации используют
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), затемtalk.session.appendAudio,talk.session.cancelTurnиtalk.session.close, когда им нужны субтитры или диктовка без голосового ответа ассистента.
- Слушать речь
- Отправить транскрипт модели через активный сеанс
- Дождаться ответа
- Озвучить его через настроенного провайдера разговора (
talk.speak)
talk.client.toolCall; браузерные клиенты не вызывают chat.send напрямую для realtime-консультаций.
Пока realtime-консультация активна, клиенты режима разговора могут использовать talk.client.steer или
talk.session.steer, чтобы классифицировать произнесенный ввод как status, steer, cancel или
followup. Принятое управление ставится в очередь активного встроенного запуска; отклоненное
управление возвращает структурированную причину, например no_active_run, not_streaming
или compacting.
Режим разговора только для транскрибации создает ту же общую оболочку событий разговора, что и realtime- и STT/TTS-сеансы, но использует mode: "transcription" и brain: "none". Он предназначен для субтитров, диктовки и наблюдательного захвата речи; одноразово загруженные голосовые заметки по-прежнему используют путь медиа/аудио.
Поведение (macOS)
- Постоянно видимый оверлей, пока включен режим разговора.
- Переходы фаз Прослушивание → Обдумывание → Озвучивание.
- При короткой паузе (окно тишины) текущий транскрипт отправляется.
- Ответы записываются в WebChat (как при вводе текста).
- Прерывание речью (по умолчанию включено): если пользователь начинает говорить, пока ассистент озвучивает ответ, мы останавливаем воспроизведение и фиксируем временную метку прерывания для следующего запроса.
Голосовые директивы в ответах
Ассистент может добавить в начало ответа одну строку JSON для управления голосом:- Только первая непустая строка.
- Неизвестные ключи игнорируются.
once: trueприменяется только к текущему ответу.- Без
onceголос становится новым значением по умолчанию для режима разговора. - Строка JSON удаляется перед воспроизведением TTS.
voice/voice_id/voiceIdmodel/model_id/modelIdspeed,rate(WPM),stability,similarity,style,speakerBoostseed,normalize,lang,output_format,latency_tieronce
Конфигурация (~/.openclaw/openclaw.json)
interruptOnSpeech: truesilenceTimeoutMs: если не задано, режим разговора сохраняет стандартное для платформы окно паузы перед отправкой транскрипта (700 ms on macOS and Android, 900 ms on iOS)provider: выбирает активного провайдера разговора. Используйтеelevenlabs,mlxилиsystemдля локальных путей воспроизведения macOS.providers.<provider>.voiceId: откатывается кELEVENLABS_VOICE_ID/SAG_VOICE_IDдля ElevenLabs (или к первому голосу ElevenLabs, если доступен ключ API).providers.elevenlabs.modelId: по умолчаниюeleven_v3, если не задано.providers.mlx.modelId: по умолчаниюmlx-community/Soprano-80M-bf16, если не задано.providers.elevenlabs.apiKey: откатывается кELEVENLABS_API_KEY(или к shell-профилю Gateway, если доступен).consultThinkingLevel: необязательное переопределение уровня мышления для полного запуска агента OpenClaw за realtime-вызовамиopenclaw_agent_consult.consultFastMode: необязательное переопределение быстрого режима для realtime-вызововopenclaw_agent_consult.realtime.provider: выбирает активного браузерного/серверного realtime-провайдера голоса. Используйтеopenaiдля WebRTC,googleдля WebSocket провайдера или провайдера только-моста через ретрансляцию Gateway.realtime.providers.<provider>хранит принадлежащую провайдеру realtime-конфигурацию. Браузер получает только эфемерные или ограниченные учетные данные сеанса, но никогда стандартный ключ API.realtime.providers.openai.voice: встроенный идентификатор голоса OpenAI Realtime. Текущие голосаgpt-realtime-2:alloy,ash,ballad,coral,echo,sage,shimmer,verse,marinиcedar;marinиcedarрекомендуются для лучшего качества.realtime.transport:webrtcиprovider-websocket— браузерные realtime-транспорты. Android использует realtime-ретрансляцию только когда заданоgateway-relay; в остальных случаях режим разговора Android использует собственный нативный цикл STT/TTS.realtime.brain:agent-consultмаршрутизирует realtime-вызовы инструментов через политику Gateway;direct-tools— устаревшее совместимое поведение прямых инструментов;noneпредназначен для транскрибации или внешней оркестрации.realtime.consultRouting:provider-directсохраняет прямой ответ провайдера, когда он пропускаетopenclaw_agent_consult;force-agent-consultвместо этого заставляет ретрансляцию Gateway маршрутизировать финализированные пользовательские транскрипты через OpenClaw.realtime.instructions: добавляет обращенные к провайдеру системные инструкции к встроенному realtime-промпту OpenClaw. Используйте для стиля и тона голоса; OpenClaw сохраняет стандартные указанияopenclaw_agent_consult.talk.catalogпредоставляет допустимые режимы, транспорты, стратегии brain, realtime-форматы аудио и флаги возможностей каждого провайдера, чтобы собственные клиенты режима разговора могли избегать неподдерживаемых комбинаций.- Потоковые провайдеры транскрибации обнаруживаются через
talk.catalog.transcription. Текущая ретрансляция Gateway использует конфигурацию потокового провайдера Voice Call, пока не будет добавлена выделенная поверхность конфигурации транскрибации режима разговора. speechLocale: необязательный идентификатор локали BCP 47 для распознавания речи режима разговора на устройстве в iOS/macOS. Оставьте незаданным, чтобы использовать значение устройства по умолчанию.outputFormat: по умолчаниюpcm_44100на macOS/iOS иpcm_24000на Android (задайтеmp3_*, чтобы принудительно включить потоковую передачу MP3)
Интерфейс macOS
- Переключатель в строке меню: Разговор
- Вкладка конфигурации: группа Режим разговора (идентификатор голоса + переключатель прерывания)
- Оверлей:
- Прослушивание: облако пульсирует с уровнем микрофона
- Обдумывание: погружающаяся анимация
- Озвучивание: расходящиеся кольца
- Нажатие на облако: остановить озвучивание
- Нажатие на X: выйти из режима разговора
Интерфейс Android
- Переключатель вкладки голоса: Разговор
- Ручные Микрофон и Разговор являются взаимоисключающими режимами runtime-захвата.
- Ручной микрофон останавливается, когда приложение покидает передний план или пользователь уходит с вкладки голоса.
- Режим разговора продолжает работать, пока его не отключат или пока Android-узел не отключится, и во время активности использует тип foreground-службы микрофона Android.
Примечания
- Требуются разрешения на речь и микрофон.
- Нативный режим разговора использует активный сеанс Gateway и откатывается к опросу истории только когда события ответа недоступны.
- Браузерный realtime-режим разговора использует
talk.client.toolCallдляopenclaw_agent_consultвместо предоставленияchat.sendпринадлежащим провайдеру браузерным сеансам. - Режим разговора только для транскрибации использует
talk.session.create,talk.session.appendAudio,talk.session.cancelTurnиtalk.session.close; клиенты подписываются наtalk.eventдля частичных/финальных обновлений транскрипта. - Gateway разрешает воспроизведение разговора через
talk.speak, используя активного провайдера разговора. Android откатывается к локальному системному TTS только когда этот RPC недоступен. - Локальное воспроизведение MLX на macOS использует встроенный помощник
openclaw-mlx-tts, если он присутствует, или исполняемый файл вPATH. ЗадайтеOPENCLAW_MLX_TTS_BIN, чтобы указать пользовательский бинарный файл помощника во время разработки. stabilityдляeleven_v3проверяется на значения0.0,0.5или1.0; другие модели принимают0..1.latency_tierпроверяется на0..4, если задано.- Android поддерживает выходные форматы
pcm_16000,pcm_22050,pcm_24000иpcm_44100для низколатентной потоковой передачи AudioTrack.