- Conversation native sur macOS/iOS/Android : reconnaissance vocale locale, discussion via le Gateway et synthèse vocale avec
talk.speak. Les Nodes annoncent la capacitétalket déclarent les commandestalk.*qu’ils prennent en charge. - Conversation iOS (temps réel) : WebRTC géré par le client pour les configurations OpenAI en temps réel qui sélectionnent le transport
webrtcou omettent le transport. Les configurations explicitesgateway-relay,provider-websocketet les configurations en temps réel autres qu’OpenAI restent sur le relais géré par le Gateway ; les configurations qui ne sont pas en temps réel utilisent la boucle vocale native. - Conversation dans le navigateur :
talk.client.createpour les sessionswebrtc/provider-websocketgérées par le client, outalk.session.createpour les sessionsgateway-relaygérées par le Gateway.managed-roomest réservé au transfert par le Gateway et aux salles de type talkie-walkie. - Conversation Android (temps réel) : activez-la avec
talk.realtime.mode: "realtime"ettalk.realtime.transport: "gateway-relay". Sinon, Android continue d’utiliser la reconnaissance vocale native, la discussion via le Gateway ettalk.speak. - Clients de transcription uniquement :
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), puistalk.session.appendAudio,talk.session.cancelTurnettalk.session.closepour le sous-titrage ou la dictée sans réponse vocale de l’assistant. Les notes vocales ponctuelles téléversées utilisent toujours le chemin audio de compréhension des médias.
talk.speak).
La Conversation en temps réel gérée par le client transmet les appels d’outils du fournisseur via talk.client.toolCall au lieu d’appeler directement chat.send. Tant qu’une consultation en temps réel est active, les clients peuvent appeler talk.client.steer ou talk.session.steer pour classer l’entrée vocale comme status, steer, cancel ou followup. Les instructions de pilotage acceptées sont mises en file d’attente dans l’exécution intégrée active ; celles qui sont refusées renvoient un motif tel que no_active_run, not_streaming ou compacting.
La Conversation en transcription uniquement émet la même enveloppe d’événement de Conversation que les sessions en temps réel et STT/TTS, mais utilise mode: "transcription" et brain: "none". Toutes les sessions de Conversation diffusent des événements sur le canal talk.event ; les clients s’y abonnent pour recevoir les mises à jour partielles/finales de la transcription (transcript.delta/transcript.done) et d’autres données de télémétrie de session.
Comportement (macOS)
- Superposition toujours visible lorsque le mode Conversation est activé.
- Transitions de phase Écoute → Réflexion → Parole.
- Lors d’une courte pause (fenêtre de silence), la transcription en cours est envoyée.
- Les réponses sont écrites dans WebChat (comme lors de la saisie).
- Interruption par la parole (activée par défaut) : si l’utilisateur parle pendant que l’assistant s’exprime, la lecture s’arrête et l’horodatage de l’interruption est enregistré pour la prochaine requête.
Directives vocales dans les réponses
L’assistant peut faire précéder une réponse d’une seule ligne JSON pour contrôler la voix :- Uniquement la première ligne non vide ; la ligne JSON est supprimée avant la lecture TTS.
- Les clés inconnues sont ignorées.
once: trues’applique uniquement à la réponse actuelle ; sans cette option, la voix devient la nouvelle valeur par défaut du mode Conversation.
voice / voice_id / voiceId, model / model_id / modelId, speed, rate (mots par minute), stability, similarity, style, speakerBoost, seed, normalize, lang, output_format, latency_tier, once.
Configuration (~/.openclaw/openclaw.json)
talk.catalog expose les identifiants canoniques des fournisseurs et les alias du registre, les modes/transports/stratégies de cerveau/formats audio en temps réel/indicateurs de capacité valides de chaque fournisseur, ainsi que le résultat de disponibilité sélectionné à l’exécution. Les clients Talk propriétaires doivent consulter ce catalogue au lieu de gérer localement les alias des fournisseurs ; considérez un ancien Gateway qui omet la disponibilité du groupe comme non vérifié plutôt que comme définitivement non configuré. Les fournisseurs de transcription en streaming sont découverts via talk.catalog.transcription ; le relais actuel du Gateway utilise la configuration du fournisseur de streaming de Voice Call jusqu’à la mise à disposition d’une surface de configuration dédiée à la transcription Talk.
Interface macOS
- Bouton de la barre des menus : Talk
- Onglet de configuration : groupe Talk Mode (identifiant vocal + bouton d’interruption)
- Superposition : l’orbe affiche la forme d’onde universelle de Talk (partagée avec iOS, watchOS et Android). Lors de l’écoute, elle suit le niveau du microphone en direct ; lors de la parole, elle suit l’enveloppe réelle de lecture TTS ; pendant la réflexion, elle respire doucement. Cliquez sur l’orbe pour mettre en pause ou reprendre, double-cliquez pour arrêter la parole, puis cliquez sur X pour quitter le mode Talk.
Interface Android
- Bouton de l’onglet vocal : Talk
- Les modes de capture manuels Mic et Talk sont mutuellement exclusifs.
- Le microphone manuel et le mode Talk en temps réel privilégient le microphone d’un casque Bluetooth Classic ou BLE connecté ; en cas de déconnexion, l’application demande une autre entrée de casque ou utilise par défaut le microphone par défaut, puis rétablit la préférence par défaut une fois la capture terminée.
- Le microphone manuel s’arrête lorsque l’application quitte le premier plan ou que l’utilisateur quitte l’onglet vocal.
- Le mode Talk continue de fonctionner jusqu’à sa désactivation ou jusqu’à la déconnexion du Node, en utilisant le type de service de premier plan d’Android destiné au microphone lorsqu’il est actif.
- Android prend en charge les formats de sortie
pcm_16000,pcm_22050,pcm_24000etpcm_44100pour le streamingAudioTrackà faible latence.
Remarques
- Nécessite les autorisations de reconnaissance vocale et d’accès au microphone.
- Le mode Talk natif utilise la session active du Gateway et ne recourt à l’interrogation de l’historique que lorsque les événements de réponse ne sont pas disponibles.
- Le Gateway gère la lecture de Talk via
talk.speaken utilisant le fournisseur Talk actif. Android ne recourt au TTS local du système que lorsque ce RPC n’est pas disponible. - La lecture MLX locale sous macOS utilise l’utilitaire
openclaw-mlx-ttsinclus lorsqu’il est présent, ou un exécutable disponible dansPATH. DéfinissezOPENCLAW_MLX_TTS_BINpour indiquer un binaire d’utilitaire personnalisé pendant le développement. - Plages de valeurs des directives vocales (ElevenLabs) :
stability,similarityetstyleacceptent0..1;speedaccepte0.5..2;latency_tieraccepte0..4.