Skip to main content
Tryb rozmowy obejmuje pięć wariantów działania:
  • Natywna rozmowa w macOS/iOS/Androidzie: lokalne rozpoznawanie mowy, czat przez Gateway oraz synteza mowy TTS za pomocą talk.speak. Węzły ogłaszają funkcję talk i deklarują, które polecenia talk.* obsługują.
  • Rozmowa w iOS (w czasie rzeczywistym): WebRTC zarządzane przez klienta dla konfiguracji OpenAI czasu rzeczywistego, które wybierają transport webrtc lub go pomijają. Jawne konfiguracje czasu rzeczywistego gateway-relay, provider-websocket oraz konfiguracje dostawców innych niż OpenAI pozostają na przekaźniku zarządzanym przez Gateway; konfiguracje niedziałające w czasie rzeczywistym używają natywnej pętli obsługi mowy.
  • Rozmowa w przeglądarce: talk.client.create dla zarządzanych przez klienta sesji webrtc/provider-websocket albo talk.session.create dla zarządzanych przez Gateway sesji gateway-relay. Wartość managed-room jest zarezerwowana dla przekazywania obsługi przez Gateway i pokojów typu krótkofalówka.
  • Rozmowa w Androidzie (w czasie rzeczywistym): włącz ją za pomocą talk.realtime.mode: "realtime" i talk.realtime.transport: "gateway-relay". W przeciwnym razie Android nadal korzysta z natywnego rozpoznawania mowy, czatu przez Gateway oraz talk.speak.
  • Klienci obsługujący wyłącznie transkrypcję: talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), a następnie talk.session.appendAudio, talk.session.cancelTurn i talk.session.close do napisów lub dyktowania bez głosowej odpowiedzi asystenta. Jednorazowo przesyłane notatki głosowe nadal korzystają ze ścieżki dźwiękowej rozumienia multimediów.
Natywna rozmowa działa jako ciągła pętla: nasłuchuje mowy, wysyła transkrypcję do modelu przez aktywną sesję, czeka na odpowiedź, a następnie odtwarza ją głosowo za pomocą skonfigurowanego dostawcy rozmowy (talk.speak). Rozmowa w czasie rzeczywistym zarządzana przez klienta przekazuje wywołania narzędzi dostawcy przez talk.client.toolCall, zamiast bezpośrednio wywoływać chat.send. Gdy aktywna jest konsultacja w czasie rzeczywistym, klienci mogą wywołać talk.client.steer lub talk.session.steer, aby sklasyfikować wypowiedź jako status, steer, cancel albo followup. Zaakceptowane sterowanie zostaje dodane do kolejki aktywnego osadzonego przebiegu; odrzucone sterowanie zwraca przyczynę, taką jak no_active_run, not_streaming lub compacting. Rozmowa obsługująca wyłącznie transkrypcję emituje tę samą otoczkę zdarzeń rozmowy co sesje czasu rzeczywistego oraz STT/TTS, ale używa mode: "transcription" i brain: "none". Wszystkie sesje rozmowy rozgłaszają zdarzenia w kanale talk.event; klienci subskrybują go, aby otrzymywać częściowe i końcowe aktualizacje transkrypcji (transcript.delta/transcript.done) oraz inne dane telemetryczne sesji.

Zachowanie (macOS)

  • Nakładka jest stale widoczna, gdy tryb rozmowy jest włączony.
  • Przejścia między fazami Słuchanie → Myślenie → Mówienie.
  • Po krótkiej przerwie (oknie ciszy) bieżąca transkrypcja zostaje wysłana.
  • Odpowiedzi są zapisywane w WebChat (tak samo jak podczas pisania).
  • Przerywanie mową (domyślnie włączone): jeśli użytkownik zacznie mówić, gdy asystent odtwarza wypowiedź, odtwarzanie zostaje zatrzymane, a znacznik czasu przerwania jest zapisywany na potrzeby następnego polecenia.

Dyrektywy głosowe w odpowiedziach

Asystent może poprzedzić odpowiedź pojedynczym wierszem JSON sterującym głosem:
Reguły:
  • Wyłącznie pierwszy niepusty wiersz; wiersz JSON jest usuwany przed odtworzeniem TTS.
  • Nieznane klucze są ignorowane.
  • once: true ma zastosowanie tylko do bieżącej odpowiedzi; bez tej opcji głos staje się nowym domyślnym głosem trybu rozmowy.
Obsługiwane klucze: voice / voice_id / voiceId, model / model_id / modelId, speed, rate (słów na minutę), stability, similarity, style, speakerBoost, seed, normalize, lang, output_format, latency_tier, once.

Konfiguracja (~/.openclaw/openclaw.json)

talk.catalog udostępnia kanoniczne identyfikatory dostawców i aliasy rejestru, prawidłowe tryby, transporty, strategie mózgu, formaty dźwięku w czasie rzeczywistym i flagi możliwości każdego dostawcy oraz wybrany w czasie działania wynik gotowości. Klienci Talk dostarczani przez OpenClaw powinni odczytywać ten katalog zamiast lokalnie utrzymywać aliasy dostawców; starszy Gateway, który pomija gotowość grupową, należy traktować jako niezweryfikowany, a nie jednoznacznie nieskonfigurowany. Dostawcy strumieniowej transkrypcji są wykrywani za pośrednictwem talk.catalog.transcription; bieżący przekaźnik Gateway korzysta z konfiguracji dostawcy strumieniowego Voice Call, dopóki nie zostanie udostępniona dedykowana konfiguracja transkrypcji Talk.

Interfejs macOS

  • Przełącznik na pasku menu: Talk
  • Karta konfiguracji: grupa Talk Mode (identyfikator głosu i przełącznik przerywania)
  • Nakładka: kula wyświetla uniwersalny przebieg fali rozmowy (współdzielony z systemami iOS, watchOS i Android). W trybie słuchania reaguje na bieżący poziom mikrofonu, w trybie mówienia odzwierciedla rzeczywistą obwiednię odtwarzania TTS, a w trybie myślenia delikatnie pulsuje. Kliknij kulę, aby wstrzymać lub wznowić, kliknij ją dwukrotnie, aby zatrzymać mówienie, albo kliknij X, aby wyjść z trybu Talk.

Interfejs Androida

  • Przełącznik na karcie głosu: Talk
  • Ręczne tryby Mic i Talk wzajemnie się wykluczają.
  • Ręczny tryb Mic i Talk w czasie rzeczywistym preferują mikrofon podłączonego zestawu słuchawkowego Bluetooth Classic lub BLE; jeśli połączenie zostanie przerwane, aplikacja zażąda innego wejścia zestawu słuchawkowego albo użyje domyślnego mikrofonu, a po zakończeniu przechwytywania przywróci domyślne ustawienie.
  • Ręczny tryb Mic zatrzymuje się, gdy aplikacja przestaje działać na pierwszym planie lub użytkownik opuszcza kartę głosu.
  • Tryb Talk działa do chwili jego wyłączenia lub rozłączenia Node i podczas aktywności korzysta z androidowego typu usługi pierwszoplanowej dla mikrofonu.
  • Android obsługuje formaty wyjściowe pcm_16000, pcm_22050, pcm_24000 i pcm_44100 na potrzeby strumieniowania AudioTrack o małym opóźnieniu.

Uwagi

  • Wymaga uprawnień do rozpoznawania mowy i mikrofonu.
  • Natywny tryb Talk korzysta z aktywnej sesji Gateway i przechodzi na odpytywanie historii tylko wtedy, gdy zdarzenia odpowiedzi są niedostępne.
  • Gateway realizuje odtwarzanie Talk za pośrednictwem talk.speak, używając aktywnego dostawcy Talk. Android przechodzi na lokalny systemowy TTS tylko wtedy, gdy to wywołanie RPC jest niedostępne.
  • Lokalne odtwarzanie MLX w systemie macOS korzysta z dołączonego narzędzia pomocniczego openclaw-mlx-tts, jeśli jest dostępne, albo z pliku wykonywalnego znajdującego się w PATH. Podczas programowania ustaw OPENCLAW_MLX_TTS_BIN, aby wskazywała niestandardowy plik wykonywalny narzędzia pomocniczego.
  • Zakresy wartości dyrektyw głosowych (ElevenLabs): stability, similarity i style przyjmują 0..1; speed przyjmuje 0.5..2; latency_tier przyjmuje 0..4.

Powiązane