เสียง / โน้ตเสียง — 2026-01-17¶
สิ่งที่ทำงานได้¶
- การทำความเข้าใจสื่อ(เสียง): หากเปิดใช้งานการทำความเข้าใจเสียง(หรือมีการตรวจจับอัตโนมัติ) OpenClaw จะ:
1. ค้นหาไฟล์แนบเสียงรายการแรก(พาธภายในเครื่องหรือURL)และดาวน์โหลดหากจำเป็น
2. บังคับใช้
maxBytesก่อนส่งไปยังแต่ละรายการโมเดล 3. รันรายการโมเดลที่เข้าเกณฑ์รายการแรกตามลำดับ(ผู้ให้บริการหรือCLI) 4. หากล้มเหลวหรือข้าม(ขนาด/หมดเวลา)จะลองรายการถัดไป 5. เมื่อสำเร็จ จะแทนที่Bodyด้วยบล็อก[Audio]และตั้งค่า{{Transcript}} - การแยกวิเคราะห์คำสั่ง: เมื่อการถอดเสียงสำเร็จ จะตั้งค่า
CommandBody/RawBodyเป็นทรานสคริปต์เพื่อให้คำสั่งแบบสแลชยังคงทำงานได้ - บันทึกล็อกแบบละเอียด: ใน
--verboseเราจะบันทึกเมื่อการถอดเสียงทำงานและเมื่อมีการแทนที่เนื้อหา
การตรวจจับอัตโนมัติ(ค่าเริ่มต้น)¶
หากคุณ ไม่ได้กำหนดค่าโมเดล และ tools.media.audio.enabled ไม่ได้ถูกตั้งเป็น false,
OpenClaw จะตรวจจับอัตโนมัติตามลำดับนี้และหยุดเมื่อพบตัวเลือกที่ทำงานได้ตัวแรก:
- Local CLIs (หากติดตั้งไว้)
-
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 - คีย์ผู้ให้บริการ (OpenAI → Groq → Deepgram → Google)
9) หากต้องการปิดการตรวจจับอัตโนมัติ ให้ตั้งค่า tools.media.audio.enabled: false
10) หากต้องการปรับแต่ง ให้ตั้งค่า tools.media.audio.models
หากต้องการปิดการตรวจจับอัตโนมัติ ให้ตั้งค่า tools.media.audio.enabled: false
หากต้องการปรับแต่ง ให้ตั้งค่า tools.media.audio.models
หมายเหตุ: การตรวจจับไบนารีเป็นแบบพยายามอย่างดีที่สุดบน macOS/Linux/Windows; โปรดตรวจสอบว่า CLI อยู่บน PATH(เราจะขยาย ~) หรือกำหนดโมเดล CLI แบบระบุพาธคำสั่งเต็ม
ตัวอย่างคอนฟิก¶
ผู้ให้บริการ + CLI สำรอง(OpenAI + Whisper CLI)¶
{
tools: {
media: {
audio: {
enabled: true,
maxBytes: 20971520,
models: [
{ provider: "openai", model: "gpt-4o-mini-transcribe" },
{
type: "cli",
command: "whisper",
args: ["--model", "base", "{{MediaPath}}"],
timeoutSeconds: 45,
},
],
},
},
},
}
ผู้ให้บริการอย่างเดียวพร้อมการจำกัดขอบเขต¶
{
tools: {
media: {
audio: {
enabled: true,
scope: {
default: "allow",
rules: [{ action: "deny", match: { chatType: "group" } }],
},
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
},
},
}
ผู้ให้บริการอย่างเดียว(Deepgram)¶
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "deepgram", model: "nova-3" }],
},
},
},
}
หมายเหตุและข้อจำกัด¶
- การยืนยันตัวตนของผู้ให้บริการเป็นไปตามลำดับมาตรฐานของโมเดล(auth profiles, ตัวแปรสภาพแวดล้อม,
models.providers.*.apiKey) - Deepgram จะรับค่า
DEEPGRAM_API_KEYเมื่อใช้provider: "deepgram" - รายละเอียดการตั้งค่า Deepgram: Deepgram (audio transcription)
- ผู้ให้บริการเสียงสามารถแทนที่
baseUrl,headersและproviderOptionsผ่านtools.media.audio - ขีดจำกัดขนาดเริ่มต้นคือ 20MB (
tools.media.audio.maxBytes). เสียงที่เกินขนาดจะถูกข้ามสำหรับโมเดลนั้นและจะลองรายการถัดไป -
- ค่าเริ่มต้น
maxCharsสำหรับเสียงคือ ไม่ตั้งค่า (ถอดความเต็ม) ค่าเริ่มต้นของmaxCharsสำหรับเสียงคือ unset (ทรานสคริปต์เต็ม) ตั้งค่าtools.media.audio.maxCharsหรือmaxCharsรายการต่อรายการเพื่อตัดเอาต์พุต
- ค่าเริ่มต้น
- ค่าเริ่มต้นอัตโนมัติของ OpenAI คือ
gpt-4o-mini-transcribe; ตั้งค่าmodel: "gpt-4o-transcribe"เพื่อความแม่นยำที่สูงขึ้น - ใช้
tools.media.audio.attachmentsเพื่อประมวลผลโน้ตเสียงหลายรายการ (mode: "all"+maxAttachments) - ทรานสคริปต์พร้อมใช้งานในเทมเพลตเป็น
{{Transcript}} - stdout ของ CLI ถูกจำกัด(5MB); ควรทำให้เอาต์พุตของ CLI กระชับ
12. ข้อควรระวัง¶
-
- กฎของสโคปใช้แบบเจอรายการแรกเป็นผู้ชนะ กฎขอบเขตใช้หลักการจับคู่ครั้งแรกเป็นผู้ชนะ
chatTypeจะถูกทำให้เป็นมาตรฐานเป็นdirect,groupหรือroom
- กฎของสโคปใช้แบบเจอรายการแรกเป็นผู้ชนะ กฎขอบเขตใช้หลักการจับคู่ครั้งแรกเป็นผู้ชนะ
- ตรวจสอบให้แน่ใจว่า CLI ออกจากโปรแกรมด้วยรหัส 0 และพิมพ์ข้อความล้วน; JSON จำเป็นต้องปรับผ่าน
jq -r .text - ตั้งค่าเวลา timeout ให้เหมาะสม (
timeoutSeconds, ค่าเริ่มต้น 60s) เพื่อหลีกเลี่ยงการบล็อกคิวการตอบกลับ