- 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ętalki deklarują, które poleceniatalk.*obsługują. - Rozmowa w iOS (w czasie rzeczywistym): WebRTC zarządzane przez klienta dla konfiguracji OpenAI czasu rzeczywistego, które wybierają transport
webrtclub go pomijają. Jawne konfiguracje czasu rzeczywistegogateway-relay,provider-websocketoraz 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.createdla zarządzanych przez klienta sesjiwebrtc/provider-websocketalbotalk.session.createdla zarządzanych przez Gateway sesjigateway-relay. Wartośćmanaged-roomjest 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"italk.realtime.transport: "gateway-relay". W przeciwnym razie Android nadal korzysta z natywnego rozpoznawania mowy, czatu przez Gateway oraztalk.speak. - Klienci obsługujący wyłącznie transkrypcję:
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), a następnietalk.session.appendAudio,talk.session.cancelTurnitalk.session.closedo 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.
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:- Wyłącznie pierwszy niepusty wiersz; wiersz JSON jest usuwany przed odtworzeniem TTS.
- Nieznane klucze są ignorowane.
once: truema zastosowanie tylko do bieżącej odpowiedzi; bez tej opcji głos staje się nowym domyślnym głosem trybu rozmowy.
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_24000ipcm_44100na potrzeby strumieniowaniaAudioTracko 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ę wPATH. Podczas programowania ustawOPENCLAW_MLX_TTS_BIN, aby wskazywała niestandardowy plik wykonywalny narzędzia pomocniczego. - Zakresy wartości dyrektyw głosowych (ElevenLabs):
stability,similarityistyleprzyjmują0..1;speedprzyjmuje0.5..2;latency_tierprzyjmuje0..4.