Skip to main content
Режим разговора охватывает пять вариантов среды выполнения:
  • Нативный режим разговора в 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.

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