โหมดพูดคุยมีรูปแบบรันไทม์สองแบบ:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- การพูดคุยแบบเนทีฟบน macOS/iOS/Android ใช้การรู้จำเสียงพูดภายในเครื่อง, แชทผ่าน Gateway และ TTS ด้วย
talk.speakNode จะประกาศความสามารถtalkและระบุคำสั่งtalk.*ที่รองรับ - การพูดคุยบนเบราว์เซอร์ใช้
talk.client.createสำหรับเซสชันwebrtcและprovider-websocketที่ไคลเอนต์เป็นเจ้าของ หรือใช้talk.session.createสำหรับเซสชันgateway-relayที่ Gateway เป็นเจ้าของmanaged-roomสงวนไว้สำหรับการส่งต่อจาก Gateway และห้องวอล์กกีทอล์กกี - ไคลเอนต์แบบถอดเสียงอย่างเดียวใช้
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" })จากนั้นใช้talk.session.appendAudio,talk.session.cancelTurnและtalk.session.closeเมื่อต้องการคำบรรยายหรือการป้อนตามคำบอกโดยไม่มีเสียงตอบกลับจากผู้ช่วย
- ฟังเสียงพูด
- ส่งข้อความถอดเสียงไปยังโมเดลผ่านเซสชันที่ใช้งานอยู่
- รอการตอบกลับ
- พูดออกมาผ่านผู้ให้บริการพูดคุยที่กำหนดค่าไว้ (
talk.speak)
talk.client.toolCall; ไคลเอนต์เบราว์เซอร์จะไม่เรียก chat.send โดยตรงสำหรับการปรึกษาแบบเรียลไทม์
การพูดคุยแบบถอดเสียงอย่างเดียวปล่อยซองเหตุการณ์พูดคุยทั่วไปแบบเดียวกับเซสชันเรียลไทม์และ STT/TTS แต่ใช้ mode: "transcription" และ brain: "none" เหมาะสำหรับคำบรรยาย การป้อนตามคำบอก และการจับเสียงพูดเพื่อสังเกตอย่างเดียว; โน้ตเสียงแบบอัปโหลดครั้งเดียวยังคงใช้เส้นทางสื่อ/เสียง
พฤติกรรม (macOS)
- โอเวอร์เลย์เปิดตลอด ขณะเปิดใช้งานโหมดพูดคุย
- การเปลี่ยนเฟส กำลังฟัง → กำลังคิด → กำลังพูด
- เมื่อมี การหยุดสั้น ๆ (หน้าต่างความเงียบ) ข้อความถอดเสียงปัจจุบันจะถูกส่ง
- คำตอบจะถูก เขียนไปยัง WebChat (เหมือนการพิมพ์)
- ขัดจังหวะเมื่อมีเสียงพูด (เปิดเป็นค่าเริ่มต้น): หากผู้ใช้เริ่มพูดในขณะที่ผู้ช่วยกำลังพูด เราจะหยุดการเล่นและบันทึกเวลาการขัดจังหวะสำหรับพรอมป์ถัดไป
ไดเรกทีฟเสียงในคำตอบ
ผู้ช่วยอาจขึ้นต้นคำตอบด้วย บรรทัด JSON เดียว เพื่อควบคุมเสียง:- เฉพาะบรรทัดแรกที่ไม่ว่างเท่านั้น
- คีย์ที่ไม่รู้จักจะถูกละเว้น
once: trueใช้กับคำตอบปัจจุบันเท่านั้น- หากไม่มี
onceเสียงนั้นจะกลายเป็นค่าเริ่มต้นใหม่สำหรับโหมดพูดคุย - บรรทัด JSON จะถูกตัดออกก่อนเล่น TTS
voice/voice_id/voiceIdmodel/model_id/modelIdspeed,rate(WPM),stability,similarity,style,speakerBoostseed,normalize,lang,output_format,latency_tieronce
การกำหนดค่า (~/.openclaw/openclaw.json)
interruptOnSpeech: truesilenceTimeoutMs: เมื่อไม่ได้ตั้งค่า การพูดคุยจะใช้หน้าต่างหยุดชั่วคราวเริ่มต้นของแพลตฟอร์มก่อนส่งข้อความถอดเสียง (700 ms on macOS and Android, 900 ms on iOS)provider: เลือกผู้ให้บริการพูดคุยที่ใช้งานอยู่ ใช้elevenlabs,mlxหรือsystemสำหรับเส้นทางการเล่นภายในเครื่องบน macOSproviders.<provider>.voiceId: ย้อนกลับไปใช้ELEVENLABS_VOICE_ID/SAG_VOICE_IDสำหรับ ElevenLabs (หรือเสียงแรกของ ElevenLabs เมื่อมีคีย์ API)providers.elevenlabs.modelId: ค่าเริ่มต้นคือeleven_v3เมื่อไม่ได้ตั้งค่าproviders.mlx.modelId: ค่าเริ่มต้นคือmlx-community/Soprano-80M-bf16เมื่อไม่ได้ตั้งค่าproviders.elevenlabs.apiKey: ย้อนกลับไปใช้ELEVENLABS_API_KEY(หรือโปรไฟล์เชลล์ Gateway หากมี)consultThinkingLevel: การแทนที่ระดับการคิดแบบไม่บังคับสำหรับการรันเอเจนต์ OpenClaw แบบเต็มที่อยู่เบื้องหลังการเรียกopenclaw_agent_consultแบบเรียลไทม์consultFastMode: การแทนที่โหมดเร็วแบบไม่บังคับสำหรับการเรียกopenclaw_agent_consultแบบเรียลไทม์realtime.provider: เลือกผู้ให้บริการเสียงเรียลไทม์บนเบราว์เซอร์/เซิร์ฟเวอร์ที่ใช้งานอยู่ ใช้openaiสำหรับ WebRTC,googleสำหรับ WebSocket ของผู้ให้บริการ หรือผู้ให้บริการแบบบริดจ์เท่านั้นผ่านรีเลย์ Gatewayrealtime.providers.<provider>เก็บการกำหนดค่าเรียลไทม์ที่ผู้ให้บริการเป็นเจ้าของ เบราว์เซอร์จะได้รับเฉพาะข้อมูลรับรองเซสชันแบบชั่วคราวหรือแบบจำกัดเท่านั้น ไม่ใช่คีย์ API มาตรฐานrealtime.providers.openai.voice: รหัสเสียง OpenAI Realtime ในตัว เสียงgpt-realtime-2ปัจจุบันคือalloy,ash,ballad,coral,echo,sage,shimmer,verse,marinและcedar; แนะนำmarinและcedarเพื่อคุณภาพที่ดีที่สุดrealtime.brain:agent-consultกำหนดเส้นทางการเรียกเครื่องมือเรียลไทม์ผ่านนโยบาย Gateway;direct-toolsเป็นพฤติกรรมความเข้ากันได้สำหรับเจ้าของเท่านั้น;noneใช้สำหรับการถอดเสียงหรือการจัดการลำดับงานภายนอกrealtime.instructions: เพิ่มคำสั่งระบบที่หันไปยังผู้ให้บริการต่อท้ายพรอมป์เรียลไทม์ในตัวของ OpenClaw ใช้สำหรับสไตล์และโทนเสียง; OpenClaw จะคงคำแนะนำเริ่มต้นของopenclaw_agent_consulttalk.catalogเปิดเผยโหมด ทรานสปอร์ต กลยุทธ์ brain รูปแบบเสียงเรียลไทม์ และแฟล็กความสามารถที่ถูกต้องของผู้ให้บริการแต่ละราย เพื่อให้ไคลเอนต์พูดคุยของบุคคลที่หนึ่งหลีกเลี่ยงชุดค่าที่ไม่รองรับได้- ผู้ให้บริการถอดเสียงแบบสตรีมจะถูกค้นพบผ่าน
talk.catalog.transcriptionรีเลย์ Gateway ปัจจุบันใช้การกำหนดค่าผู้ให้บริการสตรีมมิง Voice Call จนกว่าจะเพิ่มพื้นผิวการกำหนดค่าการถอดเสียงสำหรับการพูดคุยโดยเฉพาะ speechLocale: รหัสภาษา BCP 47 แบบไม่บังคับสำหรับการรู้จำเสียงพูดของการพูดคุยบนอุปกรณ์ใน iOS/macOS ปล่อยว่างไว้เพื่อใช้ค่าเริ่มต้นของอุปกรณ์outputFormat: ค่าเริ่มต้นคือpcm_44100บน macOS/iOS และpcm_24000บน Android (ตั้งค่าmp3_*เพื่อบังคับใช้การสตรีม MP3)
UI macOS
- สวิตช์แถบเมนู: พูดคุย
- แท็บการกำหนดค่า: กลุ่ม โหมดพูดคุย (รหัสเสียง + สวิตช์ขัดจังหวะ)
- โอเวอร์เลย์:
- กำลังฟัง: เมฆเต้นตามระดับไมค์
- กำลังคิด: แอนิเมชันจมลง
- กำลังพูด: วงแหวนแผ่ออก
- คลิกเมฆ: หยุดพูด
- คลิก X: ออกจากโหมดพูดคุย
UI Android
- สวิตช์แท็บเสียง: พูดคุย
- ไมค์ และ พูดคุย แบบแมนนวลเป็นโหมดจับเสียงรันไทม์ที่ใช้พร้อมกันไม่ได้
- ไมค์แบบแมนนวลจะหยุดเมื่อแอปออกจาก foreground หรือผู้ใช้ออกจากแท็บเสียง
- โหมดพูดคุยจะทำงานต่อไปจนกว่าจะปิดสวิตช์หรือ Node Android ตัดการเชื่อมต่อ และใช้ประเภท foreground-service ของไมโครโฟน Android ขณะทำงาน
หมายเหตุ
- ต้องมีสิทธิ์ Speech + Microphone
- การพูดคุยแบบเนทีฟใช้เซสชัน Gateway ที่ใช้งานอยู่ และจะย้อนกลับไปใช้การโพลประวัติเมื่อไม่มีเหตุการณ์การตอบกลับเท่านั้น
- การพูดคุยแบบเรียลไทม์บนเบราว์เซอร์ใช้
talk.client.toolCallสำหรับopenclaw_agent_consultแทนการเปิดเผยchat.sendให้เซสชันเบราว์เซอร์ที่ผู้ให้บริการเป็นเจ้าของ - การพูดคุยแบบถอดเสียงอย่างเดียวใช้
talk.session.create,talk.session.appendAudio,talk.session.cancelTurnและtalk.session.close; ไคลเอนต์สมัครรับtalk.eventเพื่ออัปเดตข้อความถอดเสียงบางส่วน/สุดท้าย - Gateway แก้การเล่นเสียงพูดคุยผ่าน
talk.speakโดยใช้ผู้ให้บริการพูดคุยที่ใช้งานอยู่ Android จะย้อนกลับไปใช้ TTS ระบบภายในเครื่องเฉพาะเมื่อ RPC นั้นใช้ไม่ได้ - การเล่น MLX ภายในเครื่องบน macOS ใช้ตัวช่วย
openclaw-mlx-ttsที่รวมมาเมื่อมี หรือไฟล์ปฏิบัติการบนPATHตั้งค่าOPENCLAW_MLX_TTS_BINให้ชี้ไปยังไบนารีตัวช่วยแบบกำหนดเองระหว่างการพัฒนา stabilityสำหรับeleven_v3จะถูกตรวจสอบให้เป็น0.0,0.5หรือ1.0; โมเดลอื่นยอมรับ0..1latency_tierจะถูกตรวจสอบให้เป็น0..4เมื่อตั้งค่า- Android รองรับรูปแบบเอาต์พุต
pcm_16000,pcm_22050,pcm_24000และpcm_44100สำหรับการสตรีม AudioTrack ที่มีความหน่วงต่ำ