Nodes and media
Konuşma modu
Talk modu beş çalışma zamanı biçimini kapsar:
- Yerel macOS/iOS/Android Talk: yerel konuşma tanıma, Gateway sohbeti ve
talk.speakTTS. Node'lartalkyeteneğini duyurur ve hangitalk.*komutlarını desteklediklerini bildirir. - iOS Talk (gerçek zamanlı):
webrtcaktarımını seçen veya aktarımı belirtmeyen OpenAI gerçek zamanlı yapılandırmaları için istemci tarafından yönetilen WebRTC. Açıkça belirtilengateway-relay,provider-websocketve OpenAI dışı gerçek zamanlı yapılandırmalar Gateway tarafından yönetilen aktarıcıda kalır; gerçek zamanlı olmayan yapılandırmalar yerel konuşma döngüsünü kullanır. - Tarayıcı Talk: istemci tarafından yönetilen
webrtc/provider-websocketoturumları içintalk.client.createveya Gateway tarafından yönetilengateway-relayoturumları içintalk.session.create.managed-room, Gateway devri ve bas-konuş odaları için ayrılmıştır. - Android Talk (gerçek zamanlı):
talk.realtime.mode: "realtime"vetalk.realtime.transport: "gateway-relay"ile etkinleştirin. Aksi hâlde Android; yerel konuşma tanıma, Gateway sohbeti vetalk.speakkullanmaya devam eder. - Yalnızca transkripsiyon istemcileri: Asistanın sesli yanıtı olmadan altyazı/dikte için
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), ardındantalk.session.appendAudio,talk.session.cancelTurnvetalk.session.close. Tek seferde yüklenen sesli notlar yine medya anlama ses yolunu kullanır.
Yerel Talk sürekli bir döngüdür: konuşmayı dinler, transkripti etkin oturum üzerinden modele gönderir, yanıtı bekler ve ardından yapılandırılmış Talk sağlayıcısı (talk.speak) aracılığıyla seslendirir.
İstemci tarafından yönetilen gerçek zamanlı Talk, doğrudan chat.send çağırmak yerine sağlayıcı araç çağrılarını talk.client.toolCall üzerinden iletir. Gerçek zamanlı danışma etkin durumdayken istemciler, konuşulan girdiyi status, steer, cancel veya followup olarak sınıflandırmak için talk.client.steer ya da talk.session.steer çağırabilir. Kabul edilen yönlendirme, etkin gömülü çalıştırmanın kuyruğuna eklenir; reddedilen yönlendirme no_active_run, not_streaming veya compacting gibi bir neden döndürür.
Yalnızca transkripsiyon amaçlı Talk, gerçek zamanlı ve STT/TTS oturumlarıyla aynı Talk olay zarfını yayar ancak mode: "transcription" ve brain: "none" kullanır. Tüm Talk oturumları olayları talk.event kanalında yayınlar; istemciler kısmi/nihai transkript güncellemeleri (transcript.delta/transcript.done) ve diğer oturum telemetrisi için bu kanala abone olur.
Davranış (macOS)
- Talk modu etkinken her zaman açık katman.
- Dinleme → Düşünme → Konuşma aşama geçişleri.
- Kısa bir duraklamada (sessizlik aralığı) mevcut transkript gönderilir.
- Yanıtlar WebChat'e yazılır (yazmayla aynı şekilde).
- Konuşmayla kesme (varsayılan olarak açık): kullanıcı, asistan konuşurken konuşursa oynatma durur ve kesinti zaman damgası bir sonraki istem için kaydedilir.
Yanıtlardaki ses yönergeleri
Asistan, sesi denetlemek için yanıtın başına tek satırlık JSON ekleyebilir:
{ "voice": "<voice-id>", "once": true }Kurallar:
- Yalnızca boş olmayan ilk satır; JSON satırı TTS oynatımından önce kaldırılır.
- Bilinmeyen anahtarlar yok sayılır.
once: trueyalnızca mevcut yanıta uygulanır; bu olmadan ses, Talk modunun yeni varsayılanı olur.
Desteklenen anahtarlar: voice / voice_id / voiceId, model / model_id / modelId, speed, rate (dakika başına sözcük), stability, similarity, style, speakerBoost, seed, normalize, lang, output_format, latency_tier, once.
Yapılandırma (~/.openclaw/openclaw.json)
{ talk: { provider: "elevenlabs", providers: { elevenlabs: { voiceId: "elevenlabs_voice_id", modelId: "eleven_v3", outputFormat: "mp3_44100_128", apiKey: "elevenlabs_api_key", }, mlx: { modelId: "mlx-community/Soprano-80M-bf16", }, system: {}, }, speechLocale: "ru-RU", silenceTimeoutMs: 1500, interruptOnSpeech: true, realtime: { provider: "openai", providers: { openai: { apiKey: "openai_api_key", model: "gpt-realtime-2.1", speakerVoice: "cedar", }, }, instructions: "Sıcak bir üslupla konuş ve yanıtları kısa tut.", mode: "realtime", transport: "webrtc", brain: "agent-consult", }, },}| Anahtar | Varsayılan | Notlar |
|---|---|---|
provider |
- | Etkin Talk TTS sağlayıcısı. macOS'teki yerel oynatma yolları için elevenlabs, mlx veya system kullanın. |
providers.<id>.voiceId |
- | ElevenLabs, ELEVENLABS_VOICE_ID / SAG_VOICE_ID değerlerine veya API anahtarıyla kullanılabilen ilk sese geri döner. |
providers.elevenlabs.modelId |
eleven_v3 |
|
providers.mlx.modelId |
mlx-community/Soprano-80M-bf16 |
|
providers.elevenlabs.apiKey |
- | ELEVENLABS_API_KEY değerine (veya mevcutsa Gateway kabuk profiline) geri döner. |
speechLocale |
aygıt varsayılanı | iOS/macOS'te aygıt üzerinde Talk konuşma tanıma için BCP 47 yerel ayar kimliği. |
silenceTimeoutMs |
macOS/Android için 700 ms, iOS için 900 ms |
Talk transkripti göndermeden önceki duraklama aralığı. |
interruptOnSpeech |
true |
|
outputFormat |
macOS/iOS için pcm_44100, Android için pcm_24000 |
MP3 akışını zorlamak için mp3_* olarak ayarlayın. |
consultThinkingLevel |
ayarlanmamış | Gerçek zamanlı openclaw_agent_consult çağrılarının arkasındaki aracı çalıştırması için düşünme düzeyi geçersiz kılma değeri. |
consultFastMode |
ayarlanmamış | Gerçek zamanlı openclaw_agent_consult çağrıları için hızlı mod geçersiz kılma değeri. |
realtime.provider |
- | WebRTC için openai, sağlayıcı WebSocket'i için google veya Gateway aktarıcısı üzerinden yalnızca köprü işlevli bir sağlayıcı. |
realtime.providers.<id> |
- | Sağlayıcı tarafından yönetilen gerçek zamanlı yapılandırma. Tarayıcılar yalnızca geçici/kısıtlı oturum kimlik bilgilerini alır; hiçbir zaman standart bir API anahtarı almaz. |
realtime.providers.openai.speakerVoice |
alloy |
Yerleşik OpenAI Realtime ses kimliği (eski voice anahtarı hâlâ çalışır ancak kullanım dışıdır). Güncel gpt-realtime-2.1 sesleri: alloy, ash, ballad, cedar, coral, echo, marin, sage, shimmer, verse; en iyi kalite için marin ve cedar önerilir. |
realtime.transport |
- | webrtc: iOS'te ve tarayıcıda istemci tarafından yönetilen OpenAI WebRTC. provider-websocket: tarayıcı tarafından yönetilir, iOS'te Gateway aktarıcısında kalır. gateway-relay: sağlayıcı sesini Gateway üzerinde tutar; Android gerçek zamanı yalnızca bu aktarımla kullanır. |
realtime.brain |
- | agent-consult, gerçek zamanlı araç çağrılarını Gateway politikası üzerinden yönlendirir; direct-tools, eski doğrudan araç uyumluluğu içindir; none, transkripsiyon/harici orkestrasyon içindir. |
realtime.consultRouting |
- | provider-direct, sağlayıcı openclaw_agent_consult çağrısını atladığında sağlayıcının doğrudan yanıtını korur; force-agent-consult ise kesinleşmiş kullanıcı transkriptlerini OpenClaw üzerinden yönlendirir. |
realtime.instructions |
- | Sağlayıcıya yönelik sistem talimatlarını OpenClaw'ın yerleşik gerçek zamanlı istemine ekler (ses stili/tonu); varsayılan openclaw_agent_consult yönlendirmesi korunur. |
talk.catalog, standart sağlayıcı kimliklerini ve kayıt defteri takma adlarını, her sağlayıcının geçerli modlarını/aktarımlarını/beyin stratejilerini/gerçek zamanlı ses biçimlerini/yetenek bayraklarını ve çalışma zamanında seçilen hazır olma sonucunu sunar. Birinci taraf Talk istemcileri, sağlayıcı takma adlarını yerel olarak yönetmek yerine bu kataloğu okumalıdır; grup hazır olma bilgisini içermeyen eski bir Gateway'i kesin olarak yapılandırılmamış değil, doğrulanmamış olarak değerlendirin. Akışlı transkripsiyon sağlayıcıları talk.catalog.transcription üzerinden keşfedilir; mevcut Gateway aktarımı, özel bir Talk transkripsiyon yapılandırma yüzeyi yayımlanana kadar Voice Call akış sağlayıcısı yapılandırmasını kullanır.
macOS kullanıcı arayüzü
- Menü çubuğu geçişi: Talk
- Yapılandırma sekmesi: Talk Modu grubu (ses kimliği + kesme geçişi)
- Katman: Küre, evrensel konuşma dalga biçimini oluşturur (iOS, watchOS ve Android ile ortaktır). Dinleme sırasında canlı mikrofon seviyesi, Konuşma sırasında gerçek TTS oynatma zarfı izlenir; Düşünme sırasında hafifçe nefes alıp verir. Duraklatmak/devam ettirmek için küreye tıklayın, konuşmayı durdurmak için çift tıklayın, Talk modundan çıkmak için X'e tıklayın.
Android kullanıcı arayüzü
- Ses sekmesi geçişi: Talk
- Manuel Mikrofon ve Talk, birbirini dışlayan yakalama modlarıdır.
- Manuel Mikrofon ve gerçek zamanlı Talk, bağlı bir Bluetooth Classic veya BLE kulaklık mikrofonunu tercih eder; bağlantı kesilirse uygulama başka bir kulaklık girişi ister veya varsayılan mikrofona geri döner ve yakalama durduğunda varsayılan tercihi yeniden etkinleştirir.
- Uygulama ön plandan ayrıldığında veya kullanıcı Ses sekmesinden çıktığında Manuel Mikrofon durur.
- Talk Modu, kapatılana veya Node bağlantısı kesilene kadar çalışmayı sürdürür ve etkin olduğu sürede Android'in mikrofon ön plan hizmeti türünü kullanır.
- Android, düşük gecikmeli
AudioTrackakışı içinpcm_16000,pcm_22050,pcm_24000vepcm_44100çıkış biçimlerini destekler.
Notlar
- Konuşma + Mikrofon izinleri gerektirir.
- Yerel Talk, etkin Gateway oturumunu kullanır ve yalnızca yanıt olayları kullanılamadığında geçmiş yoklamasına geri döner.
- Gateway, etkin Talk sağlayıcısını kullanarak Talk oynatmasını
talk.speaküzerinden çözümler. Android, yalnızca bu RPC kullanılamadığında yerel sistem TTS'sine geri döner. - macOS yerel MLX oynatması, mevcut olduğunda paketle birlikte gelen
openclaw-mlx-ttsyardımcısını veyaPATHüzerindeki bir yürütülebilir dosyayı kullanır. Geliştirme sırasında özel bir yardımcı ikili dosyayı göstermek içinOPENCLAW_MLX_TTS_BINdeğişkenini ayarlayın. - Ses yönergesi değer aralıkları (ElevenLabs):
stability,similarityvestyle,0..1;speed,0.5..2;latency_tierise0..4aralığındaki değerleri kabul eder.