Nodes and media
Mode bicara
Mode Talk mencakup lima bentuk runtime:
- Talk native macOS/iOS/Android: pengenalan ucapan lokal, percakapan Gateway, dan TTS
talk.speak. Node mengiklankan kapabilitastalkdan menyatakan perintahtalk.*yang didukung. - Talk iOS (waktu nyata): WebRTC yang dikelola klien untuk konfigurasi waktu nyata OpenAI yang memilih transportasi
webrtcatau tidak menentukan transportasi. Konfigurasi waktu nyatagateway-relay,provider-websocket, dan non-OpenAI yang ditentukan secara eksplisit tetap menggunakan relai yang dikelola Gateway; konfigurasi non-waktu nyata menggunakan loop ucapan native. - Talk peramban:
talk.client.createuntuk sesiwebrtc/provider-websocketyang dikelola klien, atautalk.session.createuntuk sesigateway-relayyang dikelola Gateway.managed-roomdikhususkan untuk serah-terima Gateway dan ruang walkie-talkie. - Talk Android (waktu nyata): aktifkan dengan
talk.realtime.mode: "realtime"dantalk.realtime.transport: "gateway-relay". Jika tidak, Android tetap menggunakan pengenalan ucapan native, percakapan Gateway, dantalk.speak. - Klien khusus transkripsi:
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }), lalutalk.session.appendAudio,talk.session.cancelTurn, dantalk.session.closeuntuk takarir/dikte tanpa respons suara asisten. Catatan suara unggahan sekali jalan tetap menggunakan jalur audio pemahaman media.
Talk native adalah loop berkelanjutan: mendengarkan ucapan, mengirim transkrip ke model melalui sesi aktif, menunggu respons, lalu mengucapkannya melalui penyedia Talk yang dikonfigurasi (talk.speak).
Talk waktu nyata yang dikelola klien meneruskan pemanggilan alat penyedia melalui talk.client.toolCall, bukan memanggil chat.send secara langsung. Saat konsultasi waktu nyata aktif, klien dapat memanggil talk.client.steer atau talk.session.steer untuk mengklasifikasikan masukan lisan sebagai status, steer, cancel, atau followup. Pengarahan yang diterima dimasukkan ke antrean proses tertanam yang aktif; pengarahan yang ditolak mengembalikan alasan seperti no_active_run, not_streaming, atau compacting.
Talk khusus transkripsi memancarkan amplop peristiwa Talk yang sama seperti sesi waktu nyata dan STT/TTS, tetapi menggunakan mode: "transcription" dan brain: "none". Semua sesi Talk menyiarkan peristiwa pada kanal talk.event; klien berlangganan kanal tersebut untuk pembaruan transkrip parsial/final (transcript.delta/transcript.done) dan telemetri sesi lainnya.
Perilaku (macOS)
- Lapisan atas selalu aktif selama mode Talk diaktifkan.
- Transisi fase Mendengarkan → Berpikir → Berbicara.
- Saat terjadi jeda singkat (jendela keheningan), transkrip saat ini dikirim.
- Balasan ditulis ke WebChat (sama seperti mengetik).
- Interupsi saat ada ucapan (aktif secara default): jika pengguna berbicara saat asisten sedang berbicara, pemutaran berhenti dan stempel waktu interupsi dicatat untuk prompt berikutnya.
Direktif suara dalam balasan
Asisten dapat mengawali balasan dengan satu baris JSON untuk mengendalikan suara:
{ "voice": "<voice-id>", "once": true }Aturan:
- Hanya baris pertama yang tidak kosong; baris JSON dihapus sebelum pemutaran TTS.
- Kunci yang tidak dikenal diabaikan.
once: truehanya berlaku untuk balasan saat ini; tanpa nilai tersebut, suara menjadi default baru mode Talk.
Kunci yang didukung: voice / voice_id / voiceId, model / model_id / modelId, speed, rate (WPM), stability, similarity, style, speakerBoost, seed, normalize, lang, output_format, latency_tier, once.
Konfigurasi (~/.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: "Speak warmly and keep answers brief.", mode: "realtime", transport: "webrtc", brain: "agent-consult", }, },}| Kunci | Default | Catatan |
|---|---|---|
provider |
- | Penyedia TTS Talk yang aktif. Gunakan elevenlabs, mlx, atau system untuk jalur pemutaran lokal macOS. |
providers.<id>.voiceId |
- | ElevenLabs beralih ke ELEVENLABS_VOICE_ID / SAG_VOICE_ID, atau suara pertama yang tersedia dengan kunci API. |
providers.elevenlabs.modelId |
eleven_v3 |
|
providers.mlx.modelId |
mlx-community/Soprano-80M-bf16 |
|
providers.elevenlabs.apiKey |
- | Beralih ke ELEVENLABS_API_KEY (atau profil shell Gateway jika tersedia). |
speechLocale |
default perangkat | ID locale BCP 47 untuk pengenalan ucapan Talk pada perangkat di iOS/macOS. |
silenceTimeoutMs |
700 md macOS/Android, 900 md iOS |
Jendela jeda sebelum Talk mengirim transkrip. |
interruptOnSpeech |
true |
|
outputFormat |
pcm_44100 macOS/iOS, pcm_24000 Android |
Tetapkan mp3_* untuk memaksakan streaming MP3. |
consultThinkingLevel |
tidak ditetapkan | Penggantian tingkat pemikiran untuk proses agen di balik pemanggilan waktu nyata openclaw_agent_consult. |
consultFastMode |
tidak ditetapkan | Penggantian mode cepat untuk pemanggilan waktu nyata openclaw_agent_consult. |
realtime.provider |
- | openai untuk WebRTC, google untuk WebSocket penyedia, atau penyedia khusus jembatan melalui relai Gateway. |
realtime.providers.<id> |
- | Konfigurasi waktu nyata yang dikelola penyedia. Peramban hanya menerima kredensial sesi sementara/terbatas, tidak pernah kunci API standar. |
realtime.providers.openai.speakerVoice |
alloy |
ID suara bawaan OpenAI Realtime (kunci voice yang lebih lama masih berfungsi tetapi sudah tidak disarankan). Suara gpt-realtime-2.1 saat ini: alloy, ash, ballad, cedar, coral, echo, marin, sage, shimmer, verse; marin dan cedar direkomendasikan untuk kualitas terbaik. |
realtime.transport |
- | webrtc: WebRTC OpenAI yang dikelola klien di iOS dan peramban. provider-websocket: dikelola peramban, tetap menggunakan relai Gateway di iOS. gateway-relay: mempertahankan audio penyedia di Gateway; Android hanya menggunakan waktu nyata dengan transportasi ini. |
realtime.brain |
- | agent-consult merutekan pemanggilan alat waktu nyata melalui kebijakan Gateway; direct-tools adalah kompatibilitas alat langsung lama; none ditujukan untuk transkripsi/orkestrasi eksternal. |
realtime.consultRouting |
- | provider-direct mempertahankan balasan langsung penyedia saat melewati openclaw_agent_consult; force-agent-consult merutekan transkrip pengguna yang telah difinalisasi melalui OpenClaw sebagai gantinya. |
realtime.instructions |
- | Menambahkan instruksi sistem yang ditujukan kepada penyedia ke prompt waktu nyata bawaan OpenClaw (gaya/nada suara); panduan default openclaw_agent_consult tetap dipertahankan. |
talk.catalog mengekspos id penyedia kanonis dan alias registri, mode/transpor/strategi otak/format audio waktu nyata/penanda kemampuan yang valid untuk setiap penyedia, serta hasil kesiapan yang dipilih saat runtime. Klien Talk pihak pertama harus membaca katalog tersebut alih-alih memelihara alias penyedia secara lokal; perlakukan Gateway lama yang tidak menyertakan kesiapan grup sebagai belum terverifikasi, bukan dipastikan belum dikonfigurasi. Penyedia transkripsi streaming ditemukan melalui talk.catalog.transcription; relai Gateway saat ini menggunakan konfigurasi penyedia streaming Voice Call hingga permukaan konfigurasi transkripsi Talk khusus dirilis.
UI macOS
- Tombol bilah menu: Talk
- Tab konfigurasi: grup Talk Mode (id suara + tombol interupsi)
- Overlay: bola menampilkan bentuk gelombang bicara universal (digunakan bersama dengan iOS, watchOS, dan Android). Saat mendengarkan, bentuk gelombang mengikuti level mikrofon langsung; saat berbicara, bentuk gelombang mengikuti amplop pemutaran TTS yang sebenarnya; saat berpikir, bentuk gelombang berdenyut lembut. Klik bola untuk menjeda/melanjutkan, klik dua kali untuk berhenti berbicara, klik X untuk keluar dari mode Talk.
UI Android
- Tombol tab suara: Talk
- Mic dan Talk manual adalah mode perekaman yang saling eksklusif.
- Mic manual dan Talk waktu nyata memprioritaskan mikrofon headset Bluetooth Classic atau BLE yang terhubung; jika koneksi terputus, aplikasi meminta input headset lain atau beralih ke mikrofon default, lalu memulihkan preferensi default setelah perekaman berhenti.
- Mic manual berhenti ketika aplikasi meninggalkan latar depan atau pengguna meninggalkan tab suara.
- Mode Talk terus berjalan hingga dinonaktifkan atau Node terputus, dengan menggunakan jenis layanan latar depan mikrofon Android selama aktif.
- Android mendukung format keluaran
pcm_16000,pcm_22050,pcm_24000, danpcm_44100untuk streamingAudioTrackberlatensi rendah.
Catatan
- Memerlukan izin Ucapan + Mikrofon.
- Talk native menggunakan sesi Gateway aktif dan hanya beralih ke polling riwayat ketika peristiwa respons tidak tersedia.
- Gateway menyelesaikan pemutaran Talk melalui
talk.speakmenggunakan penyedia Talk aktif. Android hanya beralih ke TTS sistem lokal ketika RPC tersebut tidak tersedia. - Pemutaran MLX lokal macOS menggunakan pembantu
openclaw-mlx-ttsyang disertakan jika tersedia, atau berkas yang dapat dieksekusi diPATH. AturOPENCLAW_MLX_TTS_BINagar menunjuk ke biner pembantu khusus selama pengembangan. - Rentang nilai direktif suara (ElevenLabs):
stability,similarity, danstylemenerima0..1;speedmenerima0.5..2;latency_tiermenerima0..4.