Text-to-speech (TTS)
OpenClawは、ElevenLabs、Microsoft、MiniMax、またはOpenAIを使って送信返信を音声に変換できます。 これは、OpenClawが音声を送信できる場所ならどこでも動作します。サポートされているサービス
- ElevenLabs(プライマリまたはフォールバックプロバイダー)
- Microsoft(プライマリまたはフォールバックプロバイダー。現在のバンドル実装は
node-edge-ttsを使用) - MiniMax(プライマリまたはフォールバックプロバイダー。T2A v2 APIを使用)
- OpenAI(プライマリまたはフォールバックプロバイダー。要約にも使用)
Microsoft音声に関する注意
バンドル済みのMicrosoft speech providerは現在、Microsoft Edgeのオンライン neural TTSサービスをnode-edge-ttsライブラリ経由で使用しています。これはホスト型サービスであり(
localではありません)、Microsoftのエンドポイントを使用し、APIキーは不要です。
node-edge-ttsは音声設定オプションと出力形式を公開していますが、
すべてのオプションがサービスでサポートされるわけではありません。edgeを使うレガシー設定とdirective入力も
引き続き動作し、microsoftに正規化されます。
この経路は公開Webサービスであり、公開されたSLAやクォータがないため、
ベストエフォートとして扱ってください。保証された制限とサポートが必要な場合は、OpenAI
またはElevenLabsを使ってください。
任意のキー
OpenAI、ElevenLabs、またはMiniMaxを使いたい場合:ELEVENLABS_API_KEY(またはXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel(またはagents.defaults.model.primary)を使用するため、
要約を有効にする場合はそのプロバイダーも認証されている必要があります。
サービスリンク
- OpenAI Text-to-Speech guide
- OpenAI Audio API reference
- ElevenLabs Text to Speech
- ElevenLabs Authentication
- MiniMax T2A v2 API
- node-edge-tts
- Microsoft Speech output formats
デフォルトで有効ですか?
いいえ。自動TTSはデフォルトでオフです。 設定ではmessages.tts.autoで、またはセッションごとに/tts always(エイリアス: /tts on)で有効にしてください。
messages.tts.providerが未設定の場合、OpenClawは
レジストリの自動選択順で最初に設定されたspeech providerを選びます。
設定
TTS設定はopenclaw.jsonのmessages.tts配下にあります。
完全なschemaはGateway configurationにあります。
最小設定(有効化 + プロバイダー)
OpenAIをプライマリ、ElevenLabsをフォールバックにする場合
Microsoftをプライマリにする場合(APIキー不要)
MiniMaxをプライマリにする場合
Microsoft音声を無効にする
カスタム制限 + prefsパス
受信音声メッセージの後だけ音声で返信する
長い返信で自動要約を無効にする
フィールドに関する注意
auto: 自動TTSモード(off、always、inbound、tagged)。inboundは、受信音声メッセージの後にだけ音声を送信します。taggedは、返信に[[tts]]タグが含まれる場合にだけ音声を送信します。
enabled: レガシートグル(doctorがこれをautoへ移行します)。mode:"final"(デフォルト)または"all"(ツール / block返信を含む)。provider:"elevenlabs"、"microsoft"、"minimax"、"openai"のようなspeech provider id(フォールバックは自動)。providerが未設定の場合、OpenClawはレジストリの自動選択順で最初に設定されたspeech providerを使います。- レガシーの
provider: "edge"も引き続き動作し、microsoftに正規化されます。 summaryModel: 自動要約用の任意の低コストモデル。デフォルトはagents.defaults.model.primaryです。provider/modelまたは設定済みmodel aliasを受け付けます。
modelOverrides: モデルがTTS directiveを出力できるようにします(デフォルトでオン)。allowProviderのデフォルトはfalseです(プロバイダー切り替えはオプトイン)。
providers.<id>: speech provider idをキーにしたプロバイダー所有設定。- レガシーの直接プロバイダーブロック(
messages.tts.openai、messages.tts.elevenlabs、messages.tts.microsoft、messages.tts.edge)は、読み込み時にmessages.tts.providers.<id>へ自動移行されます。 maxTextLength: TTS入力のハード上限(文字数)。超過すると/tts audioは失敗します。timeoutMs: リクエストタイムアウト(ms)。prefsPath: local prefs JSONパスを上書きします(provider / limit / summary)。apiKey値はenv var(ELEVENLABS_API_KEY/XI_API_KEY、MINIMAX_API_KEY、OPENAI_API_KEY)へフォールバックします。providers.elevenlabs.baseUrl: ElevenLabs API base URLを上書きします。providers.openai.baseUrl: OpenAI TTS endpointを上書きします。- 解決順序:
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - デフォルト以外の値はOpenAI互換TTS endpointとして扱われるため、カスタムのmodel名とvoice名を受け付けます。
- 解決順序:
providers.elevenlabs.voiceSettings:stability、similarityBoost、style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = 通常)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: 2文字のISO 639-1(例:en、de)providers.elevenlabs.seed: 整数0..4294967295(ベストエフォートな決定性)providers.minimax.baseUrl: MiniMax API base URLを上書きします(デフォルトhttps://api.minimax.io、env:MINIMAX_API_HOST)。providers.minimax.model: TTSモデル(デフォルトspeech-2.8-hd、env:MINIMAX_TTS_MODEL)。providers.minimax.voiceId: voice識別子(デフォルトEnglish_expressive_narrator、env:MINIMAX_TTS_VOICE_ID)。providers.minimax.speed: 再生速度0.5..2.0(デフォルト1.0)。providers.minimax.vol: 音量(0, 10](デフォルト1.0。0より大きい必要があります)。providers.minimax.pitch: ピッチシフト-12..12(デフォルト0)。providers.microsoft.enabled: Microsoft音声の使用を許可します(デフォルトtrue。APIキー不要)。providers.microsoft.voice: Microsoft neural voice名(例:en-US-MichelleNeural)。providers.microsoft.lang: 言語コード(例:en-US)。providers.microsoft.outputFormat: Microsoft出力形式(例:audio-24khz-48kbitrate-mono-mp3)。- 有効な値はMicrosoft Speech output formatsを参照してください。すべての形式がバンドル済みのEdgeバックエンドtransportでサポートされるわけではありません。
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: パーセント文字列(例:+10%、-5%)。providers.microsoft.saveSubtitles: 音声ファイルと一緒にJSON字幕を書き込みます。providers.microsoft.proxy: Microsoft音声リクエスト用のproxy URL。providers.microsoft.timeoutMs: リクエストタイムアウト上書き(ms)。edge.*: 同じMicrosoft設定用のレガシーエイリアス。
モデル駆動オーバーライド(デフォルトでオン)
デフォルトでは、モデルは単一返信に対してTTS directiveを出力できます。messages.tts.autoがtaggedの場合、音声をトリガーするにはこれらのdirectiveが必要です。
有効な場合、モデルは単一返信のvoiceを上書きするために[[tts:...]] directiveを出力でき、
さらに任意で[[tts:text]]...[[/tts:text]]ブロックを出力できます。これは
笑い声、歌うキューなど、音声にだけ含めるべき表現タグを
提供するためのものです。
provider=... directiveは、modelOverrides.allowProvider: trueでない限り無視されます。
返信payloadの例:
provider(登録済みspeech provider id。例:openai、elevenlabs、minimax、microsoft。allowProvider: trueが必要)voice(OpenAI voice)またはvoiceId(ElevenLabs / MiniMax)model(OpenAI TTS model、ElevenLabs model id、またはMiniMax model)stability、similarityBoost、style、speed、useSpeakerBoostvol/volume(MiniMax volume、0-10)pitch(MiniMax pitch、-12から12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
ユーザーごとの設定
スラッシュコマンドはlocal overrideをprefsPathへ書き込みます(デフォルト:
~/.openclaw/settings/tts.json。OPENCLAW_TTS_PREFSまたは
messages.tts.prefsPathで上書き可能)。
保存されるフィールド:
enabledprovidermaxLength(要約しきい値。デフォルト1500文字)summarize(デフォルトtrue)
messages.tts.*を上書きします。
出力形式(固定)
- Feishu / Matrix / Telegram / WhatsApp: Opus音声メッセージ(ElevenLabsでは
opus_48000_64、OpenAIではopus)。- 48kHz / 64kbpsは音声メッセージとして良いトレードオフです。
- その他のチャネル: MP3(ElevenLabsでは
mp3_44100_128、OpenAIではmp3)。- 44.1kHz / 128kbpsは、音声明瞭度のためのデフォルトのバランスです。
- MiniMax: MP3(
speech-2.8-hdモデル、32kHzサンプルレート)。voice-note形式はネイティブにはサポートされません。Opus音声メッセージを確実に使いたい場合はOpenAIまたはElevenLabsを使ってください。 - Microsoft:
microsoft.outputFormatを使用します(デフォルトaudio-24khz-48kbitrate-mono-mp3)。- バンドル済みtransportは
outputFormatを受け付けますが、すべての形式がサービスで利用可能なわけではありません。 - 出力形式の値はMicrosoft Speech output formatsに従います(Ogg/WebM Opusを含む)。
- Telegramの
sendVoiceはOGG / MP3 / M4Aを受け付けます。Opus音声メッセージを確実に使いたい場合はOpenAI / ElevenLabsを使ってください。 - 設定されたMicrosoft出力形式が失敗した場合、OpenClawはMP3で再試行します。
- バンドル済みtransportは
自動TTSの挙動
有効な場合、OpenClawは次のように動作します。- 返信にすでにメディアまたは
MEDIA:directiveが含まれている場合、TTSをスキップします。 - 非常に短い返信(10文字未満)はスキップします。
- 有効な場合、長い返信は
agents.defaults.model.primary(またはsummaryModel)を使って要約します。 - 生成した音声を返信に添付します。
maxLengthを超えていて、要約がオフである場合(または
summary model用APIキーがない場合)は、音声は
スキップされ、通常のテキスト返信が送信されます。
フロー図
スラッシュコマンドの使い方
コマンドは1つだけです:/tts。
有効化の詳細はSlash commandsを参照してください。
Discordに関する注意: /ttsはDiscordの組み込みコマンドであるため、OpenClawは
そこではネイティブコマンドとして/voiceを登録します。テキストの/tts ...は引き続き動作します。
- コマンドには認可されたsenderが必要です(allowlist / ownerルールは引き続き適用されます)。
commands.textまたはネイティブコマンド登録が有効である必要があります。off|always|inbound|taggedはセッションごとのトグルです(/tts onは/tts alwaysのエイリアス)。limitとsummaryはメイン設定ではなく、local prefsに保存されます。/tts audioは単発の音声返信を生成します(TTSをオンには切り替えません)。/tts statusには、直近の試行に対するフォールバック可視性が含まれます:- 成功フォールバック:
Fallback: <primary> -> <used>とAttempts: ... - 失敗:
Error: ...とAttempts: ... - 詳細診断:
Attempt details: provider:outcome(reasonCode) latency
- 成功フォールバック:
- OpenAIおよびElevenLabsのAPI失敗には、解析済みプロバイダーエラー詳細とリクエストid(プロバイダーが返した場合)が含まれるようになっており、TTSエラー / ログで表示されます。
エージェントツール
ttsツールはテキストを音声へ変換し、
返信配信用の音声添付を返します。チャネルがFeishu、Matrix、Telegram、またはWhatsAppの場合、
音声はファイル添付ではなくボイスメッセージとして配信されます。
Gateway RPC
Gatewayメソッド:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers