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.
สิ่งที่ใช้งานได้
- การทำความเข้าใจสื่อ (เสียง): หากเปิดใช้การทำความเข้าใจเสียง (หรือตรวจพบโดยอัตโนมัติ) OpenClaw จะ:
- ค้นหาไฟล์แนบเสียงแรก (พาธภายในเครื่องหรือ URL) และดาวน์โหลดหากจำเป็น
- บังคับใช้
maxBytesก่อนส่งไปยังแต่ละรายการโมเดล - รันรายการโมเดลแรกที่เข้าเกณฑ์ตามลำดับ (ผู้ให้บริการหรือ CLI)
- หากล้มเหลวหรือข้าม (ขนาด/หมดเวลา) จะลองรายการถัดไป
- เมื่อสำเร็จ จะแทนที่
Bodyด้วยบล็อก[Audio]และตั้งค่า{{Transcript}}
- การแยกวิเคราะห์คำสั่ง: เมื่อถอดเสียงสำเร็จ
CommandBody/RawBodyจะถูกตั้งค่าเป็นข้อความถอดเสียง เพื่อให้คำสั่ง slash ยังคงทำงานได้ - การบันทึกแบบละเอียด: ใน
--verboseเราจะบันทึกเมื่อการถอดเสียงทำงานและเมื่อแทนที่เนื้อหา
การตรวจหาอัตโนมัติ (ค่าเริ่มต้น)
หากคุณ ไม่ได้กำหนดค่าโมเดล และtools.media.audio.enabled ไม่ได้ ถูกตั้งค่าเป็น false
OpenClaw จะตรวจหาอัตโนมัติตามลำดับนี้ และหยุดที่ตัวเลือกแรกที่ใช้งานได้:
- โมเดลตอบกลับที่ใช้งานอยู่ เมื่อผู้ให้บริการรองรับการทำความเข้าใจเสียง
- CLI ภายในเครื่อง (หากติดตั้งไว้)
sherpa-onnx-offline(ต้องใช้SHERPA_ONNX_MODEL_DIRพร้อม encoder/decoder/joiner/tokens)whisper-cli(จากwhisper-cpp; ใช้WHISPER_CPP_MODELหรือโมเดล tiny ที่รวมมาให้)whisper(Python CLI; ดาวน์โหลดโมเดลโดยอัตโนมัติ)
- Gemini CLI (
gemini) โดยใช้read_many_files - การยืนยันตัวตนของผู้ให้บริการ
- รายการ
models.providers.*ที่กำหนดค่าไว้ซึ่งรองรับเสียงจะถูกลองก่อน - ลำดับ fallback ที่รวมมาให้: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- รายการ
tools.media.audio.enabled: false
หากต้องการปรับแต่ง ให้ตั้งค่า tools.media.audio.models
หมายเหตุ: การตรวจหาไบนารีเป็นแบบ best-effort บน macOS/Linux/Windows; ตรวจสอบให้แน่ใจว่า CLI อยู่ใน PATH (เราขยาย ~) หรือตั้งค่าโมเดล CLI แบบชัดเจนด้วยพาธคำสั่งแบบเต็ม
ตัวอย่างการกำหนดค่า
Fallback ของผู้ให้บริการ + CLI (OpenAI + Whisper CLI)
เฉพาะผู้ให้บริการพร้อมการควบคุมตามขอบเขต
เฉพาะผู้ให้บริการ (Deepgram)
เฉพาะผู้ให้บริการ (Mistral Voxtral)
เฉพาะผู้ให้บริการ (SenseAudio)
ส่งข้อความถอดเสียงกลับไปยังแชต (เลือกเปิดใช้)
หมายเหตุและข้อจำกัด
- การยืนยันตัวตนของผู้ให้บริการใช้ลำดับการยืนยันตัวตนของโมเดลมาตรฐาน (โปรไฟล์การยืนยันตัวตน, env vars,
models.providers.*.apiKey) - รายละเอียดการตั้งค่า Groq: Groq
- Deepgram จะใช้
DEEPGRAM_API_KEYเมื่อใช้provider: "deepgram" - รายละเอียดการตั้งค่า Deepgram: Deepgram (การถอดเสียงเสียง)
- รายละเอียดการตั้งค่า Mistral: Mistral
- SenseAudio จะใช้
SENSEAUDIO_API_KEYเมื่อใช้provider: "senseaudio" - รายละเอียดการตั้งค่า SenseAudio: SenseAudio
- ผู้ให้บริการเสียงสามารถ override
baseUrl,headersและproviderOptionsผ่านtools.media.audio - ขีดจำกัดขนาดเริ่มต้นคือ 20MB (
tools.media.audio.maxBytes) เสียงที่เกินขนาดจะถูกข้ามสำหรับโมเดลนั้น และจะลองรายการถัดไป - ไฟล์เสียงขนาดเล็กมาก/ว่างเปล่าที่ต่ำกว่า 1024 ไบต์จะถูกข้ามก่อนการถอดเสียงโดยผู้ให้บริการ/CLI
- ค่าเริ่มต้น
maxCharsสำหรับเสียงคือ ไม่ได้ตั้งค่า (ข้อความถอดเสียงเต็ม) ตั้งค่าtools.media.audio.maxCharsหรือmaxCharsต่อรายการเพื่อตัดเอาต์พุต - ค่าเริ่มต้นอัตโนมัติของ OpenAI คือ
gpt-4o-mini-transcribe; ตั้งค่าmodel: "gpt-4o-transcribe"เพื่อความแม่นยำสูงขึ้น - ใช้
tools.media.audio.attachmentsเพื่อประมวลผลบันทึกเสียงหลายรายการ (mode: "all"+maxAttachments) - ข้อความถอดเสียงพร้อมใช้งานสำหรับเทมเพลตในรูปแบบ
{{Transcript}} tools.media.audio.echoTranscriptปิดอยู่โดยค่าเริ่มต้น; เปิดใช้เพื่อส่งการยืนยันข้อความถอดเสียงกลับไปยังแชตต้นทางก่อนการประมวลผลของเอเจนต์tools.media.audio.echoFormatปรับแต่งข้อความ echo (placeholder:{transcript})- stdout ของ CLI ถูกจำกัดไว้ (5MB); ควรทำให้เอาต์พุต CLI กระชับ
argsของ CLI ควรใช้{{MediaPath}}สำหรับพาธไฟล์เสียงภายในเครื่อง รันopenclaw doctor --fixเพื่อย้าย placeholder{input}ที่เลิกใช้แล้วจากการกำหนดค่าaudio.transcription.commandรุ่นเก่า
การรองรับสภาพแวดล้อมพร็อกซี
การถอดเสียงเสียงที่ใช้ผู้ให้บริการจะเคารพ env vars พร็อกซีขาออกมาตรฐาน:HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
การตรวจจับการ mention ในกลุ่ม
เมื่อตั้งค่าrequireMention: true สำหรับแชตกลุ่ม ตอนนี้ OpenClaw จะถอดเสียงเสียง ก่อน ตรวจสอบการ mention ซึ่งช่วยให้บันทึกเสียงถูกประมวลผลได้แม้มีการ mention อยู่ภายใน
วิธีการทำงาน:
- หากข้อความเสียงไม่มีเนื้อหาข้อความ และกลุ่มต้องการการ mention OpenClaw จะทำการถอดเสียงแบบ “preflight”
- ข้อความถอดเสียงจะถูกตรวจสอบหารูปแบบการ mention (เช่น
@BotName, ทริกเกอร์อีโมจิ) - หากพบการ mention ข้อความจะดำเนินต่อผ่าน pipeline การตอบกลับเต็มรูปแบบ
- ข้อความถอดเสียงถูกใช้สำหรับการตรวจจับการ mention เพื่อให้บันทึกเสียงผ่านด่านการ mention ได้
- หากการถอดเสียงล้มเหลวระหว่าง preflight (หมดเวลา, ข้อผิดพลาด API ฯลฯ) ข้อความจะถูกประมวลผลตามการตรวจจับการ mention จากข้อความเท่านั้น
- สิ่งนี้ช่วยให้ข้อความผสม (ข้อความ + เสียง) จะไม่ถูกทิ้งอย่างไม่ถูกต้อง
- ตั้งค่า
channels.telegram.groups.<chatId>.disableAudioPreflight: trueเพื่อข้ามการตรวจสอบการ mention จากข้อความถอดเสียง preflight สำหรับกลุ่มนั้น - ตั้งค่า
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflightเพื่อ override ต่อหัวข้อ (trueเพื่อข้าม,falseเพื่อบังคับเปิดใช้) - ค่าเริ่มต้นคือ
false(เปิดใช้ preflight เมื่อเงื่อนไขที่ต้องผ่านการ mention ตรงกัน)
requireMention: true บันทึกเสียงจะถูกถอดเสียง ตรวจพบการ mention และเอเจนต์ตอบกลับ
ข้อควรระวัง
- กฎขอบเขตใช้หลักการรายการแรกที่ตรงกันชนะ
chatTypeจะถูกทำให้เป็นมาตรฐานเป็นdirect,groupหรือroom - ตรวจสอบให้แน่ใจว่า CLI ของคุณออกด้วยสถานะ 0 และพิมพ์ข้อความธรรมดา; JSON ต้องถูกปรับรูปผ่าน
jq -r .text - สำหรับ
parakeet-mlxหากคุณส่ง--output-dirOpenClaw จะอ่าน<output-dir>/<media-basename>.txtเมื่อ--output-formatเป็นtxt(หรือไม่ได้ระบุ); รูปแบบเอาต์พุตที่ไม่ใช่txtจะ fallback ไปใช้การแยกวิเคราะห์ stdout - ตั้งค่า timeout ให้เหมาะสม (
timeoutSeconds, ค่าเริ่มต้น 60s) เพื่อหลีกเลี่ยงการบล็อกคิวตอบกลับ - การถอดเสียง preflight ประมวลผลเฉพาะไฟล์แนบเสียง แรก สำหรับการตรวจจับการ mention เสียงเพิ่มเติมจะถูกประมวลผลระหว่างขั้นตอนการทำความเข้าใจสื่อหลัก