Nodes and media
Konuşma modu
Konuşma modunun iki çalışma zamanı biçimi vardır:
- Yerel macOS/iOS/Android Konuşma, yerel konuşma tanıma, Gateway sohbeti ve
talk.speakTTS kullanır. Node'lartalkyeteneğini duyurur ve destekledikleritalk.*komutlarını bildirir. - Tarayıcı Konuşması, istemciye ait
webrtcveprovider-websocketoturumları içintalk.client.createkullanır veya Gateway'e aitgateway-relayoturumları içintalk.session.createkullanır.managed-room, Gateway devri ve bas-konuş odaları için ayrılmıştır. - Yalnızca transkripsiyon istemcileri, yardımcı ses yanıtı olmadan altyazı veya dikte gerektiğinde
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), ardındantalk.session.appendAudio,talk.session.cancelTurnvetalk.session.closekullanır.
Yerel Konuşma, 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ış Konuşma sağlayıcısı (
talk.speak) üzerinden seslendir
Tarayıcı gerçek zamanlı Konuşması, sağlayıcı araç çağrılarını talk.client.toolCall üzerinden iletir; tarayıcı istemcileri gerçek zamanlı danışmalar için doğrudan chat.send çağırmaz.
Yalnızca transkripsiyon Konuşması, gerçek zamanlı ve STT/TTS oturumlarıyla aynı ortak Konuşma 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)
- Konuşma modu etkinken her zaman açık katman.
- Dinleme → Düşünme → Konuşma aşama geçişleri.
- Kısa bir duraklamada (sessizlik penceresi), mevcut transkript gönderilir.
- Yanıtlar WebChat'e yazılır (yazmakla aynı).
- Konuşmayla kesme (varsayılan açık): kullanıcı, yardımcı konuşurken konuşmaya başlarsa oynatmayı durdururuz ve sonraki istem için kesinti zaman damgasını not ederiz.
Yanıtlardaki ses yönergeleri
Yardımcı, sesi kontrol etmek 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, Konuşma modu için yeni varsayılan olur.- JSON satırı TTS oynatmasından ö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",
voice: "alloy",
},
},
mode: "realtime",
transport: "webrtc",
brain: "agent-consult",
},
},
}
Varsayılanlar:
interruptOnSpeech: truesilenceTimeoutMs: ayarlanmamışsa Konuşma, transkripti göndermeden önce platformun varsayılan duraklama penceresini korur (macOS ve Android'de 700 ms, iOS'ta 900 ms)provider: etkin Konuşma 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 sesine).providers.elevenlabs.modelId: ayarlanmamışsa varsayılan olarakeleven_v3olur.providers.mlx.modelId: ayarlanmamışsa varsayılan olarakmlx-community/Soprano-80M-bf16olur.providers.elevenlabs.apiKey:ELEVENLABS_API_KEYdeğerine geri döner (veya varsa gateway kabuk profiline).realtime.provider: etkin tarayıcı/sunucu gerçek zamanlı ses sağlayıcısını seçer. WebRTC içinopenai, sağlayıcı WebSocket içingoogleveya Gateway aktarması ü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ı depolar. Tarayıcı yalnızca geçici veya kısıtlanmış oturum kimlik bilgilerini alır, hiçbir zaman standart API anahtarı almaz.realtime.brain:agent-consult, gerçek zamanlı araç çağrılarını Gateway ilkesi üzerinden yönlendirir;direct-toolsyalnızca sahibine ait uyumluluk davranışıdır;nonetranskripsiyon veya harici orkestrasyon içindir.talk.catalog, birinci taraf Konuşma istemcilerinin desteklenmeyen kombinasyonlardan kaçınabilmesi için her sağlayıcının geçerli modlarını, aktarımlarını, beyin stratejilerini, gerçek zamanlı ses biçimlerini ve yetenek bayraklarını sunar.- Akış transkripsiyonu sağlayıcıları
talk.catalog.transcriptionüzerinden keşfedilir. Geçerli Gateway aktarması, özel Konuşma transkripsiyonu 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 üzeri Konuşma konuşma tanıma için isteğe bağlı BCP 47 yerel ayar kimliği. Cihaz varsayılanını kullanmak için ayarlanmamış 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 geçişi: Konuşma
- Yapılandırma sekmesi: Konuşma Modu grubu (ses kimliği + kesme geçişi)
- Katman:
- Dinleme: bulut mikrofon seviyesiyle titreşir
- Düşünme: alçalma animasyonu
- Konuşma: yayılan halkalar
- Buluta tıkla: konuşmayı durdur
- X'e tıkla: Konuşma modundan çık
Android kullanıcı arayüzü
- Ses sekmesi geçişi: Konuşma
- Manuel Mikrofon ve Konuşma, birbirini dışlayan çalışma zamanı yakalama modlarıdır.
- Manuel Mikrofon, uygulama ön plandan ayrıldığında veya kullanıcı Ses sekmesinden ayrıldığında durur.
- Konuşma Modu, kapatılana veya Android Node bağlantısı kesilene kadar çalışmaya devam eder ve etkin durumdayken Android'in mikrofon foreground-service türünü kullanır.
Notlar
- Konuşma + Mikrofon izinleri gerektirir.
- Yerel Konuşma etkin Gateway oturumunu kullanır ve yalnızca yanıt olayları kullanılamadığında geçmiş yoklamasına geri döner.
- Tarayıcı gerçek zamanlı Konuşması, sağlayıcıya ait tarayıcı oturumlarına
chat.sendaçmak yerineopenclaw_agent_consultiçintalk.client.toolCallkullanır. - Yalnızca transkripsiyon Konuşması
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 Konuşma sağlayıcısını kullanarak Konuşma oynatmasını
talk.speaküzerinden çözer. Android yalnızca bu RPC kullanılamadığında yerel sistem TTS'ye geri döner. - macOS yerel MLX oynatması, mevcutsa 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çıktı biçimlerini destekler.