오디오 / 음성 메모 — 2026-01-17
지원 기능
- 미디어 이해 (오디오): 오디오 이해가 활성화(또는 자동 감지)되어 있으면, OpenClaw는:
- 첫 번째 오디오 첨부파일(로컬 경로 또는 URL)을 찾아 필요 시 다운로드합니다.
- 각 모델 항목에 전송하기 전에
maxBytes를 적용합니다. - 순서대로 첫 번째 적격 모델 항목(프로바이더 또는 CLI)을 실행합니다.
- 실패하거나 건너뛰면(크기/타임아웃), 다음 항목을 시도합니다.
- 성공 시,
Body를[Audio]블록으로 대체하고{{Transcript}}를 설정합니다.
- 명령어 파싱: 텍스트 변환이 성공하면,
CommandBody/RawBody가 변환된 텍스트로 설정되어 슬래시 명령어가 정상적으로 작동합니다. - 상세 로깅:
--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사용 - 프로바이더 키 (OpenAI → Groq → Deepgram → Google)
자동 감지를 비활성화하려면, 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" }],
},
},
},
}
프로바이더 전용 (Mistral Voxtral)
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "mistral", model: "voxtral-mini-latest" }],
},
},
},
}
변환 텍스트를 채팅에 표시 (수동 활성화)
{
tools: {
media: {
audio: {
enabled: true,
echoTranscript: true, // 기본값은 false
echoFormat: '📝 "{transcript}"', // 선택사항, {transcript} 지원
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
},
},
}
참고 사항 및 제한
- 프로바이더 인증은 표준 모델 인증 순서를 따릅니다 (인증 프로필, 환경 변수,
models.providers.*.apiKey). provider: "deepgram"사용 시 Deepgram은DEEPGRAM_API_KEY를 참조합니다.- Deepgram 설정 세부사항: Deepgram (오디오 텍스트 변환).
- Mistral 설정 세부사항: Mistral.
- 오디오 프로바이더는
tools.media.audio를 통해baseUrl,headers,providerOptions를 재정의할 수 있습니다. - 기본 크기 제한은 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으로 에코 텍스트를 커스터마이징할 수 있습니다 (플레이스홀더:{transcript}).- CLI 표준 출력은 5MB로 제한됩니다. CLI 출력을 간결하게 유지하세요.
프록시 환경 지원
프로바이더 기반 오디오 텍스트 변환은 표준 아웃바운드 프록시 환경 변수를 지원합니다:
HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
프록시 환경 변수가 설정되지 않으면 직접 연결을 사용합니다. 프록시 설정이 잘못되면 OpenClaw는 경고를 기록하고 직접 연결로 폴백합니다.
그룹에서의 멘션 감지
그룹 채팅에서 requireMention: true가 설정된 경우, OpenClaw는 멘션을 확인하기 전에 오디오를 텍스트로 변환합니다. 이를 통해 멘션이 포함된 음성 메모도 처리할 수 있습니다.
작동 방식:
- 음성 메시지에 텍스트 본문이 없고 그룹에서 멘션이 필요한 경우, OpenClaw는 “사전 검사” 텍스트 변환을 수행합니다.
- 변환된 텍스트에서 멘션 패턴(예:
@BotName, 이모지 트리거)을 확인합니다. - 멘션이 발견되면, 메시지는 전체 응답 파이프라인을 거칩니다.
- 변환된 텍스트가 멘션 감지에 사용되어 음성 메모가 멘션 게이트를 통과할 수 있습니다.
폴백 동작:
- 사전 검사 중 텍스트 변환이 실패하면(타임아웃, API 오류 등), 텍스트 전용 멘션 감지를 기반으로 메시지를 처리합니다.
- 이로써 혼합 메시지(텍스트 + 오디오)가 잘못 삭제되지 않도록 합니다.
Telegram 그룹/토픽별 비활성화:
channels.telegram.groups.<chatId>.disableAudioPreflight: true를 설정하여 해당 그룹의 사전 검사 텍스트 변환 멘션 확인을 건너뛸 수 있습니다.channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflight를 설정하여 토픽별로 재정의할 수 있습니다 (true는 건너뛰기,false는 강제 활성화).- 기본값은
false입니다 (멘션 게이트 조건이 일치하면 사전 검사 활성화).
예시: 사용자가 requireMention: true가 설정된 Telegram 그룹에서 “안녕 @Claude, 날씨 어때?”라고 음성 메모를 보냅니다. 음성 메모가 텍스트로 변환되고, 멘션이 감지되어, 에이전트가 응답합니다.
주의사항
- 스코프 규칙은 첫 번째 일치 우선입니다.
chatType은direct,group, 또는room으로 정규화됩니다. - CLI가 종료 코드 0을 반환하고 일반 텍스트를 출력하는지 확인하세요. JSON은
jq -r .text를 통해 변환해야 합니다. parakeet-mlx의 경우,--output-dir을 전달하면--output-format이txt(또는 생략)일 때 OpenClaw가<output-dir>/<media-basename>.txt를 읽습니다.txt가 아닌 출력 형식은 stdout 파싱으로 폴백합니다.- 응답 대기열 차단을 방지하기 위해 타임아웃을 적절하게 유지하세요 (
timeoutSeconds, 기본값 60초). - 사전 검사 텍스트 변환은 멘션 감지를 위해 첫 번째 오디오 첨부파일만 처리합니다. 추가 오디오는 메인 미디어 이해 단계에서 처리됩니다.