Nodes and media
Audio dan catatan suara
Yang berfungsi
- Pemahaman media (audio): Jika pemahaman audio diaktifkan (atau terdeteksi otomatis), OpenClaw:
- Menemukan lampiran audio pertama (jalur lokal atau URL) dan mengunduhnya jika perlu.
- Menerapkan
maxBytessebelum mengirim ke setiap entri model. - Menjalankan entri model pertama yang memenuhi syarat sesuai urutan (penyedia atau CLI).
- Jika gagal atau dilewati (ukuran/timeout), OpenClaw mencoba entri berikutnya.
- Saat berhasil, OpenClaw mengganti
Bodydengan blok[Audio]dan mengatur{{Transcript}}.
- Penguraian perintah: Saat transkripsi berhasil,
CommandBody/RawBodydiatur ke transkrip sehingga perintah slash tetap berfungsi. - Pencatatan log verbose: Dalam
--verbose, kami mencatat saat transkripsi berjalan dan saat transkripsi mengganti body.
Deteksi otomatis (default)
Jika Anda tidak mengonfigurasi model dan tools.media.audio.enabled tidak diatur ke false,
OpenClaw mendeteksi otomatis dalam urutan ini dan berhenti pada opsi pertama yang berfungsi:
- Model balasan aktif saat penyedianya mendukung pemahaman audio.
- CLI lokal (jika terinstal)
sherpa-onnx-offline(memerlukanSHERPA_ONNX_MODEL_DIRdengan encoder/decoder/joiner/tokens)whisper-cli(dariwhisper-cpp; menggunakanWHISPER_CPP_MODELatau model tiny bawaan)whisper(CLI Python; mengunduh model secara otomatis)
- CLI Gemini (
gemini) menggunakanread_many_files - Autentikasi penyedia
- Entri
models.providers.*yang dikonfigurasi dan mendukung audio dicoba terlebih dahulu - Urutan fallback bawaan: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- Entri
Untuk menonaktifkan deteksi otomatis, atur tools.media.audio.enabled: false.
Untuk menyesuaikan, atur tools.media.audio.models.
Catatan: Deteksi biner bersifat upaya terbaik di macOS/Linux/Windows; pastikan CLI ada di PATH (kami memperluas ~), atau atur model CLI eksplisit dengan jalur perintah lengkap.
Contoh konfigurasi
Fallback penyedia + 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,
},
],
},
},
},
}
Hanya penyedia dengan pembatasan cakupan
{
tools: {
media: {
audio: {
enabled: true,
scope: {
default: "allow",
rules: [{ action: "deny", match: { chatType: "group" } }],
},
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
},
},
}
Hanya penyedia (Deepgram)
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "deepgram", model: "nova-3" }],
},
},
},
}
Hanya penyedia (Mistral Voxtral)
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "mistral", model: "voxtral-mini-latest" }],
},
},
},
}
Hanya penyedia (SenseAudio)
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "senseaudio", model: "senseaudio-asr-pro-1.5-260319" }],
},
},
},
}
Gema transkrip ke chat (opt-in)
{
tools: {
media: {
audio: {
enabled: true,
echoTranscript: true, // default is false
echoFormat: '📝 "{transcript}"', // optional, supports {transcript}
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
},
},
}
Catatan dan batasan
- Autentikasi penyedia mengikuti urutan autentikasi model standar (profil autentikasi, variabel env,
models.providers.*.apiKey). - Detail penyiapan Groq: Groq.
- Deepgram mengambil
DEEPGRAM_API_KEYsaatprovider: "deepgram"digunakan. - Detail penyiapan Deepgram: Deepgram (transkripsi audio).
- Detail penyiapan Mistral: Mistral.
- SenseAudio mengambil
SENSEAUDIO_API_KEYsaatprovider: "senseaudio"digunakan. - Detail penyiapan SenseAudio: SenseAudio.
- Penyedia audio dapat menimpa
baseUrl,headers, danproviderOptionsmelaluitools.media.audio. - Batas ukuran default adalah 20MB (
tools.media.audio.maxBytes). Audio yang terlalu besar dilewati untuk model tersebut dan entri berikutnya dicoba. - File audio kecil/kosong di bawah 1024 byte dilewati sebelum transkripsi penyedia/CLI.
maxCharsdefault untuk audio tidak diatur (transkrip lengkap). Aturtools.media.audio.maxCharsataumaxCharsper entri untuk memangkas output.- Default otomatis OpenAI adalah
gpt-4o-mini-transcribe; aturmodel: "gpt-4o-transcribe"untuk akurasi yang lebih tinggi. - Gunakan
tools.media.audio.attachmentsuntuk memproses beberapa catatan suara (mode: "all"+maxAttachments). - Transkrip tersedia untuk templat sebagai
{{Transcript}}. tools.media.audio.echoTranscriptnonaktif secara default; aktifkan untuk mengirim konfirmasi transkrip kembali ke chat asal sebelum pemrosesan agen.tools.media.audio.echoFormatmenyesuaikan teks gema (placeholder:{transcript}).- stdout CLI dibatasi (5MB); jaga output CLI tetap ringkas.
argsCLI harus menggunakan{{MediaPath}}untuk jalur file audio lokal. Jalankanopenclaw doctor --fixuntuk memigrasikan placeholder{input}yang usang dari konfigurasiaudio.transcription.commandlama.
Dukungan lingkungan proxy
Transkripsi audio berbasis penyedia mematuhi variabel env proxy outbound standar:
HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Jika tidak ada variabel env proxy yang diatur, egress langsung digunakan. Jika konfigurasi proxy salah format, OpenClaw mencatat peringatan dan kembali ke fetch langsung.
Deteksi mention di grup
Saat requireMention: true diatur untuk chat grup, OpenClaw sekarang mentranskripsi audio sebelum memeriksa mention. Ini memungkinkan catatan suara diproses bahkan saat berisi mention.
Cara kerjanya:
- Jika pesan suara tidak memiliki body teks dan grup memerlukan mention, OpenClaw melakukan transkripsi "preflight".
- Transkrip diperiksa untuk pola mention (misalnya,
@BotName, pemicu emoji). - Jika mention ditemukan, pesan dilanjutkan melalui pipeline balasan lengkap.
- Transkrip digunakan untuk deteksi mention sehingga catatan suara dapat melewati gerbang mention.
Perilaku fallback:
- Jika transkripsi gagal selama preflight (timeout, kesalahan API, dll.), pesan diproses berdasarkan deteksi mention khusus teks.
- Ini memastikan pesan campuran (teks + audio) tidak pernah salah dijatuhkan.
Opt-out per grup/topik Telegram:
- Atur
channels.telegram.groups.<chatId>.disableAudioPreflight: trueuntuk melewati pemeriksaan mention transkrip preflight untuk grup tersebut. - Atur
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflightuntuk menimpa per topik (trueuntuk melewati,falseuntuk memaksa aktif). - Default adalah
false(preflight diaktifkan saat kondisi dengan gerbang mention cocok).
Contoh: Pengguna mengirim catatan suara yang mengatakan "Hey @Claude, what's the weather?" di grup Telegram dengan requireMention: true. Catatan suara ditranskripsi, mention terdeteksi, dan agen membalas.
Hal yang perlu diperhatikan
- Aturan cakupan menggunakan kecocokan pertama yang menang.
chatTypedinormalisasi menjadidirect,group, atauroom. - Pastikan CLI Anda keluar dengan 0 dan mencetak teks biasa; JSON perlu disesuaikan melalui
jq -r .text. - Untuk
parakeet-mlx, jika Anda meneruskan--output-dir, OpenClaw membaca<output-dir>/<media-basename>.txtsaat--output-formatadalahtxt(atau dihilangkan); format output non-txtkembali ke penguraian stdout. - Jaga timeout tetap wajar (
timeoutSeconds, default 60 dtk) agar tidak memblokir antrean balasan. - Transkripsi preflight hanya memproses lampiran audio pertama untuk deteksi mention. Audio tambahan diproses selama fase utama pemahaman media.