音声/ボイスノート — 2026-01-17¶
動作するもの¶
- メディア理解(音声): 音声理解が有効(または自動検出)な場合、OpenClaw は次を実行します。
1. 最初の音声添付(ローカルパスまたは URL)を特定し、必要に応じてダウンロードします。
2. 各モデルエントリーに送信する前に
maxBytesを適用します。 3. 順序どおりに最初の適格なモデルエントリー(プロバイダーまたは CLI)を実行します。 4. 失敗またはスキップ(サイズ/タイムアウト)の場合、次のエントリーを試します。 5. 成功すると、Bodyを[Audio]ブロックに置き換え、{{Transcript}}を設定します。 - コマンド解析: 文字起こしが成功すると、スラッシュコマンドが引き続き機能するように
CommandBody/RawBodyに文字起こし結果が設定されます。 - 詳細ログ:
--verboseでは、文字起こしが実行されたタイミングと本文が置き換えられたタイミングをログに記録します。
自動検出(デフォルト)¶
モデルを設定していない かつ tools.media.audio.enabled が false に設定されていない場合、
OpenClaw は次の順序で自動検出し、最初に動作したオプションで停止します。
- ローカル CLI(インストールされている場合)
-
sherpa-onnx-offline(エンコーダ/デコーダ/ジョイナー/トークンを含むSHERPA_ONNX_MODEL_DIRが必要) -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 モデルを設定してください。
カスタマイズするには、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" }],
},
},
},
}
注記と制限¶
- プロバイダー認証は、標準のモデル認証順(認証プロファイル、環境変数、
models.providers.*.apiKey)に従います。 provider: "deepgram"が使用されている場合、Deepgram はDEEPGRAM_API_KEYを取得します。- Deepgram のセットアップ詳細: Deepgram(音声文字起こし)。
- 音声プロバイダーは
tools.media.audioを介してbaseUrl、headers、providerOptionsを上書きできます。 - デフォルトサイズのキャップは 20MB です(
tools.media.audio.maxBytes)。 デフォルトのサイズ上限は 20MB(tools.media.audio.maxBytes)です。上限超過の音声はそのモデルではスキップされ、次のエントリーが試行されます。 - デフォルトの
maxCharsはunset (フルトランスクリプト) です。 音声のデフォルトmaxCharsは未設定(全文文字起こし)です。出力をトリミングするにはtools.media.audio.maxCharsまたはエントリーごとのmaxCharsを設定してください。 - OpenAI の自動デフォルトは
gpt-4o-mini-transcribeです。高精度が必要な場合はmodel: "gpt-4o-transcribe"を設定してください。 - 複数のボイスノートを処理するには
tools.media.audio.attachmentsを使用します(mode: "all"+maxAttachments)。 - 文字起こし結果はテンプレートから
{{Transcript}}として利用できます。 - CLI の stdout は上限(5MB)があります。CLI 出力は簡潔に保ってください。
Gotchas¶
- スコープルールでは、最初の試合の勝利を使用します。 スコープルールは先頭一致が優先されます。
chatTypeはdirect、group、またはroomに正規化されます。 - CLI が終了コード 0 で終了し、プレーンテキストを出力することを確認してください。JSON は
jq -r .textを介して整形する必要があります。 - 返信キューのブロックを避けるため、タイムアウト(
timeoutSeconds、デフォルト 60 秒)は適切に設定してください。