Nodes and media
Konuşma modu
Talk modunun iki çalışma zamanı biçimi vardır:
- Yerel macOS/iOS/Android Talk, yerel konuşma tanıma, Gateway sohbeti ve
talk.speakTTS kullanır. Düğümlertalkyeteneğini duyurur ve destekledikleritalk.*komutlarını bildirir. - iOS Talk,
webrtcseçen veya aktarımı atlayan OpenAI gerçek zamanlı yapılandırmaları için istemciye ait WebRTC kullanır. Açıkgateway-relay,provider-websocketve OpenAI dışı gerçek zamanlı yapılandırmalar Gateway'e ait rölede kalır; gerçek zamanlı olmayan yapılandırmalar yerel konuşma döngüsünü kullanır. - Tarayıcı Talk, istemciye ait
webrtcveprovider-websocketoturumları içintalk.client.create, Gateway'e aitgateway-relayoturumları için isetalk.session.createkullanır.managed-room, Gateway devri ve bas-konuş odaları için ayrılmıştır. - Android Talk,
talk.realtime.mode: "realtime"vetalk.realtime.transport: "gateway-relay"ile Gateway'e ait gerçek zamanlı röle oturumlarını seçebilir. Aksi halde yerel konuşma tanıma, Gateway sohbeti vetalk.speaküzerinde kalır. - Yalnızca transkripsiyon istemcileri, yardımcı sesli yanıt olmadan altyazı veya dikteye ihtiyaç duyduklarında
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), ardındantalk.session.appendAudio,talk.session.cancelTurnvetalk.session.closekullanır.
Yerel Talk, sürekli bir sesli konuşma döngüsüdür:
- Konuşmayı dinle
- Transkripti etkin oturum üzerinden modele gönder
- Yanıtı bekle
- Yapılandırılmış Talk sağlayıcısı (
talk.speak) üzerinden seslendir
İstemciye ait gerçek zamanlı Talk, sağlayıcı araç çağrılarını talk.client.toolCall üzerinden iletir; bu istemciler gerçek zamanlı danışmalar için doğrudan chat.send çağırmaz.
Gerçek zamanlı bir danışma etkinken Talk istemcileri, konuşulan girdiyi status, steer, cancel veya
followup olarak sınıflandırmak için talk.client.steer ya da
talk.session.steer kullanabilir. Kabul edilen yönlendirme etkin gömülü çalıştırmaya kuyruğa alınır; reddedilen
yönlendirme no_active_run, not_streaming veya
compacting gibi yapılandırılmış bir neden döndürür.
Yalnızca transkripsiyon Talk, gerçek zamanlı ve STT/TTS oturumlarıyla aynı ortak Talk olay zarfını yayar, ancak mode: "transcription" ve brain: "none" kullanır. Altyazılar, dikte ve yalnızca gözlem amaçlı konuşma yakalama içindir; tek seferlik yüklenen sesli notlar hâlâ medya/ses yolunu kullanır.
Davranış (macOS)
- Talk modu etkinken her zaman açık bindirme.
- Dinliyor → Düşünüyor → Konuşuyor aşama geçişleri.
- Kısa duraklamada (sessizlik penceresi), geçerli transkript gönderilir.
- Yanıtlar WebChat'e yazılır (yazmakla aynı).
- Konuşmayla kesinti (varsayılan olarak açık): Kullanıcı, yardımcı konuşurken konuşmaya başlarsa oynatmayı durdurur ve sonraki istem için kesinti zaman damgasını not ederiz.
Yanıtlarda ses yönergeleri
Yardımcı, sesi denetlemek için yanıtının başına tek bir JSON satırı ekleyebilir:
{ "voice": "<voice-id>", "once": true }Kurallar:
- Yalnızca ilk boş olmayan satır.
- Bilinmeyen anahtarlar yok sayılır.
once: trueyalnızca geçerli yanıta uygulanır.onceolmadan, ses Talk modu için yeni varsayılan olur.- JSON satırı TTS oynatmadan önce kaldırılır.
Desteklenen anahtarlar:
voice/voice_id/voiceIdmodel/model_id/modelIdspeed,rate(WPM),stability,similarity,style,speakerBoostseed,normalize,lang,output_format,latency_tieronce
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", voice: "cedar", }, }, instructions: "Speak warmly and keep answers brief.", mode: "realtime", transport: "webrtc", brain: "agent-consult", }, },}Varsayılanlar:
interruptOnSpeech: truesilenceTimeoutMs: ayarlanmadığında Talk, transkripti göndermeden önce platformun varsayılan duraklama penceresini korur (700 ms on macOS and Android, 900 ms on iOS)provider: etkin Talk sağlayıcısını seçer. macOS yerel oynatma yolları içinelevenlabs,mlxveyasystemkullanın.providers.<provider>.voiceId: ElevenLabs içinELEVENLABS_VOICE_ID/SAG_VOICE_IDdeğerine geri döner (veya API anahtarı kullanılabiliyorsa ilk ElevenLabs sesi).providers.elevenlabs.modelId: ayarlanmadığında varsayılan olarakeleven_v3olur.providers.mlx.modelId: ayarlanmadığında varsayılan olarakmlx-community/Soprano-80M-bf16olur.providers.elevenlabs.apiKey:ELEVENLABS_API_KEYdeğerine geri döner (veya varsa Gateway kabuk profiline).consultThinkingLevel: gerçek zamanlıopenclaw_agent_consultçağrılarının arkasındaki tam OpenClaw ajan çalıştırması için isteğe bağlı düşünme seviyesi geçersiz kılması.consultFastMode: gerçek zamanlıopenclaw_agent_consultçağrıları için isteğe bağlı hızlı mod geçersiz kılması.realtime.provider: etkin gerçek zamanlı ses sağlayıcısını seçer. WebRTC içinopenai, sağlayıcı WebSocket içingoogleveya Gateway rölesi üzerinden yalnızca köprü sağlayıcısı kullanın.realtime.providers.<provider>sağlayıcıya ait gerçek zamanlı yapılandırmayı saklar. Tarayıcı yalnızca geçici veya kısıtlı oturum kimlik bilgilerini alır, hiçbir zaman standart bir API anahtarı almaz.realtime.providers.openai.voice: yerleşik OpenAI Realtime ses kimliği. Geçerligpt-realtime-2seslerialloy,ash,ballad,coral,echo,sage,shimmer,verse,marinvecedar; en iyi kalite içinmarinvecedarönerilir.realtime.transport:webrtc, iOS'ta ve tarayıcıda istemciye ait OpenAI WebRTC kullanır.provider-websockettarayıcıya aittir ancak iOS'ta Gateway rölesinde kalır.gateway-relaysağlayıcı sesini Gateway üzerinde tutar; Android gerçek zamanı yalnızca bu aktarım için kullanır ve aksi halde yerel STT/TTS döngüsünü korur.realtime.brain:agent-consultgerçek zamanlı araç çağrılarını Gateway ilkesi üzerinden yönlendirir;direct-toolseski doğrudan araç uyumluluk davranışıdır;nonetranskripsiyon veya harici orkestrasyon içindir.realtime.consultRouting:provider-direct, sağlayıcıopenclaw_agent_consultöğesini atladığında sağlayıcının doğrudan yanıtını korur;force-agent-consultGateway rölesinin sonlandırılmış kullanıcı transkriptlerini bunun yerine OpenClaw üzerinden yönlendirmesini sağlar.realtime.instructions: sağlayıcıya yönelik sistem yönergelerini OpenClaw'ın yerleşik gerçek zamanlı istemine ekler. Ses stili ve tonu için kullanın; OpenClaw varsayılanopenclaw_agent_consultkılavuzunu korur.talk.catalog, her sağlayıcının geçerli modları, aktarımları, beyin stratejileri, gerçek zamanlı ses biçimleri, yetenek bayrakları ve çalışma zamanında seçilen hazır olma sonucunun yanında kanonik sağlayıcı kimliklerini ve kayıt defteri takma adlarını gösterir. Birinci taraf Talk istemcileri, sağlayıcı takma adlarını yerel olarak tutmak yerine bu kataloğu kullanmalıdır; grup hazır olma bilgisini atlayan eski bir Gateway kesin olarak yapılandırılmamış değil, doğrulanmamış sayılır.- Akış transkripsiyonu sağlayıcıları
talk.catalog.transcriptionüzerinden keşfedilir. Geçerli Gateway rölesi, ayrılmış Talk transkripsiyon yapılandırma yüzeyi eklenene kadar Voice Call akış sağlayıcısı yapılandırmasını kullanır. speechLocale: iOS/macOS üzerinde cihaz içi Talk konuşma tanıma için isteğe bağlı BCP 47 yerel ayar kimliği. Cihaz varsayılanını kullanmak için ayarlanmadan bırakın.outputFormat: macOS/iOS üzerinde varsayılan olarakpcm_44100, Android üzerindepcm_24000olur (MP3 akışını zorlamak içinmp3_*ayarlayın)
macOS kullanıcı arayüzü
- Menü çubuğu anahtarı: Talk
- Yapılandırma sekmesi: Talk Modu grubu (ses kimliği + kesinti anahtarı)
- Bindirme:
- Dinliyor: bulut mikrofon seviyesiyle titreşir
- Düşünüyor: batma animasyonu
- Konuşuyor: yayılan halkalar
- Buluta tıkla: konuşmayı durdur
- X'e tıkla: Talk modundan çık
Android kullanıcı arayüzü
- Ses sekmesi anahtarı: Talk
- Manuel Mikrofon ve Talk, karşılıklı dışlayan çalışma zamanı 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ısı kesilirse uygulama başka bir kulaklık girişi ister veya Android'in varsayılan mikrofonu kullanmasına izin verir; yakalamayı durdurmak varsayılan mikrofon tercihini geri yükler.
- Uygulama ön plandan ayrıldığında veya kullanıcı Ses sekmesinden çıktığında Manuel Mikrofon durur.
- Talk Modu kapatılana veya Android düğümünün bağlantısı kesilene kadar çalışmaya devam eder ve etkinken Android'in mikrofon ön plan hizmeti türünü kullanır.
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.
- İstemciye ait gerçek zamanlı Talk, sağlayıcıya ait oturumlara
chat.sendsunmak yerineopenclaw_agent_consultiçintalk.client.toolCallkullanır. - Yalnızca transkripsiyon Talk,
talk.session.create,talk.session.appendAudio,talk.session.cancelTurnvetalk.session.closekullanır; istemciler kısmi/son transkript güncellemeleri içintalk.eventöğesine abone olur. - 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'ye geri döner. - macOS yerel MLX oynatması, varsa paketlenmiş
openclaw-mlx-ttsyardımcısını veyaPATHüzerinde bir yürütülebilir dosyayı kullanır. Geliştirme sırasında özel bir yardımcı ikili dosyaya işaret etmek içinOPENCLAW_MLX_TTS_BINayarlayın. eleven_v3içinstability,0.0,0.5veya1.0olarak doğrulanır; diğer modeller0..1kabul eder.latency_tierayarlandığında0..4olarak doğrulanır.- Android, düşük gecikmeli AudioTrack akışı için
pcm_16000,pcm_22050,pcm_24000vepcm_44100çıkış biçimlerini destekler.