- Нативный режим разговора в 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для субтитров и диктовки без голосового ответа ассистента. Однократно загружаемые голосовые заметки по-прежнему используют аудиоканал анализа медиафайлов.
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 удаляется перед воспроизведением 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)
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.