Audio / Ghi Âm — 2026-01-17
Những gì hoạt động
- Hiểu media (audio): Nếu tính năng hiểu audio được bật (hoặc tự động phát hiện), OpenClaw sẽ:
- Tìm file audio đính kèm đầu tiên (đường dẫn local hoặc URL) và tải về nếu cần.
- Kiểm tra
maxBytestrước khi gửi đến từng model entry. - Chạy model entry đủ điều kiện đầu tiên theo thứ tự (provider hoặc CLI).
- Nếu thất bại hoặc bỏ qua (do kích thước/timeout), nó sẽ thử entry tiếp theo.
- Khi thành công, nó thay thế
Bodybằng block[Audio]và set{{Transcript}}.
- Phân tích lệnh: Khi chuyển đổi thành công,
CommandBody/RawBodyđược set thành transcript để các lệnh slash vẫn hoạt động. - Logging chi tiết: Ở chế độ
--verbose, hệ thống sẽ log khi transcription chạy và khi nó thay thế body.
Tự động phát hiện (mặc định)
Nếu các bạn không config models và tools.media.audio.enabled không được set thành false,
OpenClaw sẽ tự động phát hiện theo thứ tự này và dừng lại ở option đầu tiên hoạt động:
- Local CLIs (nếu đã cài)
sherpa-onnx-offline(cầnSHERPA_ONNX_MODEL_DIRvới encoder/decoder/joiner/tokens)whisper-cli(từwhisper-cpp; dùngWHISPER_CPP_MODELhoặc tiny model đi kèm)whisper(Python CLI; tự động tải models)
- Gemini CLI (
gemini) dùngread_many_files - Provider keys (OpenAI → Groq → Deepgram → Google)
Để tắt tự động phát hiện, set tools.media.audio.enabled: false.
Để tùy chỉnh, set tools.media.audio.models.
Lưu ý: Phát hiện binary là best-effort trên macOS/Linux/Windows; đảm bảo CLI nằm trong PATH (hệ thống sẽ expand ~), hoặc set một CLI model rõ ràng với đường dẫn lệnh đầy đủ.
Ví dụ config
Provider + CLI fallback (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,
},
],
},
},
},
}
Chỉ dùng Provider với scope gating
{
tools: {
media: {
audio: {
enabled: true,
scope: {
default: "allow",
rules: [{ action: "deny", match: { chatType: "group" } }],
},
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
},
},
}
Chỉ dùng Provider (Deepgram)
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "deepgram", model: "nova-3" }],
},
},
},
}
Lưu ý & giới hạn
- Provider auth tuân theo thứ tự auth model chuẩn (auth profiles, env vars,
models.providers.*.apiKey). - Deepgram sẽ lấy
DEEPGRAM_API_KEYkhiprovider: "deepgram"được dùng. - Chi tiết setup Deepgram: Deepgram (audio transcription).
- Audio providers có thể override
baseUrl,headers, vàproviderOptionsquatools.media.audio. - Giới hạn kích thước mặc định là 20MB (
tools.media.audio.maxBytes). Audio quá khổ sẽ bị bỏ qua cho model đó và entry tiếp theo sẽ được thử. maxCharsmặc định cho audio là không set (transcript đầy đủ). Settools.media.audio.maxCharshoặcmaxCharscho từng entry để cắt ngắn output.- OpenAI mặc định tự động là
gpt-4o-mini-transcribe; setmodel: "gpt-4o-transcribe"để có độ chính xác cao hơn. - Dùng
tools.media.audio.attachmentsđể xử lý nhiều ghi âm (mode: "all"+maxAttachments). - Transcript có sẵn cho templates dưới dạng
{{Transcript}}. - CLI stdout bị giới hạn (5MB); giữ output CLI ngắn gọn nhé.
Những điểm cần lưu ý
- Scope rules dùng first-match wins.
chatTypeđược chuẩn hóa thànhdirect,group, hoặcroom. - Đảm bảo CLI của các bạn exits 0 và in plain text; JSON cần được xử lý qua
jq -r .text. - Giữ timeout hợp lý (
timeoutSeconds, mặc định 60s) để tránh block reply queue.